zoukankan      html  css  js  c++  java
  • Centos7 部署.Net Core+Nginx+Supervisor

    1、安装.Net Core SDK

      1.1、 在安装.NET之前,您需要注册Microsoft密钥,注册产品存储库并安装所需的依赖项。这只需要每台机器完成一次。             

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

      1.2 、更新可用于安装的产品,然后安装.NET SDK。

    sudo yum update
    sudo yum install dotnet-sdk-2.2

      1.3、验证安装是否成功

    dotnet --version

    2、部署.Net Core项目

      2.1、将发布后的.Net Core项目上传到Linux 新建文件夹 yunying中,然后进入yunying文件夹中,运行项目

      2.2、然后再浏览器中访问:http://ip:5000,如果访问不了,先将防火墙关闭

    3、安装Nginx并配置Nginx对项目的转发

      3.1、添加源

    sudo rpm -Uvh http://nginx.org/packages/centos/7/noarch/RPMS/nginx-release-centos-7-0.el7.ngx.noarch.rpm

      3.2、安装Nginx

    sudo yum install -y nginx

      3.3、启动Nginx并设置开机自动运行

    sudo systemctl start nginx
    sudo systemctl enable nginx

      3.4、查看是否安装成功

                    在浏览器中输入:http://ip

      

      3.5、修改Nginx的配置文件,将/etc/nginx/conf.d/default.conf 文件内容替换为:

    server {
        listen       80;
        location / {
        proxy_pass http://localhost:5000;
        proxy_http_version 1.1;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection keep-alive;
        proxy_set_header Host $host;
        proxy_cache_bypass $http_upgrade;
        proxy_set_header   X-Forwarded-For 
        proxy_add_x_forwarded_for;
        proxy_set_header   X-Forwarded-Proto $scheme;
        }
    }

    配置完成后执行 nginx -s reload 或者 systemctl restart nginx 进行 重启nginx,再次执行2操作运行.net core项目,然后访问80端口,这时有可能报502错误,原因是SELinux配置问题。

    解决办法有两种:

    a、关闭SELinux

    输入:seatatus,如果SELInux status:enabled,表示开启,修改配置文件/etc/selinux/config  修改为SELINUX=disabled 

    或者执行命令:

    setenforce 0
    sed -i 's/enforcing$/disabled/g' /etc/selinux/config

    b、将Nginx加到SELinux的允许名单

    1、yum install policycoreutils-python
    2、sudo cat /var/log/audit/audit.log | grep nginx | grep denied | audit2allow -M mynginx
    3、sudo semodule
    -i mynginx.pp

    重新运行.Net Core项目,并访问,就可以成功访问了。

    4、配置Supervisor守护进程

      4.1、安装Supervisor

    1、yum install python-setuptools
    2、easy_install supervisor

      4.2、配置Supervisor

    创建supervisor文件夹,通过echo_supervisord_conf初始化配置文件

    1、mkdir /etc/supervisor
    2、echo_supervisord_conf > /etc/supervisor/supervisord.conf

      4.3、修改新建的supervisord.conf配置信息,将最后面的修改为

    即去掉最后两行前面的“;”号。

      4.4、为.Net Core 项目添加进程配置文件:

    在/etc/supervisor/目录下创建名字为conf.d文件夹,在conf.d文件夹中创建一个WebDemo.ini文件,在WebDemo.ini文件添加以下配置

    [program:WebDemo]
    command=dotnet WebDemo.dll ; 运行程序的命令
    directory=/root/yunying/ ; 命令执行的目录
    autorestart=true ; 程序意外退出是否自动重启
    stderr_logfile=/var/log/WebDemo.err.log ; 错误日志文件
    stdout_logfile=/var/log/WebDemo.out.log ; 输出日志文件
    environment=ASPNETCORE_ENVIRONMENT=Production ; 进程环境变量
    user=root ; 进程执行的用户身份
    stopsignal=INT

      4.5、启动Supervisor服务: 

    supervisord -c /etc/supervisor/supervisord.conf
    

    启动服务后可以通过命令查看是否配置成功

    ps -ef | grep WebDemo.dll

    如果看到以下内容,表示配置成功,就可以访问.Net Core项目了

      4.6 配置Supervisor开机启动

    进入/usr/lib/systemd/system/目录,并创建supervisord.service文件,添加内容:

    [Unit]
    Description=Supervisor daemon
    [Service]
    Type=forking
    ExecStart=/usr/bin/supervisord -c /etc/supervisor/supervisord.conf
    ExecStop=/usr/bin/supervisorctl shutdown
    ExecReload=/usr/bin/supervisorctl reload
    KillMode=process
    Restart=on-failure
    RestartSec=42s
    [Install]
    WantedBy=multi-user.target

    使配置生效:

    systemctl daemon-reload

    设置服务开机启动:

    systemctl enable supervisord

    启动supervisor进程:

    systemctl start supervisord

    验证是否为开机启动:

    systemctl is-enabled supervisord

     

    5、常用命令:

      5.1、Nginx

    nginx             //启动nginx
    nginx -s reload   //重启nginx
    nginx -s stop     //关闭nginx

      5.2、supervisor

    supervisorctl status    //查看所有任务状态
    supervisorctl shutdown  //关闭所有任务
    supervisorctl start|stop|restart all          //控制所有进程
    supervisorctl start|stop|restart program_name //控制目标进程 

          

  • 相关阅读:
    python模块
    python函数进阶
    python函数
    六.python的深浅拷贝
    五.集合及其推导式
    IOS微信显示NAN,中国标准时间日期转换
    Caused by: org.apache.ibatis.binding.BindingException: Parameter 'XXX' not found. Available parameters are [beginTime, endTime, param3, param1, vesselName, param2] 找不到参数的解决方式
    java的nullpointerexception空指针异常,关于使用了timer定时导致service调用问题
    java设置开始时间,定时执行任务
    java多层嵌套集合的json,如何获取多层集合中所需要的value
  • 原文地址:https://www.cnblogs.com/zhuyuchao/p/11262666.html
Copyright © 2011-2022 走看看