linux下jenkins部署记录
项目介绍
cms系统 http://code.ds.gome.com.cn/gitlab/mengdehua/gome_cms
整体分三部分
整体部署思路
机器21 只用Jenkins 构建应用。在此处把前端代码构建好 并把构建成功后的代码拷贝到23
机器23 部署了nginx服务器,在此处用nginx代理刚才构建的前端界面,并启动同时拷贝过去的两个服务 分别监听了 3000端口 3005端口
实际工作流程
1 登录 http://10.112.178.21 部署了jenkins的打包机 linux
其中在Jenkins上新建的项目 存放目录为 /gomeo2o/soft/jenkins/.jenkins/workspace/
默认情况下 是放在 /root/.jenkins/workspace
2 新建项目 进行Jenkins配置
构建步骤配置文件
source ~/.bash_profile
base_dir=$(pwd)
echo "输出当前目录"
pwd
#部署应用
ip_list="10.112.178.23"
US='weblogic'
set +x
PW='webatg123#@!'
#代码依赖安装&构建
# 本段主要做的任务是 安装前端依赖如vue,build,打包,然后拷贝到目标服务器23
#npm config set registry https://registry.npm.taobao.org
npm install
npm run build
for IP in `echo "${ip_list}"|awk -F, 'BEGIN{OFS=" "}{$1=$1;printf("%s",$0);}'`
do
echo "${IP}"
rm -rf ./temp_gomecms.tar.jz
tar -zcvf ../temp_gomecms.tar.jz ./* --exclude=src --exclude=node_modules
mv ../temp_gomecms.tar.jz ./
#sshpass -p ${PW} scp -r -o StrictHostKeyChecking=no -P22 ${base_dir}/* ${US}@${IP}:/gomeo2o/data/nginx/html/cms/.
sshpass -p ${PW} scp -r -o StrictHostKeyChecking=no -P22 temp_gomecms.tar.jz ${US}@${IP}:/gomeo2o/data/nginx/html/cms/.
rm -rf temp_gomecms.tar.jz
done
构建步骤配置文件 通过 send build articles over ssh 插件
# 本段主要是 在23服务器上解压包,安装服务器相关依赖 如 express
source ~/.bash_profile
cd /gomeo2o/data/nginx/html/cms
mv temp_gomecms.tar.jz ../
rm -rf ./*
mv ../temp_gomecms.tar.jz ./
tar -zxvf temp_gomecms.tar.jz
npm install
pm2 start /gomeo2o/data/nginx/html/cms/app.js & pm2 start /gomeo2o/data/nginx/html/cms/main.js
遇到的坑点
1
node_modules不可拷贝,如有依赖一定要重新安装, 切记!
node_modules不可拷贝,如有依赖一定要重新安装, 切记!
node_modules不可拷贝,如有依赖一定要重新安装, 切记!
2
遇到 linux 命令怎么尝试都不好使 有可能是不同的linux发行版造成的,
如我这次遇到 想 用tar命令打包项目地址下全部文件,但是把node_modules排除掉,
tar -zcvf ../temp_gomecms.tar.jz ./* --exclude=src --exclude=node_modules
此条命令在centos 上可以的,但是在deepin上就无法使用
需要记住的命令
重启nginx
cd /usr/local/nginx/sbin 以10.112.178.23为例
./nginx -s reload
文件改名
举例: 将目录A重命名为B
mv A B linux下重命名文件或文件夹的命令mv既可以重命名,又可以移动文件或文件夹
配置 nginx 代理打包好的前端项目 (/dist)以10.112.178.23为例
cd /usr/local/nginx/conf/conf.d
vi cms.conf
server{
listen 9000;
server_name local;
root /gomeo2o/data/nginx/html/cms/dist;
location ~ /\. {
deny all;
}
}
修改配置后需要重新加载nginx
修改 nginx 代理项目访问接口地址
查找此文件路径 同上
upstream backendapi {
server 10.112.178.23:3005;
}
server{
listen 9000;
server_name local;
root /gomeo2o/data/nginx/html/cms/dist;
location ~ /\. {
deny all;
}
location ~ ^/admin[/\w*]*$ {
proxy_pass http://backendapi;
}
}
查看当前其他linux在线用户
who 或者 w 都可以
如果还想知道其他用户登录的操作记录 好像需要改一下配置文件就可以了,这个没有实际去弄,用到的时候再说
用户环境变量 & 系统环境变量
用户环境变量 在 /home/当前用户名/.bash_profile 下 不同发行版 可能是隐藏的 或者 叫 .profile
系统环境变量在 /etc/profile下
总结
本次实际共用了两天时间 大部分时间都
耽误在
- 远程linux npm安装慢 cnpm安装不上 (如果出现此原因 一定要检查node和npm版本 如果过低 升级6.0以上即可)
- 不同的用户由于权限不同 做一些操作 如 npm install 则提示权限不够 需要加sudo,加上sudo后又找不到npm 此处应该是由于不同环境变量造成的
所以
- 如果linux熟悉一些 其实用Jenkins部署并不复杂 可能 也就几分钟就可以部署一个新项目吧………………
另外
-
此次部署的项目前后台混在一起项目里面 所以作为一个项目部署的 但是个人觉得这样并不是很好,因为前台项目是用vue写的 可以在Jenkins上build成 js文件, 但是后台nodejs项目 是直接可以运行的没有必要通过21的Jenkins再拷贝到23,在安装依赖 在启动
-
另外这样以后前台有改动需要重新部署 这样后台项目也需要一起呗重新拷贝部署启动一遍