Walle 瓦力 安装部署

http://www.walle-web.io/docs/ 瓦力官网

Walle 一个web部署系统工具,配置简单、功能完善、界面流畅、开箱即用!支持git、svn版本管理,支持各种web代码发布,PHP,Python,JAVA等代码的发布、回滚,可以通过web来一键完成。

功能列表

  • 用户分身份注册、登录

  • 开发者发起上线任务申请、部署

  • 管理者审核上线任务

  • 支持多项目部署

  • 支持多项目多任务并行

  • 快速回滚

  • 项目的用户权限管理

  • 部署前准备任务pre-deploy(前置检查)

  • 代码检出后处理任务post-deploy(如vendor)

  • 同步后更新软链前置任务pre-release

  • 发布完毕后收尾任务post-release(如重启)

  • 执行sql构建(不要担心忘记测试环境sql同步)

  • 线上文件指纹确认

  • 支持git、svn版本管理

原理分析

宿主机、目标机群、操作用户关系如下图所示,宿主机(walle所在的机器),是一个中间机器,是代码托管与远程目标机群的纽带。

所以宿主机需要与代码托管(github/gitlab)和远程目标机群都建立ssh-key信任。

上线流程图

依赖

  • Bash(git、ssh)

    • 意味着不支持win、mac的zsh

  • LNMP/LAMP(php5.4+)

    • php需要开启pdo_mysql,exec函数执行

  • Composer

    • 如果国内环境安装极慢,可以直接下载vendor解压到项目根目录

  • ansible

安装

1、宿主机安装 ansible

yum install ansible # RHEL/CentOS/Fedora

apt-get install ansible # Debian/Ubuntu

emerge -avt ansible  # Gentoo/Funtoo

pip install ansible # will also install  paramiko PyYAML jinja2

2、宿主机无需其他配置,兼容 ~/.ssh/config 名称、证书配置

3、目标机无需额外配置

walle

  1. 项目配置 中 开启Ansible

  2. (可选) config/params.php 配置 ansible_hosts 文件存放路径

  3. 按正常流程发布、上线代码,传输文件、远程执行命令均会通过ansible并发执行

php5.6环境CentOS安装

删除老的安装包

remove php.x86_64 php-cli.x86_64 php-common.x86_64 php-gd.x86_64 php-ldap.x86_64 php-mbstring.x86_64 php-mcrypt.x86_64 php-mysql.x86_64 php-pdo.x86_64```

  • CentOs 6.x
     rpm -Uvh http://mirror.webtatic.com/yum/el6/latest.rpm
     CentOs 7.X
     rpm -Uvh https://mirror.webtatic.com/yum/el7/epel-release.rpm

    - 安装php 5.6相关组件
    
        ```yum install php56w.x86_64 php56w-cli.x86_64 php56w-common.x86_64 php56w-gd.x86_64 php56w-ldap.x86_64 php56w-mbstring.x86_64 php56w-mcrypt.x86_64 php56w-mysql.x86_64 php56w-pdo.x86_64
  • 安装php-fpm 5.6

    yum install php56w-fpm

安装部署 Walle

1.简洁安装指南

git clone git@github.com:meolu/walle-web.gitcd walle-webvi config/web.php # 设置mysql连接composer install  # 如果缺少bower-asset的话, 先安装:composer global require "fxp/composer-asset-plugin:*"./yii walle/setup   # 初始化项目配置nginx/apache的webroot指向walle-web/web

2.最最最详细安装指南

以下安装,均在宿主机(一台配置了LAMP/LNMP的linux机器,并且安装git/svn)上操作,如有问题,详见Q&A。

如果还没有安装php 5.4+环境的,请先安装php5.4+,详情看php 5.6安装。

1.代码检出

mkdir -p /data/www/walle-web && cd /data/www/walle-web  # 新建目录git clone git@github.com:meolu/walle-web.git .          # 代码检出

2.设置mysql连接

vi config/local.php +14'db' => [    'dsn'       => 'mysql:host=127.0.0.1;dbname=walle', # 新建数据库walle    'username'  => 'username',                          # 连接的用户名    'password'  => 'password',                          # 连接的密码],

3.安装composer,如果已安装跳过

curl -sS https://getcomposer.org/installer | phpmv composer.phar /usr/local/bin/composer                # PATH目录

4.安装vendor

cd walle-webcomposer install --prefer-dist --no-dev --optimize-autoloader -vvvv

安装速度慢或失败,可直接下载vendor解压到项目根目录

5.初始化项目

cd walle-web./yii walle/setup # 需要你的yes

6.配置nginx

凡是在第7步刷新页面看到50x均是前5步安装不完整,自行检查

凡是在第7步刷新页面看到404均是nginx配置不当,自行检查

nginx简单配置

server {    listen       80;    server_name  walle.compony.com; # 改你的host    root /the/dir/of/walle-web/web; # 根目录为web    index index.php;

    # 建议放内网    # allow 192.168.0.0/24;    # deny all;

    location / {        try_files $uri $uri/ /index.php$is_args$args;    }

    location ~ \.php$ {        try_files $uri = 404;        fastcgi_pass   127.0.0.1:9000;        fastcgi_param  SCRIPT_FILENAME  $document_root$fastcgi_script_name;        include        fastcgi_params;    }}

7.恭喜:)

访问地址:localhost

当然,可能你配置nginx时的server_name是walle.company.com时,配置本地hosts之后,直接访问:walle.company.com亦可。

安装错误

composer安装速度慢

好吧,我已经猜到会有人问有没有现成的,有! 下载百度网盘,解压vendor放到walle-web根目录即可。

第一次使用composer可能会出现的问题:1 没有添加git的token

Could not fetch https://api.github.com/repos/jquery/jquery, please create a GitHub OAuth token to go over the API rate limit
Head to https://github.com/settings/tokens/new?scopes=repo&description=Composer+on+localhost+2015-10-08+1123
to retrieve a token. It will be stored in “/root/.composer/auth.json” for future use by Composer.
Token (hidden):

解决办法:

  • 复制提示里的地址到浏览器,点击生成git token,如上面的:https://github.com/settings/tokens/new?scopes=repo&description=Composer+on+localhost+2015-10-08+1123

  • 复制token到命令行,认证,继续

第一次使用composer可能会出现的问题:2 composer install 可能会出现的错误

Loading composer repositories with package information
Installing dependencies (including require-dev)
Your requirements could not be resolved to an installable set of packages.

Problem 1

  • yiisoft/yii2 2.0.x-dev requires bower-asset/jquery 2.1.@stable | 1.11.@stable -> no matching package found.
    ….

解决办法composer global require "fxp/composer-asset-plugin:*"

如何添加用户key到git的ssh-keys列表

su - www           # 假如www为你的php进程用户ssh-keygen -t rsa     # 如果你都没有生成过rsa_key的话cat ~/.ssh/id_rsa.pub  # 复制打开github/gitlab添加到你的ssh-keys或者deploy-keys里

如何添加用户ssh-key到目标机群部署用户ssh-key信任

宿主机操作

ps aux|grep php         # 假如www_php为你的php进程用户su - www_php           # 切换用户ssh-keygen -t rsa        # 如果你都没有生成过rsa_key的话,如果有则跳过ssh-copy-id -i ~/.ssh/id_rsa.pub www_remote@remote_host  # 加入目标机群信任,需要输入www_remote密码

初始化walle时失败:could not find driver

缺少pdo扩展,解决办法:添加pdo扩展

ubuntuapt-get install php5 php5-fpm php5-mysql

或者在源码包里编译cd php-src/ext/pdo_mysqlphpize./configure --with-php-config=/php/install/dir/bin/php-configmake && make installvi php.ini # 添加pdo_mysql.sorestart php-fpm

7.nginx简单配置

server {    listen       80;    server_name  walle.company.com; # 改你的host    root /the/dir/of/walle-web/web; # 根目录为web    index index.php;

    # 建议放内网    allow 192.168.0.0/24;    deny all;

    location / {        try_files $uri $uri/ /index.php$is_args$args;    }

    location ~ \.php$ {        try_files $uri =404;        fastcgi_pass   127.0.0.1:9000;        fastcgi_param  SCRIPT_FILENAME  $document_root$fastcgi_script_name;        include        fastcgi_params;    }}

切换用户(www)时:this account is currently not available

cat /etc/passwd | grep www # 查看是否为 /sbin/nolgin

解决办法:

vipw /etc/passwd 修改/sbin/nolgin为/bin/bash

The file or directory to be published does not exists: /data/www/walle-web/vendor/bower/jquery/dist

新建此目录即可:/data/www/walle-web/vendor/bower/jquery/dist

Call to undefined function yii\web\mb_parse_str()

缺少mbstring扩展,安装mbstring扩展重启php即可。mbstring扩展:http://php.net/manual/zh/mbstring.installation.php

Git项目配置

git 项目配置指南

git部署是最推荐的方式,它无论对于何种语言都是合适的。

一、基本要求:

  1. 宿主机php进程用户www_php(假如,可通过配置的检测查看或ps aux|grep php)的ssh-key要加入git/gitlab的deploy-keys。当然也可以http地址带用户名密码(不推荐):https://username:password@github.com/meolu/walle-web.git

  2. 宿主机php进程用户www_php(假如,可通过配置的检测查看或ps aux|grep php)要加入目标机群部署用户www_remote(配置中)ssh-key信任,具体怎么添加可找sa或者百度或者,这一般是用户最不理解的地方,建议先花半小时理解linux用户概念和php配置。

二、配置项目


三、检测项目配置

配置完毕之后,先检测下,如无问题则可以发起上线单了:)

四、检测的错误和解决办法

  • 宿主机代码检出检测出错,请确认php进程用户{user}有代码存储仓库{path}读写权限,且把ssh-key加入git的deploy-keys列表。详细错误:{error}

    • 问题:请确认php进程用户{user}有代码存储仓库{path}读写权限

      没有权限,是因为用户{user}对目录{path}没有读写权限,给权限即可ll {path}chown {user} -R {path}chmod 755 -R {path}
    • 问题:把ssh-key加入git的deploy-keys列表

      su {user} && cat ~/.ssh/id_rsa.pub打开 github/gitlab/bitbucket 网站, 添加 ssh-key 到ssh-keys列表

可能的原因之一是clone git代码的时候,需要手工确认: git clone git@gitlab.xxx.com:yyy/zzz.git

目标机器部署出错,请确认php进程{local_user}用户ssh-key加入目标机器的{remote_user}用户ssh-key信任列表,且{remote_user}有目标机器发布版本库{path}写入权限。详细错误:{error}

  • 问题:请确认php进程{local_user}用户ssh-key加入目标机器的{remote_user}用户ssh-key信任列表

    添加机器信任,还是没理解请百度吧(因为太多的同学问这问题,实在没办法只能这么啰嗦)su {local_user} && ssh-copy-id -i ~/.ssh/id_rsa.pub remote_user@remote_server# need remote_user's password
  • 问题:{remote_user}有目标机器发布版本库{path}写入权限

    su remote_userll {path}chown {remote_user} -R {path}chmod 755 -R {path}

Svn项目配置

svn 项目配置

svn部署上线与git有点不太一样,svn是推荐增量发布(当然也可以全量更新),在开发者提交文件列表(可能带版本号),管理员审核上线单。发起部署时,为该上线单开辟一个独立空间,检出代码,选择上线单中的文件(可能带版本号)同步到目标机群。有不了解宿主机和目标机群关系、上线流程的同学先到项目主页了解。

因为svn没有git的版本快照,所以在部署需要全量代码编译操作时,只能选择全量更新,此时要求发布的分支/tag/trunk是可发布状态。建议java + git组合。同理其它需要全量代码在宿主机做编译相关的操作的语言,且为svn版本管理,请慎用。

一、基本要求:

  1. svn目录推荐以下规范,详细可以注册riouxsvn,作为svn测试地址。当然三无(无trunk、无branches、无tags)也是支持:)

  • branches

  • tags

  • trunk

宿主机php进程用户www_php(假如,可通过配置的检测查看或ps aux|grep php)要加入目标机群部署用户www_remote(配置中)ssh-key信任,具体怎么添加可找sa或者百度或者,这一般是用户最不理解的地方,建议先花半小时理解linux用户概念和php配置。

二、配置项目


三、检测项目配置

配置完毕之后,先检测下,如无问题则可以发起上线单了:)

四、检测的错误和解决办法

  • 宿主机代码检出检测出错,请确认php进程用户{user}有代码存储仓库{path}读写权限。详细错误:{error}

    没有权限,是因为用户{user}对目录{path}没有读写权限,给权限即可ll {path}chown {user} -R {path}chmod 755 -R {path}
  • 目标机器部署出错,请确认php进程{local_user}用户ssh-key加入目标机器的{remote_user}用户ssh-key信任列表,且{remote_user}有目标机器发布版本库{path}写入权限。详细错误:{error}

    • 问题:请确认php进程{local_user}用户ssh-key加入目标机器的{remote_user}用户ssh-key信任列表

      添加机器信任,还是没理解请百度吧(因为太多的同学问这问题,实在没办法只能这么啰嗦)su {local_user} && ssh-copy-id -i ~/.ssh/id_rsa.pub remote_user@remote_server# need remote_user's password
    • 问题:{remote_user}有目标机器发布版本库{path}写入权限

      su remote_userll {path}chown {remote_user} -R {path}chmod 755 -R {path}

高级任务配置

高级任务方便用户自定义一些操作,无论是在代码检出前后,还是切换版本前后。

一、java配置实例


pre_deploy任务

echo pre_deploy >> /tmp/cmd        # 初始化一些东西,自由发挥

post_deploy任务

mvn package -Dmaven.test.skip=true # 编译javamvn clean                          # 打扫mv WEB-INF/config.Properties.test WEB-INF/config.Properties # 切换环境相应的配置rm -rf src                         # 甚至删除无用代码

pre_release任务

./xx.sh stop                       # 暂停服务

post_release任务

./xx.sh start                      # 启动服务

二、如果我想执行sudo命令?


想执行sudo命令的前提是用户有root权限,要执行哪些命令?

  • 添加用户到sudoers

    visudowww    ALL=(ALL)       ALL
  • 添加免密码命令

    visudowww ALL = (ALL) NOPASSWD: /usr/local/nginx/bin/nginx
  • 设置用户的tty(宿主机执行sudo需要此步,目标机可以跳过此步)

    Defaults:www    !requiretty

项目用户配置

角色分为管理员(注册可选)、开发者(注册可选)、项目审核管理员(前面二者均可是)。

1.管理员

注册时,选择角色为管理员,注册后邮件验证,但此时也不是立刻拥有管理员权限,需要其它管理员审核通过才行。

管理员的权限列表

  • 配置新的项目、修改自己的项目配置

  • 审核新管理员

  • 设置项目的成员、项目审核管理员

  • 审核上线单

  • 上线

2.项目审核管理员

注册时无此用户角色,为管理员为减轻自己审核上线单压力、防止管理员不在线而影响上线而需要一两个代理审核管理员。但不能编辑项目配置,也不能添加项目成员,只比开发者多一个审核上线单的权限。

管理员的权限列表

  • 审核上线单

  • 上线


3.开发者

普通开发者可提交上线单,上线部署

管理员的权限列表

检测错误

  • 宿主机代码检出检测出错,请确认php进程用户{user}有代码存储仓库{path}读写权限,且把ssh-key加入git的deploy-keys列表。详细错误:{error}

    • 问题:请确认php进程用户{user}有代码存储仓库{path}读写权限

      没有权限,是因为用户{user}对目录{path}没有读写权限,给权限即可ll {path}chown {user} -R {path}chmod 755 -R {path}
    • 问题:把ssh-key加入git的deploy-keys列表

      su {user} && cat ~/.ssh/id_rsa.pub打开 github/gitlab/bitbucket 网站, 添加 ssh-key 到ssh-keys列表
  • 目标机器部署出错,请确认php进程{local_user}用户ssh-key加入目标机器的{remote_user}用户ssh-key信任列表,且{remote_user}有目标机器发布版本库{path}写入权限。详细错误:{error}

    • 问题:请确认php进程{local_user}用户ssh-key加入目标机器的{remote_user}用户ssh-key信任列表

      添加机器信任,还是没理解请百度吧(因为太多的同学问这问题,实在没办法只能这么啰嗦)su {local_user} && ssh-copy-id -i ~/.ssh/id_rsa.pub remote_user@remote_server# need remote_user's password# 为什么我把{local_user}的ssh-key加到远程机器的{remote_user}下的~/.ssh/authorized_keys还是不能免密码登录# 免密码登录需要远程机器权限满足以下三个条件:   /home/{remote_user} 755   ~/.ssh 700   ~/.ssh/authorized_keys 644 或 600
    • 问题:{remote_user}有目标机器发布版本库{path}写入权限

      su remote_userll {path}chown {remote_user} -R {path}chmod 755 -R {path}

提交上线单

上线单包括两种方式:gitsvn

一、git 项目提交上线单

二、svn 项目提交上线单

svn上线单与git类似,但有些区别,会有全量上线和增量上线两种主要形式,增量上线支持指定文件的版本号。分别看下可以有哪些格式填写上线单:

  • 上线全量文件

    *
  • 增量上线指定文件

    file_name1file_name2
  • 增量上线指定文件的指定版本

    file_name1 commit_idfile_name2 commit_id

部署出错

1.上线至全量更新服务器时出错:mv -fT

原因分析:更新目标机群是以软链方式来更新webroot,如果提前在目标机群创建了webroot目录,软链覆盖将会失败。

解决办法:直接删除目标机群webroot目录,确定其父目录有读写的权限即可,由瓦力系统生成webroot软链接。

2.上线出错,想知道到底发生了什么事情

有些错误walle捕捉不到,默认操作日志在/tmp/walle/下,具体可在config/local.phplog.dir配置路径,tail着日志,部署看日志。

3./tmp/walle下无日志文件

原因centos 7 yum 安装的php-fpm默认/tmp目录不可写:/usr/lib/systemd/system/php-fpm.service 中的 PrivateTmp=true 禁止了向tmp目录写日志

解决:

vi /usr/lib/systemd/system/php-fpm.servicePrivateTmp=false

systemctl daemon-reloadsystemctl reload php-fpm

致此瓦力已经部署成功!如有任何问题可联系博主或者登录官网查看详情。

转载于:https://blog.51cto.com/lwm666/2313929

Walle 瓦力 安装部署相关推荐

  1. Walle 瓦力 web部署系统

    Walle 一个web部署系统工具,可能也是个持续发布工具,配置简单.功能完善.界面流畅.开箱即用! 安装步骤: 1. git clone 首先配置成功(去百度找答案) 打开git bash命令窗口执 ...

  2. walle(瓦力)部署系统的安装和简单使用

    Walle(瓦力):一套软件开发的部署系统.提供了清晰的日志记录,支持数据的回滚.用于解决大型团队在软件开发中的测试.预测试和上线的统一部署管理. 系统环境:CentOS6.8-A CentOS-6. ...

  3. 2021年大数据Flink(三):​​​​​​​Flink安装部署 Local本地模式

    目录 Flink安装部署 Local本地模式 原理 操作 测试 Flink安装部署 Flink支持多种安装模式 - Local-本地单机模式,学习测试时使用 - Standalone-独立集群模式,F ...

  4. Mycat 读写分离 数据库分库分表 中间件 安装部署,及简单使用

    MyCat是一个开源的分布式数据库系统,是一个实现了MySQL协议的服务器,前端用户可以把它看作是一个数据库代理,用MySQL客户端工具和命令行访问,而其后端可以用MySQL原生协议与多个MySQL服 ...

  5. 【SVN】1. SVN 安装部署

    一. SVN概述 1. SVN 简介   Subversion 版本控制系统 简称 SVN.   SVN 是一个跨平台开放源代码的集中式版本控制系统,可以实现文件及目录的保存及版本回溯.   SVN ...

  6. Docker概述和安装部署

    概述 Docker产生的背景 一款产品从开发到上线,从操作系统,到运行环境,再到应用配置.作为开发+运维之间的协作我们需要关心很多东西,这也是很多互联网公司都不得不面对的问题,特别是各种版本的迭代之后 ...

  7. DSVS7050签名服务器的网站,吉大正元数字签名服务器-安装部署手册(COM版 VCTK_S接口)2.1.1.doc...

    吉大正元数字签名服务器-安装部署手册(COM版 VCTK_S接口)2.1.1 数字签名服务器v2.1.1 安装部署手册 (VSTK接口 COM版) V2.1.1 长 春 吉 大 正 元 信 息 技 术 ...

  8. Airflow安装部署

    Airflow安装部署 新闻信息是通过爬虫获取,使用scrapy框架进行爬虫任务:使用airflow工作流监控平台对爬虫任务进行管理.监控(可使用CeleryExecutor分布式,也可使用Local ...

  9. logicaldoc 6.5 结合postgresql 9.x安装部署—基于windows平台

    2019独角兽企业重金招聘Python工程师标准>>> 湘中朱生   2012年9月于深圳 说明:原创内容,请勿转载! <1> 从官网下载部署包 官方网站提供源码包和集成 ...

最新文章

  1. JPEG算法概述及实现
  2. 【LINUX 学习】Ext3 的三种日志记录方式
  3. js事件循环 microtask macrotask
  4. 学计算机用华硕电脑,请问华硕笔记本电脑什么型号比较好用,就商务办公?
  5. cos html cache插件,关于Cos-Html-Cache插件不能创建首页缓存的解决办法
  6. java 6 jaxb_JAVA6开发WebService (五)—— JAXB
  7. ES6 深拷贝_你别自以为是:ES6误区 之 Object.assign()、const
  8. 鲲鹏云实验-Python+Jupyter机器学习基础环境
  9. SpringBoot : BeanFactory
  10. Impala如何支持array<string> 解决问题
  11. 爬虫入门系列(四):HTML 文本解析库 BeautifulSoup
  12. GJB 8114编码标准检查软件产品简介
  13. html 图片滑动验证码,html+jQuery实现拖动滑块图片拼图验证码插件【移动端适用】...
  14. comsol服务器的性能如何,COMSOL Server
  15. 立足于软硬“解耦”的软件定义网络
  16. 利用Backtrader进行期权回测之五:用backtrader_plotting查看回测结果
  17. 安装andriod studio
  18. java发微信_java实现微信发送消息
  19. Remove 以及dorp做实验验证MongoDB删除文档后索引是否会自动删除
  20. 机器人香囊_中山街道仪凤街社区开展“能手包粽子 巧手绣香包”欢度端午节活动...

热门文章

  1. 欧姆龙nj与nx哪个高端_欧姆龙NJ/NX/Sysmac Studio实用经典教程 欧姆龙NJ视频教程
  2. 【Git从入门到精通】02-深入Git
  3. 史上最快最简Windows10激活
  4. 一、什么样的网站才算是地方门户网站
  5. 常用工具类(8/14)
  6. BUUCTF:镜子里面的世界
  7. 开源代码分析技巧之四——国外技术社区提问
  8. 移动短信回执怎么开通_发送什么指令到10086开通短信回执?
  9. 图纸上标注的是实际尺寸吗_CAD或工程图上与实际尺寸比例公式有?
  10. 如何向虚拟服务器传送文件,如何往虚拟机内传文件的3种方法