第16节 CentOS系统手动部署LNMP平台

LNMP平台简介

  1. LNMP平台是Linux、Nginx、MySQL、PHP组合的简称。
  2. 在这个组合平台上,各成员主要发挥以下作用:
    1. Linux是一个操作系统,没有操作系统apache,mysql,php就缺少了基础平台;
    2. Nginx是一个服务器软件,我们通过浏览器发送的请求都由它来转发处理,就是启到承上启下的作用;
    3. php就是用来接收apache发送来的请求,同时也起到读写数据库数据的功能。
    4. mysql主要就是用来存储数据,如果你的网页是静态页,当然不用mysql也是可以的。
  3. Nginx与Apache相比的优点:
    1. 并发连接处理能力强,一台物理服务器约能处理3~5万各并发请求;
    2. 稳定性好;
    3. 系统消耗资源少。

2 LAMP平台安装

2.1 Linux安装

参考本专栏上一节《CentOS7虚拟机安装及界面图形化》内容。

2.2 PCRE安装

2.2.1 PCRE作用

PCRE 作用是让 Nginx 支持 Rewrite 功能。

2.2.2 安装前准备

  1. 打开终端,并使用命令sudo-i切换至root用户。
  2. 查询系统是否已安装过PCRE。因为在Linux系统中,不同方式安装的软件其查询命令不一致,建议使用以下命名查询系统中是否已安装过PCRE。检查到系统中已有安装PCRE软件,跳过该软件的安装。
    • rpm -qa | grep pcre
    • yum list installed | grep pcre
      在这里插入图片描述

2.1.3 安装及检查

注:本教程暂先摘录其他教程关于该软件的安装步骤,暂未验证。

  1. 使用命令:yum install -y pcre pcre-devel采用yum的安装方式。在这里插入图片描述
  2. 适用命令pcre-config --version查看pcre版本,为8.32。在这里插入图片描述

2.3 Nginx安装

2.3.1 安装前准备

  1. 打开终端,并使用命令sudo-i切换至root用户。
  2. 查询系统是否已安装过Nginx。因为在Linux系统中,不同方式安装的软件其查询命令不一致,建议使用以下命名查询系统中是否已安装过Nginx。
    • rpm -qa | grep nginx
    • yum list installed | grep nginx

2.3.2 安装及检查

  1. 打开网站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。在这里插入图片描述
  2. 在终端输入命令wget http://nginx.org/packages/centos/7/x86_64/RPMS/nginx-1.20.2-1.el7.ngx.x86_64.rpm下载最新版Nginx。
    在这里插入图片描述
  3. 使用命令rpm -ivh nginx-1.20.2-1.el7.ngx.x86_64.rpm进行安装。在这里插入图片描述
  4. 使用命令:nginx -v 查询软件版本号,能成功查询到版本号,说明软件安装完成。
    在这里插入图片描述
  5. 简简单单一个单词即可启动Nginx:nginx
  6. 使用命令:ss -antpl | grep 80,查询开启的端口号是否含有80,。
    在这里插入图片描述
  7. 打开浏览器并输入IP尝试访问,弹出以下窗口说明服务正常工作。在这里插入图片描述
  8. 想要停止使用命令nginx -s stop,查询具体命令可以使用命令man nginx
    在这里插入图片描述

2.3.3 相关知识

  1. 安装配置好nginx服务器后默认目录是/usr/share/nginx/html
  2. 主配置文件目录为/etc/nginx/nginx.conf,在主配置文件中写明了包含子配置文件位于目录/etc/nginx/conf.d/下,默认的server配置文件目录为/etc/nginx/conf.d/default.conf
  3. 主配置文件定义核心数和并发进程数的设置,并规定了子配置文件的目录,使用命令cat /etc/nginx/nginx.conf查看。
user  nginx;
worker_processes  auto;

error_log  /var/log/nginx/error.log notice;
pid        /var/run/nginx.pid;

events {
    worker_connections  1024;
}


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;
}
  1. 子配置文件中对server的规定,包含以下信息如端口号和默认网站目录等,使用命令cat /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.4 MySQL安装

相关安装与操作见《CentOS系统手动部署LAMP平台》4.2.3节。

2.5 php安装

相关安装与操作见《CentOS系统手动部署LAMP平台》4.2.4节。

2.5.1 源码包方式安装php

  1. 使用命令联网下载安装包:wget https://www.php.net/distributions/php-8.1.2.tar.gz
  2. 解包:tar -xvzf php-8.1.2.tar.gz
  3. 进入目录:cd php-8.1.2。可以看到目录下文件如图所示。在这里插入图片描述
  4. 在线安装各支持库:
yum -y install gcc
yum -y install libxml2
yum -y install libxml2-devel
yum -y install openssl
yum -y install openssl-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 pcre
yum -y install pcre-devel
yum -y install libxslt
yum -y install libxslt-devel
yum -y install bzip2
yum -y install bzip2-devel
yum -y install sqlite-devel
  1. 使用该命令进行配置:./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读取不到,那么所有的配置修改后都是不生效的。
  2. 配置过程出现:No package ‘oniguruma’ found 的错误提示。在这里插入图片描述
    在网站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-6.9.7.1-1.el7.remi.x86_64.rpm
  1. 不断解决缺少支持库的问题后,终于迎来配置安装。
    在这里插入图片描述
  2. 执行编译并安装,使用命令:make && make install。接下来是漫长的等待……直至完成
    在这里插入图片描述

2.5.2 配置PHP

  1. 复制安装包中相关文件到各相应路径下:
cp php.ini-development /usr/local/php/php.ini
cp /usr/local/php/etc/php-fpm.conf.default /usr/local/php/etc/php-fpm.conf
cp sapi/fpm/php-fpm /usr/local/bin
  1. 配置php.ini,使用:vim /usr/local/php/php.ini 打开php配置文件找到cgi.fix_pathinfo配置项,这一项默认被注释并且值为1,根据官方文档的说明,这里为了当文件不存在时,阻止Nginx将请求发送到后端的PHP-FPM模块,从而避免恶意脚本注入的攻击,所以此项应该去掉注释并设置为0。
    在这里插入图片描述
    同时,将该文本内的短文本标记功能开启。保存并退出。
    在这里插入图片描述
  2. 配置php-fpm.conf。使用:vim /usr/local/php/etc/php-fpm.conf 打开php配置文件,确保最后一行这里的路径是安装路径。
    在这里插入图片描述
  3. 将安装目录下的bin和sbin目录映射到系统默认目录上,分别使用命令:
    ln -s /usr/local/php/bin/* /usr/bin/
    ln -s /usr/local/php/sbin/* /usr/sbin/
  4. 使用命令:php-fpm启动php-fpm进程,端口号为9000,为Nginx提供PHP语言解析服务。弹出以下错误提示。
    在这里插入图片描述
    原因是步骤3截图红框中里面的配置文件后缀错了,应该修改后缀名或复制一个新的重命名cp /usr/local/php/etc/php-fpm.d/www.conf.default /usr/local/php/etc/php-fpm.d/www.conf,修改后启动成功并查询端口号成功。在这里插入图片描述
  5. 至此,php-fpm配置完成并能正常启动,要让Nginx支持php,还要在Nginx配置文件中告诉Nginx说php解析去找谁。
  6. 想要结束再重启php-fpm进程,可以使用命令来杀死进程:killall php-fpm

3 测试Nginx与PHP相关配置

3.1 测试Nginx是否支持PHP解析

  1. 在默认网站目录下新建一个index.php文件,文件内容编辑如下:vim /usr/share/nginx/html/index.php
  2. 进入插入模式下,按下图输入命令,保存并退出。
    在这里插入图片描述
  3. 在浏览器中输入192.168.1.2/index.php测试Nginx能否成功解析PHP,自行使用自己的IP地址。浏览器无法解析该文件,认为是要下载或读取该文件而不是弹出页面后续要配置PHP。
    在这里插入图片描述

3.2 配置Nginx支持php

  1. 使用vim编辑器打开Nginx主页配置文件:vim /etc/nginx/conf.d/default.conf。修改nginx的server {}配置块中的内容,修改location块,追加index.php让nginx服务器默认支持index.php为首页。在这里插入图片描述
  2. 继续配置Nginx文件。配置.php请求被传送到后端的php-fpm模块,默认情况下php配置块是被注释的,此时去掉注释并修改为以下内容。root是配置php程序放置的根目录,主要修改的就是fastcgi_param中的/scripts为$document_root。
    在这里插入图片描述
  3. 使用命令nginx -s stop关闭nginx,并使用ss -antpl | grep 80确定其已关闭。
  4. 再使用命令nginx开启,并使用ss -antpl | grep 80确定其已开启。

3.3 再次测试

  1. 在浏览器中输入192.168.1.2/index.php测试Nginx能否成功解析PHP,自行使用自己的IP地址。可以看到正常解析,说明配置成功。在这里插入图片描述
  2. 在实验过程中,出现过files not found的错误提示,在文章《Nginx访问PHP文件的File not found错误处理,两种情况》中总结了两种错误的可能原因,其一是路径解析出错、其二是文件权限出错,在本次安装过程的在3.2的步骤2中,修改root位置为软件安装位置,之后成功解析。

4 总结

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

5 参考文献

  1. Linux 安装 pcre
  2. Linux下安装php环境并且配置Nginx支持php-fpm模块》好文章重点看。
  3. Linux下搭建PHP开发环境,Php-Fpm进程管理
  4. Nginx访问PHP文件的File not found错误处理,两种情况
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值