前言

  本文主要讲解如何一步步将ASP.NET Core网站发布到Linux服务器,文中会讲解具体步骤及需要避免的各种问题。


目录

  一、环境介绍

  二、创建及发布ASP.NET Core网站项目

  三、服务器软件安装(.NET Core SDK)

  四、在服务器上部署ASP.NET Core网站项目

  五、服务器端配置Nginx

  六、配置服务器端的守护进程(Supervisor)

  七、设置守护程序为开机自启


环境介绍

  本机所需开发工具: vs2017、XShell 、FileZilla(不限定,可使用其他上传工具)

  服务器系统及所需软件:CentOS7、.Netcore、Nginx、Supervisor、Policycoreutils-python


创建及发布ASP.NET Core网站项目

  打开vs2017,选择 文件->新建->项目,选择ASP.NET Core Web应用程序(.NET Core),在ASP.NET Core 1.1 模板处选择 Web应用程序

  

  

  此时ASP.NET Core 网站项目已建立完成,直接F5运行,可以在浏览器中看到如下页面

  

  回到vs2017,右键项目->发布,选择文件夹,文件夹名称更改为MyWebCore(可以不更改,默认名为PulishOutput,默认路径为bin\Release)点击发布后,可以在发布时填写的文件夹下找到发布的文件

  

  ASP.NET Core 网站发布完成,进行下一步


服务器软件安装(.NET Core SDK)

  通过XShell登录Linux服务

  执行下列命令,安装.NET Core SDK(微软官方教程地址 https://www.microsoft.com/net/core#linuxcentos)   

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

  执行下列命名,返回版本号即表示.NET Core SDK已经安装成功   

 dotnet -–version

  

  .NET Core SDK安装完成,进行下一步


在服务器上部署ASP.NET Core网站项目

  找到本地发布好的ASP.NET Core项目(bin\Release\MyWebCore),使用FileZilla(可以使用其他上传工具)将MyWebCore文件夹整个上传至服务器(具体上传到什么位置可以自定义,此处使用/usr/myweb/文件夹)

  确保文件都成功上传之后,就可以进行在Linux服务器的部署了

  执行下列命令,部署ASP.NET Core网站  

 cd /usr/myweb/MyWebCoredotnet MyWebCore.dll

  出现如下信息,即表示网址已部署成功

  

  (注:ASP.NET Core 默认端口为5000,可以在项目中通过配置自定义端口,此处不做过多介绍)

  此时是无法访问到这个页面的,需要部署一个web容器来进行转发(即需要为Linux服务器配置Nginx)  

  ASP.NET Core网站部署完成,进行下一步


服务器端配置Nginx

  执行下列命令,安装Nginx  

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

  成功安装Nginx之后继续执行下列命令  

 systemctl start nginx        //启动Nginx systemctl enable nginx      //将Nginx设置为开机自启

  执行下列命令,配置防火墙

 firewall-cmd --zone=public --add-port=80/tcp --permanent    //开放80端口systemctl restart firewalld  //重启防火墙,使配置生效

  此时在浏览器输入服务器IP地址,测试Nginx是否可以访问

  

  Nginx可以正常访问,接下来开始配置Nginx对我们所部署的ASP.NET Core应用的转发

  找到Nginx配置文件nginx.conf(我的是在/ect/nginx/目录下)下载到本地,并将其server{}中的内容进行如下修改(建议先备份)  

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

  将修改完成后的nginx.conf回传至服务器进行覆盖

  执行下列命令,使修改后的文件生效  

 nginx -s reload

  执行下列命令,启动ASP.NET Core网站

 cd /usr/myweb/MyWebCoredotnet MyWebCore.dll

  浏览器输入网址进行访问

  如果出现502错误,执行下列命令,将Nginx添加至白名单,然后再重启启动ASP.NET Core  

 yum install policycoreutils-pythonsudo cat /var/log/audit/audit.log | grep nginx | grep denied | audit2allow -M mynginxsudo semodule -i mynginx.pp

  

  Nginx配置完成,进行下一步


 配置服务器端的守护进程(Supervisor)

  为避免Shell退出后仍然可以继续访问网站,我们需要守护进程(Supervisor)来监控ASP.NET Core网站,以保证其长久健康的运行

  执行下列命令,安装Supervisor  

 yum install python-setuptoolseasy_install supervisor

  执行下列命令,配置Supervisor 

 mkdir /etc/supervisor  //此处也可以使用上传工具手动创建文件夹 echo_supervisord_conf > /etc/supervisor/supervisord.confmkdir /etc/supervisor/conf.d

  修改supervisord.conf,对文件最后部分的内容进行修改

//原内容
;[include]
;files = relative/dictory/*.ini

//新内容 
[include]
files = conf.d/*.conf   //此处也可以是*.ini
//注意以上内容不要有;

  创建MyWebCore.conf文件(也可以是*.ini,需跟上一步保持一致),填写如下内容  

[program:MyWebCore]
command=dotnet MyWebCore.dll ;
directory=/usr/myweb/MyWebCore ;
autorestart=true ;
stderr_logfile=/var/log/MyWebCore.err.log ;
stdout_logfile=/var/log/MyWebCore.out.log ; environment=ASPNETCORE_ENVIRONMENT=Production ; user=root ; stopsignal=INT

  将MyWebCore.conf文件拷贝至下列目录  

  /etc/supervisor/conf.d/

  执行下列命令,查看是否生效

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

  

  如果存在 dotnet MyWebCore.dll进程,则表示运行成功

  配置文件如有修改,执行下列命令更新(没有则忽略)  

  supervisorctl reload

  此处可能出现的问题(没有则忽略)

  --重复的监听,会提示如下错误  
    another program is already listening on a port that one of our HTTP servers is configured to use

   --解决方法  

ps -ef | grep supervisord  //查看监听的端口,出现以下信息
root   2503  1  0 Nov19 ?  00:03:23 /usr/bin/python /usr/bin/supervisord
root   21337 2556  0 18:15 pts/8   00:00:00 grep --color=auto supervisord

kill -s SIGTERM 2503  

 在浏览器中进行访问

  

  守护进程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

  将supervisord.service文件上传至服务器下列目录  

  /usr/lib/systemd/system/

  执行下列命令,将supervisor设为开机启动  

  systemctl enable supervisord

  执行下列命令,验证设置是否成功

  systemctl is-enabled supervisord

  返回enabled即为成功,可以执行重启Linux服务器来进行验证  

  reboot

  至此,ASP.NET Core网站部署到Linux服务器的操作全部完成。

转载于:https://www.cnblogs.com/iamzl/p/7363766.html

ASP.NET Core部署到Linux服务器(CentOS7 x64)相关推荐

  1. ASP.NET Core 实战:Linux 小白的 .NET Core 部署之路

    一.前言  最近一段时间自己主要的学习计划还是按照毕业后设定的计划,自己一步步的搭建一个前后端分离的 ASP.NET Core 项目,目前也还在继续学习 Vue 中,虽然中间断了很长时间,好歹还是坚持 ...

  2. .NET Core部署到linux(CentOS)最全解决方案,常规篇

    本文为大家介绍使用 .NET Core部署到Linux服务器的方法,通过本文你将了解到Linux在虚拟机下的安装.Xshell,Xftp的使用方法.git在linux下的交互使用以及.net core ...

  3. ASP.NET Core 部署到Cont OS 服务器

    一.前言 当 asp.net core 发布以后,实现了跨平台.基于好奇,我就测试了一下 core 项目部署到 linux 服务器.感觉一路还是有所收获,接下来记录一下操作流程. 工具:window ...

  4. asp.net core 系列 18 web服务器实现

    一. ASP.NET Core Module 在介绍ASP.NET Core Web实现之前,先来了解下ASP.NET Core Module.该模块是插入 IIS 管道的本机 IIS 模块(本机是指 ...

  5. .NET Core部署到linux(CentOS)最全解决方案,高阶篇(Docker+Nginx 或 Jexus)

    在前两篇: .NET Core部署到linux(CentOS)最全解决方案,常规篇 .NET Core部署到linux(CentOS)最全解决方案,进阶篇(Supervisor+Nginx) 我们对. ...

  6. springboot项目部署到Linux服务器

    按照yum方式安装jdk成功 Linux系统下安装jdk及环境配置(两种方法)_橙子君的博客-CSDN博客_linux配置jdk这里介绍两种linux环境下jdk的安装以及环境配置方法在windows ...

  7. ASP.NET Core 部署到docker

    ASP.NET Core 部署到docker ASP.NET Core:ASP.NET Core程序使用Docker部署 前提:本地已有 ASP.NET Core web应用程序,并且已安装docke ...

  8. ASP.NET Core 发布至Linux生产环境 Ubuntu 系统

    ASP.NET Core 发布至Linux生产环境 Ubuntu 系统,之前跟大家讲解了 dotnet publish 发布,而没有将整个系统串起来. 今天就跟大家综合的讲一下ASP.NET Core ...

  9. linux 笔记服务器,Linux服务器 CentOS7.5 操作小笔记

    Linux服务器 CentOS7.5 查看命令所在位置 which java 查看JVM内存情况 # 系统内存使用 free -h # 查看当前进程 ps -ef | grep java # 查看JV ...

最新文章

  1. Android 7.0 出现 ”FileUriExposedException“ 和 ”解析包出现错误“ 异常的解决办法...
  2. 关于cookie的文章(cookie与session机制)
  3. RoboGuice 解析
  4. 美团命名服务的挑战与演进
  5. 解决:安装SQl 2008为SQL Server代理服务提供的凭据无效
  6. HTML中制作循环广告条,一种循环展示广告的广告箱的制作方法
  7. .NET生成常用16、32位MD5加密的两种方法
  8. 【Zookeeper】查看ZK连接总数
  9. mysql 删除表时外键约束_MySQL删除表的时候忽略外键约束的简单实现
  10. 离开小厂进大厂的第一周:我“后悔”了
  11. AI持续赋能,搜狗S1会给录音笔行业带来哪些新变化?
  12. java数据结构编写二叉树_java 数据结构与算法 BinaryTree二叉树编写
  13. 什么是pytorch_什么是Pytorch?
  14. 决胜圣诞,女神心情不用猜!
  15. Mac谷歌浏览器关闭自动更新,下载历史版本方法,解决不自动提示保存密码的问题
  16. PNG-的IDAT解析
  17. GIMP( GNU IMAGE MANIPULATION PROGRAM)
  18. 科技爱好者周刊(第 209 期):程序员是怎样的人
  19. 真的有必要读研究生吗?
  20. 家用无线路由器哪个品牌好?程序员分享值得推荐的无线路由器

热门文章

  1. 《5G新体制天线技术》
  2. 深度学习(17)TensorFlow高阶操作六: 高阶OP
  3. ACM及各类程序竞赛专业术语
  4. USACO Training Section 1.1黑色星期五Friday the Thirteenth
  5. 如何解决Ubuntu 14.04编译make menuconfig时缺少'ncurses-devel'库
  6. 多尺度视网膜图像增强_视网膜图像怪异的预测
  7. Linux QoS ingress处理流程
  8. Memcached----2-3
  9. 11张信用卡20多万全部逾期还不上,每天电话追债,怎么办?
  10. 基础001_Xilinx V7资源