jenkins部署静态网站
一、首先需要准备两台服务器,一台放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