上篇《Docker基礎入門及示例》文章介紹了Docker部署,以及相關.net core 的打包示例。這篇文章我將以oss.offical.site站點為例,主要介紹下在linux機器下完整的部署流程,.net core在docker容器中的運行已經介紹,這里.net core運行環境我會介紹直接在linux運行的場景,內容主要包含以下幾個部分:
1. 基礎工具和Linux環境准備
2. .Net Core環境安裝及端口配置
3. Nginx的安裝配置
4. Supervisor守護進程安裝配置
一. 基礎工具和Linux環境准備
工具介紹:
Ubuntu:azure雲端linux主機
Xshell:免費的linux客戶端工具
FileZilla: 免費文件上傳(sftp、ftp)工具
vs2017: 開發工具
本次部署主要是通過Nginx負載代理.net core服務,提供對外站點訪問。.net core 本身的宿主則通過其自帶的Kestrel服務運行。如果你是雲主機請記得在管理控制台添加80訪問端口。
那這里我先創建一個www文件夾,作為后邊存放站點文件的根目錄,同時設置相關權限,這里可能會有一個小的需要注意的問題,現在很多雲主機直接登錄后權限是很低的,需要使用:sudo -s 命令提升權限,否則創建文件夾會出現權限不足的錯誤。
1. mkdir /home/www/ossoffical // 創建ossoffical站點文件夾
2. chown [-R] 賬號名稱 ossoffical // 把賬號名稱添加到www文件夾的所有者中,保證后續sftp上傳文件夾等在無法提權的情況下也能操作
二. .Net Core環境安裝及端口配置
1. 安裝,這里參照微軟官網即可,我這里使用的是Ubuntu 14.04版本,主要執行以下幾條命令
sudo sh -c 'echo "deb [arch=amd64] https://apt-mo.trafficmanager.net/repos/dotnet-release/ trusty main" > /etc/apt/sources.list.d/dotnetdev.list'
sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv-keys 417A0893
sudo apt-get update
sudo apt-get install dotnet-dev-1.0.1
2. vs端口相關設置
這里需要注意一下,當前版本創建的.net core項目在不制定具體端口的情況下,會默認使用5000端口。但是這個在后續的版本中會移除,見官方文檔:
並且我也希望自己指定具體的端口,這樣以后站點多了之后防止沖突,我修改自己項目中的Program文件中內容,指定8000端口,如圖:
請注意先后的順序,否則在vs中可能會出現調試無法打開的情況,發布當前項目。
3. 上傳項目文件運行
a. 通過filezilla上傳項目文件到ossoffical目錄下
b. 通過命令客戶端進入ossoffical目錄(cd /home/www/ossoffical),執行:dotnet OSS.Offical.Site.dll(我當前站點項目程序集名稱),結果如圖:
退出執行ctrl+c 。當然我們也可以執行 “ dotnet OSS.Offical.Site.dll & ” ,讓其在后台運行,只是這個更方便讓我們查看。這個時候你可以訪問對應的8000端口即可訪問(雲主機請注意開放訪問端口)。
三. Nginx安裝
1. 執行:sudo apt-get install nginx 命令
2. 安裝完成之后訪問對應的80端口,應該如下:
3. 配置代理
a. mkdir /etc/nginx/hosts 創建一個文件夾,用來放置站點配置文件
b. 執行 cd /etc/nginx/hosts 進入目錄, 執行: vi ossoffical 按 “i” 添加如下內容:
server {
listen 80;index index.html index.htm;
server_name www.osscoder.com; #域名
location / {
proxy_pass http://127.0.0.1:8000; # 剛才設置的地址端口
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;
}
}
退出保存。
4. 修改nginx配置文件,vi /etc/nginx/nginx.conf
在http節點末尾,添加 :include /etc/nginx/hosts/*;
5. 重啟nginx服務器: sudo service nginx restart(reload)
6. 進入站點目錄,dotnet OSS.Offical.Site.dll & ,確保站點正確運行,訪問 www.osscoder.com,如下:
四. 守護進程安裝配置
為了保證服務能夠穩定運行,我們安裝守護進程以確保在應用程序出現異常中斷時能夠正常重啟。
1. 安裝,執行:sudo apt-get install supervisor
2. 安裝成功后進入:/ect/supervisor/conf.d/ 目錄,添加 ossoffical.conf 文件,添加如下內容:
[program:OSS.Offical.Site]
command=dotnet OSS.Offical.Site.dll //要執行的命令
directory=/home/www/ossoffical //命令執行的目錄
environment=ASPNETCORE__ENVIRONMENT=Production #環境變量
user=osscoder //進程執行的用戶身份
stopsignal=INT
autostart=true
autorestart=true
startsecs=3 //自動重啟間隔
stderr_logfile=/var/log/ossoffical.err.log //標准錯誤日志
stdout_logfile=/var/log/ossoffical.out.log //標准輸出日志
把對應的目錄和名稱換掉即可,請刪除注釋,否則有時會出現命令執行失敗的情況。完畢之后重啟supervisor:
sudo service supervisor stop
sudo service supervisor start
完成之后可以殺掉進程或者重啟機器測試。
我最近正在開發OSS系列開源項目,現在已有OSS.Common,OSS.Http, OSS.Social 和 OSS.PayCenter 幾個項目,如果你也有興趣,請聯系我或者關注公眾號OSSCoder