搭建Walle2.0自动部署(国产Jenkins)

2020-01-03  本文已影响0人  Super三脚猫
Walle.png

看到Walle是不是会想到迪士尼电影瓦力~~~

瓦力.png

Walle2.0 自动化部署

开启部署之旅

这么好用并且尤其是国产,我们必须要:github - walle给此项目标个星star
然后再克隆git clone https://github.com/meolu/walle-web.git

【克隆项目】git clone https://github.com/meolu/walle-web.git
【初始化】sh admin.sh init
# 这里是自己的绝对路径 请勿核对后复制后半段
【打开配置文件】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"])
【创建数据库】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 # 暂时还没用过,因为目前作者并未更新版本
【清空日志】> test.log
【实时监控100行日志】tail -100f logs/runtime.log
【查询日志尾部最后10行的日志】tail -n 10 logs/runtime.log
# 防止日志没有写入权限
【修改日志用户属组】chown -R www:www dir
【修改权限】chmod -R 660 dir
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";
    }
}
vim /etc/hosts
# 新增一行
127.0.0.1  walle.xxxxx.com
大白话解答权限管理
  1. 超管:super@walle-web.io
  2. 所有者:owner@walle-web.io
  3. 负责人:master@walle-web.io
  4. 开发者:developer@walle-web.io
  5. 访客:reporter@walle-web.io

首先使用super账户新增一个用户A和开发用户B,并新增一个空间SA,把A赋予SA作为空间所属人(这里俗称组长),然后就用用户A去管理整个空间以及分配权限。
所以说白了超管就是来1.添加用户2.赋予空间管理员

登陆A组长用户后,通过他自己的用户管理把B开发者添加到此空间来
所以空间就类似项目组,组长把组员拉进来

  1. 一个用户必须先分配一个空间,方可登录系统
  2. 用户所有操作均在登录空间下,或有多个空间可以切换
action reporter developer master owner super
Dashboard-xxx-查看
部署中心-上线单-查看
配置中心-项目管理-查看
部署中心-上线单-新建、更新、删除
用户中心-用户管理-查看
用户中心-用户组管理-查看
部署中心-上线单-审核
配置中心-服务器管理-查看
配置中心-项目管理-更新、删除
配置中心-服务器管理-新建、更新、删除
配置中心-项目管理-新建
用户中心-用户管理-更新、删除
用户中心-用户组管理-更新、删除
用户中心-负责空间管理-查看、更新
空间管理-新建、查看、更新、删除
部署Vue项目

目的是:
1. 摆脱本地打包后在dist里用git上传提交代码
2. 解决前端等待打包时间
3. 最恶心的就是打包上传后,文件/代码报错!需要继续等待打包然后上传。有walle的话就可以当场回滚代码,节约了大家的调试时间。

 # 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模块】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
【临时使用】
【持久使用】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
【全局安装】npm install -g @vue/cli
PROJECT_PATH=/home/wwwroot/walle-project/{project-A}/
VUE_BUILD=/{dir}/{dir}
WEB_ROOT=/home/wwwroot/{project-A}
echo '执行 git 拉取代码中 ... ...'
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}
任务配置.png
系统预置可用高级变量 (官方搬过来)
高级变量 备注 样例
${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

我提交并解答过的:

  1. No module named flask.helpers
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
gunicorn.png
# Deployment
gunicorn>=19.1.1  改成 gunicorn==19.1.1
prod.txt.png
  1. Error: No such command "db"
    如下图:(同1.的解决方法一样,同一个问题不同的报错)

    No such command.png
  2. 执行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配置文件

  1. 重启服务器后 接口nginx502 处理
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接口502.png walleNginx日志.png
最后 我想说 :!

我们期望打造一个比 jenkins 更为好用的的部署平台,walle团队孜孜不倦地做免费开源。愿 walle 能真真切切为你解决 DevOps 的问题,也愿能与志同道合之人相知畅聊。

都记的去 github 点一个star,这是最有效的支持!!!!!!!
然后钱不在多,多少都是心意,哈哈哈哈哈嗝。寓意希望Walle走的长长久久

打赏作者杯咖啡.jpeg
上一篇 下一篇

猜你喜欢

热点阅读