walle 瓦力--部署系統(從原理到安裝)

瓦力介紹

Walle 一個web部署系統工具,配置簡單、功能完善、界面流暢、開箱即用!支持git、svn版本管理,支持各類web代碼發佈,PHP,Python,JAVA等代碼的發佈、回滾,能夠經過web來一鍵完成。php

功能列表

用戶分身份註冊、登陸
開發者發起上線任務申請、部署
管理者審覈上線任務
支持多項目部署
支持多項目多任務並行
快速回滾
項目的用戶權限管理
部署前準備任務pre-deploy(前置檢查)
代碼檢出後處理任務post-deploy(如vendor)
同步後更新軟鏈前置任務pre-release
發佈完畢後收尾任務post-release(如重啓)
執行sql構建(不要擔憂忘記測試環境sql同步)
線上文件指紋確認
支持git、svn版本管理

原理分析

clipboard.png
上線流程圖mysql

clipboard.png

依賴

Bash(git、ssh)jquery

意味着不支持win、mac的zsh

LNMP/LAMP(php5.4+)linux

php須要開啓pdo_mysql,exec函數執行

Composernginx

若是國內環境安裝極慢,能夠直接下載vendor解壓到項目根目錄

ansible
安裝git

一、宿主機安裝 ansiblegithub

yum install ansible # RHEL/CentOS/Fedoraweb

apt-get install ansible # Debian/Ubuntusql

emerge -avt ansible # Gentoo/Funtoo數據庫

pip install ansible # will also install paramiko PyYAML jinja2

二、宿主機無需其餘配置,兼容 ~/.ssh/config 名稱、證書配置

三、目標機無需額外配置
walle

項目配置 中 開啓Ansible
(可選) config/params.php 配置 ansible_hosts 文件存放路徑
按正常流程發佈、上線代碼,傳輸文件、遠程執行命令均會經過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/yu...
CentOs 7.X
rpm -Uvh https://mirror.webtatic.com/y...

  • 安裝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

安裝

git clone git@github.com:meolu/walle-web.git
cd walle-web
vi config/web.php # 設置mysql鏈接
composer install # 若是缺乏bower-asset的話, 先安裝:composer global require "fxp/composer-asset-plugin:*"
./yii walle/setup # 初始化項目

配置nginx/apache的webroot指向walle-web/web

最最最詳細安裝指南

如下安裝,均在宿主機(一臺配置了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/insta... | php
mv composer.phar /usr/local/bin/composer # PATH目錄

4.安裝vendor

cd walle-web
composer 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擴展

ubuntu
apt-get install php5 php5-fpm php5-mysql

或者在源碼包裏編譯
cd php-src/ext/pdo_mysql
phpize
./configure --with-php-config=/php/install/dir/bin/php-config
make && make install
vi php.ini # 添加pdo_mysql.so
restart 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 yiiwebmb_parse_str()

缺乏mbstring擴展,安裝mbstring擴展重啓php便可。mbstring擴展:http://php.net/manual/zh/mbst...

相關文章
相關標籤/搜索