zoukankan      html  css  js  c++  java
  • 电商发布系统构建

    拓扑图如下:

     

    一、Jenkins搭建

    1、安装最新的linux系统CentOS-7-x86_64-Minimal,更新系统以及安装软件

    yum upgrade -y && yum update -y

    yum install epel-release lrzsz vim net-tools unzip wget gcc g++ cmake git svn -y

    2、添加系统用户apps,安装jdk1.8。执行如下命令:

    useradd apps

    mkdir -p /apps/svr

    tar -zxf jdk-8u131-linux-x64.tar.gz -c /apps/svr

    ln -s /apps/svr/jdk1.8.0_131 /apps/svr/jdk

    修改apps用户的home目录下的配置文件.bashrc,追加如下内容:

    export JAVA_HOME=/apps/svr/jdk

    export JRE_HOME=/apps/svr/jdk/jre

    CLASSPATH=$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar

    export PATH=$PATH:$JAVA_HOME/bin:$JRE_HOME/bin:$CLASSPATH

    3、下载最新的LTS版的Jenkins包(Generic java package)到路径/apps/svr/tomcat,用apps用户后台启动。

    Java -jar jenkins.war &

    4、安装maven。

    下载最新的apache-maven-3.3.9-bin.zip包,解压到/usr/local路径,修改/etc/profile,增加:

    export MAVEN_HOME=/usr/local/apache-maven-3.3.9

    PATH=$PATH:$MAVEN_HOME/bin

    修改maven的配置文件/usr/local/apache-maven-3.3.9/conf/settings.xml,增加访问nexus私服的设置。

    6、安装Jenkins插件。浏览器打开http://IP地址:8080,打开Jenkins的安装界面,安装所有的推荐插件,包括Multiple SCMs plugin。

    7、配置Jenkins工具。登录Jenkins,打开系统管理(manage Jenkins),进入global tool configuration

    a)JDK

    Name jdk1.8

    JAVA_HOME /apps/svr/jdk1.8.0_131

    如果想要多个jdk版本,可以选择新增JDK。

    b)git

    Name Default

    Path to Git executable git

    c)Maven

    Name apache-maven-3.3.9

    MAVEN_HOME /usr/local/apache-maven-3.3.9

    8、添加拉取gitlab代码凭证。登录Jenkins,在credentials,system,global credentials下,选择add credentials,输入gitlab系统的账号密码。

    二、Jenkins的使用

    Jenkins工作目录在apps用户的home目录下,一个隐藏文件夹.jenkins。从gitlab拉取回来的代码都在workspace目录下。

    以下以新建order-prod项目为例:

    1、登录Jenkins,点击“new item”,输入项目名字order-prod,选择“maven project”。

    2、在“Source Code Management”(源码管理),选择Multiple SCMs(前面需要安装插件Multiple SCMs plugin),然后选择Add SCM中的git,“Repository URL”填写项目代码的gitlab路径,credentials选择之前添加的凭证,也可以现在add添加。“Branch Specifier”填代码分支名字。再次择Add SCM中的git,这次添加项目的配置文件的gitlab路径,凭证分支,然后选择“additional behaviours”,再选择“check out to a sub-directory”,手动指定从gitlab拉取下来的文件的存放路径,这里我填写/home/apps/.jenkins/workspace/order-prod-config。

    3、在“pre steps”,选择“add pre-build step”中的“execute shell”,在command中输入shell命令“cp /home/apps/.jenkins/workspace/kepler-prod-config/* /home/apps/.jenkins/workspace/kepler-prod/src/main/resources/”,这个命令是在maven打包构建之前替换项目代码里面的配置文件。测试环境,灰度环境,正式环境都用不同的配置文件。

    4、在“build”中,“ROOT POM”填写pox.xml,goals and options填写“clean install  -Dmaven.test.skip=true”。这里是maven构建的命令。

    5、在最后“post steps”,首先选择“run only if build succeeds”,“execute shell”填写命令“cp -R /home/apps/.jenkins/workspace/kepler-prod/target/kepler-service-1.0.0-SNAPSHOT.jar /home/apps/svn_mall/sadoc/kepler/ && cd /home/apps/svn_mall/sadoc/kepler && svn add kepler-service-1.0.0-SNAPSHOT.jar && svn commit -m "kepler update"”。这个命令实际上就是利用把构建好的待发布的包,上传到SVN服务器。在此之前,需要登录服务器,在/home/apps/svn_mall/路径执行“svn --username=xingmaogou co svn://192.168.100.7/sadoc”,这里username为SVN的用户名,IP地址替换为相对于的公网IP地址,然后执行“svn add kepler-service-1.0.0-SNAPSHOT.jar”。

    这样,Jenkins这端配置完成。

    三、SVN服务器搭建

    SVN服务器搭建在生产环境所在的内网,生产环境的walle服务器能访问,并且需要映射端口出来给公司内外Jenkins访问。

    1、yum安装SVN服务器

    首先看系统是否安装了svn,rpm -qa subversion,如果已经安装,需要先行卸载。然后

    yum -y install  subversion

    2、配置SVN并且启动

    指定svn的数据存储路径

          mkdir -p /application/svndata

          指定svn的配置文件信息路径

          mkdir -p /application/svnpasswd

          启动svn服务

           svnserve -d -r /application/svndata/

    3、检测svn服务是否正常启动,如果能看到下图所示则证明启动成功

           第一通过进程检测

            ps -ef | grep svn

           第二通过端口3690检测

           netstat -lntup | grep 3690

           第三通过文件检测,需要root用户才可以执行

           lsof -i :3690

    4、使用svnadmin建立svn项目版本库

          查看创建项目版本库命令

          svnadmin --help

          svnadmin help create

          创建sadoc版本库

           svnadmin create /application/svndata/sadoc

    5、配置sadoc版本可的权限

         进入sadoc版本库配置目录,并备份配置文件

        cd /application/svndata/sadoc/conf/

        cp -p svnserve.conf svnserve.conf.default

        进行详细配置

         anon-access = none //禁止匿名访问

         auth-access = write //认证后有读的权限

         password-db = /application/svnpasswd/passwd //指定密码文件

         authz-db = /appplication/svnpasswd/authz //指定权限认证文件

    6、复制passwd和authz文件到sadoc的svnpasswd目录并修改权限

          执行如下命令完成操作

          cp -p authz passwd /application/svnpasswd/

          cd /application/svnpasswd/

          chmod 700 authz passwd

    7、为Svn版本库创建用户并授权访问指定项目版本库

          编辑passwd文件配置用户和密码

          vi passwd 

          xingmaogou = xingmaogou

          xingyuan  = xingyuan

          编辑authz文件配置读取权限

           [<版本库>:/项目/目录]

           @<用户组名> = <权限>

           <用户名>  = <权限>

    8、重新启动svn服务进行验证

          杀死svn服务

           pkill svnserve

           启动svn

           svnserve -d -r /application/svndata/

           备注:修改passwd和authz文件不需要重启svn服务而修改svnserve.conf则需要

    9、最后安装客户端进行sadoc的配置是否正确

           svn --username=xingmaogou co svn://121.xxx.xxx.xx9/sadoc

    四、walle发布系统搭建

    Walle为专门国产开源的发布系统,可以多台主机,多种环境,多用户执行发布任务,并且可以回滚。https://walle-web.io/。相对于Jenkins搭建在公司内外,walle需要安装在生产环境的内网。安装注意参照官方文档https://walle-web.io/docs/installation.html。但是需要注意的地方有几点

    1、安装SVN客户端并且能否访问前面搭建的SVN服务器

    2、安装yum安装nginx,PHP,并且都用同一个用户启动,修改nginx,和PHP-fpm配置文件,启动用户都用apps。

    3、yum安装php相关软性的时候,如yum install php56w.x86_64 php56w-cli.x86_64 php56w-common.x86_64 php56w-gd.x86_64 php56w-ldap.x86_64 php56w-mbstring.x86_64 php56w-mcrypt.x86_64 php56w-mysql.x86_64 php56w-pdo.x86_64 php56w-fpm,软件名字都不需要“56w”,否则会安装失败。

    4、邮箱配置是在walle的PHP项目工程的config文件夹下的local.php配置,具体参照https://github.com/meolu/walle-web

    5、walle配置,在管理员登录walle之后,在项目配置中,新建项目。特别需要注意的是,“宿主机”下,“代码检出仓库”是位于walle系统所在linux主机。目标机器就是生产环境所在主机,用户为apps用户,webroot目录需要特别注意,这个路径在服务器上只需要创建到父一级,比如你填写的是“/data/www/walle”,但是在生产服务器上只能创建目录“/data/www”。

    6、walle服务器的ssh公钥需要放到所有目标服务器的apps用户下,信任从而能免密码登陆。

    全部配置好之后,普通用户邮件申请账号,管理员添加项目并且给普通用户授发布权限。

    7、高级任务里,可以填写shell命令用于重启程序。

    8、“分支/tag上线”选择“无trunk/无branches”,然后开启审核。

     
  • 相关阅读:
    Educational Codeforces Round 84 Div2
    Codeforces Global Round 7
    ACWing 最长连续不重复子序列(双指针)
    洛谷 P3382 【模板】三分法
    第十一届蓝桥杯模拟赛10 数节目(ST表)
    洛谷 P1886 滑动窗口(单调队列)
    Codeforces Round #628 (Div. 2) C
    VJ Balanced Lineup(ST表)
    VJ Can you answer these queries ? (线段树区间修改+区间查询+剪枝)
    VJ Just a Hook(线段树区间修改+查询)
  • 原文地址:https://www.cnblogs.com/hyming011/p/8252672.html
Copyright © 2011-2022 走看看