瓦力在線部署工具

首先感謝軟件開源做者http://www.walle-web.io/aboutme.htmljavascript

官方教程http://www.walle-web.io/php

 

依賴環境 centos7

ansible非必須html

php5.6安裝過程

1. 刪除老的安裝包java

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_64mysql

2. 這個連接包含安裝php5.6源和svn用法linux

http://www.cnblogs.com/jokerbj/p/9034188.htmlnginx

3. 安裝php5.6相關組件git

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
github

4. 安裝php-fpm 5.6web

yum install php56w-fpm

 

nginx服務

yum install nginx

其餘依賴

須要安裝svn,git命令

yum install svn git

 

瓦力安裝

該安裝咱們稱爲宿主機安裝,其實也就是瓦力在這臺機子上部署而已,svn能夠不放在宿主機

咱們實驗環境以下

宿主機 192.168.1.127

目標主機(上線的主機,業務主機)192.168.1.107

由於我只有2個主機,因此咱們在192.168.1.127只安裝了瓦力,192.168.1.107安裝svn服務和mysql服務

 

1.代碼檢出

mkdir -p /data/www/walle-web && cd /data/www/walle-web  # 新建目錄
git clone https://github.com/meolu/walle-web.git . # 代碼檢出

2.設置mysql鏈接

vi config/local.php +14
'db' => [
'dsn' => 'mysql:host=192.168.1.107;dbname=walle', # 新建數據庫walle
'username' => 'walle', # 鏈接的用戶名
'password' => '123456', # 鏈接的密碼
],

3.安裝composer,若是已安裝跳過

curl -sS https://getcomposer.org/installer | php
mv composer.phar /usr/local/bin/composer # PATH目錄

php -r "readfile('installer');" | php

 

4.安裝vendor

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

安裝速度慢或失敗,可直接下載vendor解壓到項目根目錄

5.初始化項目

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

./configure --prefix=/usr/local/php --with-config-file-path=/usr/local/php/etc --enable-ctype --with-mysql=mysqlnd --with-mysqli=mysqlnd --with-freetype-dir --with-jpeg-dir --with-png-dir --with-zlib --with-libxml-dir=/usr --enable-xml --disable-rpath --enable-bcmath --enable-shmop --enable-sysvsem --enable-inline-optimization --with-curl --enable-mbregex --enable-mbstring --with-mcrypt --with-gd --enable-gd-native-ttf --with-openssl --with-mhash --enable-pcntl --enable-sockets --with-ldap-sasl --with-xmlrpc --enable-zip --enable-soap --with-gettext --enable-fpm --with-pdo_mysql

6.配置nginx

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

凡是在第7步刷新頁面看到404均是nginx配置不當,自行檢查

nginx簡單配置

server {
listen 80;
server_name 192.168.1.127; # 改你的host
root /data/www/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;
}
}

 

[root@joker walle-web]# systemctl start nginx
[root@joker walle-web]# systemctl start php-fpm

[root@joker walle-web]# systemctl start mysqld

 

 

7.恭喜:)

訪問地址:localhost

固然,可能你配置nginx時的server_name是192.168.1.127時,配置本地hosts以後,直接訪問:192.168.1.127亦可。

默認密碼admin admin

 

 

 

svn項目配置

svn 項目配置

svn部署上線與git有點不太同樣,svn是推薦增量發佈(固然也能夠全量更新),在開發者提交文件列表(可能帶版本號),管理員審覈上線單。發起部署時,爲該上線單開闢一個獨立空間,檢出代碼,選擇上線單中的文件(可能帶版本號)同步到目標機羣。有不瞭解宿主機和目標機羣關係、上線流程的同窗先到項目主頁瞭解。

由於svn沒有git的版本快照,因此在部署須要全量代碼編譯操做時,只能選擇全量更新,此時要求發佈的分支/tag/trunk是可發佈狀態。建議java + git組合。同理其它須要全量代碼在宿主機作編譯相關的操做的語言,且爲svn版本管理,請慎用。

1、基本要求:

  1. svn目錄推薦如下規範,詳細能夠註冊riouxsvn,做爲svn測試地址。固然三無(無trunk、無branches、無tags)也是支持:)

    • branches
    • tags
    • trunk
  2. 宿主機php進程用戶www_php(假如,可經過配置的檢測查看或ps aux|grep php)要加入目標機羣部署用戶www_remote(配置中)ssh-key信任,具體怎麼添加可找sa或者百度或者,這通常是用戶最不理解的地方,建議先花半小時理解linux用戶概念和php配置。

2、配置項目


 

3、檢測項目配置

配置完畢以後,先檢測下,如無問題則能夠發起上線單了:)

4、檢測的錯誤和解決辦法

  • 宿主機代碼檢出檢測出錯,請確認php進程用戶{user}有代碼存儲倉庫{path}讀寫權限。詳細錯誤:{error},PHP默認啓動用戶apache,咱們將php和nginx啓動用戶改爲work,建立work用戶。根據上圖我們的paht就是/home/work/tmp

    沒有權限,是由於用戶{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},目標主機也是要建立work用戶,爲了後面同步

    • 問題:請確認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}寫入權限,我們的path目錄就是/data/www/web-data

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

 

其餘問題http://www.walle-web.io/docs/troubleshooting.html

 

 

增長個環境

 

models/Project.php
//研發環境
const LEVEL_DEV = 4;


messages/zh-CN/w.php
'conf_level_4' => '研發環境',

 

views/task/select-project.php
<!-- 研發環境 -->
<div class="widget-box transparent">
<div class="widget-header">
<h4 class="lighter"><?= yii::t('w', 'conf_level_4') ?></h4>

<div class="widget-toolbar no-border"><a href="javascript:;" data-action="collapse">
<i class="icon-chevron-up"></i>
</a>
</div>
</div>

<div class="widget-body">
<div class="widget-main padding-6 no-padding-left no-padding-right">
<?php foreach ($projects as $project) { ?>
<?php if ($project['level'] == Project::LEVEL_DEV) { ?>
<a class="btn btn-inline btn-info" style="min-width:120px;margin:auto auto 20px 40px;" href="<?= Url::to("@web/task/submit?projectId={$project['id']}") ?>"><?= $project['name'] ?></a>
<?php } ?>
<?php } ?>
</div>
</div>
</div>

views/conf/edit.php
Project::LEVEL_DEV => \Yii::t('w', 'conf_level_' . Project::LEVEL_DEV),

 

 

 

Executing: $ ssh -T -p 33899 -q -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no -o CheckHostIP=false 'www'@'ip'
'ln -sfn /data/releases/nidaye/20190625-125715 /data/releases/nidaye/current-nidaye.tmp
&& chown -h www /data/releases/nidaye/current-nidaye.tmp
&& mv -fT /data/releases/nidaye/current-nidaye.tmp /data/www/nidaye
&& . /etc/profile && cd /data/releases/nidaye/20190625-125715
&& echo "restart" > /tmp/log && sh /home/www/test.sh'

執行 -T 僞終端,保持鏈接 -q 靜默模式 -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no 取消交互認證 -o CheckHostIP=false 防止DNS欺騙 -s 軟鏈接 -f 覆蓋 -n 目錄當作普通文件 -f 禁止交互操做,就是不提醒 -T 避免目標目錄是否存在而產生的不肯定性

相關文章
相關標籤/搜索