.net Core 部署到 Linux

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

相關文章
相關標籤/搜索