去年六月份的时候在Vultr上搭建了自己的SSR工具,用的是一台CentOS服务器,这款服务器上面除了SSR基本就没有其他任务在跑,所以,是时候用它来做点其他事情了。
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 | ~$ sudo yum update |
- 测试是否安装成功:
1 | // 直接看版本: |
本地新建.NetCore WebApi项目
虽然在服务器上安装了.NetCore SDK,也可以用命令行直接在服务器上新建项目,但是鉴于Visual Studio强大的功能,我们选择在本地构建应用,然后部署到服务器即可。下面就编写一个简易的WebApi,注意新建项目的时候不要选择“为HTTPS配置”,因为服务器上的ngnix并没有启用https。
新建一个UsersController,代码编写如下:
1 | [ ] |
正如你所见,我们的WebApi只能使用Http的Get方法获取地址api/users
的数据,后台会返回一个SysUser数组,这是我们预期的结果。
1 | [ |
接着先将服务部署到本地文件系统上面,之后打成压缩包然后通过宝塔面板上传至服务器并解压。
在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 |