FPM+SVN配置Walle自动化部署系统详解(4)

几个术语:
宿主机:walle服务安装所在的机器
目标机:代码要分发到的机群
ssh-key信任:可免密码登录,一个机器的一个用户与一个机器的一个用户通过ssh-key来建立信任(一般为RSA)

实验环境:
宿主机 192.168.3.13(部署了walle系统的服务器)
目标机器 192.168.3.17(需要部署web项目的环境)
svn服务器 192.168.3.18

宿主机walle系统上的操作:

1.安装ansible,需要ansible命令操作远程主机
yum install -y ansible

添加用户www_php并设置成walle web端php-fpm的运行用户,该用户主要是宿主机walle用来操作项目部署(代码拉取、项目部署操作等的用户)
useradd www_php
echo 'www_php' |passwd --stdin www_php
vim /etc/php-fpm.d/www.conf #配置www_php有运行权限

listen.owner = www_php
listen.group = www_php
user = www_php
group = www_php

FPM+SVN配置Walle自动化部署系统详解

修改walle_web目录权限,否则不可写
chown -R www_php.www_php /data/www/walle-web

2.把宿主机的php进程用户的ssh-key添加到gitlab/github(svn不需要添加,直接使用访问svn的账号密码即可walle有具体的配置界面),所有目标服务器机群,配置就完成了90%。

确认宿主机的php进程用户:
vi php-fpm.conf
user = php-user    # 看下用的是哪个用户

ps aux|grep php-fpm # 也是可以的

2. 获取宿主机的php进程用户pwww_php的ssh-key并添加到目标主机信任
su - php-user
cat ~/.ssh/id_rsa.pub
php-user设置为no-login?先取消no-login,添加完ssh-key认证后再设置为no-login

su - www_php
ssh-keygen
ssh-copy-id -i .ssh/id_rsa.pub release_user@192.168.3.17
添加目标机器的信任
[www_php@localhost ~]$ ssh-copy-id -i .ssh/id_rsa.pub release_user@192.168.3.17
/usr/bin/ssh-copy-id: INFO: attempting to log in with the new key(s), to filter out any that are already installed
/usr/bin/ssh-copy-id: INFO: 1 key(s) remain to be installed -- if you are prompted now it is to install the new keys
release_user@192.168.3.17's password:

Number of key(s) added: 1

Now try logging into the machine, with:  "ssh 'release_user@192.168.3.17'"
and check to make sure that only the key(s) you wanted were added.

目标主机
chown -R release_user.release_user /data/www
chmod 755 -R /data/www

useradd release_user

echo 'release_user' |passwd --stdin release_user

关于walle的错误调试:
默认日志打印在/tmp/walle/目录下,centos7.2没有这个日志目录

原因:centos 7 yum 安装的php-fpm默认/tmp目录不可写:/usr/lib/systemd/system/php-fpm.service 中的 PrivateTmp=true 禁止了向tmp目录写日志

解决办法:
mkdir /tmp/walle
chmod 777 -R /tmp

vim /usr/lib/systemd/system/php-fpm.service

PrivateTmp=false

重新加载配置生效
systemctl daemon-reload
systemctl reload php-fpm

对svn不熟悉的朋友可以看下:
关于SVN的trunk、branch、tag相关概念,网上摘抄的文章

——简单的对比
  SVN的工作机制在某种程度上就像一颗正在生长的树:
一颗有树干和许多分支的树
分支从树干生长出来,并且细的分支从相对较粗的树干中长出
一棵树可以只有树干没有分支(但是这种情况不会持续很久,随着树的成长,肯定会有分支啦,^^)
一颗没有树干但是有很多分支的树看起来更像是地板上的一捆树枝
如果树干患病了,最终分支也会受到影响,然后整棵树就会死亡
如果分支患病了,你可以剪掉它,然后其他分支还会生长出来的哦!
如果分支生长太快了,对于树干它可能会非常沉重,最后整棵树会垮塌掉
当你感觉你的树、树干或者是分支看起来很漂亮的时候,你可以给它照张相,这样就就可以记得它在那时是多么的赞。
——Trunk
  Trunk是放置稳定代码的主要环境,就好像一个汽车工厂,负责将成品的汽车零件组装在一起。
  以下内容将告诉你如何使用SVN trunk:
除非你必须处理一些容易且能迅速解决的BUG,或者你必须添加一些无关逻辑的文件(比如媒体文件:图像,视频,CSS等等),否则永远不要在trunk直接做开发
不要因为特殊的需求而去对先前的版本做太大的改变,如何相关的情况都意味着需要建立一个branch(如下所述)
不要提交一些可能破坏trunk的内容,例如从branch合并
如果你在某些时候偶然间破坏了trunk,bring some cake the next day (”with great responsibilities come… huge cakes”)
——Branches
  一个branch就是从一个SVN仓库中的子树所作的一份普通拷贝。通常情况它的工作类似与UNIX系统上的符号链接,但是你一旦在一个SVN branch里修改了一些文件,并且这些被修改的文件从拷贝过来的源文件独立发展,就不能这么认为了。当一个branch完成了,并且认为它足够稳定的时候,它必须合并回它原来的拷贝的地方,也就是说:如果原来是从trunk中拷贝的,就应该回到trunk去,或者合并回它原来拷贝的父级branch。
  以下内容将告诉你如何使用SVN branches:
如果你需要修改你的应用程序,或者为它开发一个新的特性,请从trunk中创建一个新的branch,然后基于这个新的分支进行开发
除非是因为必须从一个branch中创建一个新的子branch,否则新的branch必须从trunk创建
当你创建了一个新branch,你应当立即切换过去。如果你没有这么做,那你为什么要在最初的地方创建这个分支呢?
——Tags
  从表面上看,SVN branches和SVN tags没有什么差别,但是从概念上来说,它们有许多差别。其实一个SVN tags就是上文所述的“为这棵树照张相”:一个trunk或者一个branch修订版的命名快照。
  以下内容将告诉你如何使用SVN tags:
作为一个开发者,永远不要切换至、取出,或者向一个SVN tag提交任何内容:一个tag好比某种“照片”,并不是实实在在的东西,tags只可读,不可写。
在特殊或者需要特别注意的环境中,如:生产环境(production)、?(staging)、测试环境(testing)等等,只能从一个修复过的(fixed)tag中checkout和update,永远不要commit至一个tag。
对于上述提及到的环境,可以创建如下的tags:“production”,“staging”,“testing”等等。你也可以根据软件版本、项目的成熟程度来命名tag:“1.0.3”,“stable”,“latest”等等。
当trunk已经稳定,并且可以对外发布,也要相应地重新创建tags,然后再更新相关的环境(production, staging, etc)
——工作流样例
  假设你必须添加了一个特性至一个项目,且这个项目是受版本控制的,你差不多需要完成如下几个步骤:
使用SVN checkout或者SVN switch从这个项目的trunk获得一个新的工作拷贝(branch)
使用SVN切换至新的branch
完成新特性的开发(当然,要做足够的测试,包括在开始编码前)
一旦这个特性完成并且稳定(已提交),并经过你的同事们确认,切换至trunk
合并你的分支至你的工作拷贝(trunk),并且解决一系列的冲突
重新检查合并后的代码
如果可能的话,麻烦你的同事对你所编写、更改的代码进行一次复查(review)
提交合并后的工作拷贝至trunk
如果某些部署需要特殊的环境(生成环境等等),请更新相关的tag至你刚刚提交到trunk的修订版本
使用SVN update部署至相关环境

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/a69c4429f98373f336c9fdd5b068871b.html