一、首先需要准备两台服务器,一台放nginx集群,另一台放jenkins和gitlab
二、配置好nginx的端口不要冲突了,gitlab新建一个item。保证能够正常从使用
三、将代码push到item中,并且配置好脚本,将脚本放入到jenkins的文件夹中。保证jenkins的web端能够读取到
四,测试,进行jenkins构建,查看console进行排错,直到出现success。
五、打开nginx的指定location路径,查看是否文件以及存在,并且打开nginx网址,查看是否网页正常。
gitlab新建一个item。保证能够正常从使用
当在自己的项目写好之后,点击jenkins的立即构建可以把git仓库的文件拉取到指定的路径中,并且运行配置的脚本
三、把写好的脚本放在刚刚配置的路径中。scripts/deploy_nginx.sh
脚本内容在最下面。
赋予脚本权限
chmod 777 脚本
四、修改nginx集群中的文件路径。
/usr/local/nginx/conf的nginx.conf文件
不要忘记加分号
最后重新加载下 systemctl reload nginx.service
五、设置jenkins的权限是root,不然加载脚本的时候会报权限的错误
修改之后重启一下jenkins 就可以了
systemctl restart jenkins.service
六、添加默认ssh的权限,这样就不会一直要输入密码
大体的任务就是这样,接下来只有看日志排查了。
返回界面,在nginx的服务器中,查看对应的文件夹里是不是有从jenkins服务器中传输过去的文件
然后进行访问就可以了。
错误经验总结:
(1):如果是这个错误,首先排查
这个解决方法是因为脚本中最后不要出现多余的空格和回车,会导致出现问题
如果是报这种错第一时间在两台服务器中进行测试,如果是他们的问题就一个一个排除。
我的错误点是因为我不小心搞错了我的脚本中web_server的ip写错了。所以报错。
把语句复制到服务器中单独拍错,很快知道原因的。
1 #1,进入代码目录,打包传输
2
3
4
5 DATE=$(date +%Y-%m-%d-%H-%M-%S)
6 web_server="192.168.56.201"
7
8 #定义部署的功能函数
9 #函数就是起一个名字,然后这个名字,包含很多linux命令的功能
10 #$WORKSPACE 是jenkins特有的变量,取得当前job得工作区绝对路径
11 get_code(){
12 cd $WORKSPACE && \
13 tar czf /opt/web-${DATE}.tar.gz ./*
14
15 }
16
17 #2.压缩后的代码发送给web集群组
18 scp_web_server(){
19 for hosts in $web_server
20 do
21 #jenkins执行如下命令,把自己本地代码压缩文件,scp发送给nginx服务器
22 scp /opt/web-${DATE}.tar.gz root@$hosts:/opt/
23 #jenkins机器,利用ssh命令,远程执行命令
24 ssh root@$hosts "mkdir -p /nginx_web_html/web-${DATE} && \
25 tar -zxf /opt/web-${DATE}.tar.gz -C /nginx_web_html/web-${DATE}
26 rm -rf /nginx_web_html/web && \
27 ln -s /nginx_web_html/web-${DATE} /nginx_web_html/web"
28 done
29 }
30
31 #nginx机器上的网页根目录是: /nginx_web_html/web;
32
33 #3.函数执行
34 deploy(){
35 get_code
36 scp_web_server
37 }
38
39 #shell 使用函数。1,定义函数,2.执行函数
40 deploy