
看到
Walle
是不是会想到迪士尼电影瓦力
~~~
瓦力.png
Walle2.0 自动化部署
开启部署之旅
这么好用并且尤其是国产,我们必须要:github - walle给此项目标个星
star
然后再克隆git clone https://github.com/meolu/walle-web.git
- Install
【克隆项目】git clone https://github.com/meolu/walle-web.git
【初始化】sh admin.sh init
- 修改walle配置数据库连接
# 这里是自己的绝对路径 请勿核对后复制后半段
【打开配置文件】vim /home/wwwroot/walle-web/walle/config/settings_prod.py
需要修改的部分:@TODO
SETTINGS = {
"MYSQL_USER": "root",
"MYSQL_PASSWORD": "walle",
"MYSQL_DATABASE": "walle",
"MYSQL_ROOT_PASSWORD": "walle",
"MYSQL_HOST": "127.0.0.1",
"MYSQL_PORT": 3306,
}
...
HOST = 'walle.xxxxx.com'
PORT = 5000
...
# 数据库设置 @TODO
SQLALCHEMY_DATABASE_URI = 'mysql+pymysql://{}:{}@{}:{}/{}?charset=utf8mb4'.format(
SETTINGS["MYSQL_USER"], SETTINGS["MYSQL_PASSWORD"], SETTINGS["MYSQL_HOST"], SETTINGS["MYSQL_PORT"],
SETTINGS["MYSQL_DATABASE"])
- Migration !(
Mysql5.6.5+
)
【创建数据库】mysql -h 127.0.0.1 -u root -p -e'create schema walle default character set utf8mb4 collate utf8mb4_general_ci'
【执行迁移】sh admin.sh migration # 这一部大部分人会报错请看最下面的问题解决
【启动】sh admin.sh start
【重启】sh admin.sh restart
【升级】sh admin.sh upgrade # 暂时还没用过,因为目前作者并未更新版本
- tail logs (附
Linux
命令)
【清空日志】> test.log
【实时监控100行日志】tail -100f logs/runtime.log
【查询日志尾部最后10行的日志】tail -n 10 logs/runtime.log
# 防止日志没有写入权限
【修改日志用户属组】chown -R www:www dir
【修改权限】chmod -R 660 dir
- nginx配置(为了安全并配置指定开放IP地址)
upstream webservers {
server 0.0.0.0:5000 weight=1; #域名设置(不要更改)
}
server {
listen 80;
server_name walle.xxxxx.com;
#access_log /data/logs/nginx/walle.log main;
index index.php index.html index.htm;
location / {
# 配置指定ip地址 访问 隔离其余用户
# if ($remote_addr != '39.***.***.***') {
# return 403;
# }
try_files $uri $uri/ /index.html;
add_header access-control-allow-origin *;
root /home/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";
}
}
- Hosts
vim /etc/hosts
# 新增一行
127.0.0.1 walle.xxxxx.com
大白话解答权限管理
- 默认用户并且他们的作用
默认密码都是:Walle123
- 超管:
super@walle-web.io
- 所有者:
owner@walle-web.io
- 负责人:
master@walle-web.io
- 开发者:
developer@walle-web.io
- 访客:
reporter@walle-web.io
- 权限模型->权限模型角色
首先使用
super
账户新增一个用户A和开发用户B,并新增一个空间SA,把A赋予SA作为空间所属人(这里俗称组长),然后就用用户A去管理整个空间以及分配权限。
所以说白了超管就是来1.
添加用户2.
赋予空间管理员
登陆
A
组长用户后,通过他自己的用户管理把B开发者添加到此空间来
所以空间就类似项目组,组长把组员拉进来
- 权限码表 (官网搬过来的)
- 一个用户必须先分配一个空间,方可登录系统
- 用户所有操作均在登录空间下,或有多个空间可以切换
action | reporter | developer | master | owner | super |
---|---|---|---|---|---|
Dashboard-xxx-查看 | ✓ | ✓ | ✓ | ✓ | ✓ |
部署中心-上线单-查看 | ✓ | ✓ | ✓ | ✓ | ✓ |
配置中心-项目管理-查看 | ✓ | ✓ | ✓ | ✓ | |
部署中心-上线单-新建、更新、删除 | ✓ | ✓ | ✓ | ✓ | |
用户中心-用户管理-查看 | ✓ | ✓ | ✓ | ||
用户中心-用户组管理-查看 | ✓ | ✓ | ✓ | ||
部署中心-上线单-审核 | ✓ | ✓ | ✓ | ||
配置中心-服务器管理-查看 | ✓ | ✓ | ✓ | ||
配置中心-项目管理-更新、删除 | ✓ | ✓ | ✓ | ||
配置中心-服务器管理-新建、更新、删除 | ✓ | ✓ | ✓ | ||
配置中心-项目管理-新建 | ✓ | ✓ | ✓ | ||
用户中心-用户管理-更新、删除 | ✓ | ✓ | |||
用户中心-用户组管理-更新、删除 | ✓ | ✓ | |||
用户中心-负责空间管理-查看、更新 | ✓ | ✓ | |||
空间管理-新建、查看、更新、删除 | ✓ |
部署Vue项目
目的是:
1.
摆脱本地打包后在dist
里用git
上传提交代码
2.
解决前端等待打包时间
3.
最恶心的就是打包上传后,文件/代码报错!需要继续等待打包然后上传。有walle
的话就可以当场回滚
代码,节约了大家的调试时间。
-
yum
安装Node.js
# setup_10.x 是对应的node版本
【下载】curl --silent --location https://rpm.nodesource.com/setup_10.x | sudo bash -
【安装】sudo yum -y install nodejs
【检查】node -v
【移除】yum remove nodejs npm -y
- 神奇的n模块 => node版本更新/切换
(n模块不支持Windows!!!)
推荐使用nvm
node版本管理
【安装n模块】npm install -g n
【升级node】n stable
# n命令冲突时需要 `/usr/local/node-v13.0.1-linux-x64/bin/n v10.16.3` 这种方式
【安装指定版本】n v10.16.3
- 配置
cnpm
淘宝镜像(为了更快的打包部署)
淘宝镜像
【临时使用】
【持久使用】npm --registry https://registry.npm.taobao.org install express
【检测配置】npm config get registry
【通过cnpm使用】npm install -g cnpm --registry=https://registry.npm.taobao.org
【使用】cnpm install express
- 安装Vue脚手架
vue/cli
【全局安装】npm install -g @vue/cli
- 自定义
全局变量
PROJECT_PATH=/home/wwwroot/walle-project/{project-A}/
VUE_BUILD=/{dir}/{dir}
WEB_ROOT=/home/wwwroot/{project-A}
- 高级任务-
Release
前置任务
echo '执行 git 拉取代码中 ... ...'
- 配置高级任务-
Release
后置任务
echo '===============================>>>>>>>'
echo '开始部署:'${PROJECT_NAME} - ${BRANCH}分支
echo '当前部署的版本号:'${COMMIT_ID} - ${DEPLOY_USER}
echo '<<<<<<==============================='
cd ${WEB_ROOT}${VUE_BUILD} && cnpm install
echo '开始打包... ...'
cd ${WEB_ROOT}${VUE_BUILD} && npm run build
echo '结束部署:'${DEPLOY_USER} - ${DEPLOY_TIME}

系统预置可用高级变量 (官方搬过来)
高级变量 | 备注 | 样例 |
---|---|---|
${WEBROOT} | 目标集群部署路径 | /data/www/walle-tiny-demo |
${CURRENT_RELEASE} | 目标集群部署仓库 | /data/releases/walle-tiny-demo |
${VERSION} | 当前要发布目标集群部署仓库里的版本 | 29_78_20190225_190422 |
${BRANCH} | 当前部署分支 | master |
${COMMIT_ID} | 当前部署的commit_id | abcde12 |
${PROJECT_NAME} | 当前部署的项目名称 | 大数据平台 |
${PROJECT_ID} | 当前部署的项目id | 12 |
${TASK_NAME} | 当前部署的任务名称 | 增加图表样式 |
${TASK_ID} | 当前部署的任务id | 11 |
${DEPLOY_USER} | 当前部署的用户 | 吴水永 |
${DEPLOY_TIME} | 当前部署的时间 | 2019-01-01 10:09:03 |
问题集合 github - issues
我提交并解答过的:
- 查看 walle 日志报错 flask.helpers 或者 No such command "db"
日志类似如下:
Traceback (most recent call last):
File "waller.py", line 5, in <module>
from flask.helpers import get_ debug_ flag
ImportError: No module named flask.helpers
- 检查 sh admin.sh init 初始化时是否最后有报错:如下图
ERROR: Package 'gunicorn' requires a different Python: 2.7.5 not in '>=3.4'

- python环境是2.7+
需要需改文件配置:/walle-web/requirements/prod.txt
如下图
# Deployment
gunicorn>=19.1.1 改成 gunicorn==19.1.1

- 然后一定要重新初始化
sh admin.sh init
再去执行初始化部署
如果还是不行pip list
检查一下是否有flask-helpers
如果没有pip install flask-helpers
安装后再尝试部署sh admin.sh init
-
Error: No such command "db"
如下图:(同1.
的解决方法一样,同一个问题不同的报错)
No such command.png
-
执行
migration
时报错,大部分是数据库没有配置
sqlalchemy.exc.OperationalError: (pymysql.err.OperationalError)
(1045, u"Access denied for user 'root'@'localhost'
(using password: YES)") (Background on this error at: http://sqlalche.me/e/e3q8)
Migration: [ fail ]
查看文章上面的「修改walle配置数据库连接」
修改walle-web/walle/config/settings_prod.py
配置文件
- 重启服务器后 接口
nginx502
处理
- 解决:重新执行以下
【启动】sh admin.sh start
connect() failed (111: Connection refused) while connecting to upstream, client:
39.xx.xxx.xx0, server: xxx.xxxx.com,
request: "GET /api/general/menu HTTP/1.1", upstream:
"http://0.0.0.0:5000/api/general/menu", host: "xxx.xxxx.com",
referrer: "http://xxx.xxxx.com/"


最后 我想说 :!
- 关于 walle 官方说:
我们期望打造一个比 jenkins 更为好用的的部署平台,walle团队孜孜不倦地做免费开源。愿 walle 能真真切切为你解决
DevOps
的问题,也愿能与志同道合之人相知畅聊。
- 关于 搭完之后我想说:
都记的去 github 点一个
star
,这是最有效的支持!!!!!!!
然后钱不在多,多少都是心意,哈哈哈哈哈嗝。寓意希望Walle
走的长长久久
打赏作者杯咖啡.jpeg
网友评论