zoukankan      html  css  js  c++  java
  • 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,在安装依赖 在启动

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

    以上就是此次部署的个人总结,可能有一些想的不对的地方,欢迎大家踊跃留言讨论~~
  • 相关阅读:
    PlantUML —— 应用于 Eclipse 的简单快速的 UML 编辑软件
    PlantUML类图
    Java 基于log4j的日志工具类
    RabbitMQ Hello world(二)
    redis lua 初体验
    mysql 批处理 innodb_flush_at_trx_commit 测试分析
    mysql 服务日志 5.7.29
    redis 浅谈事务
    redis list 基本操作
    redis hash 基本操作
  • 原文地址:https://www.cnblogs.com/WhiteHorseIsNotHorse/p/7768297.html
Copyright © 2011-2022 走看看