centos7 walle2瓦力部署教程
项目部署上线,如果是单服务器,那么有多种方式可以部署,比如直接ftp上传,或者直接git去拉取,人工操作也不会花费精力和时间,但是如果采用了集群模式,有多台服务器,那么依靠一台一台的去上传代码,就显得耗费精力了,最重要的是,一旦某台服务器少传或者错传了代码,那么直接会影响服务运行,风险性高,如果代码出现问题,要回滚到上一个稳定版本的话,也只有单台单台的去重新恢复。如果有一套部署机制,能够实现多台服务器自动部署代码,那就会减少大量的时间和精力,服务出现问题也能一键回滚到稳定版本,那么瓦力绝对是一个很好的选择。当然,有小伙伴会说,有jekins可以实现,本人对jekins也有一定的了解,功能方面没问题,对于管理界面来说,那就真的比不上瓦力了,另外配置的复杂程度方面,个人认为瓦力的配置相对容易些。借用瓦力官方的介绍,这是一款支持各种web代码发布,php、java、python、go等代码的发布、回滚可以通过web来一键完成, 一个可自由配置项目,更人性化,高颜值,支持git、多用户、多语言、多项目、多环境同时部署的开源上线部署系统。walle目前为止有两个大版本,分别为walle1.x版本和walle2.0,两个版本不兼容,1.x版本使用php语言开发,使用web服务访问,2.0版本使用python开发,脚本管理,在部署效率上,有了大幅的提升,此文就介绍一下,walle2.0版本在centos7上面的安装部署过程,想部署1.x版本的伙伴可以自行去阅读官方文档部署。
walle1.x官方文档地址:https://walle-web.io/docs/1/installation.html,walle2.0官方文档地址:http://www.walle-web.io/docs/dependency.html
1.环境检查
nginx
git
Python 3.5+ 和 Python 2.7+
MySQL 5.6.5以上,否则会在安装时报错
在MySQL 5.6.5版本之前,Automatic Initialization and Updating只适用于TIMESTAMP,而且一张表中,最多允许一个TIMESTAMP字段采用该特性。从MySQL 5.6.5开始,Automatic Initialization and Updating同时适用于TIMESTAMP和DATETIME,且不限制数量。
2.下载walle
git clone https://github.com/meolu/walle-web.git
3.nginx配置
nginx.conf文件内容如下:
- upstream webservers {
- server 192.168.64.139: weight=; #域名设置,需要配置python的访问端口
- }
- server {
- listen ;
#设置为自己的IP- server_name 192.168.64.139;
- #charset koi8-r;
- #access_log /var/log/nginx/host.access.log main;
- location / {
- #这里设置为自己walle-web路径
- root /usr/share/nginx/html/walle-web/fe;
- index index.html index.htm;
- try_files $uri $uri/ /index.html;
- add_header access-control-allow-origin *;
- }
- #error_page /.html;
- # redirect server error pages to the static page /50x.html
- #
- error_page /50x.html;
- location = /50x.html {
- root /usr/share/nginx/html;
- }
- # proxy the PHP scripts to Apache listening on 127.0.0.1:
- #
- #location ~ \.php$ {
- # proxy_pass http://127.0.0.1;
- #}
- # pass the PHP scripts to FastCGI server listening on 127.0.0.1:
- #
- location ~ \.php$ {
- root /usr/share/nginx/html;
- fastcgi_pass 127.0.0.1:;
- fastcgi_index index.php;
- fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
- include fastcgi_params;
- }
- 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";
- }
- # deny access to .htaccess files, if Apache's document root
- # concurs with nginx's one
- #
- #location ~ /\.ht {
- # deny all;
- #}
- }
4.初始化
cd walle-web
sh admin.sh init
初始化会安装更新各种依赖包,执行时间较长,耐心等待,执行成功,如下图:
执行后,可能的报错:
1.ERROR: Package 'gunicorn' requires a different Python: 2.7.5 not in '>=3.4'
解决方式:
需要需改文件配置:/walle-web/requirements/prod.txt gunicorn>=19.1.1 改成 gunicorn==19.1.1
2.No module named flask.helpers
安装pip install flask-helpers
pip list 检查一下是否有 flask-helpers
修改完成后,重新执行初始化操作
5.配置数据库
先创建数据库walle
CREATE DATABASE `walle` DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci
修改配置文件:/walle-web/walle/config/settings_prod.py
修改瓦力数据源配置信息@TODO 部分是需要修改的,大致如下:
- # -*- coding: utf- -*-
- """
- walle-web
- Application configuration.
- 注意: 带了 @TODO 的地方可能需要你的调整
- :copyright: © - walle-web.io
- :created time: -- ::
- :author: wushuiyong@walle-web.io
- """
- import os
- from walle.config.settings import Config
- #修改为自己用户名,密码,地址
- SETTINGS = {
- "MYSQL_USER": "root",
- "MYSQL_PASSWORD": "",
- "MYSQL_DATABASE": "walle",
- "MYSQL_ROOT_PASSWORD": "",
- "MYSQL_HOST": "127.0.0.1",
- "MYSQL_PORT": ,
- }
- class ProdConfig(Config):
- """Production configuration."""
- ENV = 'prod'
- DEBUG = False
- SQLALCHEMY_ECHO = False
- # 服务启动 @TODO
- # HOST 修改为与 nginx server_name 一致.
- # 后续在web hooks与通知中用到此域名.
- HOST = '192.168.64.139'
- PORT =
- # https True, http False
- SSL = False
- # 数据库设置 @TODO
- SQLALCHEMY_DATABASE_URI = 'mysql://root:123456@localhost:3306/walle?charset=utf8'
- #SQLALCHEMY_DATABASE_URI = 'mysql+pymysql://{root}:{123456}@{localhost}:{3306}/{walle}?charset=utf8mb4'.format(
- #SETTINGS["MYSQL_USER"], SETTINGS["MYSQL_PASSWORD"], SETTINGS["MYSQL_HOST"], SETTINGS["MYSQL_PORT"],
- #SETTINGS["MYSQL_DATABASE"])
- # 阿里云RDS强制释放空闲连接导致经常报错 mysql server has gone way
- # 适当修改该参数即可 单位为秒
- # N秒不用的连接自动释放
- # SQLALCHEMY_POOL_RECYCLE =
- # 本地代码检出路径(用户查询分支, 编译, 打包) #TODO
- CODE_BASE = '/tmp/walle/codebase/'
- # 日志存储路径 @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 = * *
- # 邮箱配置 @TODO
- MAIL_SERVER = 'smtp.qq.com'
- MAIL_PORT =
- MAIL_USE_SSL = True
- MAIL_USE_TLS = False
- MAIL_DEFAULT_SENDER = 'xxxxxx'
- MAIL_USERNAME = 'xxxxxx'
- MAIL_PASSWORD = 'xxxxx'
- # 登录cookie 防止退出浏览器重新登录
- COOKIE_ENABLE = False
6.数据迁移
sh admin.sh migration
执行成功如下图所示:
7.启动/重启
启动:sh admin.sh start
重启:sh admin.sh restart
查看启动状态:netstat -ntpl 看到5000端口已开启
8.访问
浏览器访问:http://192.168.64.139,如果出现任何打开页面出现404或者只显示’wall-web 2.0’等,都是nginx配置或者服务没有启动,细心检查。walle运行过程,以及部署过程出错了,具体日志可以查看logs/runtime.log
默认提供的登录账户:
超管: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
登录后,界面如下:
到此,就把walle成功的部署了,后续还会有walle项目配置,部署上线的流程介绍,有兴趣的伙伴可以留意一下。各位如果觉得还有点意义,烦请点一下推荐,加个关注,互相交流。
centos7 walle2瓦力部署教程的更多相关文章
- Django+nginx+uwsgi部署教程(centos7+ubuntu16.4)
在线教育平台项目演示地址 项目部署教程 1.1.工作原理介绍 django 一个基于python的开源web框架 uwsgi 一是一个web服务器,也可以当做中间件 nginx 常用高性能代理服务器 ...
- 又一篇Centos7下的asp.net core部署教程
历程2个多月的学习,我终于从PHP转.Net开发了. 从壹开始前后端分离[ .NETCore2.1 +Vue 2 +AOP+DI]框架 感谢老张的博客,我对asp.net core入门主要就是靠他的博 ...
- 在CentOS7 开发与部署 asp.net core app笔记
原文:在CentOS7 开发与部署 asp.net core app笔记 版权声明:本文为博主原创文章,未经博主允许不得转载. https://blog.csdn.net/lihongzhai/art ...
- centos7.8 安装部署 k8s 集群
centos7.8 安装部署 k8s 集群 目录 centos7.8 安装部署 k8s 集群 环境说明 Docker 安装 k8s 安装准备工作 Master 节点安装 k8s 版本查看 安装 kub ...
- deepsooncms在Ubuntu 14.04上部署教程
deepsooncms在Ubuntu 14.04上部署教程 一.安装mono1.在命令行运行sudo apt-key adv --keyserver keyserver.ubuntu.com --re ...
- 自动化部署教程(一) redhat安装jenkins
自动化部署教程(一) redhat安装jenkins 源配置: sudo wget -O /etc/yum.repos.d/jenkins.repo http://pkg.jenkins-ci.or ...
- 写给新手看的Flask+uwsgi+Nginx+Ubuntu部署教程
学习 Flask,写完一个 Flask 应用需要部署的时候,就想着折腾自己的服务器.根据搜索的教程照做,对于原理一知半解,磕磕碰碰,只要运行起来了,谢天谢地然后不再折腾了,到下一次还需要部署时,这样的 ...
- LAMP 搭建wordpress部署教程贴.
LAMP 搭建wordpress部署教程贴.这是一篇主要将LAMP,并且通过wordpress来进行验证,演示.如何去部署PHP CMS很多新手看到LAMP就很很头大,觉得很难搞,编译安装,搞了好几天 ...
- Cowrie蜜罐部署教程【转载】
0.蜜罐分类: 低交互:模拟服务和漏洞以便收集信息和恶意软件,但是攻击者无法和该系统进行交互: 中等交互:在一个特有的控制环境中模拟一个生产服务,允许攻击者的部分交互: 高交互:攻击者可以几乎自由的访 ...
随机推荐
- 使用pem连接服务器
后台同学甩给你一个pem文件,username@IP后如何链接服务器 准备:ssh客户端 例子xshell 文件->新建->主机(连接界面主机输入框输入IP)->点击用户身份-> ...
- SV 类继承的多态性问题(NVDIA2019笔试)
1.原题 class class_a; virtual function void print_name(); $display("this is class_a"); endfu ...
- PHP0003:PHP基础2
die表示结束,程序到此运行不过来了. 字符串比较是挨个比较
- iframe在iphone手机上的问题
问题1: 通过document.addEventListener("scroll",function(){})对页面滚动监听事件进行监听,但ios下$(document).scro ...
- maven发布java-分支构建
1.安装parameter插件 2. 新建maven项目 3.配置maven项目 4.配置maven项目2 5.配置maven项目3 6. 模拟开发给提交打tag标签 7.版本发布 8.tag获取并构 ...
- 怎么利用 ChromeDriver 和 Selenium对 CEF应用进行自动化测试-java实现
Overview ChromeDriver and Selenium are tools for automated testing of Chromium-based applications. T ...
- Java中的isEmpty方法、null以及""的区别
本文转自:https://blog.csdn.net/peng86788/article/details/80885814 这是一个比较容易混淆的概念,为了弄清楚这个问题,最好的方法当然是写程序来验证 ...
- c基本语法和数据类型
一.C语言结构 C 程序主要包括以下部分: 预处理器指令 函数 变量 语句 & 表达式 注释 二.基本语法 1. 分号是语句结束符. 2. 单行注释//.多行注释/* */. 3. 标识符是 ...
- gitlab 备份和恢复
前言 gitlab这个代码托管工具真是强大,很多东西都是做好了直接用的. 这里就包括备份和恢复功能. 正文 备份 我们可以直接运行此命令,来进行备份. sudo gitlab-rake gitlab: ...
- Python静态方法、类方法、属性方法
静态方法 使用静态方法以后,相当于把下面的函数和类的关系截断了,它的作用相当于是类下面的一个独立函数,不会自动传入参数self. class people:..... @staticmethod de ...