walle(瓦力)部署系統的安裝和簡單使用


Walle(瓦力):一套軟件開發的部署系統。提供了清晰的日志記錄,支持數據的回滾。用於解決大型團隊在軟件開發中的測試、預測試和上線的統一部署管理。

系統環境:CentOS6.8-A CentOS-6.8-B

軟件支持:walle  ssh  php-5.6  gitlab-8.6.0  composer  nginx-1.10  git2.3  Mysql5.6

安裝過程:

    1. 基礎環境
      1. yum install openssh-clients  支持ssh(CentOS6.8-A)
      2. 安裝nginx(請自行百度,CentOS6.8-A)
      3. 安裝php-5.6(請自行百度),把php配置到環境變量。(CentOS6.8-A)
      4. 安裝composer(請自行百度),php composer-setup.php --install-dir=/usr/bin --filename=composer(CentOS6.8-A)
      5. 安裝gitlab(請參考官網安裝教程, CentOS6.8-B)
      6. 安裝git(請自行百度)。並添加到環境變量(CentOS6.8-A)
      7. 安裝Mysql5.6(請自行百度)
    2. 測試基礎環境搭建
      1. 在CentOS6.8-A中通過nginx訪問php文件是否成功
      2. 在CentOS6.8-B中訪問gitlab是否成功
    3. 用戶配置
      1. 添加新用戶(www_php),並且是可登錄的正常用戶
      2. 設置php-fpm的用戶以及用戶組為新創建的用戶(www_php),並設置重啟
      3. 為新的用戶通過ssh生成密鑰(公鑰和私鑰)
      4. 把新用戶的公鑰添加到gitlab,並進行測試無密碼git操作(拉取|推送等等),首次拉取會進行服務端身份指紋的驗證,再次拉取則可以進行無密碼拉取
      5. 設置新用戶自己通過ssh無密碼連接自己(centos可以通過ssh連接自己)
    4. 文件權限設置
      1. mkdir /storage/deploy/form
      2. mkdir /storage/deploy/release
      3. mkdir /storage/www
      4. 設置上述創建的文件可以為新用戶(www_php)讀寫的權限
    5. 安裝walle(http://www.walle-web.io/docs/installation.html)
      1. git clone https://github.com/meolu/walle-web.git
      2. 在walle-web->config->local.php文件中配置連接Mysql的參數
      3. composer install --prefer-dist --no-dev --optimize-autoloader -vvvv 通過composer安裝walle-web的第三方拓展
      4. walle-wab->yii walle/setup  初始化項目
      5. 配置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;
    }
}

      6. 訪問域名。內容的管理員帳號為admin|admin

問題解答

  1:請確認php進程用戶{user}有代碼存儲倉庫{path}讀寫權限。

    chown -R {user}:{user} {path}

    chmod 755 {path}

    2:請確認php進程用戶{user}把ssh-key加入git的deploy-keys列表

      1):沒有把{user}生成的公鑰添加到gitlab的ssh-key管理列表中。請添加,並且測試是否可以通過{user}進行無密碼的git的操作

      2):確定把{user}加入到了指定的git管理倉庫中,那么請使用git隨便拉取一個repository,因為首次拉取會讓客戶端進行遠程服務端的身份指紋驗證的操作

      請確保{user}可以進行無密碼的正常拉取操作

      3):當以上兩種情況都沒有問題,命令行可以正常拉取,但是通過walle還是報錯。請將git創建一個軟連接到/usr/bin。(本人遇到的就是這個問題)

    3:gitlab在添加ssh的時候報500錯誤

      cat  /var/log/gitlab/gitlab-rails/production.log

      1):/usr/bin/env: ssh   

        yum install openssh-clients -y

    4:請確認php進程{local_user}用戶ssh-key加入目標機器的{remote_user}用戶ssh-key信任列表

      請確保{local_user} 通過ssh可以無密碼登錄{remote_user}

    5:{remote_user}有目標機器發布版本庫{path}寫入權限

      解決方法請參考->1

    6:walle上線出現無法已非目錄覆蓋目錄

      

       這里的webroot填寫的存放路徑的最后一個文件名稱,不能存在。walle會部署項目的時候以最后一個名稱為項目文件名。如:/www/webroot/test  則test不需要創建,並且test需要有針對上圖中的[用戶]擁有讀寫權限。

 

walle的原理解析

    通過PHP中的exec()函數基於SSH安全驗證機制(免密碼登錄)進行一系列的命令操作,如git的拉取、文件夾的創建、文件的遠程拷貝等等。  

 

  


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM