端口沖突是WebLogic在CentOS上的常見問題,主要因端口被其他進程占用或配置不當導致。以下是系統化的解決步驟:
首先需確認沖突端口及占用進程,常用命令如下:
netstat
命令:sudo netstat -tulnp | grep <端口號>
(如7001
),顯示端口的TCP/UDP監聽狀態及占用進程的PID和名稱。ss
命令:sudo ss -tulnp | grep <端口號>
,功能與netstat
類似,但更高效。lsof
命令:sudo lsof -i :<端口號>
,直接列出占用端口的進程信息(包括用戶、進程ID、命令)。fuser
命令:sudo fuser -v -n tcp <端口號>
,顯示端口的進程ID、用戶及訪問類型(如LISTEN
)。若占用端口的進程非系統關鍵服務(如java
進程可能是其他Java應用),可通過以下命令終止:
sudo kill -9 <PID>
(-9
表示強制終止)。sudo fuser -k -n tcp <端口號>
(-k
表示殺死進程)。sshd
、httpd
等系統服務)。若不想終止其他應用,需修改WebLogic的監聽端口,有兩種方式:
http://<服務器IP>:<原端口>/console
(如http://localhost:7001/console
)。環境 → 服務器 → <服務器實例>
(如AdminServer
)。8080
),點擊“保存”。$DOMAIN_HOME/config/config.xml
(DOMAIN_HOME
為WebLogic域目錄,如/home/weblogic/user_projects/domains/base_domain
)。<server>
標簽(對應要修改的服務器實例,如AdminServer
),修改<listen-port>
屬性為新端口(如8080
)。<server name="AdminServer">
<listen-port>8080</listen-port>
<listen-address>localhost</listen-address>
</server>
修改配置后,需重啟服務使更改生效:
sudo ./stopWebLogic.sh
(位于$DOMAIN_HOME/bin
目錄)。sudo ./startWebLogic.sh
(同上)。若CentOS啟用了防火墻(firewalld
),需開放新端口:
sudo firewall-cmd --permanent --zone=public --add-port=<新端口>/tcp
(如8080
)。sudo firewall-cmd --reload
。若SELinux處于強制模式(Enforcing
),可能阻止WebLogic使用新端口,需調整:
sestatus
(若顯示Enforcing
,則需修改)。sudo setenforce 0
(重啟后恢復Enforcing
)。/etc/selinux/config
,將SELINUX=enforcing
改為SELINUX=permissive
,然后重啟系統。sudo netstat -tulnp | grep <新端口>
或curl http://localhost:<新端口>
。$DOMAIN_HOME/servers/<服務器實例>/logs/<服務器實例>.log
,確認無端口沖突錯誤。通過以上步驟,可徹底解決CentOS下WebLogic的端口沖突問題。若仍有異常,建議檢查應用程序配置(如WAR包中的web.xml
)是否硬編碼了舊端口。