前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >LNMP 架构的搭建及应用部署

LNMP 架构的搭建及应用部署

作者头像
小手冰凉
发布2019-09-10 10:44:36
8430
发布2019-09-10 10:44:36
举报
文章被收录于专栏:小手冰凉小手冰凉

LAMP 平台作为目前应用最为广泛的网站服务器架构,其中的“A”对应着web服务软件的Apache ,但是,现在随着时间的推移,越来越多的企业开始使用Nginx这匹黑马,LNMP或LEMP架构也收到越来越多的运维人员的青睐。

废话不说,直接开整。

一、准备工作:

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

二、安装 PHP 解析环境:

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

代码语言:javascript
复制
[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                  #配置及编译安装(过程较长)

安装完毕后的调整:

代码语言:javascript
复制
[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 处理速度,可省略)

代码语言:javascript
复制
[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端口):

代码语言:javascript
复制
[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进程也自动启动/停止。

代码语言:javascript
复制
[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
代码语言:javascript
复制
[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服务器处理,使用如下配置语句):

代码语言:javascript
复制
[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进程),配置如下:

代码语言:javascript
复制
server  {
.....................
location ~ \.php$ {
                root /var/www/test1;
                fastcgi_index  index.php;
                fastcgi_pass   127.0.0.1:9000;
                include        fastcgi.conf
        }
代码语言:javascript
复制
[root@mysql /]# vim /var/www/test1/test.php         # 编写测试网页
<?php
$link=mysqli_connect('localhost','root','pwd123');
if($link) echo "恭喜你,数据库连接成功!!!";
mysqli_close($link);
?>

LNMP 平台部署 web 应用:

这里我使用的是 Discuz!,一个社区论坛。可在 http://www.discuz.net 官方下载。

部署程序代码:

代码语言:javascript
复制
[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/       # 修改属主属组

创建数据库:

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

安装 Discuz:

访问www.test1.com/bbs/admin.php 登录到后台看看:

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2019-09-05 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
Discuz!
Discuz! 是全球领先的论坛社区应用系统,自2001年6月面世以来,服务超过300多万网站用户案例。现在,借助 Discuz! ,您不仅可以使用搭建传统的社区论坛,更可轻易的构建面向移动互联网时代的私域流量和社交圈子类的应用,并快速启动业务。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档