来源: 在Linux上部署.NetCore项目 · Microbubu’s Lab
Linux管理工具宝塔面板的使用
安装
具体方法可以参考宝塔官网,下面仅总结一下要点:
- yum安装宝塔面板(6.8版本):
1
|
yum install -y wget && wget -O install.sh http://download.bt.cn/install/install_6.0.sh && bash install.sh
|
- 升级宝塔面板:
1
|
yum install -y wget && wget -O install.sh http://download.bt.cn/install/install_6.0.sh && bash install.sh
|
使用
默认端口是8888
,登陆之前可以通过终端更改面板的用户名和密码:
之后便可以使用浏览器直接访问面板了,建议登录之后首先更改默认端口以及登录入口。
宝塔面板提供很多功能,包括服务器的监控、网站的一键搭建、FTP服务器的一键搭建、数据库及文件管理,另外还可以运行计划任务,也可以通过面板管理部分软件及运行环境,比如可以安装apache服务器软件、ngnix服务器软件以及php运行环境等,是一款很不错的Linux管理面板,并且该软件还有Windows Server版本。
.NetCore SDK的安装
由于宝塔面板中没有集成.NetCore SDK,所以我们只能通过yum在终端手动安装。
各个不同Linux发行版的安装方法大同小异,在这个官方页面均有详细介绍,这里我用的是CentOS,所以使用yum安装。
- 根据官方的说法,在安装DotNetCore环境之前需要注册Microsoft Key以及Product Repository,并且还需要安装一些依赖,这一步每台机器只需要运行一次,具体命令如下:
1
|
sudo rpm -Uvh https://packages.microsoft.com/config/rhel/7/packages-microsoft-prod.rpm
|
- 安装dotnet-sdk-2.2:
1 2 3 |
~$ sudo yum update ~$ sudo yum install dotnet-sdk-2.2 |
- 测试是否安装成功:
1 2 3 4 5 |
// 直接看版本: ~$ dotnet --version // 使用yum查看info ~$ yum info dotnet-sdk-2.2 |
本地新建.NetCore WebApi项目
虽然在服务器上安装了.NetCore SDK,也可以用命令行直接在服务器上新建项目,但是鉴于Visual Studio强大的功能,我们选择在本地构建应用,然后部署到服务器即可。下面就编写一个简易的WebApi,注意新建项目的时候不要选择“为HTTPS配置”,因为服务器上的ngnix并没有启用https。
新建一个UsersController,代码编写如下:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 |
[ ][ ]public class UsersController : ControllerBase { [ ] public ActionResult<IEnumerable<SysUser>> Get() { return SysUser.Users; } } public class SysUser { public int Id { get; set; } public string Name { get; set; } public string Password { get; set; } public string Description { get; set; } public static List<SysUser> Users = new List<SysUser>() { new SysUser() { Id=1, Name="张三", Password="Not Set", Description="我是张三" }, new SysUser() { Id=2, Name="李四", Password="Not Set", Description="我是李四" } }; } |
正如你所见,我们的WebApi只能使用Http的Get方法获取地址api/users
的数据,后台会返回一个SysUser数组,这是我们预期的结果。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
[ { "id":1, "name":"张三", "password":"Not Set", "description":"我是张三" }, { "id":2, "name":"李四", "password":"Not Set", "description":"我是李四" } ] |
接着先将服务部署到本地文件系统上面,之后打成压缩包然后通过宝塔面板上传至服务器并解压。
在Linux上面运行项目
在服务器上进入部署文件所在目录,然后使用dotnet命令启动服务:
但是现在我们还不能直接访问到我们新部署的WebApi服务,需要使用ngnix设置反向代理,将特定的端口代理到http://localhost:5000
,这一步可以通过宝塔面板来完成,步骤如下:
- 在宝塔面板上新建一个网站,设置为静态网站即可,如果当前宝塔面板已经有多个项目,注意设置好端口即可,这里我设置成了81端口。
- 在刚才新建的网站中设置反向代理,目标URL填写
http://localhost:5000
即可,发送域名留空。
现在可以直接在浏览器中使用url访问刚才部署的url服务,如下图:
但是现在还有个问题,就是当我们关闭xShell等ssh工具的时候服务进程也会停止运行,下面就说说解决方法。
解决关闭Shell之后进程停止的问题
这个问题可以通过yum安装screen解决:
1
|
~$ yum install screen
|
screen的原理大概是新建一个终端进程,然后其他运行的任务可以附加到新建的这个进程运行,这样退出shell的时候我们的webapi服务便不会终止运行了。
下面是几个常用的screen命令:
- 新建一个screen(这里取名为box):
1
|
~$ screen -S box
|
- 查看当前存在的screen列表(这个命令会输出存在的所有screen实例的进程pid以及名称):
1
|
~$ screen -ls
|
- 关闭一个screen(关闭其对应的进程即可,以pid=1086为例):
1
|
~$ kill 1086
|