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,在安装依赖 在启动

  • 另外这样以后前台有改动需要重新部署 这样后台项目也需要一起呗重新拷贝部署启动一遍

以上就是此次部署的个人总结,可能有一些想的不对的地方,欢迎大家踊跃留言讨论~~
原文地址:https://www.cnblogs.com/WhiteHorseIsNotHorse/p/7768297.html