Walle 2.0的详细部署与应用
Walle:
最近walle 更新了2.0,感觉自己用的版本有点旧了,所以想的学习一下,并部署与应用,Walle是 一个web部署系统工具,所以应用的场景比较多,所以更新也是有必要的,接下来我们来了解一下walle2.0,旧版本部署可以看一下: walle项目部署
环境:(一台配置了LAMP/LNMP的linux机器,并且安装git/svn)上操作。
一、代码检出与目录结构分析
1)在github申请账号,配置keys,使用git来克隆
登陆github官网 :https://github.com/ 注册账号
注册完毕后,添加ssh keys密钥,如下图所示
找到ssh keys,然后添加密钥
把本地已经配置lnmp的/root/.ssh/id_rsa.pub的密钥添加到web 的key。
[root@node2 ~]# cat /root/.ssh/id_rsa.pub
密钥添加完后,我们就可以接下的安装了
#mkdir -p /data/wwwroot # 新建目录,也是你的虚拟walle的目录 #yum install –y git/svn #git clone [email protected]:meolu/walle-web.git . # walle2.0代码检出
配置了keys后成功克隆如下:
注意:
1.多版本是这个:
git clone [email protected]:meolu/walle-web-v1.x.git
[root@node2]# git clone [email protected]:meolu/walle-web.git
2、因为是2.0,所以我们查看一下目录的结构先
接下来我们来对比一下1.x的
我们可以发现,两个版本的代码对比,相差太远了。2.0版本的都是以脚本来启动了,这就有点厉害了,整个项目都是通过admin.sh,来启动的,主要有下面两个。
sh admin.sh start #启动walle端口服务
sh admin.sh migration #加载数据库,创建表与添加数据
接着对比一下web目录(里面的代码就没必要看了)
以前的版本:
发现连前端页面直接用html了,改动的挺大的。
3、改动都不用理会,看一下官网是如何安装的。
官方文档:http://www.walle-web.io/docs/installation.html
总的来说官方安装说的比较清楚的,但是细节方面少了点。
二、walle安装
1、配置虚拟主机(首先安装了的lnmp)
添加虚拟启动目录
先在nginx,添加虚拟主机目录
#vim /usr/local/nginx/conf/nginx.conf http{ include vhost/*.conf; } 添加虚拟主机 #vim /usr/local/nginx/conf/vhost/walle.conf upstream webservers { server 0.0.0.0:5000 weight=1; #这个是walle项目的启动端口 } server { listen 80; server_name server.walle.com; # walle域名设置,这个域名设置比较重要,需要在walle的配置一致 access_log /data/wwwlogs/walle.log combined; index index.html index.htm index.php; # 日志目录 location / { try_files $uri $uri/ /index.html; add_header access-control-allow-origin *; root /data/wwwroot/walle-web/fe; # 前端代码已集成到walle-web,即walle-web/fe的绝对路径 } location ^~ /api/ { add_header access-control-allow-origin *; proxy_pass http://webservers; proxy_set_header X-Forwarded-Host $host:$server_port; proxy_set_header X-Real-IP $remote_addr; proxy_set_header Origin $host:$server_port; proxy_set_header Referer $host:$server_port; } location ^~ /socket.io/ { add_header access-control-allow-origin *; proxy_pass http://webservers; proxy_set_header X-Forwarded-Host $host:$server_port; proxy_set_header X-Real-IP $remote_addr; proxy_set_header Origin $host:$server_port; proxy_set_header Referer $host:$server_port; proxy_set_header Host $http_host; proxy_set_header X-NginX-Proxy true; # WebScoket Support proxy_http_version 1.1; proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection "upgrade"; } }
重新加载nginx
#service nginx reload
2、配置hosts指定
如果虚拟主机配置是应用IP与端口,这个就可以不配置,不过不建议,毕竟用域名管理比较好,毕竟一个主机有多台虚拟主机。
#vim /etc/hosts 172.25.0.30 server.walle.com #本地IP,这个域名提供给walle链接用
3、配置walle配置参数
[root@node2 walle-web]# pwd /data/wwwroot/walle-web [root@node2 walle-web]# vim walle/config/settings_prod.py
这个目录是配置各种参数的。
注意: 带了 @TODO 的地方可能需要你的调整,注意数据库是5.6.5以上的版本
mysql用户名可以自己创建,我这里直接就用root了
注意:这个host的配置指向,一定要与虚拟主机配置一致,不然访问就会出现网络链接错误的
4、安装Python2.7+pip
#sh admin.sh init
成功结果:
5、创建数据库,并添加表与数据
[root@node2 conf]# mysql -uroot -p123456 -e'CREATE SCHEMA walle' mysql: [Warning] Using a password on the command line interface can be insecure.
执行创建表的脚本命令
[root@node2 conf]#sh admin.sh migration
6、启动walle
#sh admin.sh start或者#sh admin.sh restart
7、查看启动状态
可以发现5000的端口已经启动了。
8、登录
本地添加hosts (略)
访问域名
可以发现,我们可以正常的的访问了。
默认提供的账户登录
超管:[email protected] \ Walle123
所有者:[email protected] \ Walle123
负责人:[email protected] \ Walle123
开发者:[email protected] \ Walle123
访客:[email protected] \ Walle123
我们以所有者的账户登录:
发现界面更改挺大的。
三、项目部署
1、搭建完了,接着我们最重要的项目部署了。
接着,我们随便配置一个项目
先添加服务器IP先,新版本的项目的服务器IP都放在服务器管理了,这个弄起来方便多了。
2、新建项目
任务配置,先不配了,配置完,如下了:
3、配置密钥,与目录权限
1)生成发布用户的密钥
因为是发布到本地,所以本地添加密钥就好
把www用户与root的id_rsa.pub一起放到authorized_keys文件中,旧版本的只要www就可以了
[www@node2 .ssh]$ cat authorized_keys ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDYrOAdjDxzjGjxkAx0+5K+WOakhzeejVym/RKq9dyuanTX7y72XhQoYs46IJQ2sYdPskKsJ5fDFwH1AbG3TYYm7ihQkUOITXu9cHT1BJWlZm7KZidOEwsq6WmDzvnsdPzihAGtAVYM6VP7IoOMt6wsMG28uMd7iGLBJL879TGOfOEMVhOAfV4vmd69tCz9U/sdMYS+KR/cgjRISgZxQSMQFzbGcJYSQbpJxFyHMjiqRAShgNdISRDDFvYnenDktbGeMgmUjL9PLXKQsqvo1onD9Q7VNuzhJ9h8p6M5bZr/qpJtXFAHhICnezHBjojwIXbxC7E9t5m389KRmBHv www@node2 ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDQ+nz7mgoEaYhCLwHkiYuiKWPX46sVKAg4/7TZASuY5oENmGubp9zfYkzy0luYroJj509gB6GN20qCdriqtFuqvcq/v0KB2KsXPVmSPTa2gDB3NeFrrNaLYedbDWmoQkIu6U0NgzblGlyo3yW+RtbQKpxPV/dUOcrq2k6TOPk4lHgb4mdViIT938d3yae0ZcmMRR9HjzD1Qrinns6OHILSvpzKmDcRkV46unYvbTP/704NeUBtMyPTD5GRdfJK7QyNEt17DvNuaf5MG1P/Yz87AlFMCzA2pkE0ondBT3KM2COgv7eD9Pyy03OHkb0JMjq63tmoX074FGHzX9Tz root@node2
2)创建目录,授予权限
[root@node2 walle-web]# mkdir -p /data/publish [root@node2 walle-web]# chown www:www -R /data/publish
3)项目检测
4)、项目发布
第一次加载分支有点久,不知是否是网络的问题
经过一波三折,总是上线成功,结果如下
5)发布时错误出现:
在上线的过程中,出现如下的错误
我们可以发现2.0的,已经可以提供了发布过程的命令配置界面,这就方便我们去找错误了,从上面的错误提示,是权限问题。
刚开始我还以为我的密钥问题,弄了好久,还把ssh服务弄down了,不过很快就想到以前我也是做了密钥验证了,是已经可以用www用户操作一些命令的。所以不是这个问题。
找了很久,发现是权限问题。
[root@node2 data]# l total 4.0K drwxr-xr-x 3 root root 18 Feb 27 10:45 publish/ drwxr-xr-x 7 mysql mysql 4.0K Feb 27 09:53 mysql/ drwxr-xr-x 4 root root 55 Feb 26 16:24 wwwroot/ [root@node2 walle-web]# chown www:www -R /data/wwwroot
因为以前wwwroot默认是www权限,没有想到,啥时候所属者变成root,有点难受,这就受到教训,不是亲眼看一下不要相信。
四、总结
旧版本切换新版本,搞到我大半天,注意点细节就不用搞的那么久了,walle2.0,界面感觉还不错,不过添加一些不受版本控制的代码,可能要麻烦点。。。。