帮酷LOGO
0 0 评论
文章标签:Apache  Ubuntu  

使用不同的系统?

Apache Zeppelin是一个基于web的开放源代码笔记本和协作工具,用于交互式数据收集,发现,分析和可视化,Zeppelin支持20多种语言,包括ApacheShark SQL RElasticSearch等,Apache Zeppelin允许你创建漂亮的数据驱动文档,并查看你的分析结果。

前提条件

  • Ubuntu 16.04服务器实例,
  • 一个sudo用户。
  • 指向服务器的域名,

对于本教程,我们会使用zeppelin.example.com作为指向实例的域名,请确保将例子域名的所有匹配项替换为实际名称。

使用向导更新基本系统如何Update Ubuntu 16.04 ,系统更新后,继续安装Java 。

安装java

Apache Zeppelin是用Java编写的,因此它需要使用JDK 。 添加oracle java 8.的ubuntu知识库


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

如果没有看到输出,则需要从当前shell注销,然后重新登录。

安装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

上面的命令会把归档解压到 为了方便,重命名目录。


sudo mv /opt/zeppelin-*-bin-all /opt/zeppelin

Apache Zeppelin现在已安装,你可以立即启动应用程序,但是它还不能访问,因为它只能监听localhost ,我们将Apache Zeppelin配置为服务,我们还将Nginx配置为反向代理。

配置systemd

在这个步骤中我们为Zeppelin应用程序设置一个Systemd单元文件,这会确保在系统重启和失败时自动启动应用程序进程。

出于安全原因,创建一个非权限用户来运行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服务器监听端口8080上的localhost ,我们会使用Nginx作为反向代理,以便通过标准的HTTPHTTPS端口来访问应用程序,我们还会配置Nginx以便使用生成的SSL,以加密免费的SSL代码。

安装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

Let's Encrypt证书在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

列表包含用户的用户名,密码和角色,现在,我们只使用adminuser1 ,更改adminuser1的密码,并通过注释来禁用其他用户,你还可以更改用户的用户名和角色,若要了解有关Apache Shiro用户和角色的更多信息,请阅读shiro授权指南

更改密码后,代码块应该会像这样。


[users]

admin = StrongPassword, admin
user1 = UserPassword, role1, role2
# user2 = password3, role3
# user3 = password4, role2

现在重启Zeppelin以应用更改。


sudo systemctl restart zeppelin

你将看到认证已经启用,你将能够使用Shiro配置文件中设置的用户名和密码来登录。



文章标签:Ubuntu  Apache  

Copyright © 2011 HelpLib All rights reserved.    知识分享协议 京ICP备05059198号-3  |  如果智培  |  酷兔英语