用途说明:
Jenkins:持续集成工具。
Rysnc:远程数据同步工具。
Git:版本管理工具。
LDAP:轻量目录访问协议,可以用来做轻量级数据库,一般用来存储、管理员工信息。
Jenkins安装与配置,可以见这一系列的前两篇文章。
Rsync安装与配置。
安装:查看服务器是否已安装 Rysnc,rpm -qa | grep rsync,一般情况,都已安装,会返回“rsync-3.0.6-12.el6.x86_64”。若没有安装,去官网下载安装
wget https://download.samba.org/pub/rsync/rsync-3.1.2.tar.gz
tar xf rsync-3.1.2.tar.gz
cd rsync-3.1.2
./configure --prefix=/usr/local/rsync
make
make install
配置:
vim /etc/rsyncd.conf
# Minimal configuration file for rsync daemon
# See rsync(1) and rsyncd.conf(5) man pages for help
# GLOBAL OPTIONS 目录权限,这里是WEB应用,nginx的所属用户和组都为www
uid = www
gid = www
use chroot = no
read only = yes
#limit access to private LANs
hosts allow=192.168.1.1,192.168.1.2
hosts deny=*
max connections = 5
pid file = /var/run/rsyncd.pid
secrets file = /etc/rsyncd/rsyncd.secrets
#lock file = /var/run/rsync.lock
motd file = /etc/rsyncd/rsyncd.motd
#This will give you a separate log file
log file = /var/log/rsync.log
#This will log every file transferred - up to 85,000+ per user, per sync
transfer logging = yes
log format = %t %a %m %f %b
syslog facility = local3
timeout = 300
# MODULE OPTIONS
[test]
path = /www/web/test/
read only = no
list=yes
ignore errors
exclude = important/
在项目里,增加构建步骤里选择“Excute Shell”
if [ -n $GIT_VERSION ];then
cd $WORKSPACE
git reset --hard $GIT_VERSION
echo "指定版本:"$GIT_VERSION
fi
WEB_SERVER_IP=192.168.1.1
rsync -arqz --delete $WORKSPACE/ $WEB_SERVER_IP::test --exclude ".git"
这里得注意下,比如 test 上级目录为 web,那么 web 目录的所属用户和组得为 www 和 www,否则同步时会报“rsync: failed to set times on “directory” Operation not permitted (1)”。
服务器和客户端安装都一样,配置稍有不同,客服端的“host allow”需要填写容许访问的服务器 ip,也就是 rsync 服务器的ip。启动“rsync --daemon --config=/etc/rsyncd.conf”,查看“netstat -tunlp | grep 873”,默认情况下 rsync 占用的是 873 端口。
还可以以 xinetd 方式启动,安装 xinetd,“yum -y install xinetd”,配置 rsync 为启动,把“/etc/xinetd.d/rsync”里面的 disable右侧的 yes 改为 no,启动 xinetd,“service xinetd start”。
Git,这个和 Jenkins 一样,只需在服务器安装即可,可以在 Jenkins 里已插件形式的或是直接下载 Git,再到“系统管理-系统设置”页面,找到 Git 设置项,在“Path to Git executable”填写 Git 的地址
这里可以再安装个 Git Parameter Plug-In 插件,此插件可以实现代码回滚。点击项目-配置
效果如下
LDAP,这项设置是选填的,如果公司有,则接入,没有可以不选。在“系统管理 - Configure Global Security”,找到“访问控制-安全域”,选择 LDAP,如果找不到则需要到“系统管理-插件管理”,在可选插件里找到“LDAP Plugin”勾选并下载,其中服务器IP、root DN、Manger DN、管理密码,需要找相关部门获取。
权限管理策略,可以选择“Role-based Authorization Strategy”,Manage and Assign Roles需要在插件管理里下载。下载完成后,在“系统管理 - Configure Global Security”,找到“访问控制-授权策略”,选择 Role - Based Strategy。保存后,再到系统管理页面中找到“Manage and Assign Roles”,点进去
其中“Manage and Assign Roles”是管理全局权限和项目权限的,“Assign Role”是管理用户全局权限和用户项目权限的。要强调的是,用户一定得先属于全局权限,然后再属于项目权限,否则用户登录后,压根啥也干不了,比如,建了个 develop 全局权限的,配置好了权限,但用户没有属于该权限,那么用户登录后,会发现页面上提示“没有Overall/Read权限”。
这里得注意一下,如果在“Configure Global Security-授权策略”里选择了“Role-Based Strategy”之后,立马退出了,然后用 LDAP 里的用户登录,那么会提示“没有Overall/Read权限”,并且然来的 admin 用户也登录不进去了,因为这时走的 LDAP 登录流程。到这里了,别慌,去 Jenkins 目录,找到 config.xml,把“authorizationStrategy”和“securityRealm”节点的数据都删除,再重新走遍上述的权限设置流程。权限设置这里,得把 Anoymous (匿名)用户给去掉,否则匿名用户也可以看到相关的页面了。