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,想要的自己改别的也行,到这里算是弄好了,记得在腾讯云安全组中开放端口

  本地访问效果如下:

    

最新文章

  1. 【CF】438E. The Child and Binary Tree
  2. ubuntu下使用nginx部署Laravel
  3. 【转】VIM 快速注释
  4. ColumnEdit 数据源修改
  5. Java并发之线程中断
  6. HTTP的长连接,你不知道的连接。。。
  7. Dynamics AX 2012 性能优化之 SQL Server 复制
  8. centos7安装python3.6后导致防火墙功能无法正常工作的解决办法
  9. JS进阶之---函数,立即执行函数
  10. HQL count(*)
  11. tomcat-在cmd窗口启动Tomcat
  12. Dynamics CRM 2015/2016 Web API:聚合查询
  13. mybatis模糊查询防止SQL注入
  14. Appium+python自动化5-Appium Inspector
  15. 执行Android项目时指定特定的AVD进行測试
  16. LeetCode赛题390----Elimination Game
  17. C++——内存对象 禁止产生堆对象 禁止产生栈对象
  18. new Date()时间
  19. MS Project 如何删除前置任务
  20. Android自定义之ScrollView下拉刷新

热门文章

  1. TypeScript 之 控制流分析(Control Flow Analysis)
  2. MySQL单表查询(分组-筛选-过滤-去重-排序-分页-判断-正则)
  3. SQL审核平台Yearning
  4. Vue DevUI v1.4 版本发布:从体验、效率、质量三个方面做了全方位的优化&#127881;
  5. adb devices出现offline解决方法
  6. Spring IOC官方文档学习笔记(一)之IOC容器概述
  7. 联邦学习(Federated Learning)
  8. 创建型模式 - 单例模式Singleton
  9. Python 内置界面开发框架 Tkinter入门篇 丙(文末有福利彩蛋,今天可是元宵节)
  10. Django中需要修改配置