ASP.NET Core部署到Linux服务器(CentOS7 x64)
前言
本文主要讲解如何一步步将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)相关推荐
- ASP.NET Core 实战:Linux 小白的 .NET Core 部署之路
一.前言 最近一段时间自己主要的学习计划还是按照毕业后设定的计划,自己一步步的搭建一个前后端分离的 ASP.NET Core 项目,目前也还在继续学习 Vue 中,虽然中间断了很长时间,好歹还是坚持 ...
- .NET Core部署到linux(CentOS)最全解决方案,常规篇
本文为大家介绍使用 .NET Core部署到Linux服务器的方法,通过本文你将了解到Linux在虚拟机下的安装.Xshell,Xftp的使用方法.git在linux下的交互使用以及.net core ...
- ASP.NET Core 部署到Cont OS 服务器
一.前言 当 asp.net core 发布以后,实现了跨平台.基于好奇,我就测试了一下 core 项目部署到 linux 服务器.感觉一路还是有所收获,接下来记录一下操作流程. 工具:window ...
- asp.net core 系列 18 web服务器实现
一. ASP.NET Core Module 在介绍ASP.NET Core Web实现之前,先来了解下ASP.NET Core Module.该模块是插入 IIS 管道的本机 IIS 模块(本机是指 ...
- .NET Core部署到linux(CentOS)最全解决方案,高阶篇(Docker+Nginx 或 Jexus)
在前两篇: .NET Core部署到linux(CentOS)最全解决方案,常规篇 .NET Core部署到linux(CentOS)最全解决方案,进阶篇(Supervisor+Nginx) 我们对. ...
- springboot项目部署到Linux服务器
按照yum方式安装jdk成功 Linux系统下安装jdk及环境配置(两种方法)_橙子君的博客-CSDN博客_linux配置jdk这里介绍两种linux环境下jdk的安装以及环境配置方法在windows ...
- ASP.NET Core 部署到docker
ASP.NET Core 部署到docker ASP.NET Core:ASP.NET Core程序使用Docker部署 前提:本地已有 ASP.NET Core web应用程序,并且已安装docke ...
- ASP.NET Core 发布至Linux生产环境 Ubuntu 系统
ASP.NET Core 发布至Linux生产环境 Ubuntu 系统,之前跟大家讲解了 dotnet publish 发布,而没有将整个系统串起来. 今天就跟大家综合的讲一下ASP.NET Core ...
- linux 笔记服务器,Linux服务器 CentOS7.5 操作小笔记
Linux服务器 CentOS7.5 查看命令所在位置 which java 查看JVM内存情况 # 系统内存使用 free -h # 查看当前进程 ps -ef | grep java # 查看JV ...
最新文章
- Android 7.0 出现 ”FileUriExposedException“ 和 ”解析包出现错误“ 异常的解决办法...
- 关于cookie的文章(cookie与session机制)
- RoboGuice 解析
- 美团命名服务的挑战与演进
- 解决:安装SQl 2008为SQL Server代理服务提供的凭据无效
- HTML中制作循环广告条,一种循环展示广告的广告箱的制作方法
- .NET生成常用16、32位MD5加密的两种方法
- 【Zookeeper】查看ZK连接总数
- mysql 删除表时外键约束_MySQL删除表的时候忽略外键约束的简单实现
- 离开小厂进大厂的第一周:我“后悔”了
- AI持续赋能,搜狗S1会给录音笔行业带来哪些新变化?
- java数据结构编写二叉树_java 数据结构与算法 BinaryTree二叉树编写
- 什么是pytorch_什么是Pytorch?
- 决胜圣诞,女神心情不用猜!
- Mac谷歌浏览器关闭自动更新,下载历史版本方法,解决不自动提示保存密码的问题
- PNG-的IDAT解析
- GIMP( GNU IMAGE MANIPULATION PROGRAM)
- 科技爱好者周刊(第 209 期):程序员是怎样的人
- 真的有必要读研究生吗?
- 家用无线路由器哪个品牌好?程序员分享值得推荐的无线路由器
热门文章
- 《5G新体制天线技术》
- 深度学习(17)TensorFlow高阶操作六: 高阶OP
- ACM及各类程序竞赛专业术语
- USACO Training Section 1.1黑色星期五Friday the Thirteenth
- 如何解决Ubuntu 14.04编译make menuconfig时缺少'ncurses-devel'库
- 多尺度视网膜图像增强_视网膜图像怪异的预测
- Linux QoS ingress处理流程
- Memcached----2-3
- 11张信用卡20多万全部逾期还不上,每天电话追债,怎么办?
- 基础001_Xilinx V7资源