- 注册Microsoft密钥和源
sudo rpm -Uvh https://packages.microsoft.com/config/centos/7/packages-microsoft-prod.rpm
- 更新可供安装的产品
sudo yum update
- 安装.NET SDK,安装完成后可以用
dotnet --info
来确认一下。
sudo yum install dotnet-sdk-6.0
-
将asp.net core应用发布到本地文件夹。
-
在CentOS中创建一个文件夹用来存放部署文件
mkdir -p /data/sites
- 使用xftp将asp.net core应用的发布文件夹上传到CentOS中刚刚创建的文件夹下。
- 在CentOS中运行asp.net core应用
//进入文件夹
cd /data/sites/你的文件夹名称
//运行应用,注意项目名称的大小写
dotnet asp.net项目名称.dll
- 此时还不能访问,因为默认情况下5000端口是没有开放的,所以需要开放5000端口
//开放5000端口
sudo firewall-cmd --permanent --zone=public --add-port=5000/tcp
//重启防火墙,上面的命令才能生效
sudo firewall-cmd --reload
//可能查询一下5000端口是否开放,返回yes表示开放,否则返回no
sudo firewall-cmd --query-port=5000/tcp
- 在本机(虚拟机)中访问http://localhost:5000,网页可以显示了,但是在外网访问http://虚拟机IP地址:5000,仍然不能访问。这是因为监听的地址是localhost,所以外网不能访问。按Ctrl+C停止服务,然后运行下面命令:
dotnet asp.net项目名称.dll --urls http://*:5000
监听地址改成http://*,再次在外网使用IP地址访问,访问成功。
- 现在把控制台命令改成常驻服务,并且系统重启后也能自动运行。
//进入系统文件夹
cd /etc/systemd/system
//新建文件并编辑
sudo vi kestrel-dotnet.service
//按i进入编辑模式,复制以下内容
[Unit]
Description=.NET Web Site running on Centos
[Service]
WorkingDirectory=/data/sites/你的部署文件夹
ExecStart=/usr/bin/dotnet 你的项目名称.dll --urls http://*:5000
Restart=always
# Restart service after 10 seconds if the dotnet service crashes:
RestartSec=10
KillSignal=SIGINT
SyslogIdentifier=dotnet-example
User=root
Environment=ASPNETCORE_ENVIRONMENT=Production
Environment=DOTNET_PRINT_TELEMETRY_MESSAGE=false
[Install]
WantedBy=multi-user.target
//按ESC退出编辑模式,输入:wq保存退出。
//注册服务
sudo systemctl enable kestrel-dotnet.service
//启动服务
sudo systemctl start kestrel-dotnet.service
- 重启系统后,访问网站成功,部署完成。