下面是在CentOS7系统下搭建.NETCore2.0+Nginx+Supervisor环境的攻略步骤:
安装.NET Core 2.0
-
安装依赖库:
yum install libunwind libicu -y
-
添加Microsoft签名:
rpm --import https://packages.microsoft.com/keys/microsoft.asc
-
添加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
-
安装.NET Core:
yum install dotnet-sdk-2.0.0 -y
-
验证.NET Core是否安装成功:
dotnet --version
,输出版本号表示安装成功。
安装Nginx
-
安装依赖库:
yum install gcc pcre-devel openssl-devel -y
-
下载Nginx源码包:
wget http://nginx.org/download/nginx-1.18.0.tar.gz
-
解压源码包:
tar -zxvf nginx-1.18.0.tar.gz
-
进入源码目录:
cd nginx-1.18.0
-
配置:
./configure --prefix=/usr/local/nginx --with-http_stub_status_module --without-http_proxy_module
-
编译安装:
make && make install
-
启动Nginx:
/usr/local/nginx/sbin/nginx
,访问服务器IP地址,如果页面显示“Welcome to nginx!”表示Nginx安装成功。
安装Supervisor
-
安装依赖库:
yum install python-setuptools -y
-
安装supervisor:
easy_install supervisor
-
配置Supervisor:
echo_supervisord_conf > /etc/supervisord.conf
-
修改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
其中command
为dotnet
命令路径和应用程序路径,directory
为应用程序所在目录,stdout_logfile
为应用程序输出日志文件路径。
- 启动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
中的配置项。