1.前提准备

  安装虚拟机,安装CentOS,有云服务器的直接用云服务器就行

  本地安装 xshell、xftp

2.nginx配置静态页面

  我们先学习一下使用nginx配置一个静态页面,一步一步来深入

  使用xshell连接linux

  使用 yum 来安装 Nginx

yum install nginx -y

  使用 nginx 命令启动 Nginx

nginx

  附:关闭、重启命令

nginx -s stop
nginx -s reload

  在本地访问http://<ip>,出现nginx页面为成功

  然后在本地新建一个index.html静态文件,xftp连接linux,上传到linux:/home/wwwrooot/test(这个自己定义)

  找到:

/etc/nginx/nginx.conf

  在这个配置文件添加一个server,如下:

    server {
listen 1101 default_server;
listen [::]:1101 default_server;
server_name _;
root /home/wwwrooot/test;
include /etc/nginx/default.d/*.conf; location / {
}
}

  这里可以自己vi去编辑,也可以用xftp把这个配置传输到本地,本地编辑好再传输回服务器,这里我比较喜欢后者,方便

  添加完配置后,我们重启一下nginx

  本地访问链接http://<ip>:1101  出现自己配置的页面为成功

  不成功的话,欢迎留言讨论(反正我是成功了)

3.配置dotnet core 项目

  1)linux安装dotnet core sdk 2.2

  添加yum源

rpm -Uvh https://packages.microsoft.com/config/rhel/7/packages-microsoft-prod.rpm

  升级所有包同时也升级软件和系统内核

yum update

  安装.net core

yum install dotnet-sdk-2.2

  查看是否安装成功

dotnet --version

  官方文档:https://dotnet.microsoft.com/download/linux-package-manager/centos/sdk-2.2.401  没事多看看官网,虽然我也没这习惯,不过我想慢慢让自己喜欢上

  

  2)新建一个core web项目,这里叫 CoreDemo,并发布,将发布出来的文件上传到  /home/wwwrooot/dotnetCore/CoreDemo

  然后加配置,这里我们采用别的方法加,不和上面一样直接修改 nginx.conf

  打开nignx.conf 的时候,你是否注意到一行

include /usr/share/nginx/modules/*.conf;

  很明显,这是导入这个路径下的所有 conf 后缀的配置文件

  那就很容易了,我们新建一个配置文件,就叫 CoreDemo.conf  好了,内容如下

server {
listen 1102 default_server;
server_name localhost;
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;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
}
}

  重启nginx,然后cd 到上面上传的发布文件的目录,执行启动命令

dotnet CoreDemo.dll

  完毕!在本地访问http://<ip>:1102试试看!!!

  PS:附加一个bug   访问  http://localhost:5000 的时候  dotnet core 会重定向成安全链接  https://localhost:5001  如果服务器没有ssl认证,还不支持https  就会有访问不到的情况发生

  解决方法:

  1)ssl认证,无话可说

  2)修改代码,让程序不重定向

    这里,我们把5000换成 2202(最好每次都换吧,免得端口冲突)

    launchSettings.json  删掉 https配置

    "CoreDemo": {
"commandName": "Project",
"launchBrowser": true,
"applicationUrl": "http://localhost:2202",
"environmentVariables": {
"ASPNETCORE_ENVIRONMENT": "Development"
}
}

    Program

        public static IWebHostBuilder CreateWebHostBuilder(string[] args) =>
WebHost.CreateDefaultBuilder(args)
.UseUrls("http://localhost:2202")
.UseStartup<Startup>();

  重新发布上传,并修改 CoreDemo.conf    5000->2202

  跑一下试试!!!

4.守护项目进程

  在之前的操作中,dotnet CoreDemo.dll 启动项目为前台启动,这样方便调试,但是对于生成环境确实极不友好的,所有,要创建守护进程,把这个变为后台执行

  这里,我们使用  Supervisor

  首先,安装

yum install supervisor

  打开 /etc/supervisord.conf  打开后拉到最末,有这么一行(这里就看一下,可无需操作)

[include]
files = supervisord.d/*.ini

  因为supervisord.conf 支持 .ini 和 .conf 的配置文件,所以,我们可以在这里修改指定路径和指定读取文件类型(这里不修改)

  新建CoreDemo.ini 到 /etc/supervisord.d/ 文件夹下面,内容如下

[program:CoreDemo]
command=dotnet CoreDemo.dll #运行命令
directory=/home/wwwrooot/dotnetCore/CoreDemo #程序路径
environment=ASPNETCORE__ENVIRONMENT=Production
user=root
stopsignal=INT
autostart=true #自动启动
autorestart=true #3秒自动重启
startsecs=3
stderr_logfile=/log/CoreDemo/CoreDemo.err.log #标准错误日志
stdout_logfile=/log/CoreDemo/CoreDemo.out.log #标准输出日志

  启动

supervisord -c /etc/supervisord.conf  #启动服务

其他相关操作:
supervisorctl reload #重新加载配置
supervisorctl shutdown #关闭
systemctl enable supervisord #开机启动
systemctl is-enabled supervisord #验证是否开机启动
systemctl status supervisord #查看状态

  启动服务的时候,我们可能会发现一些错误

  (1)配置文件错误

  配置文件中的注释导致的错误,把注释删掉(这里有点莫名其妙,有的时候带注释也没发生错误)

  (2)日志文件不存在

  配置的日志文件的文件夹要手动新建

  (3)端口占用(这个一般发生在关闭服务后重启的时候)

  把进程干掉

# ps -ef | grep supervisord
root 18680 1 0 14:23 ? 00:00:00 /usr/bin/python /usr/bin/supervisord
root 19076 30273 0 14:25 pts/0 00:00:00 grep --color=auto supervisord

# kill -9 18680

5.守护nginx进程

  用上面的命令设置supervisord开机启动后,重启一下服务器,发现,塔喵的nginx不会开机自启,好,继续下一步

  这里最简单的方法就是和项目一样,也给nginx配置进程守护,创建nginx.ini如下

[program:nginx]
command=nginx -g 'daemon off;'
directory=/usr/sbin
environment=ASPNETCORE__ENVIRONMENT=Production
user=root
stopsignal=INT
autostart=true
autorestart=true
startsecs=3
stderr_logfile=/log/nginx/nginx.err.log
stdout_logfile=/log/nginx/nginx.out.log

  这里注意一下,nginx默认为后台启动,所以command执行命令得设置为前台,或者将 daemon off; 放到nginx.conf中,这样直接执行nginx就可以了

  好了,就是这么简单,重启服务器试试!!!

6.显示supervisor 的控制台

  把控制台显示出来,方便我们管理

  vi  supervisord.conf

  修改下面这段配置

[inet_http_server]         ; inet (TCP) server disabled by default
port=*:9001 ; (ip_address:port specifier, *:port for all iface)
username=user ; (default is no username (open server))
password=123 ; (default is no password (open server))

  我这里只是取消了注释,然后修改了 port,想要的自己改别的也行,到这里算是弄好了,记得在腾讯云安全组中开放端口

  本地访问效果如下:

    

dotnet core+nginx+supervisor的更多相关文章

  1. [原创]Centos7 安装配置ASP.NET Core+Nginx+Supervisor

    序言 此教程安装的都是最新版本的. 一键安装 有了这个神器,下面的教程就不用做了!只需运行几行代码,直接打开浏览器就可以访问! cd /home/ wget https://files.cnblogs ...

  2. Centos7 部署.Net Core+Nginx+Supervisor

    1.安装.Net Core SDK 1.1. 在安装.NET之前,您需要注册Microsoft密钥,注册产品存储库并安装所需的依赖项.这只需要每台机器完成一次. sudo rpm -Uvh https ...

  3. centos 7 && dotnet core 2.0 && nginx && supervisor

    前提 系统:centos 7 目录:/home/wwwroot/www.wuball.com dotnet core 2.0 官方指引 sudo rpm --import https://packag ...

  4. CentOS+Nginx+Supervisor部署ASP.NET Core项目

    对.Net Core的学习和实践,已经进行了一年多的世间,截止目前,微软已经发布.Net Core2.1,关于.NetCore的应用部署的文章比比皆是.今天借此,回顾下.net core环境的部署过程 ...

  5. Linux+Nginx+Supervisor部署ASP.NET Core实操手册

    一.课程介绍 在上一节课程<ASP.NET Core托管和部署Linux实操演练手册>中我们学过net core的部署方式多样性和灵活性.我们通过远程工具输入dotnet 程序集名称.dl ...

  6. asp.net core 二 Nginx Supervisor 负载,监听

           ASP.NET Core负载均衡集群搭建(CentOS7+Nginx+Supervisor+Kestrel)          asp.net core在linux运行下,一但命令行退出 ...

  7. Supervisor守护DotNet Core控制台程序

    Supervisor 相信对Linux系统很熟的都知道这个软件,基于Python写的一个守护进程软件.具体的介绍和使用我就不再赘述了. 使用asp.net core 部署在Linux常用的方法 我们可 ...

  8. supervisor 启动dotnet.core 报“ too many start retries too quickly”

    环境: 操作系统:Centos 7 dotnet core:2.0.0    2.1.3 问题: 在使用supervisor 配置守护进程时,启动dotnet.core程序失败,查看/tmp下supe ...

  9. 2017-03-05 CentOS中配置守护服务(Supervisor)监听dotnet core web程序的运行

    我们继续解决上篇博客的问题,我这个人有个毛病,不喜欢遗留什么问题,也不喜欢问题说不明白,具体要怎么解决一定要详尽,因为经常自己遇到问题的时候,去翻别人的博客,就会遇到这样的问题,很苦恼,又说废话了. ...

  10. 2017-03-05 CentOS中结合Nginx部署dotnet core Web应用程序

    Visual Studio Live 倒计时2天,当然这是美国倒计时两天,中国应该是在3月8日的凌晨,正值"3.8妇女节".提前祝广大的女性同志节日快乐,当然还有奋斗在一线的程序媛 ...

随机推荐

  1. L1-050 倒数第N个字符串 (15分)

    L1-050 倒数第N个字符串 (15分) 给定一个完全由小写英文字母组成的字符串等差递增序列,该序列中的每个字符串的长度固定为 L,从 L 个 a 开始,以 1 为步长递增.例如当 L 为 3 时, ...

  2. day03-功能实现02

    家居网购项目实现02 5.功能04-会员登录 5.1需求分析/图解 需求如图: 输入用户名.密码后提交 判断该用户是否存在 如果存在,显示登录成功页面 否则返回登录页面,要求重新登录 要求改进登录密码 ...

  3. Jmeter 之跨线程传参

    其他线程使用某个线程中提取的值,比如场景:客户端一直与服务端保持连接的同时进行其他业务操作 1.建立以下两个线程组,并添加相应业务接口 2.发送心跳时,需要token,在用户登录接口下添加提取器提取t ...

  4. python中使用pip 安装第三方库报错归类及解决方式

    1.  离线安装virtualenv报错,安装命令:python setup.py install 解决方式:升级setuptools 2.  安装第三方库时安装失败,安装命令:pip install ...

  5. 读python代码-学到的python函数-1

    1.with open(data_path,'r') as f: with open()是python用来打开本地文件的,他会在使用完毕后,自动关闭文件,无需手动书写close(). 三种打开模式: ...

  6. C语言指针常见问题

    我们在学C语言时,指针是我们最头疼的问题之一,针对C语言指针,博主根据自己的实际学到的知识以及开发经验,总结了以下使用C语言指针时常见问题. 指针 指针做函数参数 学习函数的时候,讲了函数的参数都是值 ...

  7. HttpServletRequest获取参数和文件

    从HttpServletRequest中获取上传文件及参数的方法 try { //下面这句必须加,不然报错 MultipartResolver resolver = new CommonsMultip ...

  8. 【LGR-125】洛谷 11 月月赛 I & JROI-7 & JRKSJ-5

    P8846 『JROI-7』PMK 配匹串符字 简要题意 给出一正整数 \(n(1 \leq n \leq 10^5)\),求出一个由小写英文字母组成的字符串 \(S\),使得 \(|S|=n\) 且 ...

  9. Java基础学习笔记-流程控制

    Java程序结构 顺序结构 分支选择结构 循环结构 顺序结构 分支选择结构 if-else Switch case Switch case 注意点 要配合break,要不就会一直往下走 case 值必 ...

  10. 在Mac OS上将Node.js连接到XAMPP MySQL服务器一直报错error connecting: Error: connect ECONNREFUSED

    以下為通過node.js連線本機mysql資料庫的方法: var mysql = require('mysql'); var connection = mysql.createConnection({ ...