Centos7系统下搭建.NET Core2.0+Nginx+Supervisor环境

  • Post category:Linux

下面是在CentOS7系统下搭建.NETCore2.0+Nginx+Supervisor环境的攻略步骤:

安装.NET Core 2.0

  1. 安装依赖库:yum install libunwind libicu -y

  2. 添加Microsoft签名:rpm --import https://packages.microsoft.com/keys/microsoft.asc

  3. 添加Microsoft包管理仓库:vi /etc/yum.repos.d/microsoft.repo

[packages-microsoft-com-prod]
name=packages-microsoft-com-prod
baseurl=https://packages.microsoft.com/rhel/7/prod/
enabled=1
gpgcheck=1
gpgkey=https://packages.microsoft.com/keys/microsoft.asc

  1. 安装.NET Core:yum install dotnet-sdk-2.0.0 -y

  2. 验证.NET Core是否安装成功:dotnet --version,输出版本号表示安装成功。

安装Nginx

  1. 安装依赖库:yum install gcc pcre-devel openssl-devel -y

  2. 下载Nginx源码包:wget http://nginx.org/download/nginx-1.18.0.tar.gz

  3. 解压源码包:tar -zxvf nginx-1.18.0.tar.gz

  4. 进入源码目录:cd nginx-1.18.0

  5. 配置:./configure --prefix=/usr/local/nginx --with-http_stub_status_module --without-http_proxy_module

  6. 编译安装:make && make install

  7. 启动Nginx:/usr/local/nginx/sbin/nginx,访问服务器IP地址,如果页面显示“Welcome to nginx!”表示Nginx安装成功。

安装Supervisor

  1. 安装依赖库:yum install python-setuptools -y

  2. 安装supervisor:easy_install supervisor

  3. 配置Supervisor:echo_supervisord_conf > /etc/supervisord.conf

  4. 修改Supervisor配置文件:

[program:myapp]
command=/usr/bin/dotnet /home/username/myapp.dll
directory=/home/username
autostart=true
autorestart=true
redirect_stderr=true
stdout_logfile=/home/username/myapp.log

其中commanddotnet命令路径和应用程序路径,directory为应用程序所在目录,stdout_logfile为应用程序输出日志文件路径。

  1. 启动Supervisor:supervisord,重启Supervisor:supervisorctl reload

至此,CentOS7系统下搭建.NETCore2.0+Nginx+Supervisor环境的攻略步骤就完成了。

示例1:

假设我们有一个.NET Core 2.0的Web应用程序,发布在/home/username/myapp目录下,我们可以使用下列命令部署应用程序:

dotnet publish -c Release -o /home/username/myapp

这个命令会将应用程序发布到/home/username/myapp目录下,该目录下会生成一个名为myapp.dll的可执行文件。

然后,我们可以在Supervisor的配置文件中添加以下内容,以监控和管理应用程序的生命周期:

[program:myapp]
command=/usr/bin/dotnet /home/username/myapp/myapp.dll
directory=/home/username/myapp
autostart=true
autorestart=true
redirect_stderr=true
stdout_logfile=/home/username/myapp/myapp.log

这个配置文件会使用dotnet命令启动myapp.dll,在/home/username/myapp目录下设置工作目录,如果应用程序意外停止,则自动重启,将控制台输出重定向到日志文件。

示例2:

如果我们的Web应用程序需要访问数据库,我们需要将数据库连接字符串保存在配置文件中。我们可以使用appsettings.json文件来保存连接字符串。

{
  "ConnectionStrings": {
    "DefaultConnection": "Server=myServerAddress;Database=myDataBase;User Id=myUsername;Password=myPassword;"
  },
  ...
}

在应用程序代码中,我们可以使用以下代码来读取连接字符串:

string connectionString = Configuration.GetConnectionString("DefaultConnection");

其中,Configuration变量需要在应用程序Startup类中进行注入:

public class Startup
{
  public IConfiguration Configuration { get; }

  public Startup(IConfiguration configuration)
  {
    Configuration = configuration;
  }

  ...
}

然后,我们可以将appsettings.json文件复制到应用程序目录,并在Supervisor配置文件中设置工作目录:

[program:myapp]
command=/usr/bin/dotnet /home/username/myapp/myapp.dll
directory=/home/username/myapp
autostart=true
autorestart=true
redirect_stderr=true
stdout_logfile=/home/username/myapp/myapp.log
environment=ASPNETCORE_ENVIRONMENT=Production

其中,environment选项设置了应用程序的运行时环境为Production,这将使用appsettings.Production.json文件中的配置项来覆盖appsettings.json中的配置项。