欢迎您访问 最编程 本站为您分享编程语言代码,编程技术文章!
您现在的位置是: 首页

LNMP架构与应用部署全解析,跟着做起来!

最编程 2024-08-09 19:54:03
...

众所周知,LAMP平台时目前应用最为广泛的网站服务器架构,其中“A”对应着Apache服务器。随着Nginx服务器在企业中的使用越来越多,LNMP架构也受到越来越多Linux运维工程师的青睐。

搭建LAMP架构应用平台可以参考博文:LAMP平台部署及应用

构建LNMP网站平台

跟构建LAMP平台一样,构架你LNMP平台也需要Linux服务器、MySQL数据库,PHP解析环境,区别主要Nginx与PHP的协作配置上。

一、安装MySQL数据库

为了与Nginx、PHP环境保持一致,仍然采用源代码编译安装的方式安装MySQL组件。 编译安装MySQL数据库可以参考博文:编译安装MySQL数据库系统 博文中介绍的很详细,这里就不多做介绍了!

二、安装Nginx服务器

可以参考博文:基于Nginx搭建Web服务器及虚拟主机相关配置详解 这里也不多做介绍了!

三、安装PHP解析环境

这是重点,但并不是难点!!!

关于安装PHP所需的软件包:

  • php-5.5.38.tar.gz网盘链接:https://pan.baidu.com/s/1m2s2jRHWMzto6z-V-I7-TQ 提取码:do2o
  • zend-loader-php5.5-linux-x86_64_update1.tar.gz网盘链接:https://pan.baidu.com/s/1ow0B2KM-uU8TgkhCZWOQ-Q 提取码:zppz phpMyAdmin-4.

较新版本(比如本次实验所用到的PHP软件包)已经自带了FRM(进程管理器)模块,用来对PHP解析实例进行管理,优化解析效率。如果在单台服务器的LNMP架构,通常在编译安装PHP时添加“--enable-fpm”,以启动此模块。

为了提高PHP解析效率,建议将相应版本的ZendGuardLoader也装上(不是必须的)。安装过程如下:

(1)编译安装PHP

[root@localhost ~]# yum -y install gd libxml2-devel libjpeg-devel libpng-devel
[root@localhost ~]# tar zxf php-5.5.38.tar.gz -C /usr/src
[root@localhost ~]# cd /usr/src/php-5.5.38/
[root@localhost php-5.5.38]# ./configure --prefix=/usr/local/php5 --with-gd \
 --with-zlib --with-mysql=/usr/local/mysql \
 --with-mysqli=/usr/local/mysql/bin/mysql_config \
 --with-config-file-path=/usr/local/php5 --enable-mbstring \
 --enable-fpm --with-jpeg-dir=/usr/lib
 [root@localhost php-5.5.38]# make && make install

(2)安装后的调整

 [root@localhost php-5.5.38]# cp php.ini-development /usr/local/php5/php.ini
[root@localhost php-5.5.38]# ln -s /usr/local/php5/bin/* /usr/local/bin
[root@localhost php-5.5.38]# ln -s /usr/local/php5/sbin/* /usr/local/sbin

(3)安装ZendGuardLoader

[root@localhost ~]# tar zxf zend-loader-php5.5-linux-x86_64_update1.tar.gz -C /usr/src
[root@localhost ~]# cd /usr/src/zend-loader-php5.5-linux-x86_64/
[root@localhost zend-loader-php5.5-linux-x86_64]# cp ZendGuardLoader.so /usr/local/php5/lib/php
[root@localhost zend-loader-php5.5-linux-x86_64]# cd 
[root@localhost ~]# vim /usr/local/php5/php.ini
                   …………                //省略部分内容
zend_extension=/usr/local/php5/lib/php/ZendGuardLoader.so
zend_loader.enable=1

四、配置Nginx支持PHP环境

若想让Nginx能够解析PHP网页,有两种方法: 1.充当中介,将访问PHP页面的Web请求转交给其他能够解析PHP语言的服务器(LAMP)去处理; 2.通过使用PHP的FPM模块来调用本机的PHP解析环境;

(1)启用php-fpm进程

如果选用FPM方式,则需要先启动php-fpm进程,以便监听PHP解析请求。如下:

[root@localhost ~]# cd /usr/local/php5/etc/
[root@localhost etc]# cp php-fpm.conf.default php-fpm.conf
[root@localhost etc]# useradd -M -s /sbin/nologin php
[root@localhost etc]# vim php-fpm.conf
                  ………………                      //省略部分内容,修改以下内容
pid = run/php-fpm.pid                           //确认pid文件位置
user = php                                            //运行用户
group = php                                         //运行组
pm.start_servers = 20                         //启动开启的进程数
pm.min_spare_servers = 5                 //最少空闲进程数
pm.max_spare_servers = 35              //最多空闲进程数
pm.max_children = 50                        //最多空闲子进程数
[root@localhost etc]# /usr/local/sbin/php-fpm 
[root@localhost etc]# netstat -anpt | grep php-fpm
tcp        0      0 127.0.0.1:9000          0.0.0.0:*               LISTEN      20239php-fpm: mast 

当然可以编写脚本使Nginx服务与php-fpm程序做一下绑定,脚本内容如下:

[root@localhost ~]# vim /etc/init.d/nginx 
#!/bin/bash
# chkconfig: - 99 20
PROG="/usr/local/sbin/nginx"
PIDF="/usr/local/nginx/logs/nginx.pid"
PROG_FPM="/usr/local/sbin/php-fpm"
PIDF_FPM="/usr/local/php5/var/run/php-fpm.pid"
case "$1" in
start)
        $PROG
        $PROG_FPM
;;
stop)
        kill -s QUIT $(cat $PIDF)
        kill -s QUIT $(cat $PIDF_FPM)
;;
restart)
        $0 stop
        $0 start
;;
reload)
        kill -s HUP $(cat $PIDF)
        kill -s HUP $(cat $PIDF_FPM)
;;
*)
        echo "Usage: $0 {start|stop|restart|reload}"
        exit 1
esac
        exit 0
[root@localhost ~]# systemctl daemon-reload 			

这样一旦关闭Nginx服务,php-fpm程序也会随之关闭,反之亦可。

(2)配置Nginx支持PHP解析

无论是将PHP页面交给LAMP服务器去解析,还是调用本机的php-fpm进程进行解析,都需要在“server{}”配置段中添加location设置,以便指定当访问.php网页是采取何种操作。

第一种方式(转交给其他Web服务器(LAMP)去处理):这样就可以实现由Nginx负责静态页面,LAMP负责动态页面的分离效果。配置如下:

[root@localhost ~]# vim /usr/local/nginx/conf/nginx.conf
                               ………………                          //省略部分内容
server {
							…………………                                        //省略部分内容
        location ~ \.php$ {                                           //访问以.php结尾的网页的配置信息
        proxy_pass http://192.168.1.100:80;              //转发到Apache服务器的监听地址    
        }
}

第二种方法(调用本机的php-fpm进程),配置如下:

[root@localhost ~]# vim /usr/local/nginx/conf/nginx.conf
                               ………………                          //省略部分内容
server {
							…………………                                        //省略部分内容
   location ~ \.php$ {                                               //访问以.php结尾的网页的配置信息
        root            /var/www/benet;                          //网页根目录存放的位置
        fastcgi_pass    127.0.0.1:9000;                     //pgp-fpm程序默认的端口是9000
        fastcgi_index   index.php;                             //首页内容
        include         fastcgi.conf;                              //调用fastcgi.conf文件中的的相关配置
        }
}

本次实例选择第二种方法。

(3)PHP页面访问测试

[root@localhost ~]# mkdir -p /var/www/benet
[root@localhost ~]# vim /var/www/benet/test.php
<?php
phpinfo();
?>
[root@localhost ~]# systemctl restart nginx

客户机访问测试:

[root@localhost ~]# vim /var/www/benet/test1.php
<?php
$link=mysqli_connect('localhost','root','123456');
if($link) echo "connect mysql is OK!";
mysqli_close($link);
?>

客户机访问测试:

至此LNMP平台已经搭建完成!

———————— 本文至此结束,感谢阅读 ————————

推荐阅读