在CentOS6.8上部署專案以及如何檢視錯誤日誌
現在很多專案都部署在Linux伺服器上執行,現在我以虛擬機器為伺服器,說一下怎樣部署一個專案並執行。
第一步:環境準備
1.1 安裝JDK
關於JDK的安裝我這裡不做詳細介紹,大家可以參考:http://blog.csdn.net/u012453843/article/details/52422736這篇部落格進行安裝
1.2 安裝mysql
關於Mysql的安裝,大家可以參考:http://blog.csdn.net/u012453843/article/details/52943779這篇部落格進行安裝
1.3 安裝tomcat
1.3.1 從官網下載tomcat安裝包,也可以到:http://download.csdn.net/detail/u012453843/9665789這個地址下載
1.3.2 上傳到伺服器,這裡我上傳到我虛擬機器的/root/zcms目錄下了
1.3.3 解壓apache-tomcat-6.0.47.tar.gz
[root@test zcms]# tar -zxvf apache-tomcat-6.0.47.tar.gz
1.3.4 解壓後會有一個apache-tomcat-6.0.47檔案,我們把它複製到/usr/local目錄下並重命名為tomcat
[root@test zcms]# cp -r apache-tomcat-6.0.47 /usr/local/tomcat
1.3.5 設定Tomcat開機自啟動,修改
export JDK_HOME=/usr/java/jdk1.7.0_80
export JAVA_HOME=/usr/java/jdk1.7.0_80
/usr/local/tomcat/bin/startup.sh
1.3.6 為了方便的手動控制tomcat啟動、關閉,我們就需要配置環境變數,讓命令在任何目錄下都可以執行,下面紅色加粗的配置是我們需要配置的內容(JDK是我們第一步就配置好的)。
[root@test zcms]# vim /etc/profilepathmunge /usr/local/sbin
else
pathmunge /usr/local/sbin after
pathmunge /usr/sbin after
pathmunge /sbin after
fi HOSTNAME=`/bin/hostname 2>/dev/null`
HISTSIZE=1000
if [ "$HISTCONTROL" = "ignorespace" ] ; then
export HISTCONTROL=ignoreboth
else
export HISTCONTROL=ignoredups
fi export PATH USER LOGNAME MAIL HOSTNAME HISTSIZE HISTCONTROL # By default, we want umask to get set. This sets it for login shell
# Current threshold for system reserved uid/gids is 200
# You could check uidgid reservation validity in
# /usr/share/doc/setup-*/uidgid file
if [ $UID -gt 199 ] && [ "`id -gn`" = "`id -un`" ]; then
umask 002
else
umask 022
fi for i in /etc/profile.d/*.sh ; do
if [ -r "$i" ]; then
if [ "${-#*i}" != "$-" ]; then
. "$i"
else
. "$i" >/dev/null 2>&1
fi
fi
done unset i
unset -f pathmunge
export JAVA_HOME=/usr/java/jdk1.7.0_80
export TOMCAT_HOME=/usr/local/tomcat
export PATH=$JAVA_HOME/bin:$TOMCAT_HOME/bin:$PATH 注意:配置完之後儲存,並使用命令source /etc/profile來使配置生效 1.3.7 啟動tomcat [root@test ~]# startup.sh
Using CATALINA_BASE: /usr/local/tomcat
Using CATALINA_HOME: /usr/local/tomcat
Using CATALINA_TMPDIR: /usr/local/tomcat/temp
Using JRE_HOME: /usr/java/jdk1.7.0_80
Using CLASSPATH: /usr/local/tomcat/bin/bootstrap.jar 1.3.8 關閉tomcat [root@test ~]# shutdown.sh
Using CATALINA_BASE: /usr/local/tomcat
Using CATALINA_HOME: /usr/local/tomcat
Using CATALINA_TMPDIR: /usr/local/tomcat/temp
Using JRE_HOME: /usr/java/jdk1.7.0_80
Using CLASSPATH: /usr/local/tomcat/bin/bootstrap.jar 1.3.9 檢查tomcat是否已經啟動,我們使用命令jps來檢視程序,如果有Bootstrap程序,說明tomcat已經啟動了。如果沒有這個程序,說明tomcat未啟動。 [root@test ~]# jps
30436 Jps
30404 Bootstrap 第二步:部署專案 2.1 匯出war包 在工程上右鍵,滑鼠放到"Export"---->點選"WAR file",如下圖所示。 接著會看到如下圖所示的介面,我們選擇匯出的路徑,然後點選"Fnish"。 2.2 上傳war包到伺服器,這裡我先上傳到我/root/zcms目錄下 2.3 將tomcat的webapps目錄下的檔案都先刪除,刪除所有檔案使用的命令是rm -rf * [root@test ~]# cd /usr/local/tomcat/webapps/
[root@test webapps]# ls
docs examples host-manager manager ROOT
[root@test webapps]# rm -rf * [root@test webapps]# ls [root@test webapps]#已經空了 2.4 將/root/zcms目錄下的ZCMS.war移動到tomcat的webapps下面 [root@test zcms]# mv ZCMS.war /usr/local/tomcat/webapps/ 2.5 修改tomcat的埠號,由8080修改為80,我們 [root@test zcms]# cd /usr/local/tomcat
[root@test tomcat]# ls
bin conf lib LICENSE logs NOTICE RELEASE-NOTES RUNNING.txt temp webapps work
[root@test tomcat]# cd conf/
[root@test conf]# ls
Catalina catalina.policy catalina.properties context.xml logging.properties server.xml tomcat-users.xml web.xml
[root@test conf]# vim server.xml
<Connector port="80" protocol="HTTP/1.1"
connectionTimeout="20000"
redirectPort="8443" />
"server.xml" 148L, 6614C 2.6 由於我要在虛擬機器初始化資料庫,tomcat預設的jvm記憶體只有128M,太小了,我們需要修改它為256M,如下所示。 [root@test bin]# ls
bootstrap.jar commons-daemon.jar digest.bat shutdown.bat tomcat-juli.jar version.bat
catalina.bat commons-daemon-native.tar.gz digest.sh shutdown.sh tomcat-native.tar.gz version.sh
catalina.sh cpappend.bat setclasspath.bat startup.bat tool-wrapper.bat
catalina-tasks.xml daemon.sh setclasspath.sh startup.sh tool-wrapper.sh
[root@test bin]# vim catalina.sh
# implementation when JSSE is used. Default is:
# "-Djdk.tls.ephemeralDHKeySize=2048"
#
# CATALINA_PID (Optional) Path of the file which should contains the pid
# of catalina startup java process, when start (fork) is used
#
# LOGGING_CONFIG (Optional) Override Tomcat's logging config file
# Example (all one line)
# LOGGING_CONFIG="-Djava.util.logging.config.file=$CATALINA_BASE/conf/logging.properties"
#
# LOGGING_MANAGER (Optional) Override Tomcat's logging manager
# Example (all one line)
# LOGGING_MANAGER="-Djava.util.logging.manager=org.apache.juli.ClassLoaderLogManager"
#
# USE_NOHUP (Optional) If set to the string true the start command will
# use nohup so that the Tomcat process will ignore any hangup
# signals. Default is "false" unless running on HP-UX in which
# case the default is "true"
# ----------------------------------------------------------------------------- # OS specific support. $var _must_ be set to either true or false.
JAVA_OPTS="-Xms256m -Xmx512m -Xss1024K -XX:PermSize=128m -XX:MaxPermSize=256m"
cygwin=false 2.7 MySQL資料庫的表名在Linux系統下是嚴格區分大小寫的,在Windows系統下開發的程式移植到Linux系統下,如果程式中SQL語句沒有嚴格按照大小寫訪問資料庫表,就可能會出現找不到表的錯誤。還有個問題就是如果不指定編碼字符集的話,可能會亂碼 上面兩個問題的解決方法是在/etc/my.cnf檔案中新增lower_case_table_names=1和default-character-set=utf8這樣兩句話。注意放的位置是在[mysqld]下面。如下所示。 [root@test bin]# vim /etc/my.cnf
[mysqld]
datadir=/var/lib/mysql
socket=/var/lib/mysql/mysql.sock
user=mysql
# Disabling symbolic-links is recommended to prevent assorted security risks
symbolic-links=0
lower_case_table_names=1
default-character-set=utf8 [mysqld_safe]
log-error=/var/log/mysqld.log
pid-file=/var/run/mysqld/mysqld.pid 第三步:啟動我們的專案 3.1 重啟mysql 重啟mysql的命令是:service mysqld restart,如下所示。 [root@test ~]# service mysqld restart
Stopping mysqld: [ OK ]
Starting mysqld: [ OK ]
[root@test ~]# 3.2 重新啟動tomcat,先使用命令shutdown.sh關閉tomcat,然後使用命令startup.sh來啟動tomcat,如下所示。 [root@test ~]# shutdown.sh
Using CATALINA_BASE: /usr/local/tomcat
Using CATALINA_HOME: /usr/local/tomcat
Using CATALINA_TMPDIR: /usr/local/tomcat/temp
Using JRE_HOME: /usr/java/jdk1.7.0_80
Using CLASSPATH: /usr/local/tomcat/bin/bootstrap.jar
[root@test ~]# [root@test ~]# startup.sh
Using CATALINA_BASE: /usr/local/tomcat
Using CATALINA_HOME: /usr/local/tomcat
Using CATALINA_TMPDIR: /usr/local/tomcat/temp
Using JRE_HOME: /usr/java/jdk1.7.0_80
Using CLASSPATH: /usr/local/tomcat/bin/bootstrap.jar 第四步:瀏覽我們的專案,剛才我打包的名稱是ZCMS,因此訪問的時候位址列輸入的是:localhost:80/ZCMS,剛開始會初始化資料庫,初始化完之後,再重新整理頁面,就會看到如下圖所示的介面了。 ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ 那麼如果我們的程式在虛擬機器中執行出現錯誤了,我們怎麼定位問題呢?我們需要到tomcat的logs目錄下去檢視,如下所示,我們可以看到我程式執行的一個錯誤是把Windows系統下的目錄拿到Linux環境下運行了,肯定會出錯的!!知道了錯誤,再對症下藥,就快多了。 [root@test logs]# ls
catalina.2016-10-27.log catalina.out host-manager.2016-10-27.log localhost.2016-10-27.log manager.2016-10-27.log
[root@test logs]# more catalina.out ERROR: 16-10-27 04:58:50 java.io.FileNotFoundException: d:/2010.xlsx (No such file or directory)
ERROR: 16-10-27 04:58:50 at java.io.FileOutputStream.open(Native Method)
ERROR: 16-10-27 04:58:50 at java.io.FileOutputStream.<init>(FileOutputStream.java:221)
ERROR: 16-10-27 04:58:50 at java.io.FileOutputStream.<init>(FileOutputStream.java:110)
這是到日誌檔案中去檢視日誌,我們還可以像在Eclipse的控制檯一樣實時檢視系統執行資訊,具體步驟是我們先進入到tomcat的logs目錄下,然後輸入命令:tail -f catalina.out並回車,就開始事實檢視系統執行資訊了,如下所示。如果想結束事實檢視資訊,按Ctrl+C就可以退出實時模式了。 [root@test tomcat]# ls
bin conf lib LICENSE logs NOTICE RELEASE-NOTES RUNNING.txt temp webapps work
[root@test tomcat]# cd logs/
[root@test logs]# tail -f catalina.out
完成:0%
完成:0%
完成:0%
完成:0%
完成:0%
完成:0%
完成:0%
完成:0%
完成:0%
URL /platform/environmentalTest.zhtml cost 242ms.
INFO: 16-10-27 05:28:03 ZCMS Compile application.zhtml cost 10 ms.
URL /application.zhtml cost 260ms.
INFO: 16-10-27 05:28:05 ZCMS Compile platform/systemInfo.zhtml cost 30 ms.
INFO: 16-10-27 05:28:11 ZCMS Compile platform/environmentalTest.zhtml cost 1 ms.