加入收藏 | 设为首页 | 会员中心 | 我要投稿 PHP编程网 - 钦州站长网 (https://www.0777zz.com/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > PHP教程 > 正文

从零开始学习云计算:第四章 Nginx 4.2 安装与虚拟主机2

发布时间:2022-12-09 10:49:21 所属栏目:PHP教程 来源:
导读:  3、 基于端口的虚拟主机

  应用场景: 没有多余服务器,也没有多余IP地址,也没有多余域名 考虑基于端口的虚拟主机 tcp 端口 65535/ip (用户体验不好,访问的时候除了默认端口意外的端口都要手动输入)
  3、 基于端口的虚拟主机
 
  应用场景: 没有多余服务器,也没有多余IP地址,也没有多余域名 考虑基于端口的虚拟主机 tcp 端口 65535/ip (用户体验不好,访问的时候除了默认端口意外的端口都要手动输入)
 
  1、修改配置文件
 
  server {
 
  listen 80;
 
  server_name ;
 
  root /usr/local/nginx/html/web1;
 
  access_log /var/log/nginx/web1/www.qfedu01.com.log main;
 
  error_log /var/log/nginx/web1/www.qfedu01.com.error.log;
 
  location / {
 
  index index.html index.htm;
 
  }
 
  }
 
  server {
 
  listen 8080;
 
  server_name ;
 
  root /usr/local/nginx/html/web2;
 
  access_log /var/log/nginx/web2/www.qfedu02.com.log main;
 
  error_log /var/log/nginx/web2/www.qfedu02.com.error.log;
 
  location / {
 
  index index.html index.htm;
 
  }
 
  }
 
  2、重新 reload nginx进程
 
  [root@qfedu.com ~]# nginx -s reload
 
  或者
 
  [root@qfedu.com ~]# systemctl restart nginx.service
 
  3、 测试访问
 
  浏览器输入:
 
  浏览器输入::8080
 
  七、Nginx 虚拟主机 + PHP-FPM
 
  PHP-FPM(FastCGI Process Manager:FastCGI 进程管理器)是一个 PHPFastCGI 管理器。它提供了更好的 PHP 进程管理方式,可以有效控制内存和进程、可以平滑重载 PHP 配置。在日常运维中,我们主要将 PHP-FPM 的配置文件分为主配置文件和 pool 配置文件(每个pool 配置文件通常对应一个 Nginx 虚拟主机)。
 
  1、PHP-FPM 安装
 
  [root@qfedu.com ~]# yum -y install php-fpm
 
  2、PHP-FPM 主配置文件
 
  主配置文件 php-fpm.confphp主机,常用配置如下:
 
  [root@qfedu.com ~]# vim /etc/php-fpm.conf
 
  [global]
 
  pid = /run/php-fpm/php-fpm.pid
 
  error_log = /var/log/php-fpm/error.log
 
  process_control_timeout = 0
 
  ; 设置子进程接受主进程复用信号的超时时间. 可用单位: s(秒), m(分), h(小时), 或者 d(天) 默认单位: s(秒). 默认值: 0.
 
  ; 加载 pool 配置
 
  include = /etc/php-fpm.d/*.conf
 
  3、PHP-FPM pool 配置文件
 
  [root@qfedu.com ~]# vim /etc/php-fpm.d/test.qfedu.com.conf.conf
 
  [test.qfedu.com]
 
  user = nginx
 
  group = nginx
 
  ; 启动进程的帐户和组
 
  listen = 127.0.0.1:9000
 
  ; 允许监听的客户端
 
  listen.allowed_clients = 127.0.0.1
 
  ; 设置动态进程池
 
  pm = dynamic
 
  pm.max_children = 512
 
  pm.start_servers = 32
 
  pm.min_spare_servers = 32
 
  pm.max_spare_servers = 64
 
  ; 设置每个进程可处理的请求数,当进程达到这个请求数量后会自动释放在重新生成新的进程。避免内存泄漏等情况
 
  pm.max_requests = 1500
 
  ; FPM 的监控设置
 
  pm.status_path = /qfedu_monitor_page
 
  ; PHP-FPM 的慢请求日志位置。$pool 这里为 test.qfedu.com
 
  slowlog = /var/log/php-fpm/$pool-slow_log
 
  ; 设置请求时间达到多少位慢请求
 
  request_slowlog_timeout = 3
 
  ; 终止请求超时时间。一个请求若处理大于20s ,则会自动kill 掉。避免进程堆积
 
  request_terminate_timeout = 20
 
  catch_workers_output = no
 
  ; 限制 FPM 允许解析的脚本扩展名. 这里不限制,FPM可以解析任何扩展名的文件
 
  security.limit_extensions = ""
 
  4、虚拟主机结合PHP-FPM pool1、PHP-FPM pool 配置
 
  [root@qfedu.com ~]# vim /etc/php-fpm.d/test.qfedu.com.conf
 
  [test.qfedu.com]
 
  php主机_主机屋免费空间能安装php源码程序吗_php主机管理系统
 
  user = nginx
 
  group = nginx
 
  listen = 127.0.0.1:9000
 
  listen.allowed_clients = 127.0.0.1
 
  pm = dynamic
 
  pm.max_children = 512
 
  pm.start_servers = 32
 
  pm.min_spare_servers = 32
 
  pm.max_spare_servers = 64
 
  pm.max_requests = 1500
 
  pm.status_path = /qfedu_monitor_page
 
  slowlog = /var/log/php-fpm/$pool-slow_log
 
  request_slowlog_timeout = 3
 
  request_terminate_timeout = 20
 
  catch_workers_output = no
 
  security.limit_extensions = ""
 
  [root@qfedu.com ~]# mv /etc/php-fpm.d/www.conf{,.bak}
 
  2、虚拟主机配置
 
  server {
 
  listen 80;
 
  server_name test.qfedu.com;
 
  root /usr/local/nginx/html/test.qfedu.com;
 
  access_log /var/log/nginx/test.qfedu.com-acess.log;
 
  error_log /var/log/nginx/test.qfedu.com-error.log;
 
  location ~ .*\.(gif|jpg|jpeg|png|bmp|swf|html)$ { # 静态资源匹配
 
  expires 1d; # 设置浏览器的缓存有效时间
 
  }
 
  location / {
 
  include /etc/nginx/fastcgi_params; # yum 安装方式
 
  # include fastcgi.conf; # 编译安装用 fastcgi.conf 注意配置文件路径
 
  fastcgi_pass 127.0.0.1:9000; # 使用了PHP-FPM 9000 端口的POOL 配置。
 
  }
 
  }
 
  3、fastcgi 作用4、面是fastcgi_params解释
 
  fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;#脚本文件请求的路径,当访问127.0.0.1/index.php的时候,需要读取网站根目录下面的index.php文件,如果没有配置这一配置项时,nginx不回去网站根目录下访问.php文件,所以返回空白,所以这一项必须要具备
 
  fastcgi_param QUERY_STRING $query_string; #请求的参数;如?app=123
 
  fastcgi_param REQUEST_METHOD $request_method; #请求的动作(GET,POST)
 
  fastcgi_param CONTENT_TYPE $content_type; #请求头中的Content-Type字段
 
  fastcgi_param CONTENT_LENGTH $content_length; #请求头中的Content-length字段。
 
  fastcgi_param SCRIPT_NAME $fastcgi_script_name; #脚本名称
 
  fastcgi_param REQUEST_URI $request_uri; #请求的地址不带参数
 
  fastcgi_param DOCUMENT_URI $document_uri; #与$uri相同。
 
  fastcgi_param DOCUMENT_ROOT $document_root; #网站的根目录。在server配置中root指令中指定的值
 
  fastcgi_param SERVER_PROTOCOL $server_protocol; #请求使用的协议,通常是HTTP/1.0或HTTP/1.1。
 
  fastcgi_param GATEWAY_INTERFACE CGI/1.1; #cgi 版本
 
  fastcgi_param SERVER_SOFTWARE nginx/$nginx_version; #nginx 版本号,可修改、隐藏
 
  fastcgi_param REMOTE_ADDR $remote_addr; #客户端IP
 
  fastcgi_param REMOTE_PORT $remote_port; #客户端端口
 
  fastcgi_param SERVER_ADDR $server_addr; #服务器IP地址
 
  fastcgi_param SERVER_PORT $server_port; #服务器端口
 
  fastcgi_param SERVER_NAME $server_name; #服务器名,域名在server配置中指定的server_name
 
  fastcgi_param PATH_INFO $path_info; #可自定义变量
 
  -- PHP only, required if PHP was built with --enable-force-cgi-redirect
 
  fastcgi_param REDIRECT_STATUS 200;
 
  5、访问测试
 
  [root@qfedu.com ~]# cat /usr/local/nginx/html/test.qfedu.com/today.php
 
  [root@qfedu.com ~]# curl -H "HOST: test.qfedu.com"
 
  6、nginx与php-fpm的结合完整的流程
 
  test.qfedu.com
 
  |
 
  |
 
  请求 Nginx 中的php文件
 
  |
 
  |
 
  路由到 test.qfedu.com/index.php
 
  |
 
  |
 
  加载 nginx 的 fast-cgi 模块
 
  |
 
  |
 
  fast-cgi监听127.0.0.1:9000地址
 
  |
 
  |
 
  test.qfedu.com/index.php 请求到达 127.0.0.1:9000
 
  |
 
  |
 
  php主机_主机屋免费空间能安装php源码程序吗_php主机管理系统
 
  php-fpm 监听 127.0.0.1:9000
 
  |
 
  |
 
  php-fpm 接收到请求,启用 worker 进程处理请求
 
  |
 
  |
 
  php-fpm 处理完请求,返回给 nginx
 
  |
 
  |
 
  nginx 将结果通过 http 返回给浏览器
 
  7、开启PHP-FPM pool 监控
 
  vpm.status_path = /qfedu_monitor_page
 
  server {
 
  listen 80;
 
  server_name test.qfedu.com;
 
  root /usr/local/nginx/html/test.qfedu.com;
 
  access_log /var/log/nginx/test.qfedu.com-acess.log;
 
  error_log /var/log/nginx/test.qfedu.com-error.log;
 
  if ( $uri ~ "^/qfedu_monitor_page" ){ break; } # 避免监控的特殊URL被业务上的REWRITE 规则重写
 
  location ~ .*\.(gif|jpg|jpeg|png|bmp|swf|html)$ { # 静态资源匹配
 
  expires 1d; # 设置浏览器的缓存有效时间
 
  }
 
  location ~ /qfedu_monitor_page {
 
  include fastcgi.conf;
 
  fastcgi_pass 127.0.0.1:9000;
 
  }
 
  location / {
 
  include /etc/nginx/fastcgi_params; # yum 安装方式
 
  # include fastcgi.conf; # 编译安装用 fastcgi.conf 注意配置文件路径
 
  fastcgi_pass 127.0.0.1:9000; # 使用了PHP-FPM 9000 端口的 POOL 配置。
 
  }
 
  }
 
  8、监控测试
 
  [root@qfedu.com ~]# curl -H "HOST: test.qfedu.com"
 
  pool: test.qfedu.com
 
  process manager: dynamic
 
  start time: 29/Mar/2020:20:17:34 +0800
 
  start since: 853
 
  accepted conn: 4
 
  listen queue: 0
 
  max listen queue: 0
 
  listen queue len: 128
 
  idle processes: 31
 
  active processes: 1
 
  total processes: 32
 
  max active processes: 1
 
  max children reached: 0
 
  slow requests: 0
 
  9、PHP-FPM 配置解释
 
  # PHP-FPM 的 POOL名字
 
  pool: test.qfedu.com
 
  # 这个POOL中进程管理方式,这里是动态管理方式。相反还有静态管理方式。
 
  process manager: dynamic
 
  # POOL从什么时间开始启动
 
  start time: 29/Mar/2020:20:17:34 +0800
 
  # POOL 从启动到现在已经存活了多久
 
  start since: 129
 
  # 当前POOL接受的请求数
 
  accepted conn: 6
 
  # 请求等待队列当前长度,如果这个值不为0,那么说明你的请求处理已经开始有挤压了,应该注意系统状态。
 
  listen queue: 0
 
  # 从启动到现在,请求等待队列历史最大长度
 
  max listen queue: 0
 
  # 请求队列长度大小
 
  listen queue len: 128
 
  # 目前空闲进程数
 
  idle processes: 31
 
  # 目前工作进程数
 
  active processes: 1
 
  # 目前总进程数
 
  total processes: 32
 
  # 从启动到现在,最大的活跃进程数量
 
  max active processes: 1
 
  # 达到进程最大数量限制的次数,如果这个数量不为0,那说明设置的最大进程数量(pm.max_children)太小了,或者进程挤压了。
 
  max children reached: 0
 
  # 慢请求的数量
 
  slow requests: 0
 

(编辑:PHP编程网 - 钦州站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!