1. 安装dotnet sdk(添加产品秘钥与yum源)

    添加yum源:sudo rpm -Uvh https://packages.microsoft.com/config/rhel/7/packages-microsoft-prod.rpm

    开始安装:sudo yum install dotnet-sdk-2.1

    如图效果:一路y下去就可以了

      

    查看版本号,命令:dotnet --version

      

    以上dotnet sdk 已安装成功!!!

  2.部署Asp.net core 项目

    上传之前发布的文件夹至/home/wwwroot/。

    使用WinSCP上传。

            

    用dotnet 命令运行项目(首先要cd到项目根路径,在运行项目,否则会找不到静态资源文件,路径问题)

    cd /home/wwwroot/admin

    dotnet Apps.Admin.dll (请把Apps.Admin.dll改成你的项目入口)

            

      这样项目就运行成功了。

      注:请注意红框,如果只监听http://localhost:8090,那只能本机访问,外网是无法访问的。

        要外网访问,请添加http://[::]:8080的监听,可以在项目中修改。

            

     3.配置nginx

      安装nginx:

      curl -o  nginx.rpm http://nginx.org/packages/centos/7/noarch/RPMS/nginx-release-centos-7-0.el7.ngx.noarch.rpm

      rpm -ivh nginx.rpm

      yum install nginx

      安装成功后

      输入:systemctl start nginx 来启动nginx。

      输入:systemctl enable nginx 来设置nginx的开机启动(linux宕机、重启会自动运行nginx不需要连上去输入命令)。

      4.配置防火墙

      命令:firewall-cmd --zone=public --add-port=80/tcp --permanent(开放80端口)

      命令:systemctl restart firewalld(重启防火墙以使配置即时生效)

      测试nginx是否可以访问。

      

     5.配置nginx对ASP.NET Core应用的转发

      修改 /etc/nginx/conf.d/default.conf 文件。(可使用 WinSCP 直接修改)

      将文件内容替换为

server {
    listen 80;
    location / {
        proxy_pass http://localhost:8090;
        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;
    }
}

      

      执行:nginx –s reload 使其即时生效

      再次运行ASP.NET Core应用程序  命令:dotnet Apps.Admin.dll

      

      这个问题是由于SELinux保护机制所导致,我们需要将nginx添加至SELinux的白名单。

      接下来我们通过一些命令解决这个问题。。     

      yum install policycoreutils-python

      sudo cat /var/log/audit/audit.log | grep nginx | grep denied | audit2allow -M mynginx

      sudo semodule -i mynginx.pp

          

      此时就能成功访问了,(服务器重启后,会失效,需要重新配置)。

   6.配置守护服务(Supervisor)

    目前存在三个问题

问题1:ASP.NET Core应用程序运行在shell之中,如果关闭shell则会发现ASP.NET Core应用被关闭,

从而导致应用无法访问,这种情况当然是我们不想遇到的,而且生产环境对这种情况是零容忍的。

问题2:如果ASP.NET Core进程意外终止那么需要人为连进shell进行再次启动,往往这种操作都不够及时。

问题3:如果服务器宕机或需要重启我们则还是需要连入shell进行启动。

为了解决这个问题,我们需要有一个程序来监听ASP.NET Core 应用程序的状况。在应用程序停止运行的时候立即重新启动。

这边我们用到了Supervisor这个工具,Supervisor使用Python开发的。

(一) 安装Supervisor
yum install python-setuptools

easy_install supervisor

(二) 配置Supervisor
mkdir /etc/supervisor

echo_supervisord_conf > /etc/supervisor/supervisord.conf

(三)修改supervisord.conf文件,将文件尾部的配置

修改为

(注意 去掉封号,否则无法生效)

(四) 配置对ASP.NET Core应用的守护

  创建一个 Admin.conf文件,内容大致如下

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

将文件拷贝至:“/etc/supervisor/conf.d/Admin.conf”下

(五) 运行supervisord,查看是否生效

supervisord -c /etc/supervisor/supervisord.conf

ps -ef | grep Admin

    如果存在dotnet Apps.Admin.dll 进程则代表运行成功,这时候在使用浏览器进行访问。

    至此关于ASP.NET Core应用程序的守护即配置完成。

    (六)配置Supervisor开机启动

      新建一个“supervisord.service”文件

      

# dservice for systemd (CentOS 7.0+)
# by ET-CS (https://github.com/ET-CS)
[Unit]
Description=Supervisor daemon

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

[Install]
WantedBy=multi-user.target

将文件拷贝至:“/usr/lib/systemd/system/supervisord.service”

执行命令:systemctl enable supervisord

执行命令:systemctl is-enabled supervisord #来验证是否为开机启动

原文链接 : https://www.cnblogs.com/ants/p/5732337.html

在一些步骤上做了修改。

    

最新文章

  1. Sublime Text 3中文乱码解决方法以及安装包管理器方法
  2. Ubuntu/linux 有关权限修改的命令
  3. Hbase数据导入导出
  4. MFC线程内操作主窗体 控件
  5. 原生JS--COOKIE
  6. ReactNative之style使用指南
  7. Linux内存模型
  8. InvoiceCancelSendApAction
  9. odoo8 email
  10. I/O CPU
  11. android脚步---跟随手指动的小球
  12. Python之mysql数据库更新表数据接口实现
  13. 添加sudo免密码
  14. LOJ2116 [HNOI2015] 开店 【点分治】
  15. 撰写一篇博客要求讲述四则运算2的设计思想,源程序代码、运行结果截图、编程总结分析,并按照PSP0级的要求记录开发过程中的时间记录日志。
  16. 3D中的OBJ文件格式详解
  17. 循序渐进学.Net Core Web Api开发系列【8】:访问数据库(基本功能)
  18. nodejs包管理工具npm
  19. 关于maven工程的几个BUG
  20. SVN 的用法

热门文章

  1. LDA线性分析推广到多分类
  2. How to appraise Hearthstone card values
  3. Hadoop常用操作汇总
  4. docker安装mysql挂载外部配置和数据目录
  5. MySQL 创建和删除数据表
  6. using代码性能影响?
  7. IIS中应用Application Request Route 配置负载均衡
  8. Flutter Window环境运行(VSCode + 单独运行Android 虚拟机)
  9. python字典中添加项
  10. golang的定时器NewTimer、NewTicker使用