# Linux部署
## 騰訊云
如果只是玩玩的話,可以考慮騰訊云按量計費的服務器,0.23元/小時,還是很劃算的。
若有需要輕度的生產環境的話,可以注冊一下學生認證,1核1G現在10元/月。[云+校園計劃](https://cloud.tencent.com/act/campus)
如果非常在意性價比的話,阿里云貌似是10元/月的1核2G。
我所選的配置

## 安全組
安全組其實就是云主機的防火墻,我們需要新建一個安全組,打開22端口(用于連接CVM)和5000端口(WEB應用綁定的端口),這樣我們才能從外網訪問的到該服務器。
簡單的步驟如下,
1. 新建安全組

2. 添加入站規則

3. 關聯實例
將云主機關聯到安全組,這就不截圖了吧。
## 安裝環境
在創建好之后,我們可以用Putty遠程連接上CVM。(這里注意在Putty中用中文輸入法可能會卡死)
首先,用`yum update -y`更新所有已安裝的軟件,以防一些軟件版本太老導致一些詭異的問題。
在更新完之后,可以參照微軟的[教程](https://www.microsoft.com/net/learn/get-started/linux/centos)安裝.net core環境。
> 在安裝時,可能會出現短暫的假死。
至此,.net core環境已安裝完畢,可以通過`dotnet --info`查看相關信息。

## 發布WEB應用
這里我們就用之前寫的[簡易版PFSign](https://github.com/panfengstudio/workshop/tree/2018/05/05)作為示例。
Clone后切到根目錄,然后`dotnet publish -c Release`指定以生產環境發布。
很簡單是嗎?那就等著報錯吧。。
有興趣的可以試試,若這樣直接上去會在服務器上得到如下提示

在提示中可以看到,'http://localhost:5000' 不能綁定到IPv6。
> 這是因為localhost代表的是127.0.0.1是一個IPv4地址,自然不能綁定到IPv6的地址上。
解決這個問題也很簡單,我們只需在'Program.cs'中添加上以下一行即可。
```cs
public static IWebHost BuildWebHost(string[] args) =>
WebHost.CreateDefaultBuilder(args)
.UseStartup<Startup>()
// 添加該行
// 默認配置為http://localhost:5000
// 這里的*代表自動選擇指向本地的IP地址
.UseUrls("http://*:5000")
.Build();
```
## 上傳WEB應用
這里我們可以利用Xftp通過SFTP協議上傳文件。
之前找到之前發布的WEB應用`\bin\Release\netcoreapp2.0\publish`,直接右鍵上傳整個文件夾。
## 啟動WEB應用
回到Putty的命令行界面,用cd指令切到publish文件夾的目錄中,運行`dotnet workshop.dll`,這里的workshop.dll是之前發布的應用入口文件。

至此,應該簡單的部署流程就結束了。
我們已經可以用 http://(公網ip):5000 來訪問我們的應用。