现在我们的项目就正常的部署并运行在localhost:5000上了。 安装 Nginx
Nginx是一个高性能的HTTP和反向代理服务器,在Centos中很容易安装和配置,接下来进行如下操作:
yum install nginx安装完成后,我们启动Nginx,并将它设置为开机启动:
service nginx start systemctl enable nginx.service要使得Nginx代理外网80端口,访问我们内部5000端口监听的网站程序,需要修改Nginx配置文件/etc/nginx/nginx.conf:
location / { proxy_pass :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; }最后,我们重新启动restart nginx.service,并通过外网链接,发现可以正常访问我们的网站了。
安装 Supervisor其实,经过以上的步骤,已经完成基本的移植和部署,网站访问也没有问题了。但是,.NET Core应用程序运行在shell之中,如果shell关闭,.NET Core应用程序也随之关闭,导致应用无法访问。而且.NET Core进程意外终止或者服务器宕机或重启,都会导致服务不可用,这是我们不想看到的。
为了解决这个问题,我们需要有一个守护进程来监听ASP.NET Core 应用程序的状况,在应用程序停止运行的时候立即重新启动。
这里利用Supervisor工具帮我们创建这样的守护进程,先安装:
安装完毕后,如下操作
mkdir /etc/supervisor echo_supervisord_conf > /etc/supervisor/supervisord.conf修改supervisord.conf文件,将文件尾部的配置修改:
[include] files = conf.d/*.conf再创建一个/etc/supervisor/conf.d/ MyWebSite.conf文件,内容大致如下:
[program:MyWebSite] command=dotnet .dll ; 运行程序的命令 directory=http://www.likecs.com/data/wwwroot/MyWebSite/ ; 命令执行的目录 autorestart=true ; 程序意外退出是否自动重启 stderr_logfile=http://www.likecs.com/var/log/MyWebSite.err.log ; 错误日志文件 stdout_logfile=http://www.likecs.com/var/log/MyWebSite.out.log ; 输出日志文件 environment=ASPNETCORE_ENVIRONMENT=Production ; 进程环境变量 user=root ; 进程执行的用户身份 stopsignal=INT运行supervisord,查看是否生效:
supervisord -c /etc/supervisor/supervisord.conf ps -ef | grep MyWebSite最后,我们要配置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=http://www.likecs.com/usr/bin/supervisord -c /etc/supervisor/supervisord.conf ExecStop=http://www.likecs.com/usr/bin/supervisorctl shutdown ExecReload=http://www.likecs.com/usr/bin/supervisorctl reload KillMode=process Restart=on-failure RestartSec=42s [Install] WantedBy=multi-user.target
执行命令,使得服务开机启动:
systemctl enable supervisord 配置 https 协议为了实现数据信息在客户端和服务器之间的加密传输,防止数据信息的泄露,保证双方传递信息的安全性,我们需要HTTP下加入SSL层,我之前已经申请过Symantec免费的SSL证书,所以就简单说明一下怎么配置。
前面我们的网站应用程序,已经通过Nginx反向代理来访问,那其实只用通过配置Nginx来管理我们申请的证书文件。首先下载证书文件,包括.crt和.key两个文件,然后拷贝到目录:/etc/nginx/ssl下,接着编辑Nginx配置文件,找到相关地方做如下修改: