官网介绍~ https://walle-web.io
walle 2.0 瓦力
walle 让用户代码发布终于可以不只能选择 jenkins!支持各种web代码发布,php、java、python、go等代码的发布、回滚可以通过web来一键完成。walle 一个可自由配置项目,更人性化,高颜值,支持git、多用户、多语言、多项目、多环境同时部署的开源上线部署系统。
具体安装部署步骤请参考官网,这里只说明下,使用过程中遇到的一些问题。
问题1.拉取分支的之后,提示错误。然后就再也无法拉取到了。之前是重新复制项目,重来。 现在我这里使用一个python脚本监控他的日志,当无法拉取分支提示错误的时候,就清除本地git缓存,叫它自动拉取就好了。
这里为监控日志文件脚本alarm_walle.py
#!/usr/bin/python
# -*- coding: utf-8 -*
import os,time,urllib2,shutil
file = open('/walle/walle-web/logs/runtime.log')
file.seek(0, os.SEEK_END)
while 1:
where = file.tell()
line = file.readline()
if not line:
time.sleep(1)
file.seek(where)
else:
if '"event":"error"' in line :
print line
os.system("rm -rf /tmp/walle/codebase/* ")
问题2,我们是nodejs框架在线上编译部署,使用walle后置任务发布是由于发布时间较长,它自己判定发布失败,删除了临时上传的新版本的压缩包,导致发布之后的服务器失败,我们这里把它自己删除压缩包的部署注释,放到发布成功后再删除。
源文件路径 /walle/walle-web/walle/service/deployer.py
问题3,把官网设置的通过nginx域名访问,改为端口方式访问,直接上配置代码
walle.conf
upstream webservers {
server 0.0.0.0:5000 weight=1; #域名设置
}
server {
listen 5001;
server_name 192.168.1.100; # 域名设置
access_log /data/logs/nginx/walle.log main;
index index.html index.htm; # 日志目录
location / {
try_files $uri $uri/ /index.html;
add_header access-control-allow-origin *;
root /data/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";
}
}