Προαπαιτούμενα
Εγκαταστήστε Java
Εγκαταστήστε το Zeppelin
Ρύθμιση παραμέτρων Systemd
Διαμόρφωση του Reverse Proxy
Απενεργοποιήστε την ανώνυμη πρόσβαση
Ενεργοποιήστε τον έλεγχο ταυτότητας Shiro
Το Apache Zeppelin είναι ένα διαδικτυακό σημειωματάριο ανοιχτού κώδικα και συνεργατικό εργαλείο για διαδραστική απορρόφηση δεδομένων, ανακάλυψη, ανάλυση και οπτικοποίηση. Το Zeppelin υποστηρίζει περισσότερες από 20 γλώσσες, συμπεριλαμβανομένων των Apache Spark, SQL, R, Elasticsearch και πολλών άλλων. Το Apache Zeppelin σάς επιτρέπει να δημιουργείτε όμορφα έγγραφα που βασίζονται σε δεδομένα και να βλέπετε τα αποτελέσματα των αναλυτικών στοιχείων σας.
Προαπαιτούμενα
- Μια παρουσία διακομιστή Vultr Ubuntu 16.04.
- Ένας χρήστης sudo .
- Ένα όνομα τομέα στραμμένο προς τον διακομιστή.
Για αυτό το σεμινάριο, θα χρησιμοποιήσουμε zeppelin.example.com
ως όνομα τομέα που δείχνει προς την παρουσία του Vultr. Βεβαιωθείτε ότι έχετε αντικαταστήσει όλες τις εμφανίσεις του παραδείγματος ονόματος τομέα με το πραγματικό.
Ενημερώστε το βασικό σας σύστημα χρησιμοποιώντας τον οδηγό Πώς να ενημερώσετε το Ubuntu 16.04 . Μόλις το σύστημά σας ενημερωθεί, προχωρήστε στην εγκατάσταση Java.
Εγκαταστήστε Java
Το Apache Zeppelin είναι γραμμένο σε Java, επομένως απαιτεί JDK για να λειτουργήσει. Προσθέστε το αποθετήριο Ubuntu για την Oracle Java 8.
sudo add-apt-repository --yes ppa:webupd8team/java
sudo apt update
Εγκαταστήστε την Oracle Java.
sudo apt -y install oracle-java8-installer
Επαληθεύστε την έκδοσή του.
java -version
Θα δείτε την ακόλουθη έξοδο.
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)
Ορίστε την προεπιλεγμένη διαδρομή για την Java εγκαθιστώντας το ακόλουθο πακέτο.
sudo apt -y install oracle-java8-set-default
Μπορείτε να επαληθεύσετε εάν JAVA_HOME
έχει οριστεί εκτελώντας.
echo $JAVA_HOME
Θα δεις.
user@vultr:~$ echo $JAVA_HOME
/usr/lib/jvm/java-8-oracle
Εάν δεν βλέπετε καθόλου έξοδο, θα πρέπει να αποσυνδεθείτε από το τρέχον κέλυφος και να συνδεθείτε ξανά.
Εγκαταστήστε το 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 useradd -d /opt/zeppelin -s /bin/false 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 apt -y install nginx
Ξεκινήστε το Nginx και ενεργοποιήστε το να ξεκινά αυτόματα κατά την εκκίνηση.
sudo systemctl start nginx
sudo systemctl enable nginx
Προσθέστε το αποθετήριο Certbot.
sudo add-apt-repository --yes ppa:certbot/certbot
sudo apt-get update
Εγκαταστήστε το Certbot, το οποίο είναι η εφαρμογή πελάτη για το Let's Encrypt CA.
sudo apt -y install certbot
Σημείωση : Για να αποκτήσετε πιστοποιητικά από το Let's Encrypt CA, ο τομέας για τον οποίο πρόκειται να δημιουργηθούν τα πιστοποιητικά πρέπει να κατευθύνεται προς τον διακομιστή. Εάν όχι, κάντε τις απαραίτητες αλλαγές στις εγγραφές DNS του τομέα και περιμένετε να διαδοθεί το DNS προτού υποβάλετε ξανά το αίτημα πιστοποιητικού. Το Certbot ελέγχει την αρχή τομέα πριν από την παροχή των πιστοποιητικών.
Δημιουργήστε τα πιστοποιητικά SSL.
sudo certbot certonly --webroot -w /var/www/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/sites-available/zeppelin
Συμπληρώστε το αρχείο.
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;
}
}
Ενεργοποιήστε το αρχείο διαμόρφωσης.
sudo ln -s /etc/nginx/sites-available/zeppelin /etc/nginx/sites-enabled/zeppelin
Επανεκκινήστε το 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.