zoukankan      html  css  js  c++  java
  • Asp.net Core发布到CentOS7

    第一步、安装CentOS

    官网https://www.centos.org/下载CentOS,下载地址https://www.centos.org/download/,我选的“DVD ISO”,然后虚拟机VMware Workstation Pro上安装的。

    配置CentOS图形界面请看我另一篇整理的文章

     第二步、配置.NET Core开发项目

    a、配置Url网址

    默认使用http://localhost:5000的Url监听,可通过在项目根目录中添加hosting.json(名字随意)来修改Url和端口号。

    1 {
    2   "server.urls": "http://localhost:5000"
    3 }

    b、修改Program.cs,新增配置参数

     1 public static void Main(string[] args)
     2 {
     3     var config = new ConfigurationBuilder()
     4         .SetBasePath(Directory.GetCurrentDirectory())
     5         .AddJsonFile("hosting.json", optional: true)
     6         .Build();
     7 
     8     var host = new WebHostBuilder()
     9          .UseKestrel()
    10          .UseConfiguration(config)
    11          .UseContentRoot(Directory.GetCurrentDirectory())
    12          .UseIISIntegration()
    13          .UseStartup<Startup>()
    14          .Build();
    15 
    16     host.Run();
    17 }

    c、发布项目

    右键项目->发布(B)...->发布方法(M):选文件系统,目标位置(T):默认也行,或者自己指定的PublishOutput文件夹,下一页(X)>,下一页(X)>,发布(P)

    把发布成功的项目文件上传到CentOS文件夹下(这里我放在/home/wwwroot/下)

    第三步、安装.NET Core环境

     a、安装.NET Core SDK

    1 sudo yum install libunwind libicu
    2 curl -sSL -o dotnet.tar.gz https://go.microsoft.com/fwlink/?linkid=848821
    3 sudo mkdir -p /opt/dotnet && sudo tar zxf dotnet.tar.gz -C /opt/dotnet
    4 sudo ln -s /opt/dotnet/dotnet /usr/local/bin

    详见官方说明:https://www.microsoft.com/net/core#linuxcentos

    b、验证是否安装成功

    1 dotnet --info
    2 dotnet --version

    第四步、配置Nginx

    a、从官方地址(http://nginx.org/)下载,解压,配置,编译,安装

    b、或者通过curl下载,具体步骤如下:

    1 curl -o  nginx.rpm http://nginx.org/packages/centos/7/noarch/RPMS/nginx-release-centos-7-0.el7.ngx.noarch.rpm
    2 rpm -ivh nginx.rpm
    3 yum install nginx

    c、修改Nginx配置文件/etc/nginx/nginx.conf

     1 server {
     2     listen 80;
     3     location / {
     4         proxy_pass http://localhost:5000;
     5         proxy_http_version 1.1;
     6         proxy_set_header Upgrade $http_upgrade;
     7         proxy_set_header Connection keep-alive;
     8         proxy_set_header Host $host;
     9         proxy_cache_bypass $http_upgrade;
    10     }
    11 }

    d、启动Nginx

    1 systemctl start nginx

    e、设置开机启动Nginx

    1 systemctl enable nginx

    f、防火墙设置

    1)添加站点端口(80、5000)

    1 firewall-cmd --zone=public --add-port=80/tcp --permanent
    2 firewall-cmd --zone=public --add-port=5000/tcp --permanent

    其中,80端口是给Nginx用,5000端口是给.NET Core用(见第二步配置)

    2)重启防火墙

    1 firewall-cmd –-reload

    注:重置CentOS7的root密码请参阅这篇文章。关键代码:

    找到Linux 16的那一行,将ro改为rw init=/sysroot/bin/sh
    按下 Control+x ,使用单用户模式启动
    chroot /sysroot
    passwd root
    touch /.autorelabel
    exit
    reboot

    第五步、设置守护进程Supervisor

     a、安装Supervisor

    一般情况下,我们在网站发布PublishOutput文件夹下运行

    dotnet 项目.dll

    可以检查是否正常运行,但是,退出Shell后网站就得停止。所以需要有个程序一直值守并监控着,使网站可以持续运行,所以安装->Supervisor

    1 yum install python-setuptools
    2 easy_install supervisor

    b、配置Supervisor

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

    修改supervisord.conf文件,将文件尾部配置修改为

    1 [include]
    2 files = conf.d/*.conf

    注:表示读取的守护配置文件路径和类型

    c、重启

    1 supervisorctl reload

    d、配置对.NET Core的守护文件

    步骤b中的“files = conf.d/*.conf”,即在/etc/supervisor/conf.d/文件夹下,新建一个名为“项目名.conf”的守护文件,内容如下:

     1 [program:应用程序dll的名称]
     2 command=dotnet 应用程序dll的名称.dll ; 运行程序的命令
     3 directory=/home/wwwroot/应用程序dll的名称/ ; 命令执行的目录
     4 autostart=true ; 自启动
     5 autorestart=true ; 程序意外退出是否自动重启
     6 stderr_logfile=/var/log/应用程序dll的名称.err.log ; 错误日志文件
     7 stdout_logfile=/var/log/应用程序dll的名称.out.log ; 输出日志文件
     8 environment=ASPNETCORE_ENVIRONMENT=Production ; 进程环境变量
     9 user=root ; 进程执行的用户身份
    10 stopsignal=INT

    运行Supervisord并查看进程是否生效。

    supervisord -c /etc/supervisor/supervisord.conf
    ps -ef | grep 应用程序dll的名字

    设置开机自启动

    创建/lib/systemd/system/supervisord.service文件,并修改为以下内容

     1 # dservice for systemd (CentOS 7.0+) 
     2 # by ET-CS (https://github.com/ET-CS) 
     3 [Unit] 
     4 Description=Supervisor daemon
     5 
     6 [Service] 
     7 Type=forking 
     8 ExecStart=/usr/bin/supervisord -c /etc/supervisor/supervisord.conf 
     9 ExecStop=/usr/bin/supervisorctl shutdown 
    10 ExecReload=/usr/bin/supervisorctl reload 
    11 KillMode=process 
    12 Restart=on-failure 
    13 RestartSec=42s
    14 
    15 [Install] 
    16 WantedBy=multi-user.target

    启动服务:systemctl enable supervisord

    验证一下是否为开机启动:systemctl is-enabled supervisord

  • 相关阅读:
    [转]快速矩阵快速幂
    继续学习C:数字进制表示
    pthread_cond_wait()用法分析
    [原]NYOJ-光棍的yy-655
    [原]NYOJ-组合数-32
    [转]_int64、long long 的区别
    [原]NYOJ-6174问题-57
    [转]sscanf函数具体用法
    [原]NYOJ-A*B Problem II-623
    集存款(复利单利)贷款为一体的计算器(最新版)
  • 原文地址:https://www.cnblogs.com/sheng9hhd/p/7238595.html
Copyright © 2011-2022 走看看