Linux中部署JAVA程式

來源:互聯網
上載者:User

JAVA程式在開發完成後,需要部署到伺服器,如果是WEB項目,需要部署到WEB伺服器,否則部署到應用伺服器。

JAVA是跨平台的程式設計語言,伺服器的作業系統可以是Windows、Linux或者其它,下面將在Redhat6作業系統下,

詳細說明JAVA程式在WEB伺服器和應用伺服器上的部署情況。

1、JAVA程式部署在應用伺服器

(1) JAVA程式HelloWorld 在Redhat6上部署的目錄結構

bin : 存放shell指令碼run.sh

conf :存放設定檔log4j.properties

lib :存放JAR包HelloWorld.jar、log4j-1.2.16.jar

logs:存放程式作業記錄檔案log.log

 

(2)編寫測試類別HelloWorld.java 並打成JAR包HelloWorld.jar

package com.test;import org.apache.log4j.Logger;import org.apache.log4j.PropertyConfigurator;public class HelloWorld {private static Logger log = Logger.getLogger(HelloWorld.class);public static void main(String[] args) {try{//log4j.properties變數的值在指令碼bin/run.sh 中讀取String config = System.getProperty("log4j.properties");if (config != null) {PropertyConfigurator.configure(config);}log.info("HelloWorld");Thread thread = new Thread(){public void run(){while(true){try {Thread.sleep(5*1000);log.info("每隔5秒列印一下日誌");} catch (InterruptedException e) {e.printStackTrace();log.error(e.getMessage());}}}};thread.run();} catch (Exception e) {log.error("[X]啟動失敗:"+e.getMessage());System.exit(1);}}}

(2)編寫shell啟動指令碼run.sh

#! /bin/sh#-------------------------------------------------------------------# 定義變數#-------------------------------------------------------------------APP_NAME=HelloWorldGREP_KEY="Diname="${APP_NAME}# -Xms512m 設定JVM堆的初始記憶體# -Xmx1024m 設定JVM堆的最大記憶體# -Dlog4j.properties 設定log4j記錄檔參數,可給JAVA程式調用,調用格式是System.getProperty("log4j.properties")APP_OPTS="-Xrs -Xms512m -Xmx1024m -Dlog4j.properties=../conf/log4j.properties"# 程式主類APP_CLASS="com.test.HelloWorld"# 記錄檔APP_LOG="../logs/log.log"# 模組運行需要的libAPP_LIBS=./:`ls ../lib/*.jar | paste -s -d":" -`# 當前的類路徑=當前模組的類路徑+JDK的類路徑APP_CLASSPATH=${APP_LIBS}:.:${CLASSPATH}# 檢查HelloWorld進程是否已經在運行,如果在運行則返回1,否則返回0is_exist(){# ps -ef : 查詢所有進程# grep -w "${GREP_KEY}" : 從所有進程中查出名稱為HelloWorld的進程,-w為精確尋找# grep -v "grep" : 排除名稱為grep的進程# awk '{print $2}' : 輸出第二個參數,也就是進程號pid=`ps -ef | grep -w "${GREP_KEY}" | grep -v "grep" | awk '{print $2}'`# 判斷進程號是否為空白if [ -z "${pid}" ]then return 1else return 0fi}# 列印HelloWorld進程的狀態資訊status(){is_exist if [ $? -eq "0" ]then echo "${APP_NAME} is running. pid=${pid} ."elseecho "${APP_NAME} is not running"fi}# 啟動HelloWorld進程start(){is_exist if [ $? -eq "0" ]then echo "${APP_NAME} is already running. pid=${pid} ."return 0elseecho "try to start ${APP_NAME} ... "# 調用nohup命令啟動HelloWorld# 1>&- : 表示關閉標準輸出日誌到nohup.out  # 2>${APP_LOG} : 表示輸出日誌到../logs/log.log# 最後的& : 表示退出帳戶/關閉終端時程式不退出                nohup $JAVA_HOME/bin/java -${GREP_KEY} ${APP_OPTS} -classpath ${APP_CLASSPATH} ${APP_CLASS} 1>&- 2>${APP_LOG} &# 程式的啟動需要一定的時間,這裡設定暫停時間(3秒),單位是秒                sleep 3                is_exist                if [ $? -eq "0" ]                then                        echo "${APP_NAME} is running now. pid=${pid}."                        return 0                else                        echo "failed to start ${APP_NAME}! see ${APP_LOG} for more details."                        return 1                fifi}# 停止HelloWorld進程stop(){is_existif [ $? -eq 0 ]then echo "try to stop ${APP_NAME} ..."# 調用kill命令殺掉進程/usr/bin/kill -9  ${pid}if [ $? -ne 0 ]then echo "failed to stop ${APP_NAME}!"return 1elseecho "${APP_NAME} stopped."return 0fielseecho "${APP_NAME} is not running!"return 1fi}# 重啟HelloWorld進程restart(){stopstart}# 顯示協助資訊help(){echo "status                    show the status of ${APP_NAME} server."echo "start                     start the ${APP_NAME} server."echo "stop                      stop the ${APP_NAME} server."echo "restart                   restart the ${APP_NAME} server."}# 主函數main(){case "$1" in status)   status;;start)    start;;stop)     stop;;restart)  restart;;*)        echo "command param error ! see follow help "; help;;esac}# 執行主函數 $1表示選擇第一個字串為參數,比如終端命令是:./run.sh start status,則選擇start為輸入參數main $1

(3)編寫日誌設定檔log4j.properties

#stdoutlog4j.rootLogger=INFO, logfile#Filelog4j.appender.logfile=org.apache.log4j.DailyRollingFileAppenderlog4j.appender.logfile.File=../logs/log.loglog4j.appender.logfile.Append=truelog4j.appender.logfile.Threshold =INFO log4j.appender.logfile.DatePattern='.'yyyy-MM-ddlog4j.appender.logfile.layout=org.apache.log4j.PatternLayoutlog4j.appender.logfile.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss.SSS} %5p %c{1}:%L - %m%n



(4)啟動程式

在終端目錄/opt/HelloWorld/bin下,輸入命令:./run.sh start 

 查看記錄檔logs/log.log中的內容

至此,JAVA程式HelloWorld已經在LINUX上部署完成。

 

2、JAVA WEB程式部署在TOMCAT伺服器

(1)Redhat中安裝JDK

詳細見本人的另一篇博文

Redhat中安裝JDK

(2)Redhat中安裝Tomcat

詳細見本人的另一篇博文

Redhat中安裝tomcat

(3)JAVA Web程式打包

詳細見本人的另一篇博文

ant打JAR、WAR包

(4)JAVA Web程式部署到Tomcat

1)將JAVA Web的WAR包存放到tomcat/webapps中

      如本人的目錄是:/opt/apache-tomcat-6.0.37/webapps

2)關閉正在跑的tomcat

      終端輸入命令,查出tomcat在跑的進程號

     [root@bogon bin]# ps -ef|grep tomcat

     殺掉tomcat進程,其中2658是tomcat的進程號

     [root@bogon bin]# kill -9 2658

3)啟動tomcat

      進入目錄:/opt/apache-tomcat-6.0.37/bin,然後輸入啟動命令

      [root@bogon bin]# ./startup.sh

      查看開機記錄,進入目錄:/opt/apache-tomcat-6.0.37/logs

      [root@bogon logs]# tail  -20f catalina.out

      如果有看到啟動成功的日誌:

      Sep 27, 2013 10:35:55 PM org.apache.catalina.startup.Catalina start
      INFO: Server startup in 1639 ms
      則說明tomcat啟動成功

4)驗證

     開啟瀏覽器,輸入URL:http://localhost:8080/manager/html

     如果可以看到所部署的Java Web項目,說明部署成功。

 

 

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.