当前位置:   article > 正文

Web服务器群集:部署LNMP平台

lnmp

目录

一、理论

1.LNMP平台

2.Nginx服务基础

3.Nginx访问控制

4.Nginx虚拟主机

5.PHP

二、实验

1.LNMP架构+DISCUZ论坛应用

三、问题

1.没有规则可以创建“default”需要的目标“build”。

         2.nginx重启报错

3.yum安装提示报错

4.配置文件报错

5.PHP页面无法打开

四、总结


一、理论


1.LNMP平台


(1)概念

LNMP平台是高效稳定的Web应用平台,LNMP架构结合了Linux操作系统的稳定性、Nginx服务器的高性能、MySQL数据库的可靠性和PHP语言的灵活性,被广泛应用于Web开发和部署。

(2)原理图
5de424c442844dbf8977418014d3cf51.jpeg

(3)LNMP各组件主要作用

表1 LNMP各组件作用

组件功能作用
LinuxLNMP架构的基础平台作为LNMP架构的基础,提供用于支撑Web站点的操作系统,能够与其他三个组件提供更好的稳定性,兼容性(AMP组件也支持Windows、UNIX等平台) 。
NginxLNMP架构的前台作为LNMP架构的前端,是一个高性能、轻量级的HTTP和反向代理web服务器  ,稳定性高并且系统资源消耗低,对HTTP并发连接的处理能力高,单台物理服务器可支持30000-50000华人并发请求,同时也提供了IMAP/POP3/SMTP服务。
MySQLLNMP架构的后台作为LNMP架构N的后端,是一款流行的开源关系数据库系统。在企业网站、业务系统等应用中,各种账户信息、产品信息,客户资料、业务数据等都可以存储到MySQL数据库,其他程序可以通过SQL语句来查询,更改这些信息。
PHP/Perl/PythonLNMP架构的中间连接作为三种开发动态网页的编程语言,负责解释动态网页文件,负责沟通Web服务器和数据库系统以协同工作,并提供Web应用程序的开发和运行环境。其中PHP是一种被广泛应用的开放源代码的多用途脚本语言,它可以嵌入到HTML中,尤其适合于Web应用开发。

(4)LNMP和LAMP的区别

表2 LNMP和LAMP的区别

功能LNMPLAMP
使用的网站服务不同NginxApache
PHP作用不同在LAMP中PHP是当作Apache的一个模块来使用LNMP中PHP是当作一个独立进程来使用的(即PHP_FPM)

83269567f6b14a0da0bd3dc308ea52d9.jpeg

(5)单服务器中Nginx与PHP的工作原理

      ① FastCGI将Http Server和动态脚本语言分离开来

      ② Ngnix专门处理静态请求,转发动态请求

      ③ PHP/PHP_FPM专门解析Nginx转发过来的动态请求

(6)Nginx特点

表3 Nginx特点

序号特点
1高扩展性
2高可靠性
3低内存消耗
4高并发
5热部署
6开源协议
7异步架构的web服务器,也可以用作反向代理、负载均衡器和HTTP缓存。

(7)构建LNMP平台顺序

在构建LNMP平台时,各组件的安装顺序依次为:

表4 LNMP组件安装顺序

安装顺序安装内容组件环境
1Linux系统
2Nginx服务器专门处理静态请求,转发动态请求给php-fpm处理
3MySQL数据库
4PHP环境专门解析Nginx转发过来的动态请求

(7)FPM

FPM(Fast Process Manager,FastCGI 进程管理器),用于替换 PHP FastCGI 的大部分附加功能,对于高负载网站是非常有用的。它的功能包括:

表5 FPM功能

序号功能
1支持平滑停止/启动的高级进程管理功能
2可以工作于不同的 uid/gid/chroot 环境下,并监听不同的端口和使用不同的 php.ini 配置文件(可取代 safe_mode 的设置)
3stdout 和 stderr 日志记录
4在发生意外情况的时候能够重新启动并缓存被破坏的 opcode
5文件上传优化支持
6

"慢日志" - 记录脚本(不仅记录文件名,还记录 PHP backtrace 信息,可以使用 ptrace或者类似工具读取和分析远程进程的运行数据)运行所导致的异常缓慢

7fastcgi_finish_request() - 特殊功能:用于在请求完成和刷新数据后,继续在后台执行耗时的工作(录入视频转换、统计处理等)
8动态/静态子进程产生
9基本 SAPI 运行状态信息(类似Apache的 mod_status)
10基于 php.ini 的配置文件

2.Nginx服务基础

(1)Nginx概念

 Nginx(engine x) 是一个高性能的HTTP和反向代理web服务器  ,同时也提供了IMAP/POP3/SMTP服务。其特点是占有内存少,并发能力强,事实上nginx的并发能力在同类型的网页服务器中表现较好。

Nginx架构:

 

  1. 相对于传统基于进程或线程的模型(Apache就采用这种模型)在处理并发连接时会为每一个连接建立一个单独的进程或线程,且在网络或者输入/输出操作时阻塞。这将导致内存和 CPU 的大量消耗,因为新起一个单独的进程或线程需要准备新的运行时环境,包括堆和栈内存的分配,以及新的执行上下文,当然,这些也会导致多余的 CPU 开销。最终,会由于过多的上下文切换而导致服务器性能变差。
  2. 反过来,Nginx 的架构设计是采用模块化的、基于事件驱动、异步、单线程且非阻塞。
  3. Nginx 大量使用多路复用和事件通知,Nginx 启动以后,会在系统中以 daemon 的方式在后台运行,其中包括一个 master 进程,n(n>=1) 个 worker 进程。所有的进程都是单线程(即只有一个主线程)的,且进程间通信主要使用共享内存的方式。
  4. 其中,master 进程用于接收来自外界的信号,并给 worker 进程发送信号,同时监控 worker 进程的工作状态。worker 进程则是外部请求真正的处理者,每个 worker 请求相互独立且平等的竞争来自客户端的请求。请求只能在一个 worker 进程中被处理,且一个 worker 进程只有一个主线程,所以同时只能处理一个请求。(原理同 Netty 很像)

(2)Nginx下载

官网地址:

nginx news

(3)Nginx工作模式

Nginx有两种工作模式:master-worker模式和单进程模式。在master-worker模式下,有一个master进程和至少一个的worker进程,单进程模式顾名思义只有一个进程。这两种模式有各自的特点和适用场景。

master-worker模式:

e6c4877a326341a185b30a41182f999a.png

 96de696157f14eee97dcb0331e8c0c30.png

单进程模式:

c82d47ca6093476195d7f900c38a20cf.png

 2种模式对比:

表6 Nginx工作模式

工作模式功能特点
master-worker模式master-worker模式下nginx启动成功后,会有一个master进程和至少一个的worker进程,worker进程数量建议等于cpu总核心数。master进程负责处理系统信号,加载配置,管理worker进程(启动,杀死,监控,发送消息/信号等)。worker进程负责处理具体的业务逻辑,也就是说,对外部来说,真正提供服务的是worker进程。生产环境下一般使用这种模式。
 

优点:

稳定性高,只要还有worker进程存活,就能够提供服务,并且一个worker进程挂掉master进程会立即启动一个新的worker进程,保证worker进程数量不变,降低服务中断的概率;

配合linux的cpu亲和性配置,可以充分利用多核cpu的优势,提升性能;

处理信号/配置重新加载/升级时可以做到尽可能少或者不中断服务。
 

单进程模式单进程模式下,nginx启动后只有一个进程,nginx的所有工作都由这个进程负责。因此,该模式一般只在开发阶段和调试时使用,生产环境下不会使用。

优点:

单进程模式由于只有一个进程,因此可以很方便地利用gdb等工具进行调试。

缺点:

单进程模式不支持nginx的平滑升级功能,任何的信号处理都可能造成服务中断,并且由于是单进程,进程挂掉后,在没有外部监控的情况下,无法重启服务。

(4)Nginx配置文件

表7 Nginx配置文件

文件/目录功能
/usr/local/nginx/conf/nginx.conf主配置文件
/usr/local/nginx/sbin/nginx命令文件

(5)Nginx主配置文件

①查看配置文件

  1. [root@localhost /]# find / -name nginx.conf -type f
  2. /etc/nginx/nginx.conf
  3. /usr/local/nginx/conf/nginx.conf
  4. /opt/nginx-1.12.2/conf/nginx.conf
  5. /opt/nginx-1.22.0/conf/nginx.conf

②文件结构

nginx.conf一共由3部分组成:全局块、events块、http块。

233a58e68bbb4b0f957f8e76b7753e19.png

全局块:

全局块是默认配置文件从开始到events块之间的内容。

主要设置nginx整体运行的配置指令,这些指令的作用域是全局。

8b12dbc5c67a4bb6bad341e5d419f9e8.png

全局块的常见配置指令:

  1. $ vim nginx.conf
  2. user nginx nginx ; # Nginx用户及组:用户 组
  3. worker_processes 8; # 工作进程数量(根据硬件调整,通常等于CPU数量或者2倍于CPU)
  4. error_log logs/error.log; # 错误日志存放位置
  5. error_log logs/error.log notice;
  6. error_log logs/error.log info;
  7. pid logs/nginx.pid; # nginx进程PID文件存放路径;
  8. ###全局块结束

ewents块:

ewents块的指令主要影响nginx服务器和用户的网络连接,对性能影响较大。

表8 ewents块配置

序号配置项
1是否开启对多worker process(工作进程)下的网络连接进行序列化;
2是否允许同时接收多个网络连接;
3选取哪种事件驱动模型处理连接请求;
4每个work process可以同时支持的最大连接数等;
  1. events { # events块开始
  2. worker_connections 1024; #每个工作进程的最大连接数量(根据硬件调整,和前面工作进程配合起来用,尽量大,但是别把cpu跑到100%就行。)
  3. use epoll; # 使用epoll的I/O 模型。linux建议epoll,FreeBSD建议采用kqueue,window下不指定。
  4. accept_mutex on; #开启网络连接的序列化(防止多个进程对连接的争抢)
  5. multi_accept on; #允许同时接收多个网络连接(默认关闭),工作进程都有能力同时接收多个新到达的网络连接
  6. } # events块结束

http块:

http块是nginx服务配置中的重要部分,代理、缓存、日志定义等很多的功能指令都可以放在http块中。

表9 http块配置

序号配置项
1文件引入;
2MiME-Type定义;
3自定义日志;
4是否使用sendfile传输文件;
5连接超时时间;
6单请求上限等;
  1. http { # http块开始
  2. include mime.types; #定义MIME-Type(网络资源的媒体类型),nginx作为web服务器必须能够识别前端请求的资源类型。引用外部文件mime.types。
  3. default_type application/octet-stream; #配置用于处理前端请求的MIME类型(默认为text/plain)
  4. access_log logs/access.log main; #配置服务日志的存放路径、日志格式、临时存放日志的内存缓存区大小;
  5. log_format main xxx; #专门定义服务日志的格式;
  6. sendfile on; #允许sendfile方式传输文件,
  7. sendfile_max_chunk xxx; #每个工作进程调用sendfile()传输的数据量最大值(0为不限制)
  8. keepalive_timeout 65; # 连接超时时间,与用户建立连接会话后nginx服务器保持会话的时间;
  9. gzip on; # 开启Gzip功能,对响应数据进行在线实时压缩;
  10. ...
  11. } # http块结束

server块:

http块可以有多个server块,每个server块都相当于一台虚拟主机,server块下又分为server全局块和location块。

server全局块:常见的配置指令是本虚拟主机的监听配置和本虚拟主机的名称或者IP配置。

location块:

表10 location块配置

序号配置项
1每个server块可以包含多个location块。
2location块的主要作用是基于nginx服务器收到的请求字符串(如server_name/uri-string),对除虚拟主机名称外的字符串进行匹配,对特定的请求进行处理。
3location块提供的功能包含地址定向、数据缓存、应答控制、第三方模块等。
  1. server { # server块开始
  2. keepalive_requests 100; # 单连接请求上限,限制用户通过某一连接想服务端发送请求的次数
  3. listen 80; # 设置网络监听(分3种监听方式:IP地址、端口、Socket)
  4. server_name localhost; #虚拟主机配置(基于主机名、基于IP、基于域名)
  5. location / {
  6. root html; #配置请求的根目录
  7. index index.html index.htm; #设置网站的默认首页
  8. }
  9. error_page 500 502 503 504 /50x.html; # 设置网站的错误页面
  10. location = /50x.html {
  11. root html;
  12. } # server块结束

(6)Nginx与Apache的区别

表11 Nginx与Apache区别

服务NginxApache
对比甚于事件的Web服务器基于流程的服务器
避免子进程基于子进程
在内存消耗和连接方面更好在内存消耗和连接方面一般
性能和可伸缩性不依赖于硬件依赖于CPU和内存等硬件
支持热部署不支持热部署
对于静态文件处理具有更高效率相对一般
在反向代理场景具有明显优势相对一般
优点

轻量级,同样是 web 服务,比 Apache 占用更少的内存及资源 ;

高并发,Nginx 处理请求是异步非塞的,而 Apache 则是阻塞型的,在高并发下 Nginx 能保持低资源低消耗高性能;

高度模块化的设计,编写模块相对简单;

社区活跃,各种高性能模块出品迅速。

rewrite,比 Nginx 的 rewrite 强大;

模块超多,基本想到的都可以找到;

少 bug ,Nginx 的 bug相对较多;

超稳定

总结

要性能的 web 服务,用 Nginx ;

Nginx 处理动态请求是弱项;

Nginx 只适合静态和反向。

如果不需要性能只求稳定,那就Apache;

一般动态请求Apache 去做。

(6)Nginx应用场景

表12 Nginx应用场景

序号场景
1静态服务器 (图片、视频服务、文本)
2动态服务
3反向代理, 负载均衡
4缓存服务

(7)同步与异步

同步指的是在发出一个功能调用时,在没有得到结果之前,该调用就不返回。也就是必须一件一件事做,等前一件做完了才能做下一件事。异步的概念和同步相对,当一个异步过程调用发出后,调用者不能立刻得到结果。实际处理这个调用的部件在完成后,通过状态、通知和回调来通知调用者。

508866cd58f240a39a57ec9057c2fa97.png

(8)阻塞与非阻塞

阻塞和非阻塞是进程在访问数据的时候,数据是否准备就绪的一种处理方式。当数据没有准备的时候,阻塞需要等待调用结果返回之前,进程会被挂起,函数只有在得到结果之后才会返回。非阻塞和阻塞的概念相对,指在不能立刻得到结果之前,该函数不会阻塞当前线程,而会立刻返回。

74238d590c9b41e2be574fb4f5700bcd.png

(9)通信机制与调用状态

表13 通信机制与调用状态

对比通信机制
同步异步
调用状态阻塞同步阻塞异步阻塞
非阻塞同步非阻塞异步阻塞

(10)kill命令信号

表14 信号编号

信号编号信号名含义
0EXIT程序退出时收到该信息。
1HUP挂掉电话线或终端连接的挂起信号,这个信号也会造成某些进程在没有终止的情况下重新初始化
2INT表示结束进程,但并不是强制性的,常用的 "Ctrl+C" 组合键发出就是一个 kill -2 的信号
3QUIT退出
9KILL杀死进程,即强制结束进程
11SEGV段错误
15TERM正常结束进程,是 kill 命令的默认信号

3.Nginx访问控制

(1)访问状态统计配置

流程:

表15 Nginx访问状态统计

序号

操作关键命令文件
1查看已安装的 Nginx 是否包含 HTTP_STUB_STATUS 模块/usr/local/nginx/sbin/nginx -V 
2修改 nginx.conf 配置文件,指定访问位置并添加 stub_status 配置cd /usr/local/nginx/conf
cp nginx.conf nginx.conf.bak
vim /usr/local/nginx/conf/nginx.conf
......
http {
......
    server {
        listen 80;
        server_name www.kgc.com;
        charset utf-8;
        location / {
            root html;
            index index.html index.php;
        }
        ##添加 stub_status 配置##
        location /status {                     #访问位置为/status
            stub_status on;                 #打开状态统计功能
            access_log off;                 #关闭此位置的日志记录
        }
    }
}
 
3重启服务systemctl restart nginx
4访问测试http://192.168.204.200/status

①先使用命令/usr/local/nginx/sbin/nginx -V 查看已安装的 Nginx 是否包含 HTTP_STUB_STATUS 模块:

eb5ebb2ad6a94f898f370479152f9d7d.png

 ②修改 nginx.conf 配置文件,指定访问位置并添加 stub_status 配置:

48c1abb99897495fb364f011e701d421.png

编辑文件:

16452b849c424a45af539b560ea06607.png

修改配置

737ea49e05664900a60ea71dcaefcc11.png

 ③ 浏览器访问 http://192.168.204.200/status Active connections :表示当前的活动连接数; server accepts handled requests :表示已经处理的连接信息,三个数字依次表示已处理的连接数、成功的TCP握手次数、 已处理的请求数。

4bce51480f72436d90be124efa15dac1.png

刷新页面观察变化

d8e451ed409b40a6bb1dfb3380bf5a61.png

(2)基于授权的访问控制

流程:

表16 Nginx基于授权的访问控制

序号

操作关键命令文件
1生成用户密码认证文件yum install -y httpd-tools
htpasswd -c /usr/local/nginx/passwd.db zhangsan
chown nginx /usr/local/nginx/passwd.db
chmod 400 /usr/local/nginx/passwd.db
 
2修改主配置文件相对应目录,添加认证配置项vim /usr/local/nginx/conf/nginx.conf
......
    server {
        location / {
            ......
            ##添加认证配置##
            auth_basic "secret";
            auth_basic_user_file /usr/local/nginx/passwd.db;
        }
    }
 
3语法验证nginx -t
4重启服务systemctl restart nginx
5浏览器访问 http://192.168.204.200

生成用户密码认证文件

  1. yum install -y httpd-tools
  2. htpasswd -c /usr/local/nginx/passwd.db 用户
  3. chown nginx /usr/local/nginx/passwd.db
  4. chmod 400 /usr/local/nginx/passwd.db

修改主配置文件相对应目录,添加认证配置项

vim /usr/local/nginx/conf/nginx.conf

① 安装软件

2dd0db29cac848498fdbd73550bbe730.png

② 生成用户密码认证文件

c9cda07e110b4c4cbb5198821fa96dfc.png

③  修改主配置文件相对应目录,添加认证配置项

b2e4c7a27e864959801001a081919e8c.png

④验证

2377d519dbd848809c83b4b1b7145a49.png

⑤ 重启服务

54c53788ecf24e42af40eb9fe291c84f.png

⑥ 访问测试

edb03f24e9404e3ea085d02f3b84ef61.png

登录

7abcfd3c2791444b960cee0556d330a4.png

(3)基于客户端的访问控制

流程:

表17 Nginx基于客户端的访问控制

序号

操作关键命令文件
1修改主配置文件相对应目录,添加访问控制规则

vim /usr/local/nginx/conf/nginx.conf
......
    server {
        location / {
            ......
            ##添加控制规则##
            deny 192.168.204.200;                     #拒绝访问的客户端 IP
            allow all;                                #允许其它IP客户端访问
        }
    }

systemctl restart nginx

访问控制规则如下:

deny IP/IP 段:拒绝某个 IP 或 IP 段的客户端访问。
allow IP/IP 段:允许某个 IP 或 IP 段的客户端访问。
规则从上往下执行,如匹配则停止,不再往下匹配。

修改Nginx的配置文件

vim /usr/local/nginx/conf/nginx.conf

c37aeeb92ada42c8af9900f70c335e21.png

主机192.168.204.150访问192.168.204.200

 16247254ae21451295cc226690525e6a.png

4.Nginx虚拟主机

(1)基于域名的虚拟主机

流程: 

表18 Nginx基于域名的虚拟主机

序号

操作关键命令文件
1为虚拟主机提供域名解析echo "192.168.204.200 www.david.com www.jjw.com" >> /etc/hosts
 
2为虚拟主机准备网页文档mkdir -p /var/www/html/david
mkdir -p /var/www/html/jjw
echo "<h1>www.david.com</h1>" > /var/www/html/david/index.html
echo "<h1>www.jjw.com</h1>" > /var/www/html/jjw/index.html
3修改Nginx的配置文件

vim /usr/local/nginx/conf/nginx.conf
......
http {
......
    server {
        listen 80;
        server_name www.david.com;                    #设置域名www.david.com
        charset utf-8;
        access_log logs/www.david.access.log; 
        location / {
            root /var/www/html/david;                    #设置www.david.com 的工作目录
            index index.html index.php;
        }
        error_page 500 502 503 504 /50x.html;
        location = 50x.html{
            root html;
        }
    }
    
    server {
        listen 80;
        server_name www.jjw.com;                    #设置域名www.jjw.com
        charset utf-8;
        access_log logs/www.jjw.access.log; 
        location / {
            root /var/www/html/jjw;
            index index.html index.php;
        }
        error_page 500 502 503 504 /50x.html;
        location = 50x.html{
            root html;
        }
    }    
}

4重启服务systemctl restart nginx
5浏览器访问http://www.david.com
http://www.jjw.com

为虚拟主机提供域名解析c19cc0e6fa6a4e149430af9d03fa3d36.png

为虚拟主机准备网页文档

c4c453a5eb41411abd8aaa657141f6a0.png

修改Nginx的配置文件

vim /usr/local/nginx/conf/nginx.conf

设置域名www.david.com

82e8dd306ee14af9aec97af2d4a60ce4.png

 设置域名www.jjw.com4fd6801356bf47ef8946048aa1780315.png

重启服务

b7bf87c088da4e8c89e8b1a70711a566.png

测试

29bb7411834c4d7f995047f9484f4a9d.png

8162502e9d2b4598a23e99b1e6d7604f.png

(2)基于IP的虚拟主机(不同IP相同端口)

流程:

表19 Nginx基于IP的虚拟主机

序号

操作关键命令文件
1添加虚拟网卡ifconfig ens33:0 192.168.204.200 netmask 255.255.255.0 
2修改Nginx的配置文件

vim /usr/local/nginx/conf/nginx.conf
......
http {
......
    server {
        listen 192.168.204.200:80;                    #设置监听地址192.204.200.10
        server_name www.david.com;
        charset utf-8;
        access_log logs/www.david.access.log; 
        location / {
            root /var/www/html/david;
            index index.html index.php;
        }
        error_page 500 502 503 504 /50x.html;
        location = 50x.html{
            root html;
        }
    }
    
    server {
        listen 192.168.204.12:80;                    #设置监听地址192.168.204.12
        server_name www.jjw.com;
        charset utf-8;
        access_log logs/www.jjw.access.log; 
        location / {
            root /var/www/html/jjw;
            index index.html index.php;
        }
        error_page 500 502 503 504 /50x.html;
        location = 50x.html{
            root html;
        }
    }    
}

3重启服务
systemctl restart nginx
4浏览器访问http://192.168.204.200
http://192.168.204.12

添加虚拟网卡

ifconfig ens33:0 192.168.204.200 netmask 255.255.255.0 
vim /usr/local/nginx/conf/nginx.conf

设置域名www.david.com23b9f4577aee42f2924f353530956971.png

设置域名www.jjw.com

0155c4651fad47c8a896e12269926f76.png

 重启服务

b7bf87c088da4e8c89e8b1a70711a566.png

浏览器访问

8eb849730b014713a73d3f7084385739.png

7ee0abaec49f4efe8a1220f6534a03ec.png

(3)基于端口的虚拟主机(相同IP不同端口)

流程:

表20 Nginx基于端口的虚拟主机

序号

操作关键命令文件
1修改Nginx的配置文件

vim /usr/local/nginx/conf/nginx.conf
......
http {
......
    server {
        listen 192.168.204.200:8080;                    #设置监听 8080 端口
        server_name www.david.com;
        charset utf-8;
        access_log logs/www.davd.access.log; 
        location / {
            root /var/www/html/david;
            index index.html index.php;
        }
        error_page 500 502 503 504 /50x.html;
        location = 50x.html{
            root html;
        }
    }
    
    server {
        listen 192.168.204.200:8888;                    #设置监听 8888 端口
        server_name www.jjw.com;
        charset utf-8;
        access_log logs/www.jjw.access.log; 
        location / {
            root /var/www/html/jjw;
            index index.html index.php;
        }
        error_page 500 502 503 504 /50x.html;
        location = 50x.html{
            root html;
        }
    }    
}

2重启服务systemctl restart nginx
3浏览器访问http://192.168.204.200:8080
http://192.168.204.200:8888
 

修改Nginx的配置文件

vim /usr/local/nginx/conf/nginx.conf

设置域名www.david.com

eae9b1af60a94810bb41efd7f7026c33.png

 设置域名www.jjw.com

c513aa0d0e124624a889773231fc02b6.png

 重启服务

b7bf87c088da4e8c89e8b1a70711a566.png

浏览器访问

b7452dfc332b4d368842d84ad9fd8e01.png

79582e6721cc4d05b1e0f23e0e1c4c92.png

5.PHP

(1)PHP配置文件

表21 PHP配置文件

文件/目录功能
php主配置文件
php.ini进程服务配置文件
www.conf

扩展配置文件

二、实验

1.LNMP架构+DISCUZ论坛应用

(1)Nginx安装

①流程

表22 Nginx安装流程

序号

操作关键命令文件
1下载Nginx相关安装包➝ 服务器rz -E

nginx-1.12.2.tar

2登录到服务器安装Nginx相关依赖包和函数库

yum -y install pcre-devel \

zlib-devel \

openssl \

openssl-devel \

gcc \

gcc-c++ \

make

gcc功能:预处理、编译、连接、汇编
openssl功能:用于网站加密通讯。
pcre功能:用于支持解析正则表达式。
zlib功能:用于对数据进行解压缩。网站之间通信时,数据先压缩再传输,通过消耗CPU的方式来节省网络带宽
3

创建程序用户管理➝

解压NginxL安装进行安装

useradd -M -s /sbin/nologin nginx

cd /opt
tar -zxvf nginx-1.12.2.tar.gz -C /opt/

4

编译安装➝切换到Nginx解包路径下➝

安装路径以及模块

cd nginx-1.12.0/
./configure \
--prefix=/usr/local/nginx \
--user=nginx \
--group=nginx \
--with-http_stub_status_module    
5编译安装make -j 16 && make install
6Nginx服务 可执行程序文件存入路径环境变量的目录中便于系统识别软链接ln -s /usr/local/nginx/sbin/nginx /usr/local/sbin/    
7检查语法nginx -t
8启动服务nginx
9查看版本nginx -V
10检查Nginx监听端口netstat -antp | grep nginx
lsof -i:80

关闭防火墙,将安装Nginx所需软件包传到/opt目录下

cd09616323cc4564afc447534f04114e.png

②下载Nginx相关安装包➝ 服务器

3d85e2adf9924cce8b1b94d694ebe73f.png

③创建程序用户管理➝解压Nginx安装进行安装

2b268e6f39a046e7addba552b30a8262.png

f94ee03f4edf48259a6f129e521caf91.png

④创建运行用户、组

2e2b866c0aa140c5942bd9673f2c4253.png

⑤编译安装➝切换到Nginx解包路径下➝安装路径以及模块

1115c8d080444a2d893430f546c6a0a7.png

⑥编译安装Nginx 路径

454cf56343674ff2b68ca774261146fa.png632408771f2b4f0c899ba414c5293389.png

⑦编译安装

0b0856e466ee469d947c174d9a48189b.png

⑧Nginx服务 可执行程序文件存入路径环境变量的目录中便于系统识别软链接

c961cf38a4b742528649447dd545d1af.png

⑨检查语法

b45b907b54b1419da5caf7f9055dc584.png

⑩查看版本

d809210b53a242438ffaa62d430e8833.png

(2)Nginx升级

新版本升级:

表23 Nginx升级流程

序号

操作关键命令文件
1下载Nginx相关安装包➝ 服务器rz -E

nginx-1.22.0.tar

2

解压NginxL安装进行安装

cd nginx-1.22.0
tar -zxvf nginx-1.22.0.tar.gz -C /opt/

3

编译安装➝切换到Nginx解包路径下➝

安装路径以及模块

./configure \
--prefix=/usr/local/nginx \      
--user=nginx \                  
--group=nginx \               
--with-http_stub_status_module \
--with-http_ssl_module
4编译make
5

备份➝

覆盖

mv /usr/local/nginx/sbin/nginx /usr/local/nginx/sbin/nginx_old

cp objs/nginx /usr/local/nginx/sbin/nginx

6查看版本nginx -V

①下载Nginx相关安装包➝ 服务器

94d534d085d34528ad64522788d41838.png

②解压Nginx安装进行安装

tar -zxvf nginx-1.22.0.tar.gz -C /opt/

③编译安装➝切换到Nginx解包路径下➝安装路径以及模块

05f51a246f924d2cb24a09f816663861.png

完成

dc9127ae78804961aaa9fb0798231a8f.png

④编译

eb9196408aa645f19c911abe6bddd656.png

⑤备份

a78dd8ecbdad46e8abcb8619ae4e00fb.png

4255b63a5b5f49b0852c759fc9edc6e8.png

⑥备查看版本

76e57f70c4a943f0ba06bf5b22c87edf.png

⑦监听接口

36e8a75fce9a42edbf56c421f2295cbb.png9af28eea51d94add91f9cb27e2755774.png

(2)MySQL安装

流程:

表24 MySQL安装流程

序号

操作关键命令文件
1

下载MySQL相关安装包➝ 服务器

rz -Emysql-boost-5.7.20.tar.gz
2登录到服务器安装MySQL相关依赖包和函数库yum -y install \
ncurses \
ncurses-devel \
bison \
cmake

ncurses 是字符终端下图形互动功能的动态库;

ncurses-devel 是ncurses开发包;

bison 是语法分析器;

cmake 用来编译安装mysql

3

创建程序用户管理➝

解压MySQL安装进行安装

useradd -M -s /sbin/nologin  mysql

cd /opt
tar zxvf mysql-boost-5.7.20.tar.gz
 

4

编译安装➝切换到MySQL解包路径下➝

安装路径以及模块

cd /opt/mysql-5.7.20/


cmake \
-DCMAKE_INSTALL_PREFIX=/usr/local/mysql \
-DMYSQL_UNIX_ADDR=/usr/local/mysql/mysql.sock \
-DSYSCONFDIR=/etc \
-DSYSTEMD_PID_DIR=/usr/local/mysql \
-DDEFAULT_CHARSET=utf8  \
-DDEFAULT_COLLATION=utf8_general_ci \
-DWITH_EXTRA_CHARSETS=all \
-DWITH_INNOBASE_STORAGE_ENGINE=1 \
-DWITH_ARCHIVE_STORAGE_ENGINE=1 \
-DWITH_BLACKHOLE_STORAGE_ENGINE=1 \
-DWITH_PERFSCHEMA_STORAGE_ENGINE=1 \
-DMYSQL_DATADIR=/usr/local/mysql/data \
-DWITH_BOOST=boost \
-DWITH_SYSTEMD=1

DCMAKE_INSTALL_PREFIX指定mysql的安装路径;

DMYSQL_UNIX_ADDR指定mysql进程监听套接字文件(数据库连接文件)的存储路径;

DSYSCONFDIR指定配置文件的存储路径;

DSYSTEMD_PID_DIR指定进程文件的存储路径;

DDEFAULT_CHARSET指定默认使用的字符集编码,如 utf8;

DDEFAULT_COLLATION指定默认使用的字符集校对规则;

DWITH_EXTRA_CHARSETSDWITH_INNOBASE_STORAGE_ENGINE指定支持其他字符集编码;

DWITH_INNOBASE_STORAGE_ENGINE安装INNOBASE存储引擎;

DWITH_ARCHIVE_STORAGE_ENGINE安装ARCHIVE存储引擎;

DWITH_BLACKHOLE_STORAGE_ENGINE安装BLACKHOLE存储引擎 ;

DWITH_PERFSCHEMA_STORAGE_ENGINE安装FEDERATED存储引擎 ;

DMYSQL_DATADIR指定数据库文件的存储路径;

DWITH_BOOST指定boost的路径,若使用mysql-boost集成包安装则-DWITH_BOOST=boost;

DWITH_SYSTEMD生成便于systemctl管理的文件;

5编译安装make -j 16 && make install-j 16 && make installmake -j 16 && make install
6更改管理主/组 

chown -R mysql:mysql /usr/local/mysql/
chown mysql:mysql /etc/my.cnf

7配置MySQL文件➝my.cnf

vim /etc/my.cnf
[client]
port = 3306
socket=/usr/local/mysql/mysql.sock

[mysqld]
user = mysql
basedir=/usr/local/mysql
datadir=/usr/local/mysql/data
port = 3306
character-set-server=utf8
pid-file = /usr/local/mysql/mysqld.pid
socket=/usr/local/mysql/mysql.sock
bind-address = 0.0.0.0
skip-name-resolve
max_connections=2048
default-storage-engine=INNODB
max_allowed_packet=16M
server-id = 1

sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES,NO_AUTO_CREATE_USER,NO_AUTO_VALUE_ON_ZERO,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,PIPES_AS_CONCAT,ANSI_QUOTES

8设置环境变量,申明/宣告MySQL 命令便于系统识别echo "PATH=$PATH:/usr/local/mysql/bin" >> /etc/profile
source /etc/profile
9初始化数据库cd /usr/local/mysql/bin/
./mysqld \
--initialize-insecure \
--user=mysql \
--basedir=/usr/local/mysql \
--datadir=/usr/local/mysql/data
 
10

为了启动服务方便,MySQL 启动服务加入到systemd系统管理➝

可使用service或systemctl进行管理

cp /usr/local/mysql/usr/lib/systemd/system/mysqld.service /usr/lib/systemd/system/
systemctl daemon-reload
systemctl start mysqld.service
systemctl enable mysqld
 
11修改mysql 的登录密码mysqladmin -u root -p password "abc123"
 
12授权远程登录mysql -u root -p
 

①下载MySQL相关安装包➝ 服务器

1e24c83543164c4fa566c935f8fbbf74.png

②安装Mysql环境依赖包

fe6afe37cdae462fbe94f2a462a21749.png

e6de4356ecd54aa9ac6baf82392ffb14.png

③创建程序用户管理➝解压MySQL安装进行安装

4eed725778604137b3692f9e4081f85e.png

tar -zxvf mysql-boost-5.7.20.tar.gz -C /opt

6c8f92a1ecc64f15bc3e9968ede160d0.png

④编译安装➝切换到MySQL解包路径下➝安装路径以及模块

79715d5104cf4c9faf9eab9e2820ab24.png

  1. cmake \
  2. -DCMAKE_INSTALL_PREFIX=/usr/local/mysql \
  3. -DMYSQL_UNIX_ADDR=/usr/local/mysql/mysql.sock \
  4. -DSYSCONFDIR=/etc \
  5. -DSYSTEMD_PID_DIR=/usr/local/mysql \
  6. -DDEFAULT_CHARSET=utf8  \
  7. -DDEFAULT_COLLATION=utf8_general_ci \
  8. -DWITH_EXTRA_CHARSETS=all \
  9. -DWITH_INNOBASE_STORAGE_ENGINE=1 \
  10. -DWITH_ARCHIVE_STORAGE_ENGINE=1 \
  11. -DWITH_BLACKHOLE_STORAGE_ENGINE=1 \
  12. -DWITH_PERFSCHEMA_STORAGE_ENGINE=1 \
  13. -DMYSQL_DATADIR=/usr/local/mysql/data \
  14. -DWITH_BOOST=boost \
  15. -DWITH_SYSTEMD=1

745fc702179b435eb349c1cacfe802ab.png

⑤ 编译安装

e0555b3a15644a1e9c15da7403bccaf6.png

6294b84dd44f4a6f967b3668f9f4a9bd.png

⑥配置MySQL文件➝my.cnf

e7f33055b431462b9f1147e861e73941.png

2854090552fb447596f2de8d85642e88.png

⑦ 更改管理主/组

58fc505cd2ce470296db15fcec510b20.png

⑧ 设置环境变量,申明/宣告MySQL 命令便于系统识别

8bb1804adaff4c1483054b158778858d.png

⑨初始化数据库

fce330e39ab94f8f82d5fc0b31654764.png

64a3925b75b749759749c85411deaf84.png

⑩为了启动服务方便,MySQL 启动服务加入到systemd系统管理➝可使用service或systemctl进行管理

5e64739ad62a482e8bb8191337177cb3.png

⑪修改mysql 的登录密码

926a51c2c89b4c6c931c7e70531a8853.png

⑫ 授权远程登录

mysql -u root -p

(3)PHP安装

流程:

表25 PHP安装流程

序号

操作关键命令文件
1

下载PHP相关安装包➝ 服务器

rz -Ephp-7.1.10.tar.bz2
2登录到服务器安装PHP相关依赖包和函数库yum -y install gd \
libjpeg libjpeg-devel \
libpng libpng-devel \
freetype freetype-devel \
libxml2 libxml2-devel \
zlib zlib-devel \
curl curl-devel \
openssl openssl-devel
 
安装GD库和GD库关联程序,用来处理和生成图片
3解压PHP安装进行安装cd /opt
tar jxvf php-7.1.10.tar.bz2
4

编译安装➝切换到PHP解包路径下➝

安装路径以及模块

cd php-7.1.10


./configure \
--prefix=/usr/local/php \
--with-mysql-sock=/usr/local/mysql/mysql.sock \
--with-mysqli \
--with-zlib \
--with-curl \
--with-gd \
--with-jpeg-dir \
--with-png-dir \
--with-freetype-dir \
--with-openssl \
--enable-fpm \
--enable-mbstring \
--enable-xml \
--enable-session \
--enable-ftp \
--enable-pdo \
--enable-tokenizer \
--enable-zip

5编译安装make -j 16 && make install
6优化php可执行程序文件存入路径环境变量的目录中便于系统识别软链接ln -s /usr/local/php/bin/* /usr/local/bin/
ln -s /usr/local/php/sbin/* /usr/local/sbin/
 
7

调整主配置文件➝

php.ini

cp /opt/php-7.1.10/php.ini-development /usr/local/php/lib/php.ini    
vim /usr/local/php/lib/php.ini
 
--1170行--修改
mysqli.default_socket = /usr/local/mysql/mysql.sock
--939行--取消注释,修改
date.timezone = Asia/Shanghai
8验证安装的模块php -m     
9调整进程服务配置文件

php-fpm.conf

cd /usr/local/php/etc/
cp  php-fpm.conf.default php-fpm.conf
vim php-fpm.conf
--17行--去掉";"注释
pid = run/php-fpm.pid
10调整扩展配置文件

www.conf

cd /usr/local/php/etc/php-fpm.d/
cp www.conf.default www.conf
 
11启动php-fpm

/usr/local/php/sbin/php-fpm -c /usr/local/php/lib/php.ini
netstat -anpt | grep 9000

cd /opt/php-7.1.10/sapi/fpm
cp php-fpm.service /usr/lib/systemd/system/php-fpm.service
systemctl restart php-fpm.service
 

12

配置 Nginx 支持 PHP 解析➝

nginx.conf

vim /usr/local/nginx/conf/nginx.conf--65行--取消注释,修改
location ~ \.php$ {
    root           html;
    fastcgi_pass   127.0.0.1:9000;
    fastcgi_index  index.php;
    fastcgi_param  SCRIPT_FILENAME  /usr/local/nginx/html$fastcgi_script_name;    #将 /scripts 修改为nginx的工作目录
   #fastcgi_param  SCRIPT_FILENAME $document_root$fastcgi_script_name;  #$document_root 代表当前请求在root指令中指定的值
    include        fastcgi_params;
}
 
13启动服务systemctl restart nginx.service
 
14测试网页vim /usr/local/nginx/html/index.php
<?php
phpinfo();
?>
 
15浏览器访问http://192.168.204.200/index.php
16验证数据库工作是否正常➝新建数据库及用户➝替换原来的测试页内容

mysql -u root -p
CREATE DATABASE bbs;
GRANT all ON bbs.* TO 'bbsuser'@'%' IDENTIFIED BY 'admin123';
GRANT all ON bbs.* TO 'bbsuser'@'localhost' IDENTIFIED BY 'admin123';
flush privileges;
 

vim /usr/local/nginx/html/index.php           
<?php
$link=mysqli_connect('192.168.204.200','bbsuser','admin123');
if($link) echo "<h1>Success!!</h1>";
else echo "Fail!!";
?>
 

17浏览器访问http://192.168.204.200/index.php

①下载PHP相关安装包➝ 服务器安装环境依赖包

aacadb171ed54ae2b98f65a4c97d9055.png

②登录到服务器安装PHP相关依赖包和函数库

02e28ee5ff124c30a96964d154c690eb.png

be0fdbfc348744749673a6d73978f585.png

③解压PHP安装进行安装

  1. cd /opt
  2. tar -jxvf php-7.1.10.tar.bz2 -C /opt

④编译安装➝切换到PHP解包路径下➝安装路径以及模块

  1. ./configure \
  2. --prefix=/usr/local/php \
  3. --with-mysql-sock=/usr/local/mysql/mysql.sock \
  4. --with-mysqli \
  5. --with-zlib \
  6. --with-curl \
  7. --with-gd \
  8. --with-jpeg-dir \
  9. --with-png-dir \
  10. --with-freetype-dir \
  11. --with-openssl \
  12. --enable-fpm \
  13. --enable-mbstring \
  14. --enable-xml \
  15. --enable-session \
  16. --enable-ftp \
  17. --enable-pdo \
  18. --enable-tokenizer \
  19. --enable-zip

9fa379623ba24b4fbbc960fd5bb136b3.png

完成

99b07d48c025456bbe154a743e18fd8e.png

⑤编译安装

8557e76da97d4a00bff9bdf277fc4f06.png

4dc79a33ad634d37ae83fda332b58e5c.png

⑥优化php可执行程序文件存入路径环境变量的目录中便于系统识别软链接

ed73aedb1d8b464a8d01d81c20d7cbba.png

⑦调整主配置文件➝php.ini

f35f8d701a194dc0b54dfe4c9f9407a6.png95e99a4f99344256b6beee7774f5871e.png

--1170行--修改

1026db209e5e41f4bd93c8f008967ff7.png

--939行--取消注释,修改

baa44429b6484a1fa1b889ae9a826666.png

⑧验证安装的模块

8da8ee803b844f308110d018cdf20918.png

⑨调整进程服务配置文件:

d13ebd693109440c96c8573f885de17e.png

84bb5d8bacf14594b20af89dcd89b51c.png

⑩调整扩展配置文件:

ce1525b45897464d9d045ea097227a69.png

⑪启动php-fpm

c695b50851ad46d7a2dc2a3228ed9e3e.png

3f082dfd5a674a5f8e6f87ff5637a0b9.png


⑫配置 Nginx 支持 PHP 解析➝nginx.conf

7e7804d0458e427e86d40498d38c90b8.png

--65行--取消注释,修改

66442080477f44cc98c10db15df10a98.png

⑬启动服务

87e4e5f9ee724fa78ee9c73642ef5689.png

⑭验证PHP 测试页

a601a8f0eb474c14b2f0a013f53f1edc.png

427e7ae411e6422f8d5ae4817ec0526e.png

⑮浏览器访问

http://192.168.204.200/index.php

76be99b614ed4aa7a1ddab0a484ebf7d.png

⑯验证数据库工作是否正常➝新建数据库及用户➝替换原来的测试页内容

77dbdf5bf1194cfba7d4cfcebe0a2699.png

编辑              

02d1a82d96a04641a1d09539205198e0.png

⑰ 替换原来的测试页内容

b3d069186b4645fa8cf503a54fc74bed.png

⑱浏览器访问

http://192.168.204.200/index.php

eded5d57a419416ea5f682774d2c9300.png

(4)论坛安装

流程:

表26 DISCUZ安装流程

序号

操作关键命令文件
1创建一个数据库

mysql -u root -p 

mysql> CREATE DATABASE bbs;

mysql> GRANT all ON bbs.* TO 'bbsuser'@'%' IDENTIFIED BY 'admin123';

mysql>flush privileges; 

把bbs数据库里面所有表的权限授予给bbsuser,并设置密码;

刷新数据库;

2

下载

 DISCUZ相关安装包➝ 服务器

rz -EDiscuz_X3.4_SC_UTF8.zip
3

解压

 DISCUZ安装进行安装

unzip Discuz_X3.4_SC_UTF8.zip -d /opt/dis
4上传站点更新包

cd /opt/dis

cp -r upload/ /usr/local/httpd/htdocs/bbs

5更改管理主/组

cd /usr/local/httpd/htdocs/bbs

chown 777 daemon ./config
chown 777 daemon ./data
chown 777 daemon ./uc_client
chown -R daemon ./uc_server/data

6准备数据库配置

数据库服务器: localhost 
数据库名字: bbs
数据库用户名: bbsuser
数据库密码: admin123
管理员账号: admin
管理员密码: admin123

本地架设就用localhost,如何不是在在本机上就要填写IP地址和端口号
7访问论坛http://192.168.204.200/bbs/install/index.php

①创建一个数据库

77dbdf5bf1194cfba7d4cfcebe0a2699.png

②下载DISCUZ相关安装包➝ 服务器

0728f09503c1460d9ebb516762f59775.png

③解压 DISCUZ安装进行安装

0fcf95adc50c4578877c500b25834230.png

④上传站点更新包

bacdfc0429f748b7abfe756ab5c27621.png

⑤更改管理主/组

b42f5d4a49fe44a583d9915897fe959e.png

b988579b34c54b26b51b99f6bc063707.png

⑥准备数据库配置

  1. 数据库服务器: localhost
  2. 数据库名字: bbs
  3. 数据库用户名: bbsuser
  4. 数据库密码: admin123
  5. 管理员账号: admin
  6. 管理员密码: admin123

⑦访问论坛

安装向导-同意

3225dca311ae4fc4b1ca215c72b4153f.png

安装向导-开始安装

2790bd56fd294f268a44f76759a1370c.png

安装向导-设置运行环境

690961f53edb41a9bfb7df37e75fb53d.png

安装向导-安装数据库

7bd6196bba124056a55248f908cb40a1.png

 安装向导-完成

9f5052ed30c44138a4e5df0b26f4fe54.png

0080abc6a9b142f9814d6f2d327c8c5c.png

进入论坛,登录管理员用户

94d880f3fd974408a0cb16f6eab1972b.png

(5)fpm参数优化

  1. vim /usr/local/php/etc/php-fpm.conf
  2. pid = run/php-fpm.pid

c8a53167f2f54fbca6dcbfbb66c42d8c.png

fpm进程启动方式,动态的

2948c90b5dd44dd6b6fd74b53f969077.png

fpm进程启动的最大进程数

036e88d5de8e467dbea9f977ca5088ba.png

动态方式下启动时默认开启的进程数,在最小和最大之间

b7f48b44b4f646a2862195289e87a736.png

动态方式下最小空闲进程数

90fabf0313534ed0b39b6ce6bf7c32fe.png

动态方式下最大空闲进程数

f7623ce0c30b4a4ba59f7a1120f2d556.png

重启php-fpm 并监听端口

4d68029acb3947208da0e5346bd0afb2.png

三、问题

1.没有规则可以创建“default”需要的目标“build”。

原因分析:缺依赖安装包

e170d19ecf084b0abf35094800261ddb.png

 解决方法:

安装Nginx所需的依赖安装包:

gcc功能:预处理、编译、连接、汇编
openssl功能:用于网站加密通讯。
pcre功能:用于支持解析正则表达式。
zlib功能:用于对数据进行解压缩。网站之间通信时,数据先压缩再传输,通过消耗CPU的方式来节省网络带宽

yum -y install pcre-devel zlib-devel openssl openssl-devel gcc gcc-c++ make

2.nginx重启报错

问题环境:

软件

版本
Centos7
nginx1.22.0

​systemctl restart nginx 重启报错

548e29f1ffb5441280c76b7fbde47ff6.png

原因分析:

查看​/lib/systemd/system/nginx.service​​的内容,里面是​​kill​​​了服务,但是实际会导致​​pid​​文件被删除,但是服务还存留,所以重启失败。

  1. ExecReload=/bin/kill -s HUP $MAINPID
  2. ExecStop=/bin/kill -s TERM $MAINPID

解决方法:

(1)最快的方式是停掉nginx服务,然后启动nginx。

ps -ef|grep nginx|grep -v grep|awk '{print $2}'|xargs kill -9  /usr/local/nginx/sbin/nginx

(2)修改​​/lib/systemd/system/nginx.service​​​的内容,调整​​ExecReload​​​和​​ExecStop​​,调整后内容如下:

  1. ExecReload=/usr/local/nginx/sbin/nginx -s reload
  2. ExecStop=/usr/local/nginx/sbin/nginx -s quit

(3)然后重新加载​​systemd​​

systemctl daemon-reload

(4)启动成功

152457c11cd146bcad49dbf36fe4bf60.png

3.yum安装提示报错

问题环境:

软件

版本
Centos7
yum

原因分析:

“Another app is currently holding the yum lock; waiting for it to exit...”报错:

有一个应用程序正在锁定yum,等待退出

f77ba8879ffc4a9080c544c42d697e08.png

 解决方法:

(1)杀掉这个应用程序

92528f1890f641da856fa16e6e8dccbb.png

kill -s 9 13806

 (2)制关掉yum进程,并重新运行yum

db6f9ae1c9df47fb8fa32d9a57a47971.png

 然后重新运行yum命令即可

4.配置文件报错

问题环境:

软件

版本
Centos7
nginx1.22.0

(1)原因分析:

nginx: [emerg] unexpected "}" in /usr/local/nginx/conf/nginx.conf:53

53行 “}”附近有语法错误,缺少分号“;”

8321a71bf0d24c51824d056b68335510.png

 解决方法:

修改配置文件

4617388bb92e4d38a367075e6b0e35ea.png

(2)原因分析:

nginx: [emerg] "server" directive is not allowed here in /usr/local/nginx/conf/nginx.conf:130

130行sever块不允许放置在这

40d2e3e364cf4cce8fb6b5ae92606566.png

 解决方法:

sever块放置在http块内

1379e2dbb66547cf8a33baa10d96eed2.png

(3) 原因分析:

nginx: [emerg] bind() to 192.168.204.100:80 failed (99: Cannot assign requested address)

不能解析地址

6bd48f929b104eaba1ddbf0a19e0cc21.png

af8b8f0fea024f54a10ccc5a493ccc3b.png

 解决方法:

修改地址

 ae1fbfbc10364d2d94d819c1450bc9a9.png

5.PHP页面无法打开

(1)原因分析:

 Nginx 配置文件未支持 PHP 解析

839b6085c950477a9c6707dbcd5b928e.png

vim /usr/local/nginx/conf/nginx.conf

(2)解决方法:

将 /scripts 修改为nginx的工作目录

535e972c97f04e5f9c45773b863168fb.png

 be9bd850a30d44d1bd81fd264fa6aee1.png

四、总结

LNMP平台是高效稳定的Web应用平台,LNMP架构结合了Linux操作系统的稳定性、Nginx服务器的高性能、MySQL数据库的可靠性和PHP语言的灵活性,被广泛应用于Web开发和部署。

Web服务器需要性能的用 Nginx ,不需要性能只求稳定用Apache。Nginx 处理动态请求是弱项,一般动态请求要 Apache 去做,Nginx 只适合静态和反向。

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/Li_阴宅/article/detail/742761
推荐阅读
相关标签
  

闽ICP备14008679号