1.環境說明 伺服器系統:CentOS 7.4 64位 相關工具:Xshel、Xftp .net Core版本:2.2 VS版本:2017 伺服器軟體軟體:.netcore、nginx、supervisor、policycoreutils-python 2.ASP.NET Core應用程式準備 這邊 ...
1.環境說明
伺服器系統:CentOS 7.4 64位
相關工具:Xshel、Xftp
.net Core版本:2.2
VS版本:2017
伺服器軟體軟體:.netcore、nginx、supervisor、policycoreutils-python
2.ASP.NET Core應用程式準備
這邊我使用一個空的Web項目來進行演示,因為本篇主要介紹生產環境的部署,與應用無關。
首先發佈到本地IIS文件夾進行測試無誤
具體IIS部署.net core 見 :
https://www.cnblogs.com/Liyuting/p/10310444.html
3.安裝.NET Core SDK for CentOS7
此處引用微軟官方給出的命令進行安裝:
https://dotnet.microsoft.com/download/linux-package-manager/centos/sdk-current
輸入 dotnet --info 來查看是否安裝成功
如果可以執行則表明.NET Core SDK安裝成功。
4.部署ASP.NET Core應用程式
在home 裡面新建 test 文件夾,用來保存上傳的core
上傳之前發佈的文件夾至/home/test/
檢查是否能夠運行
cd進入test 文件,執行Linux.dll
這裡可以新建一個連接,
# curl http://localhost:5000
出現如下圖所示
如果出現這些信息則表示成功運行。
這時候我們只能在本地進行訪問,無法使用IP訪問,這時候我們需要部署一個web容器來進行轉發。
5.配置Nginx
5.1 安裝Nginx
curl -o nginx.rpm http://nginx.org/packages/centos/7/noarch/RPMS/nginx-release-centos-7-0.el7.ngx.noarch.rpm
rpm -ivh nginx.rpm
yum install nginx
安裝成功!
輸入:systemctl start nginx 來啟動nginx。
輸入:systemctl enable nginx 來設置nginx的開機啟動(linux宕機、重啟會自動運行nginx不需要連上去輸入命令)。
5.2配置防火牆
命令:firewall-cmd --zone=public --add-port=80/tcp --permanent(開放80埠)
命令:systemctl restart firewalld(重啟防火牆以使配置即時生效)
ps:此處如果出現錯誤,請檢查防火牆的開啟狀態。
直接輸入IP測試nginx是否可以訪問。
5.3 配置nginx對ASP.NET Core應用的轉發
修改 /etc/nginx/conf.d/default.conf 文件。
將文件內容替換為
server { listen 80; location / { proxy_pass http://localhost:5000; proxy_http_version 1.1; proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection keep-alive; proxy_set_header Host $host; proxy_cache_bypass $http_upgrade; } }
上傳至CentOS進行覆蓋。
執行:sudo nginx -s reload 使其即時生效
這時候再次嘗試訪問。
這個問題是由於SELinux保護機制所導致,我們需要將nginx添加至SELinux的白名單。
接下來我們通過一些命令解決這個問題。。
yum install policycoreutils-python sudo cat /var/log/audit/audit.log | grep nginx | grep denied | audit2allow -M mynginx sudo semodule -i mynginx.pp
PS:如果執行命令時出現下列情況:
執行 sudo cat /var/log/audit/audit.log | grep nginx | grep denied | audit2allow -M mynginx
時出現:you must specify the -p option with the path to the policy file
請先檢查SELinux是否被禁用掉了
在/etc/sysconf下有一個SeLinux文件,使用記事本打開,更改其中的SELINUX項的值就可以了。
- SELINUX=disable 禁用SeLinux
- SELINUX=enforcing 使用SeLinux
再次嘗試訪問。
至此基本完成了部署。
其他參考鏈接:http://www.cnblogs.com/ants/p/5732337.html
Linux下禁用、啟用SeLinux: https://www.cnblogs.com/tdcqma/p/5671299.html
DotNet Core 2.0部署後外網IP訪問: https://www.cnblogs.com/chenyangsocool/p/7707495.html