一、准备工作
- 一台Ubuntu 18.04服务器
- 能够使用sudo的账户或者root账户
- 打开了80端口
- 一个ASP.NET Core项目
二、项目发布并上传
发布ASP.NET Core项目到本地
发布目标选择文件系统,部署模式选择框架依赖,目标运行时选择linux-x64
By the way,.NET Core的运行时,对于Linux仅支持64位,32位的Linux上找不到对应安装包。
点击发布,发布成功后,找到目标文件夹,将整个文件夹上传至Ubuntu。
这里使用终端工具MobaXterm来上传,新建一个SFTP的Session,输入服务器地址,用户名和密码
建议在/var目录下新建一个www目录,将发布好的文件夹放在www目录下
三、安装Nginx
在Ubuntu上安装Nginx
1 2 3 4 5 6
| sudo apt-get install nginx
sudo service nginx start
nginx -v
|
访问http://server_IP_address/index.nginx-debian.html
将server_IP_address替换为服务器地址,如果能看到Welcome Ngnix相关字样,代表Nginx安装成功
四、安装.NET CORE运行时
安装前,需要注册Microsoft key和软件仓库,并安装所需依赖项,每台机器只需完成一次此操作
1 2
| wget -q https://packages.microsoft.com/config/ubuntu/16.04/packages-microsoft-prod.deb -O packages-microsoft-prod.deb sudo dpkg -i packages-microsoft-prod.deb
|
然后安装.NET CORE运行时
1 2 3 4 5 6
| sudo apt-get install apt-transport-https sudo apt-get update
sudo apt-get install aspnetcore-runtime-2.2
dotnet --version
|
也可以通过二进制文件安装,访问https://dotnet.microsoft.com/download/dotnet-core
可以但没必要
cd到刚才上传的目录,直接运行.NET Core应用程序
五、创建.NET Core服务
如果可以运行成功,就直接创建成服务
1 2
| vi /etc/systemd/system/kestrel-mywebsite.service
|
键入以下内容
1 2 3 4 5 6 7 8 9 10 11 12 13
| [Unit] Description=MyWebSite a .NET Core Web App running on Ubuntu [Service] WorkingDirectory=/var/www/MyWebSite ExecStart=/usr/bin/dotnet /var/www/MyWebSite/MyWebSite.dll Restart=always RestartSec=10 SyslogIdentifier=dotnet-mywebsite User=root Environment=ASPNETCORE_ENVIRONMENT=Production Environment=DOTNET_PRINT_TELEMETRY_MESSAGE=false [Install] WantedBy=multi-user.target
|
其中,WorkingDirectory和ExecStart替换成自己的上传目录和dll,RestartSec为该服务崩溃后重启前等待秒,SyslogIdentifier为系统日志标识符,User为启动用户
保存并启用服务
1 2 3 4 5 6 7 8 9 10
| sudo systemctl enable kestrel-mywebsite.service
sudo systemctl start kestrel-mywebsite.service
sudo systemctl status kestrel-mywebsite.service
curl -I localhost:5000
systemctl restart kestrel-hellomvc.service
|
六、配置Nginx
修改Nginx配置文件
1
| vi /etc/nginx/sites-enabled/default
|
修改为
1 2 3 4 5 6 7 8 9 10 11 12 13 14
| server{ listen 80; server_name example.com *.example.com; location / { proxy_pass http://localhost:5000; proxy_http_version 1.1; proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection keep-alive; proxy_set_header Host $host; proxy_cache_bypass $http_upgrade; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header X-Forwarded-Proto $scheme; } }
|
重启Nginx
1 2 3 4
| nginx -t
nginx -s reload
|
访问http://server_IP_address
就能看到部署好的网站了