代码上线系统一直是我比较关注的问题。

以前公司试过直接用ftp上传。每次3台web服务器同时上传,费时而且容易出错

后来使用过Beyond Compare,每次上传前比较,也差不多费力

再后来公司使用svn,使用运维写的shell脚步上传,就方便很多。 但还是需要登录linux服务器操作,所以上传只能运维上传,不能分工到其他人,很多时候不方便。

一直想要个web界面的代码发布系统,刚好发现了瓦力系统,觉得不错,尝试本地安装测试下。
参考文章瓦力官网http://www.walle-web.io
注:安装前需要安装PHP,Mysql,Nginx

1. 代码检出

1
2
yum install git #如果没有安装git
git clone https://github.com/meolu/walle-web.git

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

1
2
curl -sS https://getcomposer.org/installer | php
mv composer.phar /usr/local/bin/composer

3. 修改mysql连接

1
2
3
4
5
6
7
cd walle-web
vi config/local.php
'db' => [
'dsn' => 'mysql:host=127.0.0.1;dbname=walle', # 新建数据库walle
'username' => 'username', # 连接的用户名
'password' => 'password', # 连接的密码
],

4. 安装vendor

1
2
cd walle-web
composer install --prefer-dist --no-dev --optimize-autoloader -vvvv

如果没有composer,也可以直接下载vendor包,放在根目录,下载链接http://pan.baidu.com/s/1c0wiuyc

5. 初始化项目

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

此为初始化数据库,后台登录名默认admin/admin。笔者缺少此步,发现没法登录

6. 配置nginx

访问localhost测试,发现自动跳转到localhost/site/login就404,分析四nginx配置错误 nginx简单配置

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
server {
listen 80;
server_name walle.compony.com; # 改你的host
root /root/walle-web/web; # 根目录为web
index index.php;

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;
}
}

调整配置,设置权限,重启nginx

7. 测试

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

8. 创建目录,修改权限

1
2
groupadd www #添加www组
useradd -g www www #添加用户www同上加入www组

9.github ssh key

phpssh-keygen -b 2048 -t rsa #产生key vi /home/www/.ssh/id_rsa.pub

复制到github setting ssh设置中

10. 目标服务器免密码登录

ssh配置

A机器www用户免密码登录B机器
参考博客文章
SSH免密码登录失败

11. 设置好wwwroot目录和发布版本库目录

walle项目配置

注意测试好权限,发现这里有一个提示的bug 一直提示我发布版本库wwwroot写入权限错误。后才发现是发布版本库权限错误而不是wwwroot权限错误

12. 检测

检测通过后,在“我的上线单”->“创建上线单”,然后对应进行。 上线成功后发现wwwroot目录是软连接到发布版本库

测试成功