ASP.Net Core 运行在Linux(CentOS)

Linux Disibutaion:CentOS 7.1

Web Server:Apache、Kestrel

1、安装.net core

1
2
3
4
sudo yum install libunwind libicu
curl -sSL -o dotnet.tar.gz https://go.microsoft.com/fwlink/?LinkID=835019
sudo mkdir -p /opt/dotnet && sudo tar zxf dotnet.tar.gz -C /opt/dotnet
sudo ln -s /opt/dotnet/dotnet /usr/local/bin

2、新建asp.net core mvc项目

1
2
3
4
5
6
7
8
9
10
11
#新建文件夹hwapp
mkdir hwapp
  
#进入hwapp文件夹
cd hwapp
  
#新建asp.net core mvc项目
dotnet new -t web
  
#还原.net core nuget包
dotnet restore

3、安装npm,gulp,bower

1
2
3
4
5
6
7
8
wget https://nodejs.org/dist/v6.9.1/node-v6.9.1-linux-x64.tar.xz
xz -d node-v6.9.1-linux-x64.tar.xz
#安装npm
sudo tar --strip-components 1 -xvf node-v* -C /usr/local
#安装gulp
sudo npm install gulp -g
#安装bower
sudo npm install bower -g

4、发布项目

1
2
3
cd /home/$1/hwapp
#发布项目
dotnet publish -c Release

5、安装并配置Apache

1
2
3
4
#更新
sudo yum update -y
#安装apache
sudo yum -y install httpd mod_ssl

进入/etc/httpd/conf.d目录,添加hwapp.conf文件,并将如下内容写入文件中

1
2
3
4
5
6
7
<VirtualHost *:80>
    ProxyPreserveHost On
    ProxyPass / http://127.0.0.1:5000/
    ProxyPassReverse / http://127.0.0.1:5000/
    ErrorLog /var/log/httpd/hwapp-error.log
    CustomLog /var/log/httpd/hwapp-access.log common
</VirtualHost>

检查配置文件是否正确,如果看到"Syntax [OK]"则说明配置正确

1
sudo service httpd configtest

重启Apache

1
2
sudo systemctl restart httpd
sudo systemctl enable httpd

按理来说,到这一步应该已经可以访问我们部署的网站了,但是在CentOS下有一个细节需要注意:SELinux的安全策略导致网站无法访问。

1
2
3
4
5
6
7
8
9
#查看selinux状态
 
# SELINUX= can take one of these three values:
#     enforcing - SELinux security policy is enforced.
#     permissive - SELinux prints warnings instead of enforcing.
#     disabled - No SELinux policy is loaded.
getenforce
#这里我们需要把SELinux的值修改为disabled
vi /etc/selinux/config

 修改完SELinux,重启虚机

6、安装Supervisor

1
2
yum install python-setuptools
easy_install supervisor

配置Supervisor

1
2
3
4
mkdir /etc/supervisor
echo_supervisord_conf > /etc/supervisor/supervisord.conf
#指定配置文件
supervisord -c /etc/supervisor/supervisord.conf

指定守护的程序配置

1
vi /etc/supervisor/supervisord.conf

在supervisord.conf最后加入

1
2
[include]
files=conf.d/*.conf

进入目录/usr/lib/systemd/system/,新建一个“supervisord.service”文件

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
# dservice for systemd (CentOS 7.0+)
# by ET-CS (https://github.com/ET-CS)
[Unit]
Description=Supervisor daemon
 
[Service]
Type=forking
ExecStart=/usr/bin/supervisord -c /etc/supervisor/supervisord.conf
ExecStop=/usr/bin/supervisorctl shutdown
ExecReload=/usr/bin/supervisorctl reload
KillMode=process
Restart=on-failure
RestartSec=42s
 
[Install]
WantedBy=multi-user.target

执行命令

1
2
systemctl enable supervisord
systemctl start supervisord

配置守护进程,进入目录/etc/supervisor/conf.d/,新建文件“hwapp.conf”

1
2
3
4
5
6
7
8
9
10
[program:hwapp]
command=/usr/local/bin/dotnet /var/hwapp/hwapp.dll --server.urls:http://*:5000
directory=/var/hwapp/
autostart=true
autorestart=true
stderr_logfile=/var/log/hwapp.err.log
stdout_logfile=/var/log/hwapp.out.log
environment=ASPNETCORE_ENVIRONMENT=Production
user=azureuser
stopsignal=INT

重新加载配置

1
2
3
sudo supervisorctl reload
sudo supervisord
sudo supervisorctl

查看是否被守护进程拉起

1
ps -ef|grep dotnet

 

部署成功

 

posted @   公羊天纵  阅读(422)  评论(0编辑  收藏  举报
编辑推荐:
· Java 中堆内存和栈内存上的数据分布和特点
· 开发中对象命名的一点思考
· .NET Core内存结构体系(Windows环境)底层原理浅谈
· C# 深度学习:对抗生成网络(GAN)训练头像生成模型
· .NET 适配 HarmonyOS 进展
阅读排行:
· 如何给本地部署的DeepSeek投喂数据,让他更懂你
· 超详细,DeepSeek 接入PyCharm实现AI编程!(支持本地部署DeepSeek及官方Dee
· 用 DeepSeek 给对象做个网站,她一定感动坏了
· .NET 8.0 + Linux 香橙派,实现高效的 IoT 数据采集与控制解决方案
· DeepSeek处理自有业务的案例:让AI给你写一份小众编辑器(EverEdit)的语法着色文件
点击右上角即可分享
微信分享提示