Requisits previs
Instal·leu Java
Instal·leu Zeppelin
Configura Systemd
Configura el proxy invers
Desactiva l'accés anònim
Activa l'autenticació Shiro
Apache Zeppelin és un quadern de codi obert basat en la web i una eina col·laborativa per a la ingestió de dades interactives, el descobriment, l'anàlisi i la visualització. Zeppelin admet més de 20 idiomes, inclosos Apache Spark, SQL, R, Elasticsearch i molts més. Apache Zeppelin us permet crear bells documents basats en dades i veure els resultats de les vostres anàlisis.
Requisits previs
- Una instància del servidor Vultr Ubuntu 16.04.
- Un usuari de sudo .
- Un nom de domini apuntat cap al servidor.
Per a aquest tutorial, utilitzarem zeppelin.example.com com a nom de domini apuntat cap a la instància Vultr. Assegureu-vos de substituir totes les ocurrències del nom de domini d'exemple per l'actual.
Actualitzeu el vostre sistema base mitjançant la guia Com actualitzar Ubuntu 16.04 . Un cop actualitzat el sistema, procediu a instal·lar Java.
Instal·leu Java
Apache Zeppelin està escrit en Java, per tant requereix JDK per funcionar. Afegiu el dipòsit d'Ubuntu per a Oracle Java 8.
sudo add-apt-repository --yes ppa:webupd8team/java
sudo apt update
Instal·leu Oracle Java.
sudo apt -y install oracle-java8-installer
Verifica la seva versió.
java -version
Veureu la següent sortida.
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)
Establiu el camí predeterminat per a Java instal·lant el paquet següent.
sudo apt -y install oracle-java8-set-default
Podeu comprovar si JAVA_HOMEestà configurat executant-lo.
echo $JAVA_HOME
Ja ho veuràs.
user@vultr:~$ echo $JAVA_HOME
/usr/lib/jvm/java-8-oracle
Si no veieu cap sortida, haureu de tancar la sessió de l'intèrpret d'ordres actual i tornar a iniciar la sessió.
Instal·leu Zeppelin
Apache Zeppelin envia totes les dependències juntament amb els fitxers binaris, de manera que no necessitem instal·lar res més que Java. Baixeu el binari Zeppelin al vostre sistema. Sempre podeu trobar l'última versió de l'aplicació a la pàgina de descàrrega de Zeppelin .
wget http://www-us.apache.org/dist/zeppelin/zeppelin-0.7.3/zeppelin-0.7.3-bin-all.tgz
Extraieu l'arxiu.
sudo tar xf zeppelin-*-bin-all.tgz -C /opt
L'ordre anterior extreu l'arxiu a /opt/zeppelin-0.7.3-bin-all. Canvieu el nom del directori per comoditat.
sudo mv /opt/zeppelin-*-bin-all /opt/zeppelin
Apache Zeppelin ara està instal·lat. Podeu iniciar immediatament l'aplicació, però no us podreu accedir, ja que localhostnomés escolta . Configurarem Apache Zeppelin com a servei. També configurarem Nginx com a servidor intermediari invers.
En aquest pas, configurarem un fitxer d'unitat Systemd per a l'aplicació Zeppelin. Això garantirà que el procés d'aplicació s'iniciï automàticament en el reinici del sistema i els errors.
Per motius de seguretat, creeu un usuari sense privilegis per executar el procés Zeppelin.
sudo useradd -d /opt/zeppelin -s /bin/false zeppelin
Proporcioneu la propietat dels fitxers a l'usuari Zeppelin acabat de crear.
sudo chown -R zeppelin:zeppelin /opt/zeppelin
Creeu un nou fitxer d'unitat de servei Systemd.
sudo nano /etc/systemd/system/zeppelin.service
Omple el fitxer amb el següent.
[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
Inicieu l'aplicació.
sudo systemctl start zeppelin
Habiliteu el servei Zeppelin perquè s'iniciï automàticament en el moment de l'arrencada.
sudo systemctl enable zeppelin
Per assegurar-vos que el servei s'està executant, podeu executar el següent.
sudo systemctl status zeppelin
De manera predeterminada, el servidor Zeppelin escolta al localhost port 8080. Utilitzarem Nginx com a servidor intermediari invers perquè es pugui accedir a l'aplicació mitjançant estàndards HTTP i HTTPS ports. També configurarem Nginx perquè utilitzi un SSL generat amb Let's Encrypt SSL CA gratuït.
Instal·leu Nginx.
sudo apt -y install nginx
Inicieu Nginx i activeu-lo perquè s'iniciï automàticament en el moment de l'arrencada.
sudo systemctl start nginx
sudo systemctl enable nginx
Afegiu el repositori Certbot.
sudo add-apt-repository --yes ppa:certbot/certbot
sudo apt-get update
Instal·leu Certbot, que és l'aplicació client de Let's Encrypt CA.
sudo apt -y install certbot
Nota : per obtenir certificats de Let's Encrypt CA, el domini per al qual s'han de generar els certificats s'ha d'apuntar cap al servidor. Si no, feu els canvis necessaris als registres DNS del domini i espereu que el DNS es propagui abans de tornar a fer la sol·licitud de certificat. Certbot verifica l'autoritat del domini abans de proporcionar els certificats.
Generar els certificats SSL.
sudo certbot certonly --webroot -w /var/www/html -d zeppelin.example.com
És probable que els certificats generats s'emmagatzemin a /etc/letsencrypt/live/zeppelin.example.com/. El certificat SSL s'emmagatzemarà com a fullchain.pem i la clau privada com a privkey.pem.
Els certificats de Let's Encrypt caduquen en 90 dies, per tant, es recomana configurar la renovació automàtica dels certificats mitjançant treballs de Cron.
Obriu el fitxer de treball cron.
sudo crontab -e
Afegiu la línia següent al final del fitxer.
30 5 * * * /usr/bin/certbot renew --quiet
El treball cron anterior s'executarà cada dia a les 5:30 del matí. Si el certificat ha de caducar, es renovarà automàticament.
Creeu un fitxer de bloqueig de servidor nou per al lloc Zeppelin.
sudo nano /etc/nginx/sites-available/zeppelin
Omple el fitxer.
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;
}
}
Activeu el fitxer de configuració.
sudo ln -s /etc/nginx/sites-available/zeppelin /etc/nginx/sites-enabled/zeppelin
Reinicieu Nginx perquè els canvis tinguin efecte.
sudo systemctl restart nginx zeppelin
Ara es pot accedir a Zeppelin a la següent adreça.
https://zeppelin.example.com
Per defecte, no hi ha cap autenticació activada, de manera que podeu utilitzar l'aplicació directament.
Com que l'aplicació és accessible per a tothom, els quaderns que creeu també ho són. És molt important desactivar l'accés anònim i habilitar l'autenticació perquè només els usuaris autenticats puguin accedir a l'aplicació.
Desactiva l'accés anònim
Per desactivar l'accés anònim predeterminat, copieu la plantilla del fitxer de configuració a la seva ubicació activa.
cd /opt/zeppelin
sudo cp conf/zeppelin-site.xml.template conf/zeppelin-site.xml
Editeu el fitxer de configuració.
sudo nano conf/zeppelin-site.xml
Busca les línies següents al fitxer.
<property>
<name>zeppelin.anonymous.allowed</name>
<value>true</value>
Canvieu el valor a false per desactivar l'accés anònim.
Activa l'autenticació Shiro
Ara que hem desactivat l'accés anònim, hem d'habilitar algun tipus de mecanisme d'autenticació perquè els usuaris privilegiats puguin iniciar sessió. Apache Zeppelin utilitza l'autenticació Apache Shiro. Copieu el fitxer de configuració de Shiro.
sudo cp conf/shiro.ini.template conf/shiro.ini
Editeu el fitxer de configuració.
sudo nano conf/shiro.ini
Busca les línies següents al fitxer.
[users]
admin = password1, admin
user1 = password2, role1, role2
user2 = password3, role3
user3 = password4, role2
La llista conté el nom d'usuari, la contrasenya i les funcions dels usuaris. De moment, només utilitzarem admin i user1. Canviar la contrasenya d' admin i user1 i desactivar els altres usuaris comentant ells. També podeu canviar el nom d'usuari i els rols dels usuaris. Per obtenir més informació sobre els usuaris i els rols d'Apache Shiro, llegiu la guia d'autorització de Shiro .
Un cop hàgiu canviat les contrasenyes, el bloc de codi li hauria d'agradar.
[users]
admin = StrongPassword, admin
user1 = UserPassword, role1, role2
# user2 = password3, role3
# user3 = password4, role2
Ara reinicieu Zeppelin per aplicar els canvis.
sudo systemctl restart zeppelin
Veureu que l'autenticació s'ha habilitat i podreu iniciar sessió amb el nom d'usuari i la contrasenya establerts al fitxer de configuració de Shiro.