Dai Chong's blog

二.前言-为什么要使用walle来管理项目

walle 让用户代码发布终于可以不只能选择 jenkins!支持各种web代码发布,php、java、python、go等代码的发布、回滚可以通过web来一键完成。walle 一个可自由配置项目,更人性化,高颜值,支持git、多用户、多语言、多项目、多环境同时部署的开源上线部署系统

1).个人而言,walle为我提供了一个非常方便的项目管理平台,从项目开发到项目测试再到项目上线walle为整个流程提供了一套完美的解决方案。

2).对公司团队而言,walle为管理者提供了一个非常好的项目管理工具。对项目质量、项目的进度、程序的安全和可靠性等等都提供了一定的保障。

三.正文-walle到底能做什么



PS:walle做的工作就是当你提交代码上线的时候,他会从宿主机(walle系统所在的机器)向你配置的git地址拉取代码、打包、上传到目标机器(正式环境所在的机器)上去、然后解压成完整的项目。

问:walle仅仅只能做这些工作吗?
答:1).当然不是啦!每次提交上线单(项目代码),walle都会保存一份在目标机上。当你新上线的程序发现了bug,这是你可以选择回滚代码(ai,这个就和InnoDB的事务有些相似了)。

 2).相比传统的ftp和sftp部署项目,walle就更加显得安全和可靠。

 3).相比jenkins,walle是由国人开发;界面、操作更加具有亲和力。

 4).同样他具有相比jenkins相同的特性pre_deploy、post_deploy、pre_release、post_release等高级任务这对于大部分开发框架来说都是非常棒的一个功能。

总结:walle的优点并不止这些,更多的内容需要大家亲自去发现和挖掘。

四.搭建walle部署系统-官网文档


 walle本身是由Python开发,但web需要使用nginx服务;所以搭建lnmp环境是比不可少的一步。

 第一步:克隆项目
1
git clone https://github.com/meolu/walle-web.git

 第二步: 配置nginx
nginx配置
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
upstream webservers {
server 0.0.0.0:5000 weight=1; # 负载设置
}

server {
listen 80;
server_name 你的域名或ip; # 域名设置
access_log /usr/local/nginx/logs/walle.log main;
index index.html index.htm; # 日志目录

location / {
try_files $uri $uri/ /index.html;
add_header access-control-allow-origin *;
root 指定到walle项目下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";
}
}

 第三步: 添加hosts
1
2
3
vi /etc/hosts
# 新增一行
127.0.0.1 你的域名 # 与nginx配置一致

 第四步: 安装Python 2.7 + pip。
1
2
# 切换到walle-web根目录下操作
sh admin.sh init

 第五步: 修改walle配置。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
# 切换到walle-web根目录下操作
vi walle/config/settings_prod.py
# @TODO 是为要修改的部分
# 服务启动 @TODO
# HOST 修改为与 nginx server_name 一致.
# 后续在web hooks与通知中用到此域名.
HOST = 你的域名
PORT = 5000
# https True, http False
SSL = False

# 数据库设置 @TODO
SQLALCHEMY_DATABASE_URI = 'mysql://user:password@localhost:3306/walle?charset=utf8'

# 本地代码检出路径(用户查询分支, 编译, 打包) #TODO
CODE_BASE = 项目路径,也就是宿主机的git仓库的路径

# 日志存储路径 @TODO
# 默认为walle-web项目下logs, 可自定义路径, 需以 / 结尾
# LOG_PATH = '/var/logs/walle/'
LOG_PATH = os.path.join(Config.PROJECT_ROOT, 'logs')
LOG_PATH_ERROR = os.path.join(LOG_PATH, 'error.log')
LOG_PATH_INFO = os.path.join(LOG_PATH, 'info.log')
LOG_FILE_MAX_BYTES = 100 * 1024 * 1024

# 邮箱配置 @TODO
MAIL_SERVER = 'smtp.exmail.qq.com'
MAIL_PORT = 465
MAIL_USE_SSL = True
MAIL_USE_TLS = False
MAIL_DEFAULT_SENDER = 'service@walle-web.io'
MAIL_USERNAME = 'service@walle-web.io'
MAIL_PASSWORD = 'Ki9y&3U82'

 第六步: 初始化项目。
1
2
3
4
# 创建数据库
mysql -hxx -uxx -p -e'CREATE SCHEMA walle'
# Data Migration
sh admin.sh migration

 第七步: 启动walle。
1
2
3
4
5
6
7
8
# 启动
sh admin.sh start
# 重启
sh admin.sh restart
# 升级
sh admin.sh upgrade
# Migration
sh admin.sh migration

最后访问你的域名就可以访问了!
1
2
3
4
5
超管:super@walle-web.io \ Walle123
所有者:owner@walle-web.io \ Walle123
负责人:master@walle-web.io \ Walle123
开发者:developer@walle-web.io \ Walle123
访客:reporter@walle-web.io \ Walle123

PS:下篇文章将会介绍如何配置项目、项目配置中可能会遇到的问题及解决办法、上线项目要注意的事项

 评论