# Linux部署
## 腾讯云
如果只是玩玩的话,可以考虑腾讯云按量计费的服务器,0.23元/小时,还是很划算的。
若有需要轻度的生产环境的话,可以注册一下学生认证,1核1G现在10元/月。[云+校园计划](https://cloud.tencent.com/act/campus)
如果非常在意性价比的话,阿里云貌似是10元/月的1核2G。
我所选的配置
![CVM配置](https://box.kancloud.cn/62acb943587ee45ad6b69fe38ba3ec91_382x348.png)
## 安全组
安全组其实就是云主机的防火墙,我们需要新建一个安全组,打开22端口(用于连接CVM)和5000端口(WEB应用绑定的端口),这样我们才能从外网访问的到该服务器。
简单的步骤如下,
1. 新建安全组
![新建安全组](https://box.kancloud.cn/9f83c4543cead3af1e5d835e4cd88625_525x458.png)
2. 添加入站规则
![添加入站规则](https://box.kancloud.cn/84494fd2075b6fa6abe2d7659c30a2f8_960x355.png)
3. 关联实例
将云主机关联到安全组,这就不截图了吧。
## 安装环境
在创建好之后,我们可以用Putty远程连接上CVM。(这里注意在Putty中用中文输入法可能会卡死)
首先,用`yum update -y`更新所有已安装的软件,以防一些软件版本太老导致一些诡异的问题。
在更新完之后,可以参照微软的[教程](https://www.microsoft.com/net/learn/get-started/linux/centos)安装.net core环境。
> 在安装时,可能会出现短暂的假死。
至此,.net core环境已安装完毕,可以通过`dotnet --info`查看相关信息。
![dotnet-info](https://box.kancloud.cn/7853df6fdaa4023d669a8bcc4940dffb_661x354.png)
## 发布WEB应用
这里我们就用之前写的[简易版PFSign](https://github.com/panfengstudio/workshop/tree/2018/05/05)作为示例。
Clone后切到根目录,然后`dotnet publish -c Release`指定以生产环境发布。
很简单是吗?那就等着报错吧。。
有兴趣的可以试试,若这样直接上去会在服务器上得到如下提示
![默认不支持IPv6](https://box.kancloud.cn/c11fceb1e804c89e37ab7c6f806c50b0_661x386.png)
在提示中可以看到,'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是之前发布的应用入口文件。
![启动WEB应用](https://box.kancloud.cn/e34241ae4712ab25a7de20d1f305330b_643x132.png)
至此,应该简单的部署流程就结束了。
我们已经可以用 http://(公网ip):5000 来访问我们的应用。