ASP.NET Core 一步步搭建个人网站(7)_Linux系统移植 (2)

avatar


现在我们的项目就正常的部署并运行在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工具帮我们创建这样的守护进程,先安装:

easy_install 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

avatar


最后,我们要配置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

avatar

配置 https 协议

为了实现数据信息在客户端和服务器之间的加密传输,防止数据信息的泄露,保证双方传递信息的安全性,我们需要HTTP下加入SSL层,我之前已经申请过Symantec免费的SSL证书,所以就简单说明一下怎么配置。
前面我们的网站应用程序,已经通过Nginx反向代理来访问,那其实只用通过配置Nginx来管理我们申请的证书文件。首先下载证书文件,包括.crt和.key两个文件,然后拷贝到目录:/etc/nginx/ssl下,接着编辑Nginx配置文件,找到相关地方做如下修改:

listen 80 default_server; listen [::]:80 default_server; listen 443 ssl; #如果硬性要求全部走https协议,这里去除ssl server_name _; root /usr/share/nginx/html; #ssl on; #如果硬性要求全部走https协议,这里开启ssl on ssl_certificate /etc/nginx/ssl/www.lancel0t.cn.crt; ssl_certificate_key /etc/nginx/ssl/www.lancel0t.cn.key; ssl_session_cache shared:SSL:1m; ssl_session_timeout 5m; ssl_protocols SSLv2 SSLv3 TLSv1.2; ssl_ciphers HIGH:!aNULL:!MD5; ssl_prefer_server_ciphers on; # Load configuration files for the default server block. include /etc/nginx/default.d/*.conf;

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/zyxxps.html