Forutsetninger
Installer Java
Installer Zeppelin
Konfigurer Systemd-tjenesten
Konfigurer omvendt proxy
Deaktiver anonym tilgang
Aktiver Shiro-autentisering
Apache Zeppelin er en nettbasert åpen kildekode-notisbok og samarbeidsverktøy for interaktiv datainntak, oppdagelse, analyse og visualisering. Zeppelin støtter 20+ språk, inkludert Apache Spark, SQL, R, Elasticsearch og mange flere. Apache Zeppelin lar deg lage vakre datadrevne dokumenter og se resultatene av analysene dine.
Forutsetninger
- En Vultr CentOS 7-serverforekomst.
- En sudo-bruker .
- Et domenenavn pekte mot serveren.
For denne opplæringen vil vi bruke zeppelin.example.comsom domenenavnet peker mot Vultr-forekomsten. Sørg for å erstatte alle forekomster av eksempeldomenenavnet med det faktiske.
Oppdater basissystemet ditt ved å bruke veiledningen Hvordan oppdatere CentOS 7 . Når systemet ditt har blitt oppdatert, fortsett å installere Java.
Installer Java
Apache Zeppelin er skrevet i Java, så det krever JDK for å fungere. Last ned Oracle SE JDK RPM-pakke.
wget --no-cookies --no-check-certificate --header "Cookie:oraclelicense=accept-securebackup-cookie" "http://download.oracle.com/otn-pub/java/jdk/8u151-b12/e758a0de34e24606bca991d704f6dcbf/jdk-8u151-linux-x64.rpm"
Installer den nedlastede pakken.
sudo yum -y localinstall jdk-8u151-linux-x64.rpm
Hvis Java har installert vellykket, bør du være i stand til å bekrefte versjonen.
java -version
Du vil se følgende utgang.
[user@vultr ~]$ java -version
java version "1.8.0_151"
Java(TM) SE Runtime Environment (build 1.8.0_151-b12)
Java HotSpot(TM) 64-Bit Server VM (build 25.151-b12, mixed mode)
Før vi kan gå videre, må vi sette opp JAVA_HOMEog JRE_HOMEmiljøvariablene. Finn den absolutte banen til den kjørbare JAVA-filen i systemet ditt.
readlink -f $(which java)
Du vil se en lignende utgang.
[user@vultr ~]$ readlink -f $(which java)
/usr/java/jdk1.8.0_151/jre/bin/java
Nå satt de JAVA_HOMEog JRE_HOMEmiljøvariabler i henhold til banen for Java-katalogen.
echo "export JAVA_HOME=/usr/java/jdk1.8.0_151" >> ~/.bash_profile
echo "export JRE_HOME=/usr/java/jdk1.8.0_151/jre" >> ~/.bash_profile
Kjør bash_profilefilen.
source ~/.bash_profile
Nå kan du kjøre echo $JAVA_HOMEkommandoen for å sjekke om miljøvariabelen er satt.
[user@vultr ~]$ echo $JAVA_HOME
/usr/java/jdk1.8.0_151
Installer Zeppelin
Apache Zeppelin sender alle avhengighetene sammen med de binære filene, så vi trenger ikke å installere noe annet enn Java. Last ned Zeppelin binær på systemet ditt. Du kan alltid finne den nyeste versjonen av applikasjonen på Zeppelins nedlastingsside .
wget http://www-us.apache.org/dist/zeppelin/zeppelin-0.7.3/zeppelin-0.7.3-bin-all.tgz
Trekk ut arkivet.
sudo tar xf zeppelin-*-bin-all.tgz -C /opt
Kommandoen ovenfor vil trekke ut arkivet til /opt/zeppelin-0.7.3-bin-all. Gi nytt navn til katalogen for enkelhets skyld.
sudo mv /opt/zeppelin-*-bin-all /opt/zeppelin
Apache Zeppelin er nå installert. Du kan starte applikasjonen umiddelbart, men den vil ikke være tilgjengelig for deg, siden den kun lytter til localhost. Vi vil konfigurere Apache Zeppelin som en tjeneste. Vi vil også konfigurere Nginx webserver som en omvendt proxy.
I dette trinnet vil vi sette opp en Systemd-enhetsfil for Zeppelin-applikasjonen. Dette vil sikre at søknadsprosessen startes automatisk ved omstart av systemet og feil.
Av sikkerhetsgrunner, opprett en uprivilegert bruker for å kjøre Zeppelin-prosessen.
sudo adduser -d /opt/zeppelin -s /sbin/nologin zeppelin
Gi eierskap til filene til den nyopprettede Zeppelin-brukeren.
sudo chown -R zeppelin:zeppelin /opt/zeppelin
Opprett en ny Systemd-tjenesteenhetsfil.
sudo nano /etc/systemd/system/zeppelin.service
Fyll filen med følgende.
[Unit]
Description=Zeppelin service
After=syslog.target network.target
[Service]
Type=forking
ExecStart=/opt/zeppelin/bin/zeppelin-daemon.sh start
ExecStop=/opt/zeppelin/bin/zeppelin-daemon.sh stop
ExecReload=/opt/zeppelin/bin/zeppelin-daemon.sh reload
User=zeppelin
Group=zeppelin
Restart=always
[Install]
WantedBy=multi-user.target
Start applikasjonen.
sudo systemctl start zeppelin
Aktiver Zeppelin-tjenesten til å starte automatisk ved oppstart.
sudo systemctl enable zeppelin
For å sjekke om tjenesten kjører, kan du kjøre følgende.
sudo systemctl status zeppelin
Som standard lytter Zeppelin-serveren til localhostpå port 8080. I denne opplæringen vil vi bruke Nginx som en omvendt proxy slik at applikasjonen kan nås via standard HTTPog HTTPSporter. Vi vil også konfigurere Nginx til å bruke SSL generert med Let's Encrypt gratis SSL CA.
Installer Nginx.
sudo yum -y install nginx
Start Nginx og la den starte automatisk ved oppstart.
sudo systemctl start nginx
sudo systemctl enable nginx
Installer Certbot, som er klientapplikasjonen for Let's Encrypt CA.
sudo yum -y install certbot
Før du kan be om sertifikatene, må du tillate port 80og/ 443eller standard HTTPog HTTPStjenester gjennom brannmuren.
sudo firewall-cmd --zone=public --add-service=http --permanent
sudo firewall-cmd --zone=public --add-service=https --permanent
sudo firewall-cmd --reload
Merk : For å få sertifikater fra Let's Encrypt CA, må domenet som sertifikatene skal genereres for, peke mot serveren. Hvis ikke, gjør de nødvendige endringene i DNS-postene til domenet og vent til DNS-en forplanter seg før du foretar sertifikatforespørselen igjen. Certbot sjekker domeneautoriteten før sertifikatene leveres.
Generer SSL-sertifikatene.
sudo certbot certonly --webroot -w /usr/share/nginx/html -d zeppelin.example.com
De genererte sertifikatene blir sannsynligvis lagret i /etc/letsencrypt/live/zeppelin.example.com/. SSL-sertifikatet vil bli lagret som fullchain.pemog privat nøkkel vil bli lagret som privkey.pem.
La oss kryptere sertifikater utløper om 90 dager, derfor anbefales det å sette opp automatisk fornyelse av sertifikatene ved å bruke Cron-jobber.
Åpne cron-jobbfilen.
sudo crontab -e
Legg til følgende linje på slutten av filen.
30 5 * * * /usr/bin/certbot renew --quiet
Cron-jobben ovenfor kjøres hver dag klokken 05.30. Hvis sertifikatet skal utløpe, vil det automatisk fornye dem.
Opprett en ny serverblokkfil for Zeppelin-nettstedet.
sudo nano /etc/nginx/conf.d/zeppelin.example.com.conf
Fyll ut filen.
upstream zeppelin {
server 127.0.0.1:8080;
}
server {
listen 80;
server_name zeppelin.example.com;
return 301 https://$host$request_uri;
}
server {
listen 443;
server_name zeppelin.example.com;
ssl_certificate /etc/letsencrypt/live/zeppelin.example.com/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/zeppelin.example.com/privkey.pem;
ssl on;
ssl_session_cache builtin:1000 shared:SSL:10m;
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
ssl_ciphers HIGH:!aNULL:!eNULL:!EXPORT:!CAMELLIA:!DES:!MD5:!PSK:!RC4;
ssl_prefer_server_ciphers on;
access_log /var/log/nginx/zeppelin.access.log;
location / {
proxy_pass http://zeppelin;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header Host $http_host;
proxy_set_header X-NginX-Proxy true;
proxy_redirect off;
}
location /ws {
proxy_pass http://zeppelin/ws;
proxy_http_version 1.1;
proxy_set_header Upgrade websocket;
proxy_set_header Connection upgrade;
proxy_read_timeout 86400;
}
}
Start Nginx på nytt slik at endringene kan tre i kraft.
sudo systemctl restart nginx zeppelin
Zeppelin er nå tilgjengelig på følgende adresse.
https://zeppelin.example.com
Som standard er det ingen autentisering aktivert, så du kan bruke programmet direkte.
Siden applikasjonen er tilgjengelig for alle, er notatbøkene du lager også tilgjengelige for alle. Det er veldig viktig å deaktivere anonym tilgang og aktivere autentisering slik at bare de autentiserte brukerne kan få tilgang til applikasjonen.
Deaktiver anonym tilgang
For å deaktivere standard anonym tilgang, kopier konfigurasjonsfilmalen til dens live plassering.
cd /opt/zeppelin
sudo cp conf/zeppelin-site.xml.template conf/zeppelin-site.xml
Rediger konfigurasjonsfilen.
sudo nano conf/zeppelin-site.xml
Finn følgende linjer i filen.
<property>
<name>zeppelin.anonymous.allowed</name>
<value>true</value>
Endre verdien til for falseå deaktivere den anonyme tilgangen.
Aktiver Shiro-autentisering
Nå som vi har deaktivert den anonyme tilgangen, må vi aktivere en slags autentiseringsmekanisme slik at privilegerte brukere kan logge inn. Apache Zeppelin bruker Apache Shiro-autentisering. Kopier Shiro-konfigurasjonsfilen.
sudo cp conf/shiro.ini.template conf/shiro.ini
Rediger konfigurasjonsfilen.
sudo nano conf/shiro.ini
Finn følgende linjer i filen.
[users]
admin = password1, admin
user1 = password2, role1, role2
user2 = password3, role3
user3 = password4, role2
Listen inneholder brukernavn, passord og roller til brukerne. Foreløpig vil vi bare bruke adminog user1. Endre passordet til adminog user1deaktiver de andre brukerne ved å kommentere dem. Du kan også endre brukernavnet og rollene til brukerne. For å lære mer om Apache Shiro-brukere og roller, les Shiro-autorisasjonsveiledningen .
Når du har endret passordene, skal kodeblokken se slik ut.
[users]
admin = StrongPassword, admin
user1 = UserPassword, role1, role2
# user2 = password3, role3
# user3 = password4, role2
Start Zeppelin på nytt for å bruke endringene.
sudo systemctl restart zeppelin
Du bør se at autentiseringen er aktivert, og du vil kunne logge på med brukernavnet og passordet som er angitt i Shiro-konfigurasjonsfilen.