walle自動化部署

一、部署環境php

cd /usr/local/srcmysql

wget --no-check-certificate https://api.sinas3.com/v1/SAE_lnmp/soft/lnmp1.2-full.tar.gznginx

tar zxvf lnmp1.2-full.tar.gzgit

cd lnmp1.2-fullgithub

./install.sh lnmpweb

二、git與github經過ssh-key認證(方可clone)sql

設置git的user name和email數據庫

git config --global user.name "qq4311949";ubuntu

git config --global user.email "260591808@qq.com";api

cd ~/.ssh

ssh-keygen -t rsa -C "qq4311949"

按3個回車,密碼爲空

最後獲得了兩個文件:id_rsa和id_rsa.pub

在github上添加ssh密鑰,這要添加的是「id_rsa.pub」裏面的公鑰

打開https://github.com/settings/ssh ,登錄qq4311949,而後添加ssh

三、安裝walle-web

cd /home/wwwroot/default

git clone git@github.com:meolu/walle-web.git

cd walle-web

vi config/local.php +14

'db' => [    

   'dsn'      => 'mysql:host=127.0.0.1;dbname=walle',     # 新建數據庫walle    

   'username'  => 'username',                       # 鏈接的用戶名    

   'password'  => 'password',                       # 鏈接的密碼

],

安裝vendor

下載百度雲資源,只找到這種方法

wget -c --referer=http://pan.baidu.com/s/1c0wiuyc -O vendor.tgz "http://lx.cdn.baidupcs.com/file/6807c02bb7a8cd68d170ebb08c41e01e?bkt=p3-14006807c02bb7a8cd68d170ebb08c41e01e52a852010000002a644f&xcode=853628eb666ba31fb12e86997c76bef645e0a99531bcf4b6ed03e924080ece4b&fid=1998902510-250528-381466102786301&time=1455874570&sign=FDTAXGERLBH-DCb740ccc5511e5e8fedcff06b081203-L2BTGTsJmmAATuf66ZbpvVJcZ2o%3D&to=lc&fm=Nan,B,U,nc&sta_dx=3&sta_cs=10&sta_ft=tgz&sta_ct=5&fm2=Nanjing02,B,U,nc&newver=1&newfm=1&secfm=1&flow_ver=3&pkey=14006807c02bb7a8cd68d170ebb08c41e01e52a852010000002a644f&sl=72351822&expires=8h&rt=sh&r=512292022&mlogid=1153459173969396250&vuk=1259209467&vbdid=2529669036&fin=vendor.tgz&fn=vendor.tgz&slt=pm&uta=0&rtype=1&iv=0&isw=0&dp-logid=1153459173969396250&dp-callid=0.1.1"

初始化項目

mysql -uroot -p

password:

create database walle;

exit;

./yii walle/setup

配置nginx

vi /usr/local/nginx/conf/nginx.conf

root /home/wwwroot/default/walle-web/web

index index.php

vi /usr/local/nginx/conf/enable-php.conf

location /

{

    try_files $uri $uri/ /index.php$is_args$args;

}

四、配置git項目
walle能夠和gitlab/github完美結合,固然svn也是同樣支持,題主的是gitlab,須要作的只有一個ssh-key認證,下面先了解背景,問題天然就出答案了。題主貼的問題是walle項目配置後檢測的結果,主要反映了兩個方面的問題:宿主機和目標機。宿主機是一個關聯全部目標機、gitlab/github的中樞機器,以下圖:


若是把宿主機的php進程用戶(個人是www)的ssh-key添加到gitlab/github、全部目標機羣,配置就完成了90%。


如何添加?添加ssh-key信任的基本教程
先了解下幾個術語:
宿主機:walle服務安裝所在的機器
目標機:代碼要分發到的機羣
ssh-key信任:可免密碼登陸,一個機器的一個用戶與一個機器的一個用戶經過ssh-key來創建信任(通常爲RSA)

  1. 確認宿主機的php進程用戶:

ps aux|grep php-fpm


2. 獲取宿主機的php進程用戶php-user(個人是www)的ssh-key

su - php-user
cat ~/.ssh/id_rsa.pub

php-user設置爲no-login?先取消no-login,添加完ssh-key認證後再設置爲no-login
若是su www時,報錯This account is currently not available.

cat /etc/passwd|grep www

www:x:502:502::/home/www:/sbin/nologin

/sbin/nologin->/bin/bash

配置完成以後/bin/bash->/sbin/nologin

3. 把2中的ssh-key複製,粘貼到gitlab的ssh-key列表中,而且加入全部目標機羣指定用戶(題主的爲:ubuntu,假定默認爲www)的~/.ssh/authorized_keys中

4. 自行測試3是否完成經過

git clone ssh-git-url # 測試宿主機與gitlab是否添加信任
ssh www@12.34.56.78   # 測試宿主機與目標機12.34.56.78是否添加信任

上面1-4如無問題,便可快速配置一個項目,並檢測項目可用性。若是出現如下問題則多是由於ssh-key信任沒添加好。

正式解答題主的問題

宿主機代碼檢出檢測出錯,請確認php進程用戶ubuntu有代碼存儲倉庫/project/deploydata/sanjieke讀寫權限,而且把ssh-key加入git的deploy-keys列表。

若是是目錄權限不對,給目錄一個ubuntu用戶讀寫權限

chown -R ubuntu /project/deploydata/sanjieke
chmod -R 755 /project/deploydata/sanjieke

若是是沒有添加ubuntu的ssk-key添加到gitlab的ssh-key列表,則按上述1-4添加ssh-key後從新檢測。

目標機器部署出錯,請確認php進程ubuntu用戶ssh-key加入目標機器的ubuntu用戶ssh-key信任列表,且ubuntu有目標機器發佈版本庫/project/sanjieke寫入權限。

一樣,目標機上ubuntu對/project/sanjieke目錄有讀寫權限,而且宿主機的ubuntu已經添加ssh-key信任到目標機127.0.0.1的ubuntu下,能夠免密碼登陸。可按上述1-4添加ssh-key後從新檢測。

相關文章
相關標籤/搜索