Requisits previs
Instal·leu Java
Instal·leu Zeppelin
Configura el servei 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 CentOS 7.
- Un usuari de sudo .
- Un nom de domini apuntat cap al servidor.
Per a aquest tutorial, utilitzarem zeppelin.example.comcom 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 CentOS 7 . 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. Baixeu el paquet 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"
Instal·leu el paquet descarregat.
sudo yum -y localinstall jdk-8u151-linux-x64.rpm
Si Java s'ha instal·lat correctament, hauríeu de poder verificar la seva versió.
java -version
Veureu la següent sortida.
[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)
Abans de continuar, haurem de configurar les variables d'entorn JAVA_HOMEi JRE_HOME. Trobeu la ruta absoluta de l'executable JAVA al vostre sistema.
readlink -f $(which java)
Veureu una sortida similar.
[user@vultr ~]$ readlink -f $(which java)
/usr/java/jdk1.8.0_151/jre/bin/java
Ara, configureu les variables d'entorn JAVA_HOMEi JRE_HOMEsegons la ruta del directori 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
Executeu el bash_profilefitxer.
source ~/.bash_profile
Ara podeu executar l' echo $JAVA_HOMEordre per comprovar si la variable d'entorn està establerta.
[user@vultr ~]$ echo $JAVA_HOME
/usr/java/jdk1.8.0_151
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 el servidor web 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 adduser -d /opt/zeppelin -s /sbin/nologin 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 comprovar si el servei s'està executant, podeu executar el següent.
sudo systemctl status zeppelin
De manera predeterminada, el servidor Zeppelin escolta al localhostport 8080. En aquest tutorial, utilitzarem Nginx com a servidor intermediari invers perquè es pugui accedir a l'aplicació mitjançant ports estàndard HTTPi HTTPS. També configurarem Nginx perquè utilitzi SSL generat amb Let's Encrypt SSL CA gratuït.
Instal·leu Nginx.
sudo yum -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
Instal·leu Certbot, que és l'aplicació client de Let's Encrypt CA.
sudo yum -y install certbot
Abans de poder sol·licitar els certificats, haureu de permetre el port 80i/ 443o estàndard HTTPi HTTPSserveis a través del tallafoc.
sudo firewall-cmd --zone=public --add-service=http --permanent
sudo firewall-cmd --zone=public --add-service=https --permanent
sudo firewall-cmd --reload
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 /usr/share/nginx/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.pemi 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, el renovarà automàticament.
Creeu un fitxer de bloqueig de servidor nou per al lloc Zeppelin.
sudo nano /etc/nginx/conf.d/zeppelin.example.com.conf
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;
}
}
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ó habilitat, 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 falseper 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 admini user1. Canviar la contrasenya d' admini user1i 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 hauria de ser així.
[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
Hauríeu de veure 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.