Linux .Net Core发布项目及搭建

.Net Core环境部署

前言: 根据官方的要求 ,在安装DotNetCore 环境之前需要注册Microsoft Key以及Product Repository,并且还需要安装一些依赖,这一步每台机器只需要运行一次,具体命令如下:

sudo rpm -Uvh https://packages.microsoft.com/config/rhel/7/packages-microsoft-prod.rpm

1.先用下面的命令更新系统

sudo yum update

2.安装.Net Core SDK 3.1(这里我选的是3.1,你们可以根据项目的环境需要安装SDK的版本)


//注册
sudo yum install aspnetcore-runtime-3.0


sudo yum install dotnet-sdk-3.1

 

 

3.查看是否安装成功,也可以通过下面的命令知晓.Net Core 版本

dotnet --version

至此.Net  Core环境安装结束!

.Net Core项目 发布至Linux

前言:建.Net Core项目的过程,在这里不做解释,大家可以自行百度即可,这里直接从发布项目开始

1.文件发布后是在本地,我们需要把本地的项目文件放入到Centos中,这里就需要借助一个软件FileZilla(下载地址:https://filezilla-project.org/download.php?platform=win64)

这个软件可以将windows的文件上传至Centos中(这个软件的详细用法请自行百度)

 

 2.项目上传到Centos中后,在Centos发布项目的目录中执行 注意: 我的项目名是WebApplication1,所以是WebApplication1.dll,根据你自己取的名称来启动项目文件

dotnet    WebApplication1.dll  

 

 

 

 可以看到我们已经启动了项目,但是现在还不急,我们要用Nginx反向代理来处理现有的端口

 

.Net Core使用Nginx反向代理

1.先安装下载Nginx

sudo yum install -y nginx

2. 检测是否安装完成(输入检测版本命令)

nginx -v

3. 直接启动nginx

sudo systemctl start nginx

3. 查看启动状态

sudo systemctl status nginx

 4. (我这里是没有关闭防火墙的也可以访问,如果小伙伴访问不了可以尝试关闭防火墙,这里用Centos8版本)这个时候输入你自己的Centos IP地址在浏览器就可以访问了,页面如下:

 

5.嘿嘿,到了这一步,这个时候我们要开始干点正经事了,将.Net Core 项目端口进行(Nginx)反向代理

cd  /etc/nginx/conf.d   #先进入到nginx运行的代理文件中

6.开始在/etc/nginx/conf.d 这个文件夹下面新建一个后缀名为conf结尾的的文件

yum -y install vim*  #如果没有vim命令安装vim,我用的是Centos8,已经默认安装,可省略此命令
vim demo.conf     #创建配置文件

配置文件的内容如下:

server {
  listen 1233 ;  #反向代理的访问的端口
  location / {
  proxy_pass  https://localhost:5001 ; #.net core  默认启动的端口
  proxy_set_header Upgrade $http_upgrade;
  proxy_set_header Connection keep-alive;
  proxy_cache_bypass $http_upgrade;
  }
}

弄完, 命令 :wq保存并退出

7.重新加载NGINX

sudo systemctl reload nginx

在发布目录启动我们的项目文件,

8.接下来我们就可以在浏览器中访问我们的项目了(IP+代理端口)就可以访问了

9.如果遇到502错误,先查询端口是否正常运行

sudo netstat -antup  #查询linux 的所有端口占用情况

10.项目启动正常+NgInx启动正常,Selinux没有关闭导致

关闭Selinux

setenforce 0   #为0即可

Centos .Net Core 后台守护进程(Supervisor)部署

前言:如果大家前面的配置都成功了,那么恭喜你,到了这里你应该会有一个疑问,现在项目是跑起来了但是如果我要一直运行项目,发现不能对Linux进行操作,而且终端关闭,项目也会立马停止,能不能有个东西,不用我们去管,项目一直在跑,又不会影响我们操作,更不会因为终端关闭而程序崩溃这个时候

 

Supervisor就出现了!它能很好的解决我们刚才说的问题

1.安装Supervisor
sudo su - #切换为root用户 
yum install epel-release
sudo yum install supervisor
supervisord --version   #检测supervisor是否安装成功 
cat /usr/lib/systemd/system/supervisord.service   #查看服务文件安装的位置
 2.设置 supervisor 开机启动
sudo systemctl enable supervisord
sudo systemctl start supervisord

 

3.进入 supervisor 控制台执行命令
sudo supervisorctl
4.查看配置文件目录
cat /etc/supervisord.conf  #查看配置文件信息
[include]
files = supervisord.d/*.ini    #可以看到配置文件末尾是supervisord.d/*.ini的文件路径  在/etc/supervisord.d/的文件夹下创建文件后缀为ini结尾的文件 
5.建立配置文件 demo.ini    注意:这个文件名是可以自定义的,不过后缀必须是ini

 #注意:可能是supervisor,程序BUG 原因   项目启动  Deploy.Linux.dll   必须两端有空格,否则运行不了

 

[program:demo]
command=/usr/bin/dotnet  Deploy.Linux.dll ; 输入执行命令,这里表示 dotnet  Deploy.Linux.dll   
directory=/data/sites/demo/publish ; 应用程序根目录
autostart=true ; 是否自动启动,当 supervisor 加载该配置文件的时候立即启动它
autorestart=true ; 是否自动重启,当执行 dotnet  Deploy.Linux.dll 启动失败时,会重复的自动重启
logfile_maxbytes=50MB ; 该配置文件输出单个日志文件的大小
logfile_backups=10 ; 日志备份个数
loglevel=info ; 记录日志级别
stderr_logfile=/data/logs/demo/demo.err.log ; 指定标准错误输出日志文件
stdout_logfile=/data/logs/demo/demo.out.log ; 指定标准输出日志文件
environment=ASPNETCORE_ENVIRONMENT=Production ; 可配置环境变量,该环境变量将通过执行 dotnet  Deploy.Linux.dll 命令的时候传入到 .NET Core 应用程序中
user=root ;启动服务的用户
stopsignal=INT
redirect_stderr=true
6.创建日志文件目录,必须要创建对应配置文件日志的日志目录   
sudo mkdir -p /data/logs/demo   #因为上面的日志路径是/data/logs/demo,所以我们这里的路径就是这个,这个根据自己的日志路径进行创建
7. 重启 supervisor 服务
sudo systemctl restart supervisord
8. supervisor 服务命令
sudo systemctl restart supervisord #使配置生效
sudo systemctl enable supervisord #设置服务开机启动,即设置enable
sudo systemctl start supervisord  #启动服务

4.验证dotnet 进程是否启动成功

ps -ef | grep dotnet

 

 

 

5.(拓展知识)supervisor远程管理

进入supervisor配置文件

vim /etc/supervisor/supervisord.conf
;[inet_http_server]         ; inet (TCP) server disabled by default
;port=127.0.0.1:9001        ; (ip_address:port specifier, *:port for all iface)
;username=user              ; (default is no username (open server))
;password=123               ; (default is no password (open server))

;以下内容开启http服务
[inet_http_server]
port=192.168.1.71:9001      ;ip 加端口,改为自己Centos的IP
username=admin               ;登陆账号,可以不设
password=123456              ;登陆账户,可以不设

 重启服务,就好了!

6.关闭防火墙

CentOS 7.0默认使用的是firewall作为防火墙。

查看防火墙状态命令:firewall-cmd --state

停止firewall命令:systemctl stop firewalld.service

禁止firewall开机启动命令:systemctl disable firewalld.service

 -------------------------------------------------------------------------------------------------------------------------------------------------

 
posted @ 2020-02-27 09:35  -PENG-  阅读(584)  评论(1编辑  收藏  举报