LNMP

LNMP的实现

LNMP简介

  • nginx实现动静分离:php程序交给后端服务器处理
  • PHP程序一般用于公司官网主页的实现
  • nginx基于请求的uri中,请求资源后缀名为.php的资源,将通过fastcgi协议交给php-fpm程序处理php请求。
  • nginx在作为反向代理服务器时,所events中所定义单个工作进程最大连接数需要/2,因为nginx需要和用户保持一个连接又需要和php-fpm程序保持一个连接
  • nginx+php有两种实现方式:
    ①nginx和php搭建在一台主机上
    ②nginx和php搭建在各自的服务器上
    ③结构示意图如下所示:
  • 一般使用将nginx和php搭建在同一主机
    因此此处实现lnmp时,也是将nginx和php-fpm搭建在同一主机(因为以WordPress为例)。由于WordPress将静态程序和php程序文件放置在一起的,当使用nginx和php放置在不同主机时,需要将WordPress程序文件各自在nginx服务器和php服务器各存放一份。

实验规划:

  • OS:centos7.6

  • hostA nginx+php-fpm :LNP
    ip:192.168.38.17

  • hostB mariadb:M
    ip:192.168.38.88

  • 搭建好LNMP之后,实现WordPress

nginx的源码安装

1.编译安装步骤:

  • ①获取源码、解压缩、查编译的配置选项帮助
[root@nginx ~]# cd /usr/local/src/   源码放置路径
[root@nginx src]# wget http://nginx.org/download/nginx-1.16.1.tar.gz
[root@nginx src]# tar xf nginx-1.16.1.tar.gz
[root@nginx src]# cd nginx-1.16.1/
[root@nginx nginx-1.16.1]# ./configure --help
  • ②configure
    ==>检查编译环境
    ==>生成Makefile文件
编译前需要准备编译环境
[root@nginx nginx-1.16.1]# yum install gcc openssl-devel pcre-devel

[root@nginx nginx-1.16.1]#./configure --prefix=/apps/nginx --user=nginx --group=nginx --with-http_ssl_module --with-http_v2_module --with-http_realip_module --with-http_stub_status_module --with-http_gzip_static_module --with-pcre --with-stream --with-stream_ssl_module --with-stream_realip_module
  • ③make
    ==>根据Makefile生成指定模块

  • ④make install
    ==>copy 模块到指定目录

  • ⑤创建Nginx用户
    ==>上面编译时指定了Nginx用户,但是并不会自动创建

[root@nginx nginx-1.16.1]#  useradd nginx -s /sbin/nologin -u 2000
[root@nginx nginx-1.16.1]# id nginx
uid=2000(nginx) gid=2000(nginx) groups=2000(nginx)
  • ⑥修改配置文件
[root@nginx ~]# vim /apps/nginx/conf/nginx.conf
    user nginx;将启动账户改为nginx
  • ⑦启动
[root@nginx ~]# /apps/nginx/sbin/nginx


注:为方便后续,将/apps/nginx/sbin/(nginx编译安装的二进制程序路径)加入PATH环境中
[root@nginx ~]# cp /apps/nginx/sbin/nginx /usr/local/bin/
[root@nginx ~]# echo 'PATH=/apps/nginx/sbin/:$PATH' > /etc/profile.d/nginx.sh

fpm-php的源码安装

1.提供编译安装环境

  • #yum install -y libxml2-devel bzip2-devel libmcrypt-devel (epel)

2.解压缩
# tar xf php-7.3.10.tar.xz

3.切换目录
# cd php-7.3.10/

4.configure

  • #./configure --prefix=/apps/php --enable-mysqlnd --with-mysqli=mysqlnd --with-pdo-mysql=mysqlnd --with-openssl --with-freetype-dir --with-jpeg-dir --with-png-dir --with-zlib --with-libxml-dir=/usr --with-config-file-path=/etc --with-config-file-scan-dir=/etc/php.d --enable-mbstring --enable-xml --enable-sockets --enable-fpm --enable-maintainer-zts --disable-fileinfo

5.make && make install

  • #make && make install

6.复制php主配置文件 /etc/php.ini

  • #cd /data/php-7.3.10 这是在源码解压缩安装完成以后的php解压目录中
  • #cp php.ini-production /etc/php.ini

7.复制服务启动的service文件

  • #cd /data/php-7.3.10
  • #cp sapi/fpm/php-fpm.service /usr/lib/systemd/system/

8.复制php-fpm.conf文件

  • #cd /apps/php/etc/
  • #mv php-fpm.conf.default php-fpm.conf

9.复制www.conf配置文件

  • #cd /apps/php/etc/
  • #mv php-fpm.d/www.conf.default php-fpm.d/www.conf

10.修改www.conf配置文件

  • #php-fpm.d/www.conf
    user = nginx
    group = nginx

11.启动php-fpm程序

  • #systemctl start php-fpm.service

mariadb的二进制安装

(1)准备用户
    # groupadd -g 27 -o -r mysql
    # useradd -s /sbin/nologin -r -d /data/mysql -g 27 -u 27 -c "mysql server" mysql

(2)准备数据目录
    # mkdir /data/mysql -p
    # chown mysql.mysql /data/mysql/

(3)解压缩
    # tar xf mariadb-10.2.27-linux-x86_64.tar.gz -C /usr/local/
    # cd /usr/local/
    # ln -s ./mariadb-10.2.27-linux-x86_64/ mysql
    # chown -R root.root mysql/

(4)准备配置文件
    # cp  -b support-files/my-huge.cnf  /etc/my.cnf 
    # vim /etc/my.cnf
        [mysqld]
        datadir=/data/mysql
        skip_name_resolve=on 

(5)创建数据库文件
    # yum install -y libaio
    # /usr/local/mysql/scripts/mysql_install_db --datadir=/data/mysql --user=mysql

(6)准备服务脚本,并启动服务
    # cp /usr/local/mysql/support-files/mysql.server /etc/init.d/mysqld
    # chkconfig --add mysqld

(7)PATH路径
    # echo 'PATH=/usr/local/mysql/bin:$PATH' >/etc/profile.d/mysql.sh
    # . /etc/profile.d/mysql.sh

==>二进制安装mariadb完成

wordpress的实现配置

1)nginx代理php程序配置

location ~ \.php$ {
    root /data/nginx/php/;   #针对php程序的目录
    fastcgi_pass 127.0.0.1:9000;
    fastcgi_index index.php;
#   fastcgi_param SCRIPT_FILENAME /data/nginx/php$fastcgi_script_name;
    fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
    include fastcgi_params;
}

2)数据库配置:

  • 建库和授权
mysql> create database wordpress;
mysql> grant all on wordpress.* to wordpress@'192.168.38.%' identified by 'centos';

3)wordpress访问数据库

# cd /var/www/html/wordpress/
# cp wp-config-sample.php wp-config.php
# vim wp-config.php 更改以下几项:
    /** WordPress数据库的名称 */
    define( 'DB_NAME', 'wordpress' );

    /** MySQL数据库用户名 */
    define( 'DB_USER', 'wordpress' );

    /** MySQL数据库密码 */
    define( 'DB_PASSWORD', 'centos' );

    /** MySQL主机 */
    define( 'DB_HOST', '192.168.38.88' );

实现总结:目前我的学习阶段仅能实现将php程序和静态资源文件分开存放,例如wordpress是一个业务的程序(包含动态和静态程序文件),没能实现将php程序和对应的静态资源文件根据这是一个业务而将其放置于一个wordpress目录下。上述的实验即:需要将wordpress中的php程序放置于两份:静态资源放置于/apps/nginx/html/ PHP资源放置于/data/nginx/php/。

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值