Előfeltételek
Java telepítése
Telepítse a Zeppelint
A Systemd szolgáltatás konfigurálása
Fordított proxy konfigurálása
Az Anonymous Access letiltása
Engedélyezze a Shiro hitelesítést
Az Apache Zeppelin egy webalapú, nyílt forráskódú jegyzetfüzet és együttműködési eszköz interaktív adatfeldolgozáshoz, -felderítéshez, elemzéshez és megjelenítéshez. A Zeppelin több mint 20 nyelvet támogat, beleértve az Apache Sparkot, SQL-t, R-t, Elasticsearch-et és még sok mást. Az Apache Zeppelin segítségével gyönyörű, adatvezérelt dokumentumokat hozhat létre, és megtekintheti az elemzések eredményeit.
Előfeltételek
- Egy Vultr CentOS 7 kiszolgálópéldány.
- Egy sudo felhasználó .
- Egy domain név a szerverre mutatott.
Ebben az oktatóanyagban zeppelin.example.coma Vultr példányra mutató tartománynévként fogjuk használni . Kérjük, ügyeljen arra, hogy a példa domain név minden előfordulását lecserélje a tényleges névre.
Frissítse alaprendszerét a CentOS 7 frissítése útmutató segítségével . A rendszer frissítése után folytassa a Java telepítésével.
Java telepítése
Az Apache Zeppelin Java nyelven íródott, ezért a működéséhez JDK szükséges. Töltse le az Oracle SE JDK RPM csomagot.
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"
Telepítse a letöltött csomagot.
sudo yum -y localinstall jdk-8u151-linux-x64.rpm
Ha a Java telepítése sikeres volt, akkor ellenőrizni kell a verzióját.
java -version
A következő kimenetet fogja látni.
[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)
Mielőtt továbblépnénk, be kell állítanunk a JAVA_HOMEés a JRE_HOMEkörnyezeti változókat. Keresse meg a JAVA futtatható fájl abszolút elérési útját a rendszerben.
readlink -f $(which java)
Hasonló kimenetet fog látni.
[user@vultr ~]$ readlink -f $(which java)
/usr/java/jdk1.8.0_151/jre/bin/java
Most állítsa be a JAVA_HOMEés a JRE_HOMEkörnyezeti változókat a Java könyvtár elérési útja szerint.
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
Futtassa a bash_profilefájlt.
source ~/.bash_profile
Most már futtathatja a echo $JAVA_HOMEparancsot, hogy ellenőrizze, hogy a környezeti változó be van-e állítva.
[user@vultr ~]$ echo $JAVA_HOME
/usr/java/jdk1.8.0_151
Telepítse a Zeppelint
Az Apache Zeppelin az összes függőséget a bináris fájlokkal együtt szállítja, így nem kell mást telepítenünk, csak a Java-t. Töltse le a Zeppelin bináris fájlt a rendszerére. Az alkalmazás legújabb verzióját mindig megtalálja a Zeppelin letöltési oldalán .
wget http://www-us.apache.org/dist/zeppelin/zeppelin-0.7.3/zeppelin-0.7.3-bin-all.tgz
Bontsa ki az archívumot.
sudo tar xf zeppelin-*-bin-all.tgz -C /opt
A fenti parancs kicsomagolja az archívumot ide /opt/zeppelin-0.7.3-bin-all. A kényelem kedvéért nevezze át a könyvtárat.
sudo mv /opt/zeppelin-*-bin-all /opt/zeppelin
Az Apache Zeppelin most telepítve van. Azonnal elindíthatja az alkalmazást, de nem lesz elérhető, mivel csak hallgat localhost. Az Apache Zeppelint szolgáltatásként konfiguráljuk. Az Nginx webszervert fordított proxyként is konfiguráljuk.
Ebben a lépésben beállítunk egy Systemd unit fájlt a Zeppelin alkalmazáshoz. Ez biztosítja, hogy az alkalmazási folyamat automatikusan elinduljon a rendszer újraindításakor és meghibásodáskor.
Biztonsági okokból hozzon létre egy nem jogosult felhasználót a Zeppelin folyamat futtatásához.
sudo adduser -d /opt/zeppelin -s /sbin/nologin zeppelin
Adja meg a fájlok tulajdonjogát az újonnan létrehozott Zeppelin felhasználónak.
sudo chown -R zeppelin:zeppelin /opt/zeppelin
Hozzon létre egy új Systemd szervizegység fájlt.
sudo nano /etc/systemd/system/zeppelin.service
Töltse ki a fájlt a következővel.
[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
Indítsa el az alkalmazást.
sudo systemctl start zeppelin
Engedélyezze a Zeppelin szolgáltatás automatikus indulását a rendszerindításkor.
sudo systemctl enable zeppelin
A szolgáltatás futásának ellenőrzéséhez futtassa a következőket.
sudo systemctl status zeppelin
Alapértelmezés szerint a Zeppelin szerver localhosta porton figyel 8080. Ebben az oktatóanyagban az Nginx-et fordított proxyként fogjuk használni, így az alkalmazás szabványos HTTPés HTTPSportokon keresztül érhető el . Az Nginxet a Let's Encrypt ingyenes SSL CA-val generált SSL használatára is beállítjuk.
Telepítse az Nginx-et.
sudo yum -y install nginx
Indítsa el az Nginx-et, és engedélyezze, hogy rendszerindításkor automatikusan elinduljon.
sudo systemctl start nginx
sudo systemctl enable nginx
Telepítse a Certbotot, amely a Let's Encrypt CA ügyfélalkalmazása.
sudo yum -y install certbot
Mielőtt kérhetné a tanúsítványokat, engedélyeznie kell a portot 80és/ 443vagy szabványt HTTPés HTTPSszolgáltatásokat a tűzfalon keresztül.
sudo firewall-cmd --zone=public --add-service=http --permanent
sudo firewall-cmd --zone=public --add-service=https --permanent
sudo firewall-cmd --reload
Megjegyzés : A Let's Encrypt CA-tól tanúsítványok beszerzéséhez a tartományt, amelyhez a tanúsítványokat elő kell állítani, a szerver felé kell mutatni. Ha nem, hajtsa végre a szükséges módosításokat a tartomány DNS-rekordjain, és várja meg, amíg a DNS továbbterjed, mielőtt ismét kérelmet küldene. A Certbot a tanúsítványok kiadása előtt ellenőrzi a tartományi hatóságot.
Hozza létre az SSL-tanúsítványokat.
sudo certbot certonly --webroot -w /usr/share/nginx/html -d zeppelin.example.com
A generált tanúsítványok valószínűleg a következő helyen lesznek tárolva /etc/letsencrypt/live/zeppelin.example.com/. Az SSL-tanúsítvány a következőként fullchain.pem, a magánkulcs pedig néven lesz tárolva privkey.pem.
A Titkosított tanúsítványok 90 napon belül lejárnak, ezért ajánlatos beállítani a tanúsítványok automatikus megújítását Cron jobokkal.
Nyissa meg a cron feladatfájlt.
sudo crontab -e
Adja hozzá a következő sort a fájl végéhez.
30 5 * * * /usr/bin/certbot renew --quiet
A fenti cron-feladat minden nap 5:30-kor fog futni. Ha a tanúsítvány lejár, automatikusan megújítja azokat.
Hozzon létre egy új szerverblokk fájlt a Zeppelin webhelyhez.
sudo nano /etc/nginx/conf.d/zeppelin.example.com.conf
Töltse fel a fájlt.
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;
}
}
Indítsa újra az Nginxet, hogy a változtatások érvénybe lépjenek.
sudo systemctl restart nginx zeppelin
A Zeppelin már elérhető a következő címen.
https://zeppelin.example.com
Alapértelmezés szerint nincs engedélyezve a hitelesítés, így közvetlenül használhatja az alkalmazást.
Mivel az alkalmazás mindenki számára elérhető, az Ön által létrehozott jegyzetfüzetek is mindenki számára elérhetőek. Nagyon fontos az anonim hozzáférés letiltása és a hitelesítés engedélyezése, hogy csak a hitelesített felhasználók férhessenek hozzá az alkalmazáshoz.
Az Anonymous Access letiltása
Az alapértelmezett névtelen hozzáférés letiltásához másolja a konfigurációs fájl sablonját az élő helyére.
cd /opt/zeppelin
sudo cp conf/zeppelin-site.xml.template conf/zeppelin-site.xml
Szerkessze a konfigurációs fájlt.
sudo nano conf/zeppelin-site.xml
Keresse meg a következő sorokat a fájlban.
<property>
<name>zeppelin.anonymous.allowed</name>
<value>true</value>
Módosítsa az értéket falsea névtelen hozzáférés letiltásához.
Engedélyezze a Shiro hitelesítést
Most, hogy letiltottuk az anonim hozzáférést, engedélyeznünk kell valamilyen hitelesítési mechanizmust, hogy a privilegizált felhasználók bejelentkezhessenek. Az Apache Zeppelin Apache Shiro hitelesítést használ. Másolja a Shiro konfigurációs fájlt.
sudo cp conf/shiro.ini.template conf/shiro.ini
Szerkessze a konfigurációs fájlt.
sudo nano conf/shiro.ini
Keresse meg a következő sorokat a fájlban.
[users]
admin = password1, admin
user1 = password2, role1, role2
user2 = password3, role3
user3 = password4, role2
A lista tartalmazza a felhasználók felhasználónevét, jelszavát és szerepkörét. Egyelőre csak a adminés -t fogjuk használni user1. Módosítsa a jelszavát, adminés user1tiltsa le a többi felhasználót megjegyzésekkel. A felhasználók felhasználónevét és szerepköreit is módosíthatja. Ha többet szeretne megtudni az Apache Shiro felhasználókról és szerepekről, olvassa el a Shiro engedélyezési útmutatót .
Miután megváltoztatta a jelszavakat, a kódblokknak így kell kinéznie.
[users]
admin = StrongPassword, admin
user1 = UserPassword, role1, role2
# user2 = password3, role3
# user3 = password4, role2
Most indítsa újra a Zeppelint a módosítások alkalmazásához.
sudo systemctl restart zeppelin
Látnia kell, hogy a hitelesítés engedélyezve van, és be tud majd jelentkezni a Shiro konfigurációs fájljában megadott felhasználónévvel és jelszóval.