华为云Linux(CentOS 7)+.Net Core项目部署+Nginx负载均衡
一. 前期准备
1.服务器准备:全新华为云,CentOS 7.6 64bit,(开放端口安全组,防火墙关闭,如果有未使用的硬盘可以挂载硬盘(先分区->格式化->挂载文件目录),网卡设置(华为云不需要))
2.软件准备:远端电脑的终极工具箱MobaXterm,其他的当然也可以,例如Xshell,Xftp等
3.已发布好的.Net Core项目
二. 开搞
1. 安装.Net Core环境
1.首先我们打开微软官网,安装需要安装的包 https://dotnet.microsoft.com/download.
2. 点击后进入新页面,找到CentOS
3.点击后进入新页面,找到CentOS7,执行微软提供的这两条指令,耐心等待即可
4. 安装完成后,输入命令:dotnet --version 查看版本,输入命令:dotnet new --help查看安装的模块
到这里,dotnet环境安装大功告成!
2. 安装Nginx并启动Nginx
1.把提前下载好的nginx(nginx下载路径http://nginx.org/en/download.html,注意别下windows版本)拉到远程linux的 /ldg/myapp 目录中(该目录事先有了一个nginx文件夹,是用于安装nginx的目录),并执行解压命令tar -xzvf nginx-1.18.0.tar.gz
2.进入解压好的文件夹目录 /ldg/myapp/nginx-1.18.0,安装各种依赖库,命令:yum install -y gcc gcc-c++ automake pcre pcre-devel zlib zlib-devel openssl openssl-devel
5.配置nginx的安装路径。 输入命令:./configure --prefix=/ldg/myapp/nginx (如果有关于logs的报错,说明 nginx/目录下没有logs文件夹,这个时候创建一个logs文件夹即可)
6.启动Nginx,进入sbin目录,输入指令:./nginx
7.如果需要配置nginx开机自启动,则输入指令:vim /etc/rc.d/rc.local
按照下图修改即可。当然,还可以有其他办法-----------
保存退出时可能会报错:E45: ‘readonly’ option is set (add ! to override) ,是因为文件权限问题,这时候退出编辑模式输入冒号后,输入 wq!即可强制保存退出。
8.外网访问测试nginx
nginx其他命令 : ./nginx -s reload(重启nginx)
提示: 如果仍然无法打开网页,可以把linux防火墙,把它关闭,或者开启nginx配置的端口。方法如下:
查看防火墙状态: firewall-cmd --state
关闭防火墙: systemctl stop firewalld.service (打开时,把stop改成start)
关闭防火墙开机自启动:systemctl disable firewalld.service 如果显示not running,则关闭成功
3. 启动nginx和.Net Core项目,开始测试
1.首先我们先修改linux系统中的配置文档(配置地址直接为真实ip),配置负载均衡策略,定位到sbin目录,输入命令:./nginx -s reload(重启nginx)
2.把已发布好的项目,先配置好启动端口(注意,建议用配置文档的方式,而且地址为 http://0.0.0.0:端口号,在linux中直接命令配置端口号反正我是启动不成功的)
3.应该后台启动,在使用dotnet xxx.dll运行项目时,如断开shell之后将会被终止服务。所以可以执行命令:nohup 你需要执行得命令 &(注意:&符号别漏了!)
4.输入命令:ps sux 查看进程即可看到项目已经运行, 如果想关闭某个进程,就输入命令: kill 进程号
5.结果展示:现在部署了3个后台webapi进程,使用nginx权重模式负载均衡测试成功
那么这个是在开发环境,如何在产线部署呢。可以以守护进程supervisor启动程序,在supervisor的启动配置里面增加环境变量。
三. 总结
后续进阶可以使用docker容器技术进行部署。