CentOS下搭建.NET Core项目运行环境

  • 系统版本:CentOS 7.3
  • 运行环境:.NET Core
  • 数据库:MySQL
  • 进程守护:Supervisor
  • 反向代理:nginx

.NET Core环境

安装CentOS中.NET Core依赖库

yum install libunwind
yum install libicu 

注册Microsoft密钥,产品存储库并安装所需的依赖项。

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

更新可用于安装的产品

sudo yum update

安装.NET SDK

sudo yum install dotnet-sdk-2.2

MySQL数据库

获取安装包并完成安装

wget http://dev.mysql.com/get/mysql-community-release-el7-5.noarch.rpm
rpm -ivh mysql-community-release-el7-5.noarch.rpm
yum install mysql-community-server

启动MySQL

service mysqld restart

登录数据库

mysql -u root

设置密码(将password换为自己的密码)

set password for 'root'@'localhost' =password('password');

指定用户远程访问授权

grant all privileges on *.* to root@'%'identified by 'password';

大小写不敏感设置

  • 编辑/etc/my.cnf文件,在[mysqld]节下 添加 lower_case_table_names=1 参数,重启MySQL才生效。

进程守护

安装Supervisor

yum install python-setuptools
easy_install supervisor
mkdir /etc/supervisor
echo_supervisord_conf > /etc/supervisor/supervisord.conf

配置Supervisor

  • 打开/etc/supervisor/supervisord.conf文件,将

      ;[include]
      ;files = relative/directory/*.ini
    

更换为

	[include]
	files = conf.d/*.conf
  • 进入目录/etc/supervisor/新建conf.d文件夹,conf.d文件夹下新建 netcore.conf文件,内容如下:

      [program:netcore]	
      command=dotnet mhqtalks.dll ; (注意)运行程序的命令	
      directory= /home/netcore/mhqtalks/ ; (注意 注意)对应的你的项目的存放目录,这个地方好多初学者搞错!!	
      autorestart=true ; 程序意外退出是否自动重启
      stderr_logfile=/var/log/netcore.err.log ; 错误日志文件
      stdout_logfile=/var/log/netcore.out.log ; 输出日志文件
      environment=ASPNETCORE_ENVIRONMENT=Production ; 进程环境变量
      user=root ; 进程执行的用户身份
      stopsignal=INT
    

执行命令

	supervisord -c /etc/supervisor/supervisord.conf 
	supervisorctl reload
  • 配置Supervisor开机启动:打开目录 /usr/lib/systemd/system/ 新建文件 supervisord.service,内容如下:

      # dservice for systemd (CentOS 7.0+)
      # by ET-CS (https://github.com/ET-CS)
      [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 enable supervisord  
	systemctl is-enabled supervisord #来验证是否为开机启动
  • 启动Supervisor

      supervisorctl start netcore
    

反向代理

安装Nginx

  • 添加Nginx存储库

      sudo yum -y install epel-release
    
  • 安装Nginx

      sudo yum -y install nginx
    
  • 设置开机启动

      sudo systemctl enable nginx
    
  • 启动

      sudo systemctl start nginx
    

配置

  • 编辑配置文件

      vim /etc/nginx/nginx.conf
    

输入i触发文件编辑,找到如下节点并编辑,

    server {
    listen       80;  #修改为监听端口
    server_name  fxy.wiki;  #修改为监听域名
    root         /usr/share/nginx/html;

    # Load configuration files for the default server block
    include /etc/nginx/default.d/*.conf;

    location / {
        proxy_pass http://localhost:5000;  #请求转向地址
    }

完成编辑后,按Esc退出编辑模式,输入“:wq”保存修改并退出。

  • 测试及重启
    输入

      nginx -t
    

若无问题则返回如下信息

    [root@iZj6c56xwl3ro8ov5irje1Z netcoreapp2.2]# nginx -t
    nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
    nginx: configuration file /etc/nginx/nginx.conf test is successful

重启服务,

    nginx -s reload

域名及主机

  • 域名正常注册即可,选择主机时若不想备案可以选择香港或者国外ECS,考虑速度推荐选择比较近的香港节点。
  • 在阿里云域名控制台将域名解析至指定ip主机。

参考资料

原文地址:https://www.cnblogs.com/fuxuyang/p/10310179.html