在Linux上使用Nginx部署ASP.NET Core应用 本篇文章参考微软官方文章使用 Nginx 在 Linux 上托管 ASP.NET Core
准备环境
Linux版本Ubuntu22.04
.Net运行时.NetRutime8.0
代理服务器Nginx1.18.0
安装.Net 1 2 3 4 5 6 # 运行时 sudo apt-get update && \ sudo apt-get install -y dotnet-runtime-8.0 # Sdk sudo apt install dotnet-sdk-8.0
安装sdk时可能会出现找不到包的情况,这时使用官方的安装脚本即可
1 2 3 4 5 6 7 8 9 10 11 # 下载脚本 wget https://dot.net/v1/dotnet-install.sh -O dotnet-install.sh# 修改脚本权限 chmod +x ./dotnet-install.sh# 安装最新版本,若需要LTS删除--version latest ./dotnet-install.sh --version latest# runtime也可以用脚本安装 ./dotnet-install.sh --version latest --runtime aspnetcore
1 2 # 查看dotnet版本 dotnet --info
部署Asp.Net项目 本地运行OK后发布上传到服务器,这里我使用的时XFtp
,和XShell一套挺好用的;
测试应用:
注意:当NETCORE的版本低于3.0时,对应的命令为dotnet web.dll --server.urls="http://localhost:7102"
当NETCORE高于等于3.0版本时--urls "http://localhost:7102"
1 2 # Linux进入文件目录运行应用 dotnet RazorPageDemo.dll --urls "http://localhost:7102"
配置nginx nginx默认的配置路径/etc/nginx/conf.d
新建文件rdemo.conf
并添加内容
1 2 3 4 5 6 7 server{ listen 7102 ; server_name *.exmple.com; location /{ proxy_pass http: } }
重新加载nginx配置文件nginx -s reload
访问页面
启动后台守护程序 ctrl+c停止程序运行 创建服务定义文件:
1 sudo nano /etc/systemd/system/kestrel-rdemo.service
以下示例是应用的一个 .ini 服务文件:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 [Unit] Description=Example .NET Web API App running on Linux [Service] WorkingDirectory=/var/www/razorpagedemo ExecStart=/usr/bin/dotnet /var/www/razorpagedemo/RazorPageDemo.dll --urls "http://localhost:7202" Restart=always # Restart service after 10 seconds if the dotnet service crashes: RestartSec=10 KillSignal=SIGINT SyslogIdentifier=razorpagedemo User=www-data Environment=ASPNETCORE_ENVIRONMENT=Production Environment=DOTNET_NOLOGO=false [Install] WantedBy=multi-user.target
1 2 3 4 5 6 # 启动服务 sudo systemctl enable kestrel-rdemo.service# 运行 sudo systemctl start kestrel-rdemo.service# 查看状态 sudo systemctl status kestrel-rdemo.service
OK,访问没问题就可以了,云服务器的话记得打开端口