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
啟用成功,正常執行。我要去科學上網了。