Forutsetninger
Installer Java
Installer Zeppelin
Konfigurer Systemd
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 mer enn 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 Ubuntu 16.04-serverforekomst.
- En sudo-bruker .
- Et domenenavn pekte mot serveren.
For denne opplæringen vil vi bruke zeppelin.example.com som domenenavnet peker mot Vultr-forekomsten. Sørg for å erstatte alle forekomster av eksempeldomenenavnet med det faktiske.
Oppdater basissystemet ditt ved å bruke veiledningen Hvordan oppdatere Ubuntu 16.04 . Når systemet ditt har blitt oppdatert, fortsett å installere Java.
Installer Java
Apache Zeppelin er skrevet i Java, så det krever JDK for å fungere. Legg til Ubuntu-depotet for Oracle Java 8.
sudo add-apt-repository --yes ppa:webupd8team/java
sudo apt update
Installer Oracle Java.
sudo apt -y install oracle-java8-installer
Bekreft versjonen.
java -version
Du vil se følgende utgang.
user@vultr:~$ java -version
java version "1.8.0_161"
Java(TM) SE Runtime Environment (build 1.8.0_161-b12)
Java HotSpot(TM) 64-Bit Server VM (build 25.161-b12, mixed mode)
Angi standardbanen for Java ved å installere følgende pakke.
sudo apt -y install oracle-java8-set-default
Du kan bekrefte om JAVA_HOMEer satt ved å kjøre.
echo $JAVA_HOME
Du vil se.
user@vultr:~$ echo $JAVA_HOME
/usr/lib/jvm/java-8-oracle
Hvis du ikke ser noen utgang i det hele tatt, må du logge ut fra gjeldende skall og logge på igjen.
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 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 useradd -d /opt/zeppelin -s /bin/false 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 å sikre at tjenesten kjører, kan du kjøre følgende.
sudo systemctl status zeppelin
Som standard lytter Zeppelin-serveren til localhost på port 8080. Vi vil bruke Nginx som en omvendt proxy slik at applikasjonen kan nås via standard HTTP og HTTPS porter. Vi vil også konfigurere Nginx til å bruke en SSL generert med Let's Encrypt gratis SSL CA.
Installer Nginx.
sudo apt -y install nginx
Start Nginx og la den starte automatisk ved oppstart.
sudo systemctl start nginx
sudo systemctl enable nginx
Legg til Certbot-depotet.
sudo add-apt-repository --yes ppa:certbot/certbot
sudo apt-get update
Installer Certbot, som er klientapplikasjonen for Let's Encrypt CA.
sudo apt -y install certbot
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 /var/www/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.pem og 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 fornyes.
Opprett en ny serverblokkfil for Zeppelin-nettstedet.
sudo nano /etc/nginx/sites-available/zeppelin
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;
}
}
Aktiver konfigurasjonsfilen.
sudo ln -s /etc/nginx/sites-available/zeppelin /etc/nginx/sites-enabled/zeppelin
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 applikasjonen 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 admin og user1. Endre passordet til admin og user1 deaktiver 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 like dette.
[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 vil se at autentiseringen er aktivert, og du vil kunne logge på med brukernavnet og passordet som er angitt i Shiro-konfigurasjonsfilen.