• linux环境下搭建环境发布web项目


    在公司真是学习了一下项目环境在linux下搭建和发布的过程,这是每个程序员都应该掌握的一个技能,将整理下为以后温习用,也乐于和为掌握这些技能的猿分享:

    这里主要分为5部分:1、安装jdk,并配置环境变量;2、安装maven配置环境变量;3、安装tomcat服务器;4、安装svn客户端;5安装nodejs(由于我的项目前台开发用的reactjs需要,所以因项目而异)配置node,npm环境变量。6、编译脚本

    下面展开详细说明:

    1、下载jdk压缩包,网上自己下载然后复制到自己定义的目录下,我这里是/home/appadmin/tools,使用 tar -zxvf jdk-8xxxxx.gz 进行解压 ,之后 更改解压后的文件夹名称为java :mv jdk-8xxxxxx java,

     1.1配置环境变量 vim .bash_profile 添加如下 

    export JAVA_HOME=/home/appadmin/tools/java
    export PATH=$JAVA_HOME/bin
    export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar

    保存后执行 source  .bash_profile 刷新文件  ,测试是否安装成功:java -version。

    2、安装maven:也在tools目录下解压,修改解压文件夹为maven,然后配置环境变量,在.bash_profile 文件后面添加如下代码,记得保存后 刷新文件。

    MAVEN_HOME=/home/appadmin/tools/maven
    export MAVEN_HOME
    export PATH=$PATH:$MAVEN_HOME/bin

    3、tomcat安装,下载压缩包解压后更名为tomact ,更名只是为了方便在写脚本时容易找到路径好记,先不对tomcat进行任何配置,在项目打包后的路径需要修改tomcat加载项目路径。

    4、安装svn:一定要按照顺序解压这两个包

       tar xvfj subversion-1.4.3.tar.bz2
       tar xvfj subversion-deps-1.4.3.tar.bz2

      后者会解压到前者的解压文件夹中,修改解压文件夹为subversion

    4.2进行编译和安装
      # cd subversion
      #./configure
      # make #编译,如果提示错误, 则可能需要root权限
      # make install  #安装,此时可能需要root用户权限

      make时可能会出现错误,仔细看看在./configure 后出现的 no ,是否需要 安装 gcc,  需要  则 yum install gcc

      安装好客户端之后, 默认安装目录是/home/appadmin/tools/subversion

    4.3 将svn命令链接到/usr/local/bin目录下(需要root权限):若没有root权限 (公司管理员没给开root权限)也可以在   .bash_profile配置环境变量;
      ln –s 
    /home/appadmin/tools/subversion/bin/svn /usr/local/bin

      测试是否已经可以在用户目录下使用svn:
      svn help 如果出现命令列表,则表示已经链接成功。

      4.4配置maven settings.xml 文件 ,maven中央仓库

       cd  /home/appadmin/tools/maven/conf 

    <?xml version="1.0" encoding="UTF-8"?>
    <settings xsi:schemaLocation="http://maven.apache.org/SETTINGS/1.0.0 http://maven.apache.org/xsd/settings-1.0.0.xsd" xmlns="http://maven.apache.org/SETTINGS/1.0.0"
        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
        <servers>
            <server>
                 <username>test</username>
                            <password>{DESede}6z0YCNHERsU=</password>
                <id>central</id>
            </server>
            <server>
                 <username>test</username>
                            <password>{DESede}6z0YCNHERsU=</password>
                <id>snapshots</id>
            </server>
            <server>
                 <username>test</username>
                            <password>{DESede}6z0YCNHERsU=</password>
                <id>central1</id>
            </server>
            <server>
                 <username>test</username>
                            <password>{DESede}6z0YCNHERsU=</password>
                <id>snapshots1</id>
            </server>
        </servers>
      <localRepository>/home/appadmin/tools/maven_repo</localRepository>
      <profiles>
        <profile>
         <id>flex</id>
          <repositories>
                <repository>
                    <id>central</id>
                    <url>http://central</url>
                    <releases><enabled>true</enabled></releases>
                    <snapshots><enabled>true</enabled></snapshots>
                </repository>
            </repositories>
            <pluginRepositories>
                <pluginRepository>
                    <id>central</id>
                    <url>http://central</url>
                    <releases><enabled>true</enabled></releases>
                    <snapshots><enabled>true</enabled></snapshots>
                </pluginRepository>
            </pluginRepositories>
    
         
        </profile>
        
      </profiles>
    
      <mirrors>
          <mirror>
            <id>nexus</id>
            <mirrorOf>*</mirrorOf>
            <url>http://自己的maven仓库服务器地址/</url>
          </mirror>
      </mirrors>

    5、nodejs 解压安装,改名为node。需要软连接到全局变量,但是我没有root权限修改了 .bash_profile 

        export NPM_HOME=/home/appadmin/tools/node/bin

        export PATH=$JAVA_HOME/bin:$PATH:$NPM_HOME  

        所以最后修改后的bash_profile 文件为

    # .bash_profile
    
    # Get the aliases and functions
    if [ -f ~/.bashrc ]; then
        . ~/.bashrc
    fi
    
    # User specific environment and startup programs
    
    PATH=$PATH:$HOME/bin
    
    export PATH
    
    export NPM_HOME=/home/appadmin/tools/node/bin
    
    export PATH
    export JAVA_HOME=/home/appadmin/tools/java
    export PATH=$JAVA_HOME/bin:$PATH:$NPM_HOME
    export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
    
    MAVEN_HOME=/home/appadmin/tools/maven
    export MAVEN_HOME
    export PATH=$PATH:$MAVEN_HOME/bin

    最后刷新.bash_profile 若不能执行该文件 chmod a+x .bash_profile

    6、写编译脚本 ,其中有些因项目不同可能不需要。

    #!/bin/bash
    
    # prepare
    svn_base="http://svn.rd.800best.com/svn/wyvern/wyvern-resource/trunk"
    
    checkout_home="/home/appadmin/source_code/wyvern-resource/wyvern-res"
    
    
    checkout_version="trunk"
    
    deploy_home="/home/appadmin/deploy/wyvern-res"
    
    war_name="wyvern-res-war.war"
    
    
    
    # which version
    if [ $# == 0 ]; then
        checkout_version="trunk"
        svn_src="${svn_base}"
        echo "build trunk!"
    else
        branch=$1
        checkout_version="${branch}"
        svn_src="${svn_base}/branches/${branch}"
        checkout_home=${checkout_home}/branches
        echo "build branch! ${branch}"
    fi
    
    # check out
    echo "# start check out"
    echo "------------------------------------"
    cd ${checkout_home}
    svn co ${svn_src}
    svn up ${checkout_home}/${checkout_version}
    cd ${checkout_home}/${checkout_version}
    echo "------------------------------------"
    echo
    
    # build react
    echo "# start building js"
    echo "------------------------------------"
    cd ${checkout_home}/${checkout_version}/wyvern-res-war/
    npm install
    npm run release
    echo "------------------------------------"
    echo
    
    # build
    echo "# start building"
    echo "------------------------------------"
    cd ${checkout_home}/${checkout_version}
    mvn clean install package -U -Dmaven.test.skip=true -P test-env
    echo "------------------------------------"
    echo
    
    echo "# list build result"
    echo "------------------------------------"
    #ls -l ${deploy_home}/main
    #ls -l ${deploy_home}/external
    echo "------------------------------------"
    echo
    
    # stop tomcat
    echo "# stop tomcat"
    echo "------------------------------------"
    pkill -9 java
    echo "------------------------------------"
    ps aux|grep java
    #sudo service stop
    echo "------------------------------------"
    echo
    
    # clean tomcat
    echo "# clean tomcat"
    echo "------------------------------------"
    cd ${deploy_home}
    rm -rf ./main/*
    #rm -rf ./external/*
    echo "## list deploy"
    ls -l ${deploy_home}/main
    #ls -l ${deploy_home}/external
    echo "------------------------------------"
    echo
    
    # deploy
    echo "# cp deploy"
    echo "------------------------------------"
    
    cp /home/appadmin/source_code/wyvern-resource/wyvern-res/trunk/wyvern-res-war/target/${war_name} ./main/ 
    
                   
    cd main 
    jar -xvf ${war_name}
    rm ${war_name}
    echo "# list main"
    ls -l
    cd ..
    
    #cd external
    #jar -xvf ${war_ext_name}
    #rm ${war_ext_name}
    echo "# list external"
    ls -l
    cd ..
    echo "------------------------------------"
    echo
    
    # start tomcat
    echo "# start tomcat"
    echo "------------------------------------"
    #JAVA_OPTS="-Xms4096m -Xmx4096m -XX:PermSize=256m -XX:MaxPermSize=256m -XX:+DisableExplicitGC
    #          -XX:+PrintGCDateStamps -XX:+PrintGC -XX:+PrintGCDetails
    #          -XX:ParallelGCThreads=8 -XX:+UseConcMarkSweepGC -Xloggc:/home/appadmin/logs/gc/gc$NAME.log"
    nohup /home/appadmin/tools/tomcat/bin/catalina.sh start >/dev/null 2>&1 &
    #cd /home/appadmin/service/crm_tomcat/crm
    #/home/appadmin/service/crm_tomcat/crm/start-crm.sh &
    #sudo service wyvern start
    echo "------------------------------------"
    echo
    
    # tomcat log
    echo "# tail tomcat log"
    echo "------------------------------------"
    tail -f /home/appadmin/logs/wyvern-res.log
    echo "------------------------------------"
    echo
    
    echo "# release to tomcat finish"

    修改tomcat conf/server.xml文件  添加最后的war包路径 

    <Context path="" docBase="/home/appadmin/deploy/wyvern-res/main" debug="0" reloadable="true" />

    最后  ./编译脚本   即可启动项目

  • 相关阅读:
    Python 7步机器学习
    STL容器-- map and multimap 用法
    STL容器-- forward_list 用法
    STL容器-- fixed-size array 用法
    STL容器-- deque 用法
    网站502与504错误分析
    git将一个分支的某个文件合并到当前分支
    阿里云RDS上用mysqldump导入导出
    mysqldump具体应用实例
    mysql的导入导出工具mysqldump命令详解
  • 原文地址:https://www.cnblogs.com/likun10579/p/6136696.html
Copyright © 2020-2023  润新知