小计:asp.net core 部署到 centos 7 中

前提,系统:centos 7 并安装好 nginx 。

1,安装 net core 环境, 参考  

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

安装好后,执行 dotnet ,检查是否安装成功。

 

2, 修改 nginx 配置文件。 对该网站添加代理设置指向 asp.net core 的网站 。 (这里 网站位于 /home/wwwroot/test/ 文件夹下)   参考

因为asp.net core 自带 kestrel   (默认是 5000 端口)  并且运行在shell 下 ,因此需要使用 nginx 代理 指向 5000 端口。

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;
    }
}

运行 dotnet /home/wwwroot/test/{youname}.dll ,如果提示已运行,则可以用 上面 nginx 配置的信息去访问 检查代理是否成功。

 由于 kestrel  服务运行在shell 上,操作离开后,服务就会暂停。所以需要一个程序来监听 我们的网站是否正在运行。 

3,使用 Supervisor 来守护服务。

 安装:

yum install python-setuptools
easy_install supervisor

配置:

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

修改 supervisord.conf 文件,将 尾部 

修改为:

在 /etc/supervisor/ 下面新建一个文件夹  config.d 。然后 添加一个 test.conf 文件 ,内容:

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

运行 supervisord ,检查是否有效。

supervisord -c /etc/supervisor/supervisord.conf
ps -ef | grep aspnetcoretest

如果存在 aspnetcoretest 的进程 则说明运行成功。

4、将 supervisor 添加到开机启动 。 

在 /usr/lib/systemd/system/ 目录下添加一个文件 supervisor.service , 内容 :

[Unit]
Description=Supervisor Service

[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=10s

[Install]
WantedBy=multi-user.target

运行命令:

systemctl enable supervisord

查看是否生效 :

systemctl is-enabled supervisord

 

Ok,配置完成。 ~~~

 

已禁用评论。