Ubuntu 18.04 安裝部署Net Core、Nginx全過程
環境配置
Ubuntu 18.04 ,Nginx,.Net Core 2.1, Let's Encrypt
更新系統
sudo apt-get update
sudo apt-get upgrade
安裝Net Core
參考文檔地址:https://www.microsoft.com/net/learn/dotnet/hello-world-tutorial#install
- Register Microsoft key and feed
wget -q https://packages.microsoft.com/config/ubuntu/18.04/packages-microsoft-prod.deb
sudo dpkg -i packages-microsoft-prod.deb
- Install .NET SDK
sudo apt-get install apt-transport-https
sudo apt-get update
sudo apt-get install dotnet-sdk-2.1
- 創建 ASP.NET Core 演示網站並發布(此部分根據實際需要修改)
# 下載一個演示型站點
git clone https://github.com/linezero/NETCoreBBS
vim NETCoreBBS/src/NetCoreBBS/Program.cs
# 默認為 80 端口,這里修改為 8000 端口
.UseUrls("http://*:8000")
# 編譯並發布
$ cd NETCoreBBS
$ dotnet restore
$ dotnet publish
$ sudo dotnet publish -c Release -o /var/bbs.xyfy.loan #發布到指定目錄
- 部署並后台運行網站
# 進入發布后的位置,開始運行
$ cd /var/bbs.xyfy.loan
# 安裝 Supervisor
$ sudo apt-get install supervisor
# 配置 Supervisor
$ sudo vim /etc/supervisor/conf.d/NetCoreBBS.conf
[program:NetCoreBBS]
directory=/var/bbs.xyfy.loan
command=dotnet NetCoreBBS.dll
autostart=true
autorestart=true
startsecs=10
startretries=50
stderr_logfile=/var/log/NetCoreBBS.err.log
stdout_logfile=/var/log/NetCoreBBS.out.log
environment=ASPNETCORE__ENVIRONMENT=Production
user=root
stopsignal=INT
# 重啟supervisor
$ sudo /etc/init.d/supervisor restart
# 如果一切配置正確,查看相應日志你可以看到類似以下輸出,表示應用已正常啟動。
$ tail -f /var/log/NetCoreBBS.out.log
Hosting environment: Production
Content root path: /root/dotnet/NETCoreBBS/src/NetCoreBBS/bin/Debug/netcoreapp2.0/publish
Now listening on: http://[::]:8000
Application started. Press Ctrl+C to shut down.
安裝Nginx
# 安裝
$ sudo apt-get install nginx
安裝配置Let's Encrypt [此處作廢,最好只生成證書,而不對nginx配置做出修改,如果你只有一個站點,並且不需要反向代理,可以使用此方法]
- Installing Certbot 安裝Certbot
# 安裝Certbot
$ sudo add-apt-repository ppa:certbot/certbot
$ sudo apt-get update
$ sudo apt-get install python3-certbot-nginx # install Certbot's Nginx package
- Setting up Nginx
# 配置域名
$ sudo vim /etc/nginx/sites-available/default
# 尋找server_name這行配置然后使用自己的域名替換修改下划線_
# server_name www.xyfy.loan bbs.xyfy.loan;
# 測試配置
$ sudo nginx -t
# 啟用配置
$ sudo service nginx reload
- Obtaining an SSL Certificate 申請ssl證書
# 申請證書
$ sudo certbot --nginx -d www.xyfy.loan -d bbs.xyfy.loan
$ 嘗試證書自動續期
$ sudo certbot renew --dry-run
配置Nginx反向代理[證書是另外生成的]
# 反向代理
$ sudo vi /etc/nginx/sites-enabled/www.xyfy.loan.conf
server {
listen 80 ;
server_name www.xyfy.loan;
return 301 https://$server_name$request_uri;
}
##
upstream wwwxyfyloan {
#ip_hash;
server localhost:8000;
#server 172.18.28.109:8001;
ip_hash;
}
##
server {
listen 443 ssl;
server_name www.xyfy.loan;
ssl_certificate certs/www.xyfy.loan.crt;
ssl_certificate_key certs/www.xyfy.loan.key;
location / {
proxy_pass http://wwwxyfyloan;
}
}
# 符號連接
$ cd /etc/nginx/sites-enabled
$ sudo ln -s /etc/nginx/sites-available/www.xyfy.loan.conf www.xyfy.loan.conf
# 重啟
$ sudo nginx -t
$ sudo service nginx reload