1. 程式人生 > >[Asp.net core]使用ssh命令釋出asp.net core專案

[Asp.net core]使用ssh命令釋出asp.net core專案

命令

# 移除之前釋出的包
rm -rf ./.Publish
rm -rf ./Wolfy.Blog.tar.gz

# 編譯併發布 將釋出包打包在.Publish目錄下
"C:/Program Files/dotnet/dotnet.exe" publish "./Wolfy.Blog/Wolfy.Blog.csproj" -c Release -r linux-x64 -f netcoreapp2.1 -o "../.Publish"

命令執行後效果:

 

壓縮釋出包

# 壓縮
cd ./.Publish/  && tar -zcf ../Wolfy.Blog.tar.gz * && cd ../

命令執行後效果

 

# 建立指定目錄
ssh -p 22 [email protected]192.168.226.129 "mkdir -p /home/webroot/Wolfy.Blog"

命令效果:

# 遠端檔案拷貝命令
scp -P 22 -r ./Wolfy.Blog.tar.gz [email protected]192.168.226.129:/home/webroot/Wolfy.Blog.tar.gz

命令效果

# 解壓
ssh -p 22 [email protected]192.168.226.129
"tar -xzf /home/webroot/Wolfy.Blog.tar.gz -C /home/webroot/Wolfy.Blog"

命令效果

# 授予執行許可權
ssh -p 22 [email protected]192.168.226.129 "chmod 777 /home/webroot/Wolfy.Blog"

首次部署需要新增該web應用supervisor配置

/etc/supervice/conf.d下新增

Wolfy.Blog.conf

[program:Wolfy.Blog]                          ;定義程序名稱
command
=dotnet Wolfy.Blog.dll ;程式啟動命令 directory=/home/webroot/Wolfy.Blog ;命令執行的目錄 autostart=true ;在Supervisord啟動時,程式是否啟動 autorestart=true ;程式退出後自動重啟 startretries=5 ;啟動失敗自動重試次數,預設是3 startsecs=1 ;自動重啟間隔 user=root ;設定啟動程序的使用者,預設是root priority=999 ;程序啟動優先順序,預設999,值小的優先啟動 stderr_logfile=/var/logs/supervisor/Wolfy.Blog.err.log ;標準錯誤日誌 stdout_logfile=/var/logs/supervisor/Wolfy.Blog.out.log ;標準輸出日誌 environment=ASPNETCORE_ENVIRONMENT=Production ;程序環境變數 stopsignal=INT ;請求停止時用來殺死程式的訊號
supervisorctl -c /etc/supervisor/supervisord.conf reload

之後釋出,就不需要管這些,通過命令

# 啟動站點
ssh -p 22 [email protected]192.168.226.129 "rm -f /var/logs/supervisor/Wolfy.Blog.err.log"
ssh -p 22 [email protected]192.168.226.129 "rm -f /var/logs/supervisor/Wolfy.Blog.out.log"
ssh -p 22 [email protected]192.168.226.129 "supervisorctl -c /etc/supervisor/supervisord.conf restart Wolfy.Blog"

可以通過supervisor先將站點停止,然後執行上面的命令,重新整理supervisor管理頁面,可以看到web啟動成功。

所以完整的命令檔案為:

# 移除之前釋出的包
rm -rf ./.Publish
rm -rf ./Wolfy.Blog.tar.gz

# 編譯併發布 將釋出包打包在.Publish目錄下
"C:/Program Files/dotnet/dotnet.exe" publish "./Wolfy.Blog/Wolfy.Blog.csproj" -c Release -r linux-x64 -f netcoreapp2.1 -o "../.Publish"

# 壓縮
cd ./.Publish/  && tar -zcf ../Wolfy.Blog.tar.gz * && cd ../

# 建立指定目錄
ssh -p 22 [email protected]192.168.226.129 "mkdir -p /home/webroot/Wolfy.Blog"

# 遠端檔案拷貝命令
 scp -P 22 -r ./Wolfy.Blog.tar.gz [email protected]192.168.226.129:/home/webroot/Wolfy.Blog.tar.gz

# 解壓
ssh -p 22 [email protected]192.168.226.129 "tar -xzf /home/webroot/Wolfy.Blog.tar.gz -C /home/webroot/Wolfy.Blog"

# 授予執行許可權
ssh -p 22 [email protected]192.168.226.129 "chmod 777 /home/webroot/Wolfy.Blog"

# 啟動站點
ssh -p 22 [email protected]192.168.226.129 "rm -f /var/logs/supervisor/Wolfy.Blog.err.log"
ssh -p 22 [email protected]192.168.226.129 "rm -f /var/logs/supervisor/Wolfy.Blog.out.log"
ssh -p 22 [email protected]192.168.226.129 "supervisorctl -c /etc/supervisor/supervisord.conf restart Wolfy.Blog"

# 清理本地釋出包
rm -rf ./.Publish
rm -rf ./Wolfy.Blog.tar.gz

總結

1、釋出之前需要通過git確認釋出的分支。

git checkout develop

2、拉取最新程式碼

git pull

3、將上面內容替寫入一個.sh的檔案,和sln解決方案檔案放在同一個目錄即可,替換專案名稱,比如我這裡使用的例項Wolfy.Blog

4、supervisor的配置,需要注意下,這個地方根據自己的配置進行設定。