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" />

最后  ./編譯腳本   即可啟動項目

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM