1. 程式人生 > >Centos7安裝.Net Core 2.2環境以及部署.Net Core MVC程式(Apache+Jexus環境)

Centos7安裝.Net Core 2.2環境以及部署.Net Core MVC程式(Apache+Jexus環境)

1.雙11搶購搬瓦工VPS.配置如下:

  • CPU:2 核
  • 記憶體:2048 MB
  • 硬碟:40 GB SSD
  • 流量:1 TB
  • 頻寬:1 Gbps

2.VPS安裝Centos7-x86_64-bbr系統(bbr 是為了加速科學上網)

3.開啟80埠

   CentOS7開啟80埠:

firewall-cmd --zone=public --add-port=80/tcp --permanent

systemctl restart firewalld.service

   如果上述命令無法找到的話,使用以下命令

/sbin/iptables -I INPUT -p tcp --dport 80 -j ACCEPT

service iptables save

service iptables restart

 4.安裝Apache

    安裝之前都要記得,先執行update

yum update

 安裝Apache

yum install httpd httpd-devel

 安裝完成之後啟動Apache

systemctl start httpd.service

 訪問IP,成功如下圖。

 

  附上Apache幾條命令(我已經偷偷設定開機啟動)

systemctl start httpd.service #啟動Apache

systemctl stop httpd.service #停止Apache

systemctl restart httpd.service #重啟Apache

systemctl enable httpd.service #設定Apache開機啟動

 5.安裝.Net Core 2.2(參照官方地址:https://dotnet.microsoft.com/learn/dotnet/hello-world-tutorial#linuxcentos)

sudo rpm -Uvh https://packages.microsoft.com/config/rhel/7/packages-microsoft-prod.rpm
sudo yum update
sudo yum install dotnet-sdk-2.2

安裝完成之後,檢視資訊

dotnet --info

.Net Core 2.2.1的版本,以及安裝的路徑。

6.VS2017 建立一個MVC程式(參照官方地址:https://docs.microsoft.com/zh-cn/aspnet/core/host-and-deploy/linux-apache?view=aspnetcore-2.2)

 

直接確定就好。

在Startup.cs類中新增引用:Microsoft.AspNetCore.HttpOverrides;

 在Startup.cs類Configure方法中新增程式碼

app.UseForwardedHeaders(new ForwardedHeadersOptions
{
    ForwardedHeaders = ForwardedHeaders.XForwardedFor | ForwardedHeaders.XForwardedProto
});

app.UseAuthentication();

釋出程式碼

 

釋出完成之後可以使用命令執行測試 (VPSTest是的專案名稱 所以生成了VPSTest.dll)  預設埠為5000

dotnet G:\WebSite\VPSTest.dll

上傳程式碼 我使用FTP上傳。上傳路徑為/var/www/html/MVC   我在Html資料夾裡面新建了MVC資料夾 。

 在Xshell中執行執行命令

dotnet /var/www/html/MVC/VPSTest.dll

埠5000沒有開放 只開放80埠。所以暫時還不能看到效果,出現如圖一樣的資訊就是正常的。

7.配置Apache

 在/etc/httpd/conf.d/路徑中建立一個名為MVCTest.conf 的配置檔案,程式碼如下

<VirtualHost *:80>
    ProxyPreserveHost On
    ProxyPass / http://127.0.0.1:5000/
    ProxyPassReverse / http://127.0.0.1:5000/
    ServerName www.xxx.com
    ServerAlias *.www.xxx.com
    ErrorLog ${APACHE_LOG_DIR}helloapp-error.log
    CustomLog ${APACHE_LOG_DIR}helloapp-access.log common
</VirtualHost>

 其中域名為自己的。沒有試過可不可以不填。

測試配置,如果正確會提示 Syntax [OK]

sudo service httpd configtest

 重啟Apache,就可以訪問IP看到效果了,但是斷開Xshell之後就掛了。

8.Kestrel 程序守護配置 

 在/etc/systemd/system/建立服務檔名字為kestrel-MVCTest.service  程式碼如下:

[Unit]
Description=Example .NET Web API App running on CentOS 7

[Service]
WorkingDirectory=/var/www/html/MVC/
ExecStart=/usr/bin/dotnet /var/www/html/MVC/VPSTest.dll
Restart=always
# Restart service after 10 seconds if the dotnet service crashes:
RestartSec=10
KillSignal=SIGINT
SyslogIdentifier=dotnet-example
User=apache
Environment=ASPNETCORE_ENVIRONMENT=Production 

[Install]
WantedBy=multi-user.target

 需要注意WorkingDirectory的路徑,ExecStart的命令格式(ExecStart  dotnet的路徑 dll的路徑),不對的話會在狀態中顯示的。

儲存該檔案並啟用該服務,並確認它正在執行

systemctl enable kestrel-MVCTest.service

systemctl start kestrel-MVCTest.service

systemctl status kestrel-MVCTest.service

啟用成功,正常執行。我要去科學上網了。