Προαπαιτούμενα
Εγκαταστήστε Java
Εγκαταστήστε το Zeppelin
Διαμόρφωση υπηρεσίας Systemd
Διαμόρφωση του Reverse Proxy
Απενεργοποιήστε την ανώνυμη πρόσβαση
Ενεργοποιήστε τον έλεγχο ταυτότητας Shiro
Το Apache Zeppelin είναι ένα διαδικτυακό σημειωματάριο ανοιχτού κώδικα και ένα συνεργατικό εργαλείο για διαδραστική απορρόφηση δεδομένων, ανακάλυψη, ανάλυση και οπτικοποίηση. Το Zeppelin υποστηρίζει 20+ γλώσσες, συμπεριλαμβανομένων των Apache Spark, SQL, R, Elasticsearch και πολλών άλλων. Το Apache Zeppelin σάς επιτρέπει να δημιουργείτε όμορφα έγγραφα που βασίζονται σε δεδομένα και να βλέπετε τα αποτελέσματα των αναλυτικών στοιχείων σας.
Προαπαιτούμενα
- Μια παρουσία διακομιστή Vultr CentOS 7.
- Ένας χρήστης sudo .
- Ένα όνομα τομέα στραμμένο προς τον διακομιστή.
Για αυτό το σεμινάριο, θα χρησιμοποιήσουμε zeppelin.example.com
ως όνομα τομέα που δείχνει προς την παρουσία του Vultr. Βεβαιωθείτε ότι έχετε αντικαταστήσει όλες τις εμφανίσεις του παραδείγματος ονόματος τομέα με το πραγματικό.
Ενημερώστε το βασικό σας σύστημα χρησιμοποιώντας τον οδηγό Πώς να ενημερώσετε το CentOS 7 . Μόλις το σύστημά σας ενημερωθεί, προχωρήστε στην εγκατάσταση Java.
Εγκαταστήστε Java
Το Apache Zeppelin είναι γραμμένο σε Java, επομένως απαιτεί JDK για να λειτουργήσει. Κατεβάστε το πακέτο Oracle SE JDK RPM.
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"
Εγκαταστήστε το πακέτο που έχετε λάβει.
sudo yum -y localinstall jdk-8u151-linux-x64.rpm
Εάν η Java έχει εγκατασταθεί με επιτυχία, τότε θα πρέπει να μπορείτε να επαληθεύσετε την έκδοσή της.
java -version
Θα δείτε την ακόλουθη έξοδο.
[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)
Προτού προχωρήσουμε περαιτέρω, θα χρειαστεί να ρυθμίσουμε τις μεταβλητές JAVA_HOME
και JRE_HOME
περιβάλλον. Βρείτε την απόλυτη διαδρομή του εκτελέσιμου JAVA στο σύστημά σας.
readlink -f $(which java)
Θα δείτε μια παρόμοια έξοδο.
[user@vultr ~]$ readlink -f $(which java)
/usr/java/jdk1.8.0_151/jre/bin/java
Τώρα, ορίστε τις μεταβλητές JAVA_HOME
και JRE_HOME
περιβάλλον σύμφωνα με τη διαδρομή του καταλόγου Java.
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
Εκτελέστε το bash_profile
αρχείο.
source ~/.bash_profile
Τώρα μπορείτε να εκτελέσετε την echo $JAVA_HOME
εντολή για να ελέγξετε αν έχει οριστεί η μεταβλητή περιβάλλοντος.
[user@vultr ~]$ echo $JAVA_HOME
/usr/java/jdk1.8.0_151
Εγκαταστήστε το Zeppelin
Το Apache Zeppelin αποστέλλει όλες τις εξαρτήσεις μαζί με τα δυαδικά αρχεία, επομένως δεν χρειάζεται να εγκαταστήσουμε τίποτα άλλο εκτός από την Java. Κατεβάστε το δυαδικό αρχείο Zeppelin στο σύστημά σας. Μπορείτε πάντα να βρείτε την πιο πρόσφατη έκδοση της εφαρμογής στη σελίδα λήψης του Zeppelin .
wget http://www-us.apache.org/dist/zeppelin/zeppelin-0.7.3/zeppelin-0.7.3-bin-all.tgz
Εξαγωγή του αρχείου.
sudo tar xf zeppelin-*-bin-all.tgz -C /opt
Η παραπάνω εντολή θα εξαγάγει το αρχείο στο /opt/zeppelin-0.7.3-bin-all
. Μετονομάστε τον κατάλογο για λόγους ευκολίας.
sudo mv /opt/zeppelin-*-bin-all /opt/zeppelin
Το Apache Zeppelin είναι πλέον εγκατεστημένο. Μπορείτε να ξεκινήσετε αμέσως την εφαρμογή, αλλά δεν θα είναι προσβάσιμη σε εσάς, καθώς ακούει localhost
μόνο. Θα διαμορφώσουμε το Apache Zeppelin ως υπηρεσία. Θα διαμορφώσουμε επίσης τον διακομιστή ιστού Nginx ως αντίστροφο διακομιστή μεσολάβησης.
Σε αυτό το βήμα, θα δημιουργήσουμε ένα αρχείο μονάδας Systemd για την εφαρμογή Zeppelin. Αυτό θα διασφαλίσει ότι η διαδικασία εφαρμογής θα ξεκινήσει αυτόματα κατά την επανεκκίνηση του συστήματος και τις αποτυχίες.
Για λόγους ασφαλείας, δημιουργήστε έναν μη προνομιούχο χρήστη για την εκτέλεση της διαδικασίας Zeppelin.
sudo adduser -d /opt/zeppelin -s /sbin/nologin zeppelin
Παρέχετε την ιδιοκτησία των αρχείων στον νέο χρήστη Zeppelin.
sudo chown -R zeppelin:zeppelin /opt/zeppelin
Δημιουργήστε ένα νέο αρχείο μονάδας υπηρεσιών Systemd.
sudo nano /etc/systemd/system/zeppelin.service
Συμπληρώστε το αρχείο με τα ακόλουθα.
[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
Ξεκινήστε την εφαρμογή.
sudo systemctl start zeppelin
Ενεργοποιήστε την αυτόματη εκκίνηση της υπηρεσίας Zeppelin κατά την εκκίνηση.
sudo systemctl enable zeppelin
Για να ελέγξετε εάν η υπηρεσία εκτελείται, μπορείτε να εκτελέσετε τα εξής.
sudo systemctl status zeppelin
Από προεπιλογή, ο διακομιστής Zeppelin ακούει localhost
στη θύρα 8080
. Σε αυτό το σεμινάριο, θα χρησιμοποιήσουμε το Nginx ως αντίστροφο διακομιστή μεσολάβησης, έτσι ώστε η εφαρμογή να είναι προσβάσιμη μέσω τυπικών HTTP
και HTTPS
θυρών. Θα διαμορφώσουμε επίσης το Nginx ώστε να χρησιμοποιεί SSL που δημιουργείται με το Let's Encrypt δωρεάν SSL CA.
Εγκαταστήστε το Nginx.
sudo yum -y install nginx
Ξεκινήστε το Nginx και ενεργοποιήστε το να ξεκινά αυτόματα κατά την εκκίνηση.
sudo systemctl start nginx
sudo systemctl enable nginx
Εγκαταστήστε το Certbot, το οποίο είναι η εφαρμογή πελάτη για το Let's Encrypt CA.
sudo yum -y install certbot
Για να μπορέσετε να ζητήσετε τα πιστοποιητικά, θα πρέπει να επιτρέψει το λιμάνι 80
και την 443
τυπική ή HTTP
και HTTPS
υπηρεσιών μέσω του τείχους προστασίας.
sudo firewall-cmd --zone=public --add-service=http --permanent
sudo firewall-cmd --zone=public --add-service=https --permanent
sudo firewall-cmd --reload
Σημείωση : Για να αποκτήσετε πιστοποιητικά από το Let's Encrypt CA, ο τομέας για τον οποίο πρόκειται να δημιουργηθούν τα πιστοποιητικά πρέπει να κατευθύνεται προς τον διακομιστή. Εάν όχι, κάντε τις απαραίτητες αλλαγές στις εγγραφές DNS του τομέα και περιμένετε να διαδοθεί το DNS προτού υποβάλετε ξανά το αίτημα πιστοποιητικού. Το Certbot ελέγχει την αρχή τομέα πριν από την παροχή των πιστοποιητικών.
Δημιουργήστε τα πιστοποιητικά SSL.
sudo certbot certonly --webroot -w /usr/share/nginx/html -d zeppelin.example.com
Τα πιστοποιητικά που δημιουργούνται είναι πιθανό να αποθηκευτούν στο /etc/letsencrypt/live/zeppelin.example.com/
. Το πιστοποιητικό SSL θα αποθηκευτεί ως fullchain.pem
και το ιδιωτικό κλειδί θα αποθηκευτεί ως privkey.pem
.
Ας κρυπτογραφήσουμε τα πιστοποιητικά λήγουν σε 90 ημέρες, επομένως συνιστάται να ρυθμίσετε την αυτόματη ανανέωση των πιστοποιητικών χρησιμοποιώντας εργασίες Cron.
Ανοίξτε το αρχείο εργασίας cron.
sudo crontab -e
Προσθέστε την ακόλουθη γραμμή στο τέλος του αρχείου.
30 5 * * * /usr/bin/certbot renew --quiet
Η παραπάνω εργασία cron θα εκτελείται καθημερινά στις 5:30 π.μ. Εάν το πιστοποιητικό πρόκειται να λήξει, θα το ανανεώσει αυτόματα.
Δημιουργήστε ένα νέο αρχείο μπλοκ διακομιστή για την τοποθεσία Zeppelin.
sudo nano /etc/nginx/conf.d/zeppelin.example.com.conf
Συμπληρώστε το αρχείο.
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;
}
}
Επανεκκινήστε το Nginx για να ισχύσουν οι αλλαγές.
sudo systemctl restart nginx zeppelin
Το Zeppelin είναι πλέον προσβάσιμο στην ακόλουθη διεύθυνση.
https://zeppelin.example.com
Από προεπιλογή, δεν είναι ενεργοποιημένος ο έλεγχος ταυτότητας, ώστε να μπορείτε να χρησιμοποιήσετε απευθείας την εφαρμογή.
Εφόσον η εφαρμογή είναι προσβάσιμη σε όλους, τα σημειωματάρια που δημιουργείτε είναι επίσης προσβάσιμα σε όλους. Είναι πολύ σημαντικό να απενεργοποιήσετε την ανώνυμη πρόσβαση και να ενεργοποιήσετε τον έλεγχο ταυτότητας, έτσι ώστε μόνο οι πιστοποιημένοι χρήστες να έχουν πρόσβαση στην εφαρμογή.
Απενεργοποιήστε την ανώνυμη πρόσβαση
Για να απενεργοποιήσετε την προεπιλεγμένη ανώνυμη πρόσβαση, αντιγράψτε το πρότυπο αρχείου διαμόρφωσης στη ζωντανή του θέση.
cd /opt/zeppelin
sudo cp conf/zeppelin-site.xml.template conf/zeppelin-site.xml
Επεξεργαστείτε το αρχείο διαμόρφωσης.
sudo nano conf/zeppelin-site.xml
Βρείτε τις ακόλουθες γραμμές στο αρχείο.
<property>
<name>zeppelin.anonymous.allowed</name>
<value>true</value>
Αλλάξτε την τιμή σε για false
να απενεργοποιήσετε την ανώνυμη πρόσβαση.
Ενεργοποιήστε τον έλεγχο ταυτότητας Shiro
Τώρα που έχουμε απενεργοποιήσει την ανώνυμη πρόσβαση, πρέπει να ενεργοποιήσουμε κάποιο είδος μηχανισμού ελέγχου ταυτότητας, ώστε οι προνομιούχοι χρήστες να μπορούν να συνδεθούν. Το Apache Zeppelin χρησιμοποιεί έλεγχο ταυτότητας Apache Shiro. Αντιγράψτε το αρχείο διαμόρφωσης Shiro.
sudo cp conf/shiro.ini.template conf/shiro.ini
Επεξεργαστείτε το αρχείο διαμόρφωσης.
sudo nano conf/shiro.ini
Βρείτε τις ακόλουθες γραμμές στο αρχείο.
[users]
admin = password1, admin
user1 = password2, role1, role2
user2 = password3, role3
user3 = password4, role2
Η λίστα περιέχει το όνομα χρήστη, τον κωδικό πρόσβασης και τους ρόλους των χρηστών. Προς το παρόν, θα χρησιμοποιήσουμε μόνο admin
και user1
. Αλλαγή του κωδικού πρόσβασης της admin
και user1
και να απενεργοποιήσετε τους άλλους χρήστες σχολιάζοντας τους. Μπορείτε επίσης να αλλάξετε το όνομα χρήστη και τους ρόλους των χρηστών. Για να μάθετε περισσότερα σχετικά με τους χρήστες και τους ρόλους του Apache Shiro, διαβάστε τον οδηγό εξουσιοδότησης Shiro .
Αφού αλλάξετε τους κωδικούς πρόσβασης, το μπλοκ κώδικα θα πρέπει να μοιάζει με αυτό.
[users]
admin = StrongPassword, admin
user1 = UserPassword, role1, role2
# user2 = password3, role3
# user3 = password4, role2
Τώρα επανεκκινήστε το Zeppelin για να εφαρμόσετε τις αλλαγές.
sudo systemctl restart zeppelin
Θα πρέπει να δείτε ότι ο έλεγχος ταυτότητας έχει ενεργοποιηθεί και θα μπορείτε να συνδεθείτε χρησιμοποιώντας το όνομα χρήστη και τον κωδικό πρόσβασης που έχουν οριστεί στο αρχείο διαμόρφωσης Shiro.