walle自动化部署

1、部署环境

cd /usr/local/src

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

tar zxvf lnmp1.2-full.tar.gz

cd lnmp1.2-full

./install.sh lnmp

2、git与github通过ssh-key认证(方可clone)

设置git的user name和email

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

git config --global user.email "[email protected]";

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

3、安装walle-web

cd /home/wwwroot/default

git clone [email protected]: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;

}

4、配置git项目
walle可以和gitlab/github完美结合,当然svn也是一样支持,题主的是gitlab,需要做的只有一个ssh-key认证,下面先了解背景,问题自然就出答案了。题主贴的问题是walle项目配置后检测的结果,主要反映了两个方面的问题:宿主机和目标机。宿主机是一个关联所有目标机、gitlab/github的中枢机器,如下图:

walle自动化部署_第1张图片


如果把宿主机的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 [email protected]   # 测试宿主机与目标机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后重新检测。


你可能感兴趣的:(walle自动化部署)