Linux(CentOS 7)+dotnet釋出專案時未指定url造成無法訪問解決方案
inux(CentOS 7)+dotnet釋出專案時未指定url造成無法訪問解決方案
問題背景
當我使用CentOS 7中的dotnet釋出.net core5的專案時發現其無法在區域網中其他上進行訪問,通過嘗試各種方案,最終通過在啟動專案時指定允許訪問的ip以及指定埠號來解決該問題。
解決過程
未解決前
開始我使用的是未指定引數執行,即使用以下命令執行程式:
nohup dotnet NodeServer.Web.Entry.dll &
其中nohup ./xxx.sh &指令可時程式在使用者關閉ssh連線之後仍然能夠在後臺執行
得到的結果如下:
此時如果在Linux主機上使用curl訪問該專案可以得到相關資訊,說明專案已經發布成功,但是我們如果需要在區域網中訪問該專案時,可能會發現其會報錯,如果沒有報錯則說明是幸運的,因為Linux主機中的5000埠時開啟的,此時我們就無需再通過防火牆開啟相應的埠。
解決問題
此時執行一下命令檢視埠的使用情況:
netstat -lnpt
結果如下:
在這裡我們可以看到dotnet所監聽的埠為5000,本地地址為127.0.0.1,此時需要在區域網中進行訪問時會發現報錯,無法訪問。原因是防火牆未開啟5000埠,使用如下命令檢視並且開啟相應埠。
檢視當前已開啟的埠
firewall-cmd --zone=public --list-ports
開啟5000埠
firewall-cmd --zone=public --add-port=5000/tcp --permanent
–permanent引數可使該設定持久化
使配置立即生效
firewall-cmd --reload
**注意:**如遇埠被佔用問題,則需要檢視是什麼服務佔用了該埠,如果是不需要的服務可使用kill指令將該服務程序停止,如果該服務較為重要,我們則可以考慮更換埠
開放完成5000埠之後部分情況下可以在區域網中使用其他主機通過ip:port的方式訪問到專案,但有些情況下即使開啟埠仍然無法通過該方式訪問到專案,接下來介紹一個解決方案:在啟動專案時通過自定義url以及埠即可解決該問題。
相關指令:
nohup dotnet NodeServer.Web.Entry.dll --urls="http://*:5000" --environment=Development &
或
dotnet NodeServer.Web.Entry.dll --urls="http://*:5000" --environment=Development
————————————————