web項目部署到Linux伺服器遇到的問題
(内含war包部署産生的問題)
部署項目為:旅遊網(可下載下傳源碼)
一 Linux部署環境問題
二 war包錯誤修改
Linux部署環境問題 整個Linux伺服器部署參照部落格 https://blog.csdn.net/qq_41635167/article/details/81096075
Linux 指令
systemctl start mysql.service#啟動mysql服務
vim /var/log/mysqld.log#檢視mysql日志
rpm -qal |grep mysql #查找是否安裝mysql
netstat -anp|grep 3305 #查找程序,搜尋端口為3305是否存在;可删除|及|後的指令,顯示所有程序
pgrep -l java #查找程序名為“java”的PID,java一般為tomcat程序
kill -9 9090 #強制删除程序pid為9090的程序
netstat -ntlp #檢視開啟的所有端口
vi /etc/sysconfig/iptables #編輯 防火牆 規則
systemctl start firewalld.service #啟動防火牆
systemctl enable firewalld.service #設定開機啟動
systemctl restart firewalld.service #重新開機防火牆
firewall-cmd --state #檢查是否打開
// 看sshd服務狀态
service sshd status
// 如果沒有啟動就啟動sshd服務
servcie sshd start
檢視 linux 下tomcat實時日志資訊 及 tomcat控制台輸出
進入你tomcat的安裝目錄下的logs,
如 我安裝目錄是
/opt/DATA/tomcat8.5.55/apache-tomcat-8.5.55,
則進入
/opt/DATA/tomcat8.5.55/apache-tomcat-8.5.55/logs
指令為 :
(下面的JAVA_HOME需要修改為自己的tomcat安裝目錄)
cd /opt/DATA/tomcat8.5.55/apache-tomcat-8.5.55/logs
在該目錄下,輸入檢視指令:
//在logs目錄下,輸入指令
tail -f catalina.out
然後重開一個遠端視窗進行其他操作,重新整理浏覽器,就可以在原來的視窗看到tomcat日志了,會列印控制台,實時變化的哦~ ctrl+c可以退出日志
通路權限不足,無法寫入
linux安裝的JDK,Tomcat等東西最好放在目錄 opt檔案夾 或者 usr檔案夾下,
其他檔案夾非root使用者可能會出現通路權限不足,無法寫入或無法通路等問題,比較麻煩
tomcat無法通路:
tomcat 的 安裝目錄的 bin目錄下的 catalina.sh檔案使用
vi ./catalina.sh
指令進行編輯(進入後按鍵盤“insert”編輯,退出是先按 Esc 在輸入:wq)
加入以下指令,在開頭注釋結束部分
(下面的JAVA_HOME需要修改為自己的JDK安裝目錄)
JAVA_HOME=/opt/DATA/jdk1.8.0_161
PATH=$JAVA_HOME/bin:$PATH
CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
網頁驗證碼無法加載出來
錯誤:java.lang.NoClassDefFoundError: Could not initialize class sun.awt.X11Graphi
(原因:對于一個Java伺服器來說經常要處理一些圖形元素,例如地圖的建立或者圖形和圖表等。這些API基本上總是需要運作一個X-server以便能使用AWT(Abstract Window Toolkit,抽象視窗工具集)。)
tomcat 的 安裝目錄的 bin目錄下的 catalina.sh檔案使用
vi ./catalina.sh
指令進行編輯(進入後按鍵盤“insert”編輯,退出是先按 Esc 再輸入:wq)
加入指令
JAVA_OPTS="$JAVA_OPTS -Djava.awt.headless=true"
寶塔頁面tomcat,mysql無法關閉
寶塔 軟體管理界面,解除安裝
Linux防火牆端口限制解除
xshell中 輸入指令:(直接對檔案進行編輯,進入後按鍵盤上的 insert 進入編輯模式,修改完成後按Esc ,再輸入 :wq 儲存并退出(冒号不能忘掉))
vi /etc/sysconfig/iptables
這是我的檔案内容,添加端口可直接在檔案裡追加
A INPUT -m state --state NEW -m tcp -p tcp --dport 443 -ACCEPT
将這條的 443 改為所要添加的端口号
下面為檔案内容:
*filter
:INPUT ACCEPT [0:0]
: FORNARD ACCEPT [0:0]
:OUTPUT ACCEPT [0:0]
A INPUT -m state --state REL ATED, ESTABLISHED j ACCEPT
A INPUT P icmp -
ACCEPT
A INPUT -1 lo -j ACCEPT
A INPUT -m state --state NEW -m tcp P tcp
dport 21 j
ACCEPT
A INPUT -p tcp -m state --state NEW -m tcp --dport 22
ACCEPT
A INPUT -m state --state NEW -m tcp -p tcp --dport 80
ACCEPT
A INPUT -m state --state NEW -m tcp -p tcp --dport 88-ACCEPT
A INPUT -m state --state NEW -m tcp -p tcp --dport 443 -ACCEPT
A INPUT -m state --state NEW -m tcp -p tcp --dport 888 -ACCEPT
A INPUT -m state --state NEW -m tcp -p tcp --dport 3306 -ACCEP
A INPUT -m state --state NEW -m tcp -p tcp --dport 3389 -ACCEPTT
A INPUT -m state --state NEW -m tcp -p tcp --dport 8080 -ACCEPT
A INPUT -m state --state NEW -m tcp -p tcp --dport 8080 -ACCEPT
A INPUT -m state --state NEW -m tcp -p tcp --dport 177 -ACCEPT
A INPUT -m state --state NEW -m tcp -P tcp --dport 8888 ACCEPT
A INPUT j REJECT -- reject -with icmp -host p rohibited
A FORWARD j REJECT - reject -with icmp -host p rohibited
然後
systemctl restart firewalld.service
進行重新開機防火牆
ps : 如果防火牆報錯可用
firewall-cmd --state #檢視是否打開防火牆
檢視防火牆是否打開,如果未打開,使用
systemctl start firewalld.service #啟動防火牆
war包錯誤修改
讀取不到properties檔案(原來在本機運作的項目是使用的本機絕對路徑:G/workspace/xx.properties),修改為如圖所示

//相對路徑加載properties檔案方法
Properties props = new Properties();
String PATH="druid.properties";
InputStream in = PropertyTest.class.getClassLoader().getResourceAsStream(PATH);
props.load(in);
resources/druid.propeties問題報錯(資料庫問題)
propeties檔案内部存儲的是資料庫賬戶密碼,drive,url;都得根據自己的情況進行相應修改
driverClassName=com.mysql.jdbc.Driver
url=jdbc:mysql://localhost:3306/travel
username=root
password=password
當資料庫和部署的項目至同一個伺服器時,上邊的url中的localhost可以不變,否則改為伺服器ip位址;
端口改為mysql端口;
賬戶密碼改為自己的賬戶密碼。
Table ‘travel.tab_seller’ doesn’t exist
重新建立表
mysql錯誤:ERROR 1045 (28000): Access denied for user ‘root’@'localhost
mysqladmin -u root password admin #shell中修改密碼為admin
mysql要是怎麼都登不進去,重裝吧,或者試試其他密碼,或許你可能之前設定了其他密碼,别問我是怎麼知道的~
修改mysql密碼
-
格式:mysqladmin -u使用者名 -p舊密碼 password 新密碼
例子:mysqladmin -uroot -p123456 password 123
-
格式:mysql> set password for 使用者名@localhost = password('新密碼');
例子:mysql> set password for [email protected] = password('123');
-
mysql> use mysql;
mysql> update user set password=password('123') where user='root' and host='localhost';
mysql> flush privileges;
- 徹底忘記密碼
1.vi /etc/my.cnf
2. 在[mysqld]下面添加一條指令:skip-grant-tables
3. :wq
4.1 進入MySql控制台(直接按回車,這時不需要輸入root密碼。)
mysql -uroot -p
4.2 切換到mysql資料庫
mysql>use mysql;
4.3 修改mysql資料庫中root的密碼
mysql> update user set password=password(“填入新密碼”) where user=‘root’;
4.4 重新整理mysql權限
mysql> flush privileges;
4.5 退出
mysql> exit;
5.再次vi /etc/my.cnf。把skip-grant-tables删除掉,儲存退出:wq
(自項目— 旅遊網 錯誤,非本項目無需理會)郵件發送錯誤
除非你不使用 注冊 功能,否則
修改 cn.itcast.travel.util.MailUtil的String USER 和 PASSWORD修改為自己的
(自項目— 旅遊網 錯誤,非本項目無需理會)資料庫錯誤 或 resources/druid.propeties問題報錯(資料庫問題)
propeties檔案内部存儲的是資料庫賬戶密碼,drive,url;都得根據自己的情況進行相應修改
driverClassName=com.mysql.jdbc.Driver
url=jdbc:mysql://localhost:3306/travel
username=root
password=password
賬戶密碼改為自己的賬戶密碼。