1.環境說明
服務器系統:CentOS 7.4 64位html
相關工具:Xshel、Xftppython
.net Core版本:2.2linux
VS版本:2017nginx
服務器軟件軟件:.netcore、nginx、supervisor、policycoreutils-pythonweb
2.ASP.NET Core應用程序準備
這邊我使用一個空的Web項目來進行演示,由於本篇主要介紹生產環境的部署,與應用無關。centos
首先發布到本地IIS文件夾進行測試無誤服務器
具體IIS部署.net core 見 :curl
https://www.cnblogs.com/Liyuting/p/10310444.htmltcp
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