walle介绍
- walle 让用户代码发布终于可以不只能选择 jenkins!支持各种web代码发布,php、java、python、go等代码的发布、回滚可以通过web来一键完成。
- walle一个可自由配置项目,更人性化,高颜值,支持git、多用户、多语言、多项目、多环境同时部署的开源上线部署系统。
特性
- 类gitlab的RESTful API,类gitlab的权限模型,将来打通gitlab,良心的惊喜
- 空间管理。意味着有独立的空间资源:环境管理、用户组、项目、服务器等
- 灰度发布。呼声不断,终于来了
- websocket 实时展示部署中的 shell console
- 完善的通知机制。邮件、钉钉
- 全新的UI,我自己都被震憾到了,如丝般流畅
原理分析
宿主机、目标机群、操作用户
宿主机、目标机群、操作用户关系如下图所示,宿主机(walle所在的机器),是一个中间机器,是代码托管与远程目标机群的纽带。所以宿主机需要与代码托管(github/gitlab)和远程目标机群都建立ssh-key信任。
权限模型
权限的角色分为SUPER 超管、OWNER 所有者、MASTER 负责人、DEVELOPER 开发者、REPORTER 访客,操作的资源包括空间、项目、上线单(任务)、环境、用户等
用户关系与信任关系
上线流程图
一.安装前准备
1.更换阿里云源
[root@localhost ~]#wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo
[root@localhost ~]#yum clean all
[root@localhost ~]#yum makecache
更新yum:
[root@localhost ~]#yum update
2.安装EPEL源 RHEL/CentOS 7
[root@localhost ~]#yum install -y https://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm
[root@localhost ~]#yum update
二.安装的MySQL
可参考yum安装mysql
安装nginx
可以参考ngin安装方法
修改配置
upstream webservers {
server 0.0.0.0:5000 weight=1; # 负载设置
}
server {
listen 80;
server_name localhost; # 域名设置
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 /usr/local/nginx/html/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";
}
}
下载安装资源
[root@localhost html]# wget https://github.com/meolu/walle-web/archive/master.zip
[root@localhost html]# unzip master.zip
[root@localhost html]# mv walle-web-master/ walle-web
安装python3.6
[root@localhost html]# yum -y install wget sqlite-devel xz gcc automake zlib-devel git openssl-devel epel-release git
[root@localhost html]# wget https://www.python.org/ftp/python/3.6.1/Python-3.6.1.tar.xz
[root@localhost html]# tar -xf Python-3.6.1.tar.xz
[root@localhost html]# cd Python-3.6.1
[root@localhost Python-3.6.1]# ./configure && make && make install
[root@localhost Python-3.6.1]# cd /opt/
[root@localhost opt]# python3.6 -m venv /opt/py3
修改安装脚本
[root@localhost opt]# cd /usr/local/nginx/html/walle-web/
[root@localhost walle-web]# vim admin.sh
把source ./venv/bin/activate
改为 source /opt/py3/bin/activate
如图
安装
[root@localhost walle-web]# sh admin.sh init
安装成功图片
修改配置文件
[root@localhost walle-web]# vim walle/config/settings_prod.py
主要修改数据的用户密码
数据库设置下面一行去掉注释
如图
安装数据连接工具
[root@localhost walle-web]# pip install mysqlclient
[root@localhost walle-web]# pip install pymysql
数据迁移
[root@localhost walle-web]# sh admin.sh migration
启动nginx,启动walle
[root@localhost walle-web]# nginx
[root@localhost walle-web]# netstat -lntup
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name
tcp 0 0 0.0.0.0:80 0.0.0.0:* LISTEN 76909/nginx: master
tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN 6537/sshd
tcp 0 0 127.0.0.1:25 0.0.0.0:* LISTEN 6696/master
tcp6 0 0 :::22 :::* LISTEN 6537/sshd
tcp6 0 0 ::1:25 :::* LISTEN 6696/master
tcp6 0 0 :::3306 :::* LISTEN 47790/mysqld
udp 0 0 0.0.0.0:22577 0.0.0.0:* 812/dhclient
udp 0 0 0.0.0.0:68 0.0.0.0:* 812/dhclient
udp 0 0 127.0.0.1:323 0.0.0.0:* 13599/chronyd
udp6 0 0 :::13792 :::* 812/dhclient
udp6 0 0 ::1:323 :::* 13599/chronyd
[root@localhost walle-web]# sh admin.sh start
llllllllllllll
l::::l l::::l
wwwwwww wwwww wwwwww aaaaaaaaaaaaa l::::l l::::l eeeeeeeeeeee
w:::::w w:::::w w:::::w a::::::::::::a l::::l l::::l ee::::::::::::ee
w:::::w w:::::::w w:::::w aaaaaaaaa:::::a l::::l l::::l e::::::eeeee:::::ee
w:::::w w:::::::::w w:::::w a::::a l::::l l::::l e::::::e e:::::e
w:::::w w:::::w:::::w w:::::w aaaaaaa:::::a l::::l l::::l e:::::::eeeee::::::e
w:::::w w:::::w w:::::w w:::::w aa::::::::::::a l::::l l::::l e:::::::::::::::::e
w:::::w:::::w w:::::w:::::w a::::aaaa::::::a l::::l l::::l e::::::eeeeeeeeeee
w:::::::::w w:::::::::w a::::a a:::::a l::::l l::::l e:::::::e
w:::::::w w:::::::w a::::a a:::::a l::::l l::::l e::::::::e
w:::::w w:::::w a:::::aaaa::::::a l::::l l::::l e::::::::eeeeeeee
w:::w w:::w a::::::::::aa::a l::::: l:::::l ee:::::::::::::e
www www aaaaaaaaaa aaaa llllllllllllllll eeeeeeeeeeeeee
Starting walle
----------------
Start walle: [ ok ]
runtime: logs/runtime.log
error: logs/error.log
浏览器访问
直接用ip访问既可
登录名和密码,官网提供
超管: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
搭建完成
整理了一两个小时终于好了。