LNMP分离部署

1)实验准备

服务器分配

主机ip角色
host1192.168.20.113nginx
host2192.168.20.101php
host3192.168.20.135mysql

2)操作部分

host1源码安装nginx

    1  useradd -M -u 777 -s /sbin/nologin nginx
    2  tar -zxf nginx-1.15.4.tar.gz 
    3  cd nginx-1.15.4/
    5  yum -y install gcc gcc-c++ pcre-devel zlib-devel openssl-devel
    6  ./configure --prefix=/usr/local/nginx --user=nginx --group=nginx --with-http_stub_status_module
    7  make
    8  make install
    9  ln -s /usr/local/nginx/sbin/nginx  /usr/sbin/

host2 源码安装php

   10  yum -y install gd libxml2-devel libjpeg-devel libpng-devel
   11  tar -zxf php-7.2.0.tar.gz 
   12  cd php-7.2.0/
   13   ./configure --prefix=/usr/local/php --with-gd --with-zlib --with-pdo-mysql=mysqlnd --with-mysqli=/usr/local/mysql/bin/mysql_config --with-config-file-path=/usr/local/php --enable-mbstring --enable-fpm --with-jpeg-dir=/usr/lib
   14  make -j8 && make install
   15  cp php.ini-development /usr/local/php/php.ini
   16  vim /usr/local/php.ini 
      修改192行 short_open_tag = On
   18  cp sapi/fpm/init.d.php-fpm /etc/init.d/php-fpm
   19  chmod +x /etc/init.d/php-fpm 
   20  cd /usr/local/php/etc/
   21  cp php-fpm.conf{.default,}
   22  vim php-fpm.conf
      17行取消注释 打开pid文件
      48行取消注释并修改 emergency_restart_threshold = 30 表示子进程故障退出的时候,经过规定的重启时间间隔后,php会启动多少个子程序
      56行取消注释并修改 emergency_restart_interval = 1 子程序故障退出后重启的时间间隔
      62行取消注释并修改 process_control_timeout = 20 表示子进程等待master发送信号的超时时间
      69行取消注释 并修改为50   process.max = 50 表示可以fork出的最多子进程数量
      85行1取消注释并修改 rlimit_files = 65536 表示master程序能打开的文件最大数量 默认值
      90行取消注释并修改 rlimit_core = 65536 表示master能打开的文件数量 最大值
      100行取消注释 events.mechanism = epoll 表示php使用的模型
      #SIGSEGV是当一个进程执行了一个无效的内存引用,或发生段错误时发送给它的信号
      #SIGBUS是指硬件故障或内存不足时发送的信号
   25  cd /usr/local/php/etc/php-fpm.d/
   26  cp www.conf.default www.conf
   27  ln -s /usr/local/php/bin/* /usr/bin/
   28  ln -s /usr/local/php/sbin/* /usr/sbin/
      

host3源码安装mysql

需要先卸载本机已有的mysql或者mariadb

   36  yum -y install bison cmake ncurses-devel
   37  tar -zxf mysql-5.5.22.tar.gz 
   38  cd mysql-5.5.22/
   39  cmake -DCMAKE_INSTALL_PREFIX=/usr/local/mysql -DSYSCONFDIR=/etc -DDEFAULT_CHARSET=utf8 -DDEFAULT_COLLATION=utf8_general_ci -DWITH_EXTRA_CHARSETS=all
   40  make && make install
   41  useradd -M -s /sbin/nologin mysql
   42  chown -R mysql:mysql /usr/local/mysql/
   43  ln -s /usr/local/mysql/lib/libmysqlclient.so.18 /usr/lib/libmysqlclient.so.18
   44  cd support-files/
   45  cp my-large.cnf /etc/my.cnf
   46   cp mysql.server /etc/init.d/mysqld
   47  vim /etc/init.d/mysqld
       basedir=/usr/local/mysql
      datadir=/usr/local/mysql/data
   48  chmod +x /etc/init.d/mysqld 
   49  /usr/local/mysql/scripts/mysql_install_db --defaults-file=/etc/my.cnf --basedir=/usr/local/mysql/ --datadir=/usr/local/mysql/data --user=mysql
   53  ln -s /usr/local/mysql/bin/* /usr/bin/
   54  /etc/init.d/mysqld start
   55  mysqladmin -uroot password 123456

配置nfs服务(nfs服务放在php主机上)

host2和host3都添加nginx用户,且uid和host1相同
# useradd -M -u 777 -s /sbin/nologin nginx

host1 host2 host3均创建/www作为nfs的输出目录 并设置属主属组
# mkdir /www
# chown -R nginx:nginx /www

配置nfs配置文件
# vim /etc/exports
/www 192.168.20.0/24(rw,no_root_squash,sync)

启动nfs服务
# systemctl start nfs

在host1上查看nfs输出目录
# showmount -e 192.168.20.101
Export list for 192.168.20.101:
/www 192.168.20.0/24

host1 和host3都挂载nfs的输出目录
# mount -t nfs 192.168.20.101:/www /www

修改nginx配置文件

# vim /usr/local/nginx/conf/nginx.conf
  44行,默认location里,网页根目录改为/www
  45行,默认的location里,在index.html前边加上index.php
  65-71行的location取消注释 修改如下
        location ~ \.php$ {
            root           /www; #网页目录改为/www
            fastcgi_pass   192.168.20.101:9000; #改为host2的ip
            fastcgi_index  index.php;
            fastcgi_param  SCRIPT_FILENAME  /scripts$fastcgi_script_name;
            include        fastcgi.conf; #修改为fastcgi.conf
        }

修改php配置文件

# vim /usr/local/php/etc/php-fpm.d/www.conf
  23-24行,用户和组,改为nginx
  user = nginx
  group = nginx
  36行 监听地址和端口改为自己的ip  listen = 192.168.20.101:9000
  47-49行取消注释并修改
  listen.owner = nginx
  listen.group = nginx
  listen.mode = 0660
  62行取消注释并修改 listen.allowed_clients = 192.168.20.113 如果有多个,用逗号间隔,这里写nginx的ip
  注意96行: pm = dynamic,
  107行 pm.max_children = 50
  112行 pm.start_servers = 20
  117行 pm.min_spare_servers = 5
  122行 pm.max_spare_servers = 35
  127行取消注释 pm.process_idle_timeout = 10s;


启动nginx和php

host1 启动nginx
# nginx -t
    nginx: the configuration file /usr/local/nginx/conf/nginx.conf syntax is ok
    nginx: configuration file /usr/local/nginx/conf/nginx.conf test is successful
# nginx

host2启动php
# /etc/init.d/php-fpm start
Starting php-fpm  done

测试nginx与php的整合是否OK

在host1上编辑网页文件
# vim /www/test1.php
<?php
phpinfo();
?>

访问测试
# firefox 127.0.0.1/test1.php
可以看到php页面,证明nginx与php连接没有问题

在这里插入图片描述

测试php与mysql连接是否OK

host3授权php主机进行连接
# mysql -uroot -p123456
mysql> grant all on *.* to 'root'@'192.168.20.101' identified by '123456';
Query OK, 0 rows affected (0.01 sec)

mysql> flush privileges;
Query OK, 0 rows affected (0.00 sec)

host1上编辑测试页面
# vim /www/test2.php
<?php
$con = new mysqli('192.168.20.135','root','123456','test');
if(!$con)
    die("connect error:".mysqli_connect_error());
else
    echo "success connect mysql\n";
?>

如果能看到下面的页面,证明没有问题

在这里插入图片描述

在LNMP平台上进行应用的安装(这里安装discuz论坛)

在host1上操作,如下
# unzip ComsenzDiscuz-DiscuzX-master.zip 
# cp -r DiscuzX/upload/ /www
# chmod -R 777 /www/upload/
# firefox 127.0.0.1/upload/install/index.php
具体安装页面如下图操作

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
至此,LNMP分离部署完成

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值