LNMP架构的搭建及应用部署方法
admin
2023-03-11 05:21:32
0


一、准备工作:

Centos 7 服务器、光盘
MySQL 部署可参考博文:https://blog.51cto.com/14227204/2425596
Nginx 部署可参考博文:https://blog.51cto.com/14227204/2435579
准备 PHP 的源码包:https://pan.baidu.com/s/1WARKfQ5ndcL5t5MqXq13zg
提取码: 4zjx

二、安装 PHP 解析环境:
较新版本的 PHP 已经自带了 FPM 模块,用来对PHP解析实例进行管理、优化解析效率。所以需要在编译时 添加“--enable-fpm”来启动此模块。

[root@mysql /]# yum -y  install    gd    libxml2-devel     libjpeg-devel    libpng-devel
[root@mysql /]# tar zxf php-5.5.38.tar.gz  -C   /usr/src/
[root@mysql 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   && make && make install                  #配置及编译安装(过程较长)

安装完毕后的调整:

[root@mysql php-5.5.38]# cp php.ini-development    /usr/local/php5/php.ini
[root@mysql /]# ln -s /usr/local/php5/bin/*   /usr/local/bin/
[root@mysql /]# ln -s /usr/local/php5/sbin/*   /usr/local/sbin/          # 创建链接文件,方便命令使用

安装 ZendGuardLoader:(加速 Nginx 处理速度,可省略)

[root@mysql /]# tar zxf zend-loader-php5.5-linux-x86_64_update1.tar.gz   -C /usr/src/
[root@mysql /]# cd  /usr/src/zend-loader-php5.5-linux-x86_64/
[root@mysql zend-loader-php5.5-linux-x86_64]# cp ZendGuardLoader.so /usr/local/php5/lib/php/                 # 将 zend 文件复制到PHP目录中
[root@mysql /]# vim /usr/local/php5/php.ini             # 写入以下两行
...............
zend_extension=/usr/local/php5/lib/php/ZendGuardLoader.so
zend_loader.enable=1

配置 Nginx 支持 PHP环境:
若要让Nginx能够解析PHP网页,有两种方法可以选择:其一,充当中介,将访问PHP页面的web请求转交给其他服务器(LAMP)去处理;其二,通过使用PHP的FPM模块来调用本机的PHP环境。
1、启用php-pfm进程(该进程默认监听9000端口):

[root@mysql ~]# cd /usr/local/php5/etc/
[root@mysql etc]# cp php-fpm.conf.default php-fpm.conf       
[root@mysql etc]# useradd -M -s /sbin/nologin php            # 创建 PHP 用户
[root@mysql 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@mysql /]# /usr/local/sbin/php-fpm             # 启动 fpm 服务
[root@mysql /]# killall php-fpm                         # 停止服务

在 php-fpm.conf 配置文件中,pid配置项指出的PID信息的存放位置,对应的实际路径为:/usr/local/php5/var/run/php-fpm.pid,根据上面的配置,可以修改Nginx服务脚本,以便在启动/停止Nginx服务器时将php-fpm进程也自动启动/停止。

[root@mysql /]# vim /etc/init.d/nginx 
#!/bin/bash
# chkconfig: - 99 20
PROG="/usr/local/nginx/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@mysql /]# systemctl daemon-reload          #重新加载守护进程,否则会有提示信息
[root@mysql /]# systemctl restart nginx             # 重启服务以确认脚本无误
[root@mysql /]# netstat -anpt | grep 9000
tcp        0      0 127.0.0.1:9000          0.0.0.0:*               LISTEN      64964/php-fpm: mast 
[root@mysql /]# netstat -anpt | grep 80
tcp        0      0 0.0.0.0:80              0.0.0.0:*               LISTEN      64961/nginx: master

经过上面配置,Nginx和fpm就被绑在一块了,一旦启动或关闭Nginx服务,php-fpm程序也会随之启动或关闭,不需要额外再启动或关闭php-fpm。

配置Nginx支持PHP解析:

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

两种方法的配置项都可以在配置文件的末尾找到相应的模板。复制到相应位置,稍加修改即可用。

对于第一种方法,可以不执行上面php-fpm的配置(转交给其他web服务器处理,使用如下配置语句):

[root@localhost etc]# vim /usr/local/nginx/conf/nginx.conf
                   ...................#省略部分内容
server {
                ...................
location ~ \.php$ {         #访问.php页面的配置段
            proxy_pass   http://192.168.1.20:80;            # apache服务器的监听地址
        }
             ...................   // 省略部分内容
}

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

server  {
.....................
location ~ \.php$ {
                root /var/www/test1;
                fastcgi_index  index.php;
                fastcgi_pass   127.0.0.1:9000;
                include        fastcgi.conf
        }
[root@mysql /]# vim /var/www/test1/test.php         # 编写测试网页

LNMP架构的搭建及应用部署方法
LNMP 平台部署 web 应用:
这里我使用的是 Discuz!,一个社区论坛。可在 http://www.discuz.net 官方下载。
部署程序代码:

[root@mysql /]# unzip Discuz_X3.3_SC_UTF8.zip        
[root@mysql /]# mv upload/ /var/www/test1/bbs            # 将 upload 目录放在网站根目录下
[root@mysql tt]# chown -R php:php /var/www/test1/bbs/       # 修改属主属组

创建数据库:

[root@mysql /]# mysql -u root -p 
Enter password:                     // 输入密码
mysql> create database bbs;                     // 创建一个专属数据库
mysql> grant all on bbs.* to runbbs@localhost identified by 'pwd123';       // 设置权限
和管理员用户

安装 Discuz:
LNMP架构的搭建及应用部署方法
LNMP架构的搭建及应用部署方法
LNMP架构的搭建及应用部署方法
LNMP架构的搭建及应用部署方法
LNMP架构的搭建及应用部署方法
LNMP架构的搭建及应用部署方法
访问www.test1.com/bbs/admin.php 登录到后台看看:
LNMP架构的搭建及应用部署方法
LNMP架构的搭建及应用部署方法

相关内容

热门资讯

警察涉嫌猥亵他人,切莫等被害人... 针对媒体报道民警牛某某涉嫌猥亵他人一事,亳州市公安局发布情况通报表示,已“立即成立调查组,全面开展调...
哈萨克斯坦总统说了一番话,普京... 资料图看了视频,确实是非常罕见一幕。一个国家领导人,当面规劝普京结束战争。我看到,这番话一出口,普京...
台风“红霞”成为今年以来登陆我... 根据中央气象台、广东省气象台消息,今年第12号台风“红霞”的中心已于今天(26日)3时50分前后在广...
业界热议AI安全护栏升级路径 ● 本报记者 郑萃颖 近年来,人工智能(AI)技术快速发展,相关安全问题也引发各界关注。接受中国证券...
RISC-V:当开源架构遇见智... 2026年,RISC-V正站在新的历史节点。智能体的崛起、数据中心算力范式的重构,RVA23、RIS...
网络电视不小心按成蓝屏了 1、重新检查并连接好电视机的信号源输入即可。2、检测电视机的信号源输入,如线路、接口松动,则重新连接...
问问海尔的冰箱款式怎么样 最佳回答 海尔冰箱的款式还是很多的,你可以去专卖店看一看,也可以去京东上或者是天猫上看一看,京东和天...
美的中央空调面板按了没反应 美的中央空调面板按了没反应可能有多种原因,以下是一些常见的解决方法:1. 检查电源:确保空调面板已接...
爆料称一款小阔直板新机定档明年... 继华为陆续推出两款阔折叠手机产品之后,网间曾曝光过关于 @OPPO 将推出自家首款阔直板机的消息。不...
中央空调按了开关没有反应是怎么... 原因可能是因为中央空调在使用前忘记通电或者连接空调的电路老化,接触不良,可以尝试将电源通电或者更换新...