【Linux系统】第15节 CentOS7系统手动搭建LNMP平台

本文档详细介绍了手动配置LNMP(Linux、Nginx、MySQL、PHP)平台的步骤,包括Linux的安装、Nginx的依赖环境与安装、Nginx配置、MySQL的安装以及PHP的源码安装和配置。在Nginx配置文件中添加对PHP的支持,并通过创建PHP测试文件验证Nginx是否能正确解析PHP。整个过程涵盖了从基础环境准备到服务启动的全部细节,旨在帮助读者掌握LNMP平台的搭建方法。
摘要由CSDN通过智能技术生成

1 LNMP平台

1.1 LNMP平台概述

(1)LNMP平台是Linux、Nginx、MySQL、PHP组合的简称。
(2)在这个组合平台上,各成员主要发挥以下作用:

  • Linux是一个操作系统,没有操作系统apache,mysql,php就缺少了基础平台;
  • Nginx是一个服务器软件,我们通过浏览器发送的请求都由它来转发处理,就是启到承上启下的作用;
  • php就是用来接收apache发送来的请求,同时也起到读写数据库数据的功能。
  • mysql主要就是用来存储数据,如果你的网页是静态页,当然不用mysql也是可以的。

1.2 Nginx概述

Nginx是一款使用C语言开发的高性能的http 服务器/ 反向代理服务器及电子邮件(IMAP/POP3)代理服务器。由俄罗斯的程序设计师Igor Sysoev 所开发,官方测试nginx能够支支撑5万并发链接,并且 cpu、内存等资源消耗却非常低,运行非常稳定。

1.2.1 Nginx的应用场景

(1)http服务器。Nginx是一个http 服务可以独立提供http服务。可以做网页静态服务器。
(2)虚拟主机。可以实现在一台服务器虚拟出多个网站。例如个人网站使用的虚拟主机。
(3)反向代理,负载均衡。当网站的访问量达到一定程度后,单台服务器不能满足用户的请求时,需要用多台服务器集群可以使用nginx做反向代理。并且多台服务器可以平均分担负载,不会因为某台服务器负载高宕机而某台服务器闲置的情况。

1.2.3 Nginx的优点

Nginx与Apache相比,具有如下优点

  • 支持庞大的并发访问,并发连接处理能力强,一台物理服务器约能处理3~5万个并发请求; 稳定性好;
  • 系统消耗资源少。

2 安装LAMP平台

注意,在安装好Linux操作系统后,需要先让CentOS7虚拟机上网,即需要桥接到真实网络中,并配好IP、子网掩码和指定网关和子网掩码等。具体操作可参考《第13节 CentOS系统中采用Apache发布网站以及访问控制配置详解》中的1.2节。

2.1 安装Linux

参考本专栏 《第1节 CentOS7虚拟机安装》内容。

2.2 安装Nginx

以root管理员身份登录系统并打开终端,若以其他用户登录的系统,则并使用命令sudo-i切换至root用户。在centos中安装Nginx,需要首先安装相应的依赖环境。

2.2.1 安装依赖环境

(1)安装依赖环境:gcc-c++。nginx编译依赖gcc环境,gcc环境的安装步骤如下:

  • 1)查询系统是否已安装过gcc环境。输入命令rpm -qa | grep gccyum list installed | grep gcc查询系统是否已安装过过gcc环境。如下图所示,可看到系统已安装过gcc环境,可不用再安装。若没有安装,则可使用命令yum install gcc-c++进行安装。

在这里插入图片描述
(2)安装开发环境软件包pcre-devel。pcre:(Perl Compatible Regular Expressions)是一个Perl库,包括 perl 兼容的正则表达式库。nginx的http模块使用 pcre来解析正则表达式。安装步骤如下:

  • 1)查询系统是否已安装过pcre-devel开发环境。输入命令rpm -qa | grep pcre-develyum list installed | grep pcre-devel查询系统是否已安装过pcre-devel开发环境。检查到系统中没有安装pcre-devel开发环境。注意,凡是后缀为devel的均为开发包。

在这里插入图片描述

  • 2)安装pcre-devel开发环境。输入命令yum install -y pcre-devel采用yum的方式安装pcre-devel开发环境。

在这里插入图片描述

  • 3)查看版本号。安装完成后可输入命令pcre-config --version查看pcre版本,为8.32。

在这里插入图片描述

(3)安装zlib-devel开发环境。该库提供了很多种压缩和解压缩的方式,nginx使用zlib对 http包的内容进行gzip。安装步骤如下:

  • 1)查询系统是否已安装过zlib-devel开发环境。输入命令rpm -qa | grep zlib-develyum list installed | grep zlib-devel查询系统是否已安装过zlib-devel开发环境。检查到系统中没有安装zlib-devel开发环境。

在这里插入图片描述

  • 2)安装zlib-devel开发环境。输入命令yum install -y zlib-devel采用yum的方式安装zlib-devel开发环境。

在这里插入图片描述
(4)安装openssl开发环境。openssl是一个强大的安全套接字层密码库,囊括主要的密码算法、常用的密钥和证书封装管理功能及SSL协议,并提供丰富的应用程序供测试或其它目的使用。nginx不仅支持http 协议,还支持https(即在ssl协议上传输 http).。

  • 1)查询系统是否已安装过openssl开发环境。输入命令rpm -qa | grep openssl-develyum list installed | grep openssl-devel查询系统是否已安装过openssl。检查到系统中没有安装openssl。
    在这里插入图片描述

  • 2)安装openssl开发环境。输入命令yum install -y openssl-devel采用yum的方式安装openssl。

在这里插入图片描述
在这里插入图片描述

2.2.2 Nginx安装前检查

(1)以root管理员身份登录系统并打开终端,若以其他用户登录的系统,则并使用命令sudo-i切换至root用户。
(2)查询系统是否已安装过Nginx。因为在Linux系统中,不同方式安装的软件其查询命令不一致,建议使用以下命名查询系统中是否已安装过Nginx。

rpm -qa | grep nginx
yum list installed | grep nginx

在这里插入图片描述

2.2.3 Nginx安装及检查

(1)输入yum install nginx用这个命令来安装nginx。发现没有nginx可用的安装包。
在这里插入图片描述

(2)打开网站http://nginx.org/packages/根据自己系统类型和版本,查找到适合自己的安装包。本系统为CentOS7.2009x86_64版本,因此在对应目录下找到最新的安装包为:http://nginx.org/packages/centos/7/x86_64/RPMS/nginx-1.20.2-1.el7.ngx.x86_64.rpm。
在这里插入图片描述

(3)在终端输入命令wget http://nginx.org/packages/centos/7/x86_64/RPMS/nginx-1.20.2-1.el7.ngx.x86_64.rpm下载最新版Nginx。该rpm软件包下载在当前目录中。
在这里插入图片描述
在这里插入图片描述

(4)使用命令rpm -ivh nginx-1.20.2-1.el7.ngx.x86_64.rpm进行安装。由于软件就在当前目录下,因此使用的是相对路径。
在这里插入图片描述
(5)使用命令man nginx可以查看nginx命令的帮助手册。
在这里插入图片描述

(6)使用命令nginx -v 查询软件版本号,能成功查询到版本号,说明软件安装完成。
在这里插入图片描述
(7)输入命令rpm -qpl nginx-1.20.2-1.el7.ngx.x86_64.rpm 可查询nginx的启动命令。
在这里插入图片描述
(8)启动nginx服务。输入命令nginx启动nginx服务。

(9)查看nginx服务是否启动成功。使用命令:ss -antpl | grep 80,查询80端口号是否开启成功。可以看到,80端口成功开启。
在这里插入图片描述
(10)查看nginx服务是否启动成功。打开浏览器并输入IP(此centos系统的IP为192.168.1.5)尝试访问,弹出以下窗口说明服务正常工作。
在这里插入图片描述

(11)若想要停止使用命令nginx -s stop,查询nginx 命令的具体使用可以使用命令man nginx

2.2.4 配置文件相关知识

输入命令rpm -qpl nginx-1.20.2-1.el7.ngx.x86_64.rpm 可查看软件安装后的安装路径及相关文件路径。从中可以得到我们比较关心的信息:
在这里插入图片描述
在这里插入图片描述
(1) nginx服务器默认主页的存放路径为/usr/share/nginx/html,默认主页名称为index.html。
(2)主配置文件目录为/etc/nginx/nginx.conf。在主配置文件中包含了三大部分,使用命令vim /etc/nginx/nginx.conf可查看。

  • 1)全局配置:定义核心数等信息
 user  nginx;                                        #运行用户
 worker_processes  auto;                             #工作进程数(根据cpu核心设定) 
error_log  /var/log/nginx/error.log notice;          #错误日志的文件位置
pid        /var/run/nginx.pid;                       #pid文件位置

在这里插入图片描述

  • 2)I/O事件:定义并发进程数
 events {
     worker_connections  1024;                                         #每个进程处理1024连接
 }

在这里插入图片描述

  • 3)HTTP配置:需要重点注意,写明了子配置文件位于目录/etc/nginx/conf.d/下,其中默认的server配置文件名为default.conf。
 http {
    include       /etc/nginx/mime.types;                   #文件扩展名与文件类型映射表
    default_type  application/octet-stream;                #默认文件类型

    log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '
                      '$status $body_bytes_sent "$http_referer" '
                      '"$http_user_agent" "$http_x_forwarded_for"';

    access_log  /var/log/nginx/access.log  main;

    sendfile        on;                                   #支持文件发送(下载)
    #tcp_nopush     on;

    keepalive_timeout  65;                                #连接保持超时时间,单位是秒

    #gzip  on;

    include /etc/nginx/conf.d/*.conf;                     #子配置文件目录
}

在这里插入图片描述

(3)子配置文件为/etc/nginx/conf.d/*.conf,其中定义了对server的规定,包含以下信息如端口号和默认网站目录等,使用命令vim /etc/nginx/conf.d/default.conf查看。

server {
    listen       80;                                        #监听端口号            
    server_name  localhost;                                 #网站名称

    #access_log  /var/log/nginx/host.access.log  main;

    location / {                                             #定义安装目录为软件根目录                    
        root   /usr/share/nginx/html;                        #网页存放目录
        index  index.html index.htm;                         #默认引索页
    }

    #error_page  404              /404.html;

    # redirect server error pages to the static page /50x.html
    #
    error_page   500 502 503 504  /50x.html;                #内部错误反抗页面 
    location = /50x.html {                                  #错误页面配置 
        root   /usr/share/nginx/html;
    }

    # proxy the PHP scripts to Apache listening on 127.0.0.1:80
    #
    #location ~ \.php$ {
    #    proxy_pass   http://127.0.0.1;
    #}

    # pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000
    #
    #location ~ \.php$ {
    #    root           html;
    #    fastcgi_pass   127.0.0.1:9000;
    #    fastcgi_index  index.php;
    #    fastcgi_param  SCRIPT_FILENAME  /scripts$fastcgi_script_name;
    #    include        fastcgi_params;
    #}

    # deny access to .htaccess files, if Apache's document root
    # concurs with nginx's one
    #
    #location ~ /\.ht {
    #    deny  all;
    #}
}

在这里插入图片描述

2.3 安装MySQL安装

相关安装与操作见《第14节 CentOS7系统手动搭建LAMP平台》2.3节。

2.4 安装php并配置相关项

尝试过采用yum方式安装php,但是Nginx无法支持PHP解析,可能是有些功能需要自己指定。因此此处按照视频采用源码包安装。

2.4.1 安装依赖环境

首先需要安装php依赖的开发环境

yum -y install libxml2
yum -y install libxml2-devel
yum -y install curl
yum -y install curl-devel
yum -y install libjpeg
yum -y install libjpeg-devel
yum -y install libpng
yum -y install libpng-devel
yum -y install freetype
yum -y install freetype-devel
yum -y install libxslt
yum -y install libxslt-devel
yum -y install bzip2
yum -y install bzip2-devel
yum -y install sqlite-devel

2.4.2 源码包方式安装php

(1)下载安装包。当使用命令wget https://www.php.net/distributions/php-8.1.3.tar.gz联网下载安装包时速度特别慢,而且时不时下载中断。利用虚拟机CentOS7自带的浏览器下载php-8.1.3.tar.gz安装包,然后再将该安装包复制到虚拟机CentOS7的root家目录下。
在这里插入图片描述

(2)打开终端,解包:tar -zxf php-8.1.3.tar.gz
在这里插入图片描述

(3)进入php-8.1.3软件包目录。输入命令cd php-8.1.3进入软件包目录,可以看到目录下文件如图所示。
在这里插入图片描述

(4)使用该命令进行配置:./configure --prefix=/usr/local/php --with-curl --with-freetype-dir --with-gd --with-gettext --with-iconv-dir --with-kerberos --with-libdir=lib64 --with-libxml-dir --with-mysqli --with-openssl --with-pcre-regex --with-pdo-mysql --with-pdo-sqlite --with-pear --with-png-dir --with-jpeg-dir --with-xmlrpc --with-xsl --with-zlib --with-bz2 --with-mhash --enable-fpm --enable-bcmath --enable-libxml --enable-inline-optimization --enable-gd-native-ttf --enable-mbregex --enable-mbstring --enable-opcache --enable-pcntl --enable-shmop --enable-soap --enable-sockets --enable-sysvsem --enable-sysvshm --enable-xml --enable-zip需要注意一个地方就是php.ini配置文件的位置可以在编译前配置参数中设置,编译参数可以写成:–with-config-file-path=/usr/local/php 这样的话php就回去指定的目录下读取php.ini配置文件,如果不加这个参数默认位置就是php安装目录下的lib目录,具体也可以在phpinfo()输出界面查看,如果php.ini放到其他位置,php读取不到,那么所有的配置修改后都是不生效的。
(5)配置过程出现:No package ‘oniguruma’ found 的错误提示。
在这里插入图片描述
(6)在网站http://rpms.remirepo.net/enterprise/7上根据自己的系统找到对应的版本,此处使用以下命令安装相应支持库。

yum -y install http://rpms.remirepo.net/enterprise/7/remi/x86_64/oniguruma5php-6.9.7.1-1.el7.remi.x86_64.rpm
yum -y install http://rpms.remirepo.net/enterprise/7/remi/x86_64/oniguruma5php-devel.x86_64 0:6.9.7.1-1.el7.remi

在这里插入图片描述
在这里插入图片描述

(6)重新使用该命令进行配置:./configure --prefix=/usr/local/php --with-curl --with-freetype-dir --with-gd --with-gettext --with-iconv-dir --with-kerberos --with-libdir=lib64 --with-libxml-dir --with-mysqli --with-openssl --with-pcre-regex --with-pdo-mysql --with-pdo-sqlite --with-pear --with-png-dir --with-jpeg-dir --with-xmlrpc --with-xsl --with-zlib --with-bz2 --with-mhash --enable-fpm --enable-bcmath --enable-libxml --enable-inline-optimization --enable-gd-native-ttf --enable-mbregex --enable-mbstring --enable-opcache --enable-pcntl --enable-shmop --enable-soap --enable-sockets --enable-sysvsem --enable-sysvshm --enable-xml --enable-zip.不断解决缺少支持库的问题后,终于迎来配置安装。
在这里插入图片描述

(7)执行编译并安装,使用命令:make && make install。接下来是漫长的等待……直至完成
在这里插入图片描述
(8)安装完成后可以进入到安装目录,查看目录中有哪些文件;还可以进入命令字目录,查看php的命令字。
在这里插入图片描述
(9)安装完成后还可以输入命令./php -v查看php版本。注意,该命令需要在进入到/usr/local/php/bin目录下才能使用。
在这里插入图片描述

2.4.3 配置PHP

(1)优化命令路径
采用源码包安装后,当运行php命令时,提示未找到命令或文件。那是由于php的命令并没有链接到系统默认的命令存放路径中。
在这里插入图片描述
只有当进入php安装目录里的bin路径里,才能使用php命令。
在这里插入图片描述
为了方便以后对php操作,可以对命令路径进行优化,将安装目录下的bin和sbin目录映射到系统默认目录上,分别输入命令如下:

ln -s /usr/local/php/bin/* /usr/bin/
ln -s /usr/local/php/sbin/* /usr/sbin/

在这里插入图片描述

(2)修改主配置文件php.ini

  • 1)新建主配置文件php.ini。采用源码包安装后,安装目录下并没有主配置文件,安装包中才有主配置文件。进入安装包目录中,复制安装包中主配置文件到各相应路径下:
cp php.ini-development /usr/local/php/php.ini

在这里插入图片描述

  • 2)修改配置文件配置php.ini。使用:vim /usr/local/php/php.ini 打开php配置文件,并修改配置项如下:
    ①开启短文本标记功能。将该文本内的短文本标记功能开启。其中,vim编辑器的具体使用可参考《第7节 Linux系统vim编辑器简单应用》
    在这里插入图片描述

    ②修改cgi.fix_pathinfo配置项。找到cgi.fix_pathinfo配置项,这一项默认被注释并且值为1,根据官方文档的说明,这里为了当文件不存在时,阻止Nginx将请求发送到后端的PHP-FPM模块,从而避免恶意脚本注入的攻击,所以此项应该去掉注释并设置为0。保存并退出。

在这里插入图片描述

(3)修改php-fpm的配置文件

  • 1)进入php-fpm的配置文件的目录。输入命令cd /usr/local/php/etc/进入,可以看到php-fpm的配置文件php-fpm.conf.default。

  • 在这里插入图片描述

  • 2)将php-fpm.conf.default改名为php-fpm.conf,或者拷贝一份并命名为php-fpm.conf。输入命令mv php-fpm.conf.default php-fpm.conf

  • 在这里插入图片描述

  • 3)查看配置文件php-fpm.conf。使用:vim /usr/local/php/etc/php-fpm.conf 打开php-fpm配置文件,可以看到该主配置文件中包含子配置文件,子配置文件的路径为 /usr/local/php/etc/php-fpm.d/*.conf。在这里插入图片描述

  • 4)修改子配置文件名称。输入命令cd /usr/local/php/etc/php-fpm.d进入子配置文件的目录,查看子配置文件。可以看到此子配置文件与上一步中的主配置文件名称不一致。可以将子配置文件重命名为www.conf,或修改主配置文件,使其一致。此处将子配置文件重命名为www.conf,输入命令mv www.conf.default www.conf .
    在这里插入图片描述
    在这里插入图片描述

(4)启动php-fpm进程并验证。输入命令:php-fpm启动php-fpm进程(php-fpm进程的端口号为9000),启动后输入命令ss -antpl | grep 9000查看是否开启了端口,为Nginx提供PHP语言解析服务。
在这里插入图片描述
至此,php-fpm配置完成并能正常启动。

2.5 修改Nginx配置文件使其能调用php-fpm进程

Nginx配置文件中默认情况下php配置块是被注释的,要让Nginx支持php,还要在Nginx配置文件中告诉Nginx说php解析去找谁。
(1)使用vim编辑器打开Nginx主页配置文件:vim /etc/nginx/conf.d/default.conf,此时去掉php模块的注释并按如下修改内容,并保存退出。(此修改有问题,仅为了记录视频中的这种修改有问题)
在这里插入图片描述
(2)结束php-fpm进程以及关闭nginx。可以使用命令来杀死进程:killall php-fpm;使用命令nginx -s stop关闭nginx,在关闭nginx时出现如下警告。在这里插入图片描述
(3)重新使用命令vim /etc/nginx/conf.d/default.conf打开Nginx主页配置文件并修改,将php模块的内容全部去掉注释,并做如下修改。主要修改的就是将fastcgi_param中的/scripts改为$document_root。
在这里插入图片描述
(4)重新结束php-fpm进程以及关闭nginx。可以使用命令来杀死进程:killall php-fpm;使用命令nginx -s stop关闭nginx,在关闭nginx时出现以下错误,那是由于nginx还未启动。
在这里插入图片描述

(5)启动php-fpm进程以及启动nginx。输入命令php-fpm启动php-fpm进程;再使用命令nginx开启,并使用ss -antpl | grep 80确定其已开启。
在这里插入图片描述

3 测试Nginx是否支持PHP解析

(1)新建一个index.php文件。输入命令vim /usr/share/nginx/html/index.php在默认网站目录下新建一个index.php文件。
(2)编辑index.php网页。切换到输入模式下,按下图输入命令,注意有分号,保存并退出。
在这里插入图片描述

(3)验证Nginx是否支持php解析。在浏览器中输入192.168.1.5/index.php测试Nginx能否成功解析PHP,(此CentOS的静态IP地址为192.168.1.5),出现files not found的错误提示。

在这里插入图片描述
(4)在文章《Nginx访问PHP文件的File not found错误处理,两种情况》中总结了两种错误的可能原因,其一是路径解析出错、其二是文件权限出错。与本文2.5小节的步骤(3)一样,打开nginx配置文件,将root下的路径改为网页默认存放路径的绝对路径(本文为/usr/share/nginx/html)。
在这里插入图片描述
(5)重新测试。在浏览器中输入192.168.1.5/index.php测试Nginx能否成功解析PHP,(此CentOS的静态IP地址为192.168.1.5)。可以看到正常解析,说明配置成功。
在这里插入图片描述

4 归纳

(1)了解LNMP平台上各个组成承担的功能;
(2)理解LNMP平台上各个组成之间如何通过配置文件联系起来;
(3)掌握手动配置LNMP平台的方法。

5 参考文献

[1]《Linux下安装php环境并且配置Nginx支持php-fpm模块》好文章重点看。
[2]《Nginx访问PHP文件的File not found错误处理,两种情况》
[3] 《CentOS系统手动部署LNMP平台》
[4] 《Linux CentOS 7或8,本地安装Nginx,无需yum》
[5] 视频传输门

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值