Centos7安装.Net Core 2.2环境以及部署.Net Core MVC程序(Apache+Jexus环境)

狂风中的少年 提交于 2021-02-20 05:57:44
原文: 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

启用成功,正常运行。我要去科学上网了。

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!