用途说明:

                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 (匿名)用户给去掉,否则匿名用户也可以看到相关的页面了。

Logo

权威|前沿|技术|干货|国内首个API全生命周期开发者社区

更多推荐