Preduvjeti
Instalirajte Javu
Instalirajte Zeppelin
Konfigurirajte Systemd uslugu
Konfigurirajte obrnuti proxy
Onemogućite anonimni pristup
Omogući Shiro autentifikaciju
Apache Zeppelin je web-bazirano prijenosno računalo otvorenog koda i alat za suradnju za interaktivno unos podataka, otkrivanje, analitiku i vizualizaciju. Zeppelin podržava 20+ jezika uključujući Apache Spark, SQL, R, Elasticsearch i mnoge druge. Apache Zeppelin vam omogućuje stvaranje prekrasnih dokumenata vođenih podacima i pregled rezultata vaše analitike.
Preduvjeti
- Instanca poslužitelja Vultr CentOS 7.
- Korisnik sudoa .
- Naziv domene usmjeren prema poslužitelju.
Za ovaj vodič koristit ćemo zeppelin.example.com
kao ime domene usmjereno na Vultr instancu. Svakako zamijenite sva pojavljivanja primjera naziva domene stvarnim.
Ažurirajte svoj osnovni sustav pomoću vodiča Kako ažurirati CentOS 7 . Nakon što se vaš sustav ažurira, nastavite s instalacijom Jave.
Instalirajte Javu
Apache Zeppelin je napisan na Javi, stoga je za rad potreban JDK. Preuzmite Oracle SE JDK RPM paket.
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"
Instalirajte preuzeti paket.
sudo yum -y localinstall jdk-8u151-linux-x64.rpm
Ako je Java uspješno instalirana, trebali biste moći provjeriti njezinu verziju.
java -version
Vidjet ćete sljedeći izlaz.
[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)
Prije nego što nastavimo dalje, morat ćemo postaviti varijable okruženja JAVA_HOME
i JRE_HOME
. Pronađite apsolutni put JAVA izvršne datoteke u vašem sustavu.
readlink -f $(which java)
Vidjet ćete sličan izlaz.
[user@vultr ~]$ readlink -f $(which java)
/usr/java/jdk1.8.0_151/jre/bin/java
Sada postavite varijable JAVA_HOME
i JRE_HOME
okoline prema putu Java direktorija.
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
Izvršite bash_profile
datoteku.
source ~/.bash_profile
Sada možete pokrenuti echo $JAVA_HOME
naredbu da provjerite je li varijabla okruženja postavljena.
[user@vultr ~]$ echo $JAVA_HOME
/usr/java/jdk1.8.0_151
Instalirajte Zeppelin
Apache Zeppelin isporučuje sve ovisnosti zajedno s binarnim datotekama, tako da ne moramo instalirati ništa drugo osim Jave. Preuzmite binarni program Zeppelin na svoj sustav. Najnoviju verziju aplikacije uvijek možete pronaći na stranici za preuzimanje Zeppelina .
wget http://www-us.apache.org/dist/zeppelin/zeppelin-0.7.3/zeppelin-0.7.3-bin-all.tgz
Ekstrahirajte arhivu.
sudo tar xf zeppelin-*-bin-all.tgz -C /opt
Gornja naredba će izdvojiti arhivu u /opt/zeppelin-0.7.3-bin-all
. Preimenujte imenik radi praktičnosti.
sudo mv /opt/zeppelin-*-bin-all /opt/zeppelin
Apache Zeppelin je sada instaliran. Možete odmah pokrenuti aplikaciju, ali ona vam neće biti dostupna, jer samo sluša localhost
. Apache Zeppelin ćemo konfigurirati kao uslugu. Također ćemo konfigurirati Nginx web poslužitelj kao obrnuti proxy.
U ovom koraku ćemo postaviti Systemd jediničnu datoteku za Zeppelin aplikaciju. To će osigurati da se proces prijave automatski pokrene nakon ponovnog pokretanja sustava i kvarova.
Iz sigurnosnih razloga stvorite neprivilegiranog korisnika za pokretanje Zeppelin procesa.
sudo adduser -d /opt/zeppelin -s /sbin/nologin zeppelin
Omogućite vlasništvo nad datotekama novostvorenom korisniku Zeppelina.
sudo chown -R zeppelin:zeppelin /opt/zeppelin
Napravite novu datoteku Systemd servisne jedinice.
sudo nano /etc/systemd/system/zeppelin.service
Popunite datoteku sljedećim.
[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
Pokrenite aplikaciju.
sudo systemctl start zeppelin
Omogućite uslugu Zeppelin da se automatski pokrene prilikom pokretanja.
sudo systemctl enable zeppelin
Da biste provjerili radi li usluga, možete pokrenuti sljedeće.
sudo systemctl status zeppelin
Prema zadanim postavkama, Zeppelin poslužitelj sluša localhost
port 8080
. U ovom vodiču koristit ćemo Nginx kao obrnuti proxy tako da se aplikaciji može pristupiti putem standarda HTTP
i HTTPS
portova. Također ćemo konfigurirati Nginx da koristi SSL generiran s Let's Encrypt besplatnim SSL CA.
Instalirajte Nginx.
sudo yum -y install nginx
Pokrenite Nginx i omogućite mu automatsko pokretanje prilikom pokretanja.
sudo systemctl start nginx
sudo systemctl enable nginx
Instalirajte Certbot, klijentsku aplikaciju za Let's Encrypt CA.
sudo yum -y install certbot
Prije nego što možete zatražiti certifikate, morat ćete dopustiti port 80
i/ 443
ili standard HTTP
i HTTPS
usluge putem vatrozida.
sudo firewall-cmd --zone=public --add-service=http --permanent
sudo firewall-cmd --zone=public --add-service=https --permanent
sudo firewall-cmd --reload
Napomena : Za dobivanje certifikata od Let's Encrypt CA, domena za koju se certifikati trebaju generirati mora biti usmjerena prema poslužitelju. Ako nije, izvršite potrebne promjene u DNS zapisima domene i pričekajte da se DNS širi prije nego što ponovno uputite zahtjev za certifikatom. Certbot provjerava autoritet domene prije pružanja certifikata.
Generirajte SSL certifikate.
sudo certbot certonly --webroot -w /usr/share/nginx/html -d zeppelin.example.com
Generirani certifikati vjerojatno će biti pohranjeni u /etc/letsencrypt/live/zeppelin.example.com/
. SSL certifikat će biti pohranjen kao, fullchain.pem
a privatni ključ će biti pohranjen kao privkey.pem
.
Let's Encrypt certifikati istječu za 90 dana, stoga je preporučljivo postaviti automatsku obnovu certifikata pomoću Cron poslova.
Otvorite cron datoteku posla.
sudo crontab -e
Dodajte sljedeći redak na kraj datoteke.
30 5 * * * /usr/bin/certbot renew --quiet
Gornji cron posao će se izvoditi svaki dan u 5:30 ujutro. Ako potvrda istekne, automatski će se obnoviti.
Napravite novu datoteku bloka poslužitelja za Zeppelin stranicu.
sudo nano /etc/nginx/conf.d/zeppelin.example.com.conf
Popunite datoteku.
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;
}
}
Ponovno pokrenite Nginx kako bi promjene stupile na snagu.
sudo systemctl restart nginx zeppelin
Zeppelin je sada dostupan na sljedećoj adresi.
https://zeppelin.example.com
Prema zadanim postavkama, nije omogućena autentifikacija, tako da možete izravno koristiti aplikaciju.
Budući da je aplikacija dostupna svima, bilježnice koje izradite također su dostupne svima. Vrlo je važno onemogućiti anonimni pristup i omogućiti autentifikaciju kako bi samo provjereni korisnici mogli pristupiti aplikaciji.
Onemogućite anonimni pristup
Da biste onemogućili zadani anonimni pristup, kopirajte predložak konfiguracijske datoteke na njegovu lokaciju uživo.
cd /opt/zeppelin
sudo cp conf/zeppelin-site.xml.template conf/zeppelin-site.xml
Uredite konfiguracijsku datoteku.
sudo nano conf/zeppelin-site.xml
Pronađite sljedeće retke u datoteci.
<property>
<name>zeppelin.anonymous.allowed</name>
<value>true</value>
Promijenite vrijednost na false
da biste onemogućili anonimni pristup.
Omogući Shiro autentifikaciju
Sada kada smo onemogućili anonimni pristup, moramo omogućiti neku vrstu mehanizma provjere autentičnosti kako bi se privilegirani korisnici mogli prijaviti. Apache Zeppelin koristi Apache Shiro autentifikaciju. Kopirajte konfiguracijsku datoteku Shiro.
sudo cp conf/shiro.ini.template conf/shiro.ini
Uredite konfiguracijsku datoteku.
sudo nano conf/shiro.ini
Pronađite sljedeće retke u datoteci.
[users]
admin = password1, admin
user1 = password2, role1, role2
user2 = password3, role3
user3 = password4, role2
Popis sadrži korisničko ime, lozinku i uloge korisnika. Za sada ćemo koristiti samo admin
i user1
. Promjena lozinke admin
i user1
te onemogućiti ostale korisnike komentiranjem. Također možete promijeniti korisničko ime i uloge korisnika. Da biste saznali više o korisnicima i ulogama Apache Shiroa, pročitajte vodič za autorizaciju za Shiro .
Nakon što promijenite lozinke, blok koda bi trebao izgledati ovako.
[users]
admin = StrongPassword, admin
user1 = UserPassword, role1, role2
# user2 = password3, role3
# user3 = password4, role2
Sada ponovno pokrenite Zeppelin kako biste primijenili promjene.
sudo systemctl restart zeppelin
Trebali biste vidjeti da je autentifikacija omogućena i moći ćete se prijaviti pomoću korisničkog imena i lozinke postavljene u konfiguracijskoj datoteci Shiro.