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項目,說明部署成功。