小计: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,配置完成。 ~~~
已禁用评论。