搭建服务

在这里插入图片描述

搭建该服务的所需环境

  1. 先行搭建LNMP-All in One
    (IP:188.188.188.180)
  2. 搭建分离LNMP
    (php-IP:188.188.188.188;nginx-ip:188.188.188.189;mysql-ip:188.188.188.190)
  3. 搭建两台静态apache服务器
    (apache-1-IP:172.169.25.253;apache-2-IP:172.169.25.254)
  4. 搭建Nginx负载均衡,配置文件设置IP不可访问,动态为两组LNMP,静态为俩组apache。与三个网段建立连接
    (Nginx-IP-1:192.168.1.2 、Nginx-IP-2:188.188.188.250、Nginx-IP-3:172.169.25.250)
  5. DNS服务配置正向解析
    (DNS-IP-1:192.168.1.10)
  6. 客户端访问
    (IP:192.168.1.20)

实现思路

1.在搭建好所有环境之后,将两组LNMP放在同一个网段中(188.188.188.0),配置页面全部无误,放行端口,相互访问无误。
它的作用是提供动态页面
2. 搭建两台apache服务器后(172.169.25.0),配置静态页面内容。
它的作用是提供静态页面
3. 搭建Nginx负载均衡服务器后,设置三个网段,分别连接三种不同的服务,将这个服务配置与两种页面链接的内容,重启服务,放行端口后,进行访问,无误后进行下一步。
它的作用是在其他网段访问时,提供这两种不同网段的不同页面
4. 搭建DNS服务器,设置正向解析,本机使用域名访问,成功后便可使用客户端通过域名访问。
它的作用是将Nginx负载均衡的IP解析成为域名,使得客户端即使不使用IP便可访问到Nginx负载均衡服务器

搭建步骤

一、搭建LNMP-All in One

先预先装上所需要的环境和包

[root@zjx-0703-LNMP ~]# yum -y install gcc* ncurses-devel bison cmake
[root@zjx-0703-LNMP ~]# yum -y install gd libxml2-devel libjpeg-devel libpng-devel 
[root@zjx-0703-LNMP ~]# yum -y install pcre* openssl*
  • mysql安装

[root@zjx-0703-LNMP ~]# tar -zxvf mysql-5.5.22.tar.gz -C /usr/src/
[root@zjx-0703-LNMP ~]# cd /usr/src/mysql-5.5.22/
[root@zjx-0703-LNMP mysql-5.5.22]# cmake  -DCMAKE_INSTALL_PREFIX=/usr/local/mysql  -DSYSCONFDIR=/etc/  -DDEFAULT_CHARSET=utf8  -DDEFAULT_COLLATION=utf8_general_ci  -DWITH_EXTRA_CHARSETS=all
[root@zjx-0703-LNMP mysql-5.5.22]# make
[root@zjx-0703-LNMP mysql-5.5.22]# make install
[root@zjx-0703-LNMP mysql-5.5.22]# ln -s /usr/local/mysql/bin/* /usr/local/bin/
[root@zjx-0703-LNMP mysql-5.5.22]# useradd -s /sbin/nologin -M mysql
[root@zjx-0703-LNMP mysql-5.5.22]# chown -R mysql:mysql /usr/local/mysql/
[root@zjx-0703-LNMP mysql-5.5.22]# cp /usr/local/mysql/support-files/my-medium.cnf /etc/my.cnf
[root@zjx-0703-LNMP mysql-5.5.22]# cd /usr/local/mysql/
[root@zjx-0703-LNMP mysql]#  scripts/mysql_install_db --user=mysql --basedir=/usr/local/mysql --datadir=/usr/local/mysql/data
# 命令结果显示两个OK,成功
Installing MySQL system tables...
OK
Filling help tables...
OK
......

# 在profile文件中加入MySQL变量,并刷新内容,使其生效
[root@zjx-0703-LNMP mysql]# vim /etc/profile
PATH=$PATH:/usr/local/mysql/bin
[root@zjx-0703-LNMP mysql]# source /etc/profile

[root@zjx-0703-LNMP mysql]# cp support-files/mysql.server /etc/rc.d/init.d/mysqld
[root@zjx-0703-LNMP mysql]# chmod +x /etc/rc.d/init.d/mysqld 
[root@zjx-0703-LNMP mysql]# chkconfig --add mysqld
[root@zjx-0703-LNMP mysql]# systemctl restart mysqld
  • 安装php
# 安装三个所需依赖包
[root@zjx-0703-LNMP mysql]# cd
[root@zjx-0703-LNMP ~]# tar zxvf libmcrypt-2.5.8.tar.gz -C /usr/src/
[root@zjx-0703-LNMP ~]# cd /usr/src/libmcrypt-2.5.8/
[root@zjx-0703-LNMP libmcrypt-2.5.8]# ./configure && make && make install
[root@zjx-0703-LNMP libmcrypt-2.5.8]# ln -s /usr/local/lib/libmcrypt.* /usr/lib
[root@zjx-0703-LNMP libmcrypt-2.5.8]# cd
[root@zjx-0703-LNMP ~]# tar zxvf mhash-0.9.9.9.tar.gz -C /usr/src/
[root@zjx-0703-LNMP ~]# cd /usr/src/mhash-0.9.9.9/
[root@zjx-0703-LNMP mhash-0.9.9.9]# ./configure && make -j 4 && make install
[root@zjx-0703-LNMP mhash-0.9.9.9]#  ln -s /usr/local/lib/libmhash..* /usr/lib
[root@zjx-0703-LNMP mhash-0.9.9.9]#  cd
[root@zjx-0703-LNMP ~]#  tar zxvf mcrypt-2.6.8.tar.gz -C /usr/src/
[root@zjx-0703-LNMP ~]# cd /usr/src/mcrypt-2.6.8/
[root@zjx-0703-LNMP mcrypt-2.6.8]# export LD_LIBRARY_PATH=/usr/local/lib:$LD_LIBRARY_PATH
[root@zjx-0703-LNMP mcrypt-2.6.8]# ./configure && make -j 4 && make install

安装php并进行配置


[root@zjx-0703-LNMP mcrypt-2.6.8]#  cd
[root@zjx-0703-LNMP ~]# tar -zxvf php-5.3.28.tar.gz -C /usr/src/
[root@zjx-0703-LNMP ~]# cd /usr/src/php-5.3.28/
[root@zjx-0703-LNMP ~]# ./configure  --prefix=/usr/local/php  --with-gd --with-zlib  --with-mysql=mysqlnd  --with-pdo-mysql=mysqlnd  --with-mysqli=mysqlnd  --with-config-file-path=/usr/local/php  --enable-fpm  --enable-mbstring  --with-jpeg-dir=/usr/lib
[root@zjx-0703-LNMP ~]# make && make install
[root@zjx-0703-LNMP php-5.3.28]# cp php.ini-development /usr/local/php/php.ini

# php.ini文件中找到并修改以下内容
[root@zjx-0703-LNMP php-5.3.28]# vim /usr/local/php/php.ini 
default_charset = "utf-8"
short_open_tag = On
[root@zjx-0703-LNMP php-5.3.28]# cp /usr/src/php-5.3.28/sapi/fpm/init.d.php-fpm /etc/init.d/php-fpm
[root@zjx-0703-LNMP php-5.3.28]# chmod +x /etc/init.d/php-fpm 
[root@zjx-0703-LNMP php-5.3.28]# chkconfig --add php-fpm
[root@zjx-0703-LNMP php-5.3.28]# cd /usr/local/php/etc/
[root@zjx-0703-LNMP etc]# cp php-fpm.conf.default php-fpm.conf

# php-fpm.conf配置文件中找到并修改以下内容
[root@zjx-0703-LNMP etc]# vim php-fpm.conf
# 去注释
pid = run/php-fpm.pid
......
# 改参数
pm.max_children = 50
......
pm.start_servers = 20
......
pm.min_spare_servers = 5
......
pm.max_spare_servers = 35

安装php模块

[root@zjx-0703-LNMP etc]# cd
[root@zjx-0703-LNMP ~]# tar zxvf ZendGuardLoader-php-5.3-linux-glibc23-x86_64.tar.gz -C /usr/src/
[root@zjx-0703-LNMP ~]# cd /usr/src/ZendGuardLoader-php-5.3-linux-glibc23-x86_64/php-5.3.x/
[root@zjx-0703-LNMP php-5.3.x]# cp ZendGuardLoader.so /usr/local/php/lib/php/
[root@zjx-0703-LNMP php-5.3.x]# systemctl restart php-fpm
  • 安装nginx
[root@zjx-0703-LNMP ~]# tar zxvf nginx-1.6.2.tar.gz -C /usr/src/
[root@zjx-0703-LNMP ~]#  cd /usr/src/nginx-1.6.2/
[root@zjx-0703-LNMP nginx-1.6.2]#  ./configure --prefix=/usr/local/nginx --user=nginx --group=nginx --with-http_ssl_module --with-http_spdy_module --with-http_stub_status_module --with-pcre
[root@zjx-0703-LNMP nginx-1.6.2]#  make && make install
[root@zjx-0703-LNMP nginx-1.6.2]# useradd -r -s /sbin/nologin nginx
[root@zjx-0703-LNMP nginx-1.6.2]# cd /usr/local/nginx
[root@zjx-0703-LNMP nginx]# ln -s /usr/local/nginx/sbin/nginx /usr/sbin/

# nginx.conf配置文件中找到并修改以下内容
[root@zjx-0703-LNMP nginx]# vim /usr/local/nginx/conf/nginx.conf
user  nginx;
worker_processes  1;

#error_log  logs/error.log;
error_log  logs/error.log  notice;
#error_log  logs/error.log  info;

pid        logs/nginx.pid;

重启nginx并访问

[root@zjx-0703-LNMP 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
[root@zjx-0703-LNMP nginx]# nginx
[root@zjx-0703-LNMP nginx]# firefox 127.0.0.1

当你看到该内容时,说明你已经安装成功,接下来进行平滑升级
在这里插入图片描述

[root@zjx-0703-LNMP ~]# tar zxvf nginx-1.11.5.tar.gz -C /usr/src/
[root@zjx-0703-LNMP ~]# cd /usr/src/nginx-1.11.5/
[root@zjx-0703-LNMP nginx-1.11.5]# ./configure --prefix=/usr/local/nginx --user=nginx --group=nginx --with-http_stub_status_module && make 

[root@zjx-0703-LNMP nginx-1.11.5]# cd /usr/local/nginx/sbin/
[root@zjx-0703-LNMP sbin]# mv nginx /usr/local/sbin/nginx_old
[root@zjx-0703-LNMP sbin]# cd /usr/src/nginx-1.11.5/objs/
[root@zjx-0703-LNMP objs]# cp nginx /usr/local/nginx/sbin/
[root@zjx-0703-LNMP objs]# kill -USR2 `cat /usr/local/nginx/logs/nginx.pid`

# nginx.conf配置文件找到并修改
[root@zjx-0703-LNMP objs]# vim /usr/local/nginx/conf/nginx.conf
        #location ~ \.php$ {
        #    proxy_pass   http://127.0.0.1;
        #}
        location /status{
                stub_status on;
                access_log off;
        }
        # pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000
        #

[root@zjx-0703-LNMP objs]# nginx -s reload
[root@zjx-0703-LNMP objs]# firefox 127.0.0.1/status

当你看到这个页面说明成功
在这里插入图片描述

  • 接下来开始静态页面的配置
[root@zjx-0703-LNMP ~]# vim /usr/local/nginx/conf/nginx.conf
# 找到并修改下方内容
        # pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000
        #
        location ~ \.php$ {
            root           /www;
            fastcgi_pass   188.188.188.180:9000;
            fastcgi_index  index.php;
            fastcgi_param  SCRIPT_FILENAME  /scripts$fastcgi_script_name;
             include        fastcgi.conf;
        }

        # deny access to .htaccess files, if Apache's document root
        # concurs with nginx's one

# 找到并修改下方内容
[root@zjx-0703-LNMP ~]# vim /usr/local/php/etc/php-fpm.conf

......
user = nginx
group = nginx

......
listen = 188.188.188.180:9000

......


创建文件,并加入页面内容

[root@zjx-0703-LNMP ~]# mkdir /www
[root@zjx-0703-LNMP ~]# vim /www/index.php 
<?php
        echo "zhaha"
?>

访问

[root@zjx-0703-LNMP ~]# firefox 188.188.188.180/index.php

访问成功
在这里插入图片描述

  • 制作与MySQL关联的PHP页面
[root@zjx-0703-LNMP ~]# mysql 
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 5
Server version: 5.5.22 Source distribution

Copyright (c) 2000, 2011, Oracle and/or its affiliates. All rights reserved.

Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
# 给root用户设置密码
mysql> set password=password("123.com");
Query OK, 0 rows affected (0.01 sec)
# 给zzz用户授权,密码为123.com
mysql> grant all on *.* to 'zzz'@'188.188.188.%' identified by '123.com';
Query OK, 0 rows affected (0.01 sec)
# 刷新用户信息
mysql> flush privileges;
Query OK, 0 rows affected (0.00 sec)
mysql> 	exit;

修改页面,并访问

[root@zjx-0703-LNMP ~]# vim /www/index.php 
<?php
        $servername="188.188.188.180";
        $username="zzz";
        $password="123.com";
        $conn=mysqli_connect($servername,$username,$password);
        if(!$conn){
                die("cannot connect!!!");
        }
        echo "success connect-1";
?>

[root@zjx-0703-LNMP ~]# firefox 188.188.188.180/index.php

如果访问不成功重启服务
还是访问不到就重启PC,或者多次给MySQL授权
在这里插入图片描述

  • 之后给php服务器安装扩展库mysqli
[root@zjx-0703-LNMP ~]# cd /usr/local/php/
[root@zjx-0703-LNMP php]# ln -s /usr/local/php/bin/phpize /usr/bin/
[root@zjx-0703-LNMP php]# cd /usr/src/php-5.3.28/ext/mysqli
[root@zjx-0703-LNMP mysqli]# phpize
Configuring for:
PHP Api Version:         20090626
Zend Module Api No:      20090626
Zend Extension Api No:   220090626
# 根据下方内容判断,是否需要安装安装依赖环境
Cannot find autoconf. Please check your autoconf installation and the
$PHP_AUTOCONF environment variable. Then, rerun this script.

[root@zjx-0703-LNMP mysqli]# yum -y install autoconf

[root@zjx-0703-LNMP mysqli]# phpize
Configuring for:
PHP Api Version:         20090626
Zend Module Api No:      20090626
Zend Extension Api No:   220090626
# 这种结果为可编译配置了
configure.in:3: warning: prefer named diversions
configure.in:3: warning: prefer named diversions
[root@zjx-0703-LNMP mysqli]# ./configure --with-php-config=/usr/local/php/bin/php-config --with-mysqli=/usr/local/mysql/bin/mysql_config

[root@zjx-0703-LNMP mysqli]# ./configure --with-php-config=/usr/local/php/bin/php-config --with-mysqli=mysqlnd
[root@zjx-0703-LNMP mysqli]# make

[root@zjx-0703-LNMP mysqli]# make test

[root@zjx-0703-LNMP mysqli]# make install

[root@zjx-0703-LNMP mysqli]# vim /usr/local/php/php.ini 

/usr/local/php/php.ini 文件中加入以下内容
在这里插入图片描述
重启服务,并访问

[root@zjx-0703-LNMP mysqli]# systemctl restart php-fpm
[root@zjx-0703-LNMP mysqli]# nginx -s reload
[root@zjx-0703-LNMP mysqli]# firefox 188.188.188.180/index.php

放行服务

[root@zjx-0703-PHP ~]# firewall-cmd --add-service=msql
success
[root@zjx-0703-PHP ~]# firewall-cmd --add-service=mysql --permanent 
success

[root@zjx-0703-PHP ~]# firewall-cmd --zone=public --add-port=9000/tcp
success
[root@zjx-0703-PHP ~]# firewall-cmd --zone=public --add-port=9000/tcp --permanent 
success

[root@zjx-0703-PHP ~]# firewall-cmd --zone=public --add-port=80/tcp
success
[root@zjx-0703-PHP ~]# firewall-cmd --zone=public --add-port=80/tcp --permanent 
success

[root@zjx-0703-PHP ~]# firewall-cmd --zone=public --add-port=3306/tcp
success
[root@zjx-0703-PHP ~]# firewall-cmd --zone=public --add-port=3306/tcp --permanent 
success

至此,整合的LNMP完成

二、分离部署LNMP

与整合LNMP操作相同

  • nginx
[root@zjx-0703-Nginx ~]#  yum -y install pcre* openssl*
[root@zjx-0703-Nginx ~]#  tar zxvf nginx-1.6.2.tar.gz -C /usr/src/
[root@zjx-0703-Nginx ~]#  cd /usr/src/nginx-1.6.2/
[root@zjx-0703-Nginx nginx-1.6.2]#  ./configure --prefix=/usr/local/nginx --user=nginx --group=nginx --with-http_ssl_module --with-http_spdy_module --with-http_stub_status_module --with-pcre
[root@zjx-0703-Nginx nginx-1.6.2]# make && make install
[root@zjx-0703-Nginx ~]# useradd -r -s /sbin/nologin nginx
[root@zjx-0703-Nginx ~]# cd /usr/local/nginx
[root@zjx-0703-Nginx nginx]# ln -s /usr/local/nginx/sbin/nginx /usr/sbin/
[root@zjx-0703-Nginx nginx]# vim /usr/local/nginx/conf/nginx.conf
user  nginx;
worker_processes  1;

#error_log  logs/error.log;
error_log  logs/error.log  notice;
#error_log  logs/error.log  info;

pid        logs/nginx.pid;
[root@zjx-0703-Nginx 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
[root@zjx-0703-Nginx nginx]# nginx

平滑升级

[root@zjx-0703-Nginx ~]# tar zxvf nginx-1.11.5.tar.gz -C /usr/src/
[root@zjx-0703-Nginx ~]# cd /usr/src/nginx-1.11.5/
[root@zjx-0703-Nginx nginx-1.11.5]# ./configure --prefix=/usr/local/nginx --user=nginx --group=nginx --with-http_stub_status_module && make 
[root@zjx-0703-Nginx ~]# cd /usr/local/nginx/sbin/
[root@zjx-0703-Nginx sbin]# mv nginx /usr/local/sbin/nginx_old
[root@zjx-0703-Nginx sbin]# cd /usr/src/nginx-1.11.5/objs/
[root@zjx-0703-Nginx objs]# cp nginx /usr/local/nginx/sbin/
[root@zjx-0703-Nginx objs]# kill -USR2 `cat /usr/local/nginx/logs/nginx.pid`

  • 安装MySQL
[root@zjx-0703-MySQL ~]# yum -y install gcc* ncurses-devel bison cmake
[root@zjx-0703-MySQL ~]# tar -zxvf mysql-5.5.22.tar.gz -C /usr/src/
[root@zjx-0703-MySQL ~]# cd /usr/src/mysql-5.5.22/
[root@zjx-0703-MySQL mysql-5.5.22]# cmake  -DCMAKE_INSTALL_PREFIX=/usr/local/mysql  -DSYSCONFDIR=/etc/  -DDEFAULT_CHARSET=utf8  -DDEFAULT_COLLATION=utf8_general_ci  -DWITH_EXTRA_CHARSETS=all
[root@zjx-0703-MySQL mysql-5.5.22]# make
[root@zjx-0703-MySQL mysql-5.5.22]# make install
[root@zjx-0703-MySQL mysql-5.5.22]# ln -s /usr/local/mysql/bin/* /usr/local/bin/
[root@zjx-0703-MySQL mysql-5.5.22]# useradd -s /sbin/nologin -M mysql
[root@zjx-0703-MySQL mysql-5.5.22]# chown -R mysql:mysql /usr/local/mysql/
[root@zjx-0703-MySQL mysql-5.5.22]# cp /usr/local/mysql/support-files/my-medium.cnf /etc/my.cnf
cp:是否覆盖"/etc/my.cnf"? y
[root@zjx-0703-MySQL mysql-5.5.22]# cd /usr/local/mysql/
[root@zjx-0703-MySQL mysql]# scripts/mysql_install_db --user=mysql --basedir=/usr/local/mysql --datadir=/usr/local/mysql/data
Installing MySQL system tables...
OK
Filling help tables...
OK

[root@zjx-0703-MySQL mysql]# vim /etc/profile
PATH=$PATH:/usr/local/mysql/bin
[root@zjx-0703-MySQL mysql]# source /etc/profile
[root@zjx-0703-MySQL mysql]# cp support-files/mysql.server /etc/rc.d/init.d/mysqld
[root@zjx-0703-MySQL mysql]# chmod +x /etc/rc.d/init.d/mysqld 
[root@zjx-0703-MySQL mysql]# chkconfig --add mysqld
[root@zjx-0703-MySQL mysql]# systemctl restart mysqld
  • 安装PHP
[root@zjx-0703-PHP ~]# yum -y install gd libxml2-devel libjpeg-devel libpng-devel 
[root@zjx-0703-PHP mysql]# cd
[root@zjx-0703-PHP ~]# tar zxvf libmcrypt-2.5.8.tar.gz -C /usr/src/
[root@zjx-0703-PHP ~]# cd /usr/src/libmcrypt-2.5.8/
[root@zjx-0703-PHP libmcrypt-2.5.8]# ./configure && make && make install
[root@zjx-0703-PHP libmcrypt-2.5.8]# ln -s /usr/local/lib/libmcrypt.* /usr/lib
[root@zjx-0703-PHP libmcrypt-2.5.8]# cd
[root@zjx-0703-PHP ~]# tar zxvf mhash-0.9.9.9.tar.gz -C /usr/src/
[root@zjx-0703-PHP ~]# cd /usr/src/mhash-0.9.9.9/
[root@zjx-0703-PHP mhash-0.9.9.9]# ./configure && make -j 4 && make install
[root@zjx-0703-PHP mhash-0.9.9.9]#  ln -s /usr/local/lib/libmhash..* /usr/lib
[root@zjx-0703-PHP mhash-0.9.9.9]#  cd
[root@zjx-0703-PHP ~]#  tar zxvf mcrypt-2.6.8.tar.gz -C /usr/src/
[root@zjx-0703-PHP ~]# cd /usr/src/mcrypt-2.6.8/
[root@zjx-0703-PHP mcrypt-2.6.8]# export LD_LIBRARY_PATH=/usr/local/lib:$LD_LIBRARY_PATH
[root@zjx-0703-PHP mcrypt-2.6.8]# ./configure && make -j 4 && make install
[root@zjx-0703-PHP mcrypt-2.6.8]#  cd
[root@zjx-0703-PHP ~]# tar -zxvf php-5.3.28.tar.gz -C /usr/src/
[root@zjx-0703-PHP ~]# cd /usr/src/php-5.3.28/
[root@zjx-0703-PHP php-5.3.28]# ./configure  --prefix=/usr/local/php  --with-gd --with-zlib  --with-mysql=mysqlnd  --with-pdo-mysql=mysqlnd  --with-mysqli=mysqlnd  --with-config-file-path=/usr/local/php  --enable-fpm  --enable-mbstring  --with-jpeg-dir=/usr/lib
[root@zjx-0703-PHP php-5.3.28]# make && make install
[root@zjx-0703-PHP php-5.3.28]# cp php.ini-development /usr/local/php/php.ini
[root@zjx-0703-PHP php-5.3.28]# vim /usr/local/php/php.ini 

至此,三个基本环境安装完成

  • 将三者整合建立连接

PHP与Nginx整合

进入PHP创建nfs共享目录,

[root@zjx-0703-PHP ~]# mkdir /www
[root@zjx-0703-PHP ~]# vim /etc/exports

在文件中插入下面内容

/www 188.188.188.0/24(sync,rw,no_root_squash)

检测

[root@zjx-0703-PHP php-5.3.x]# exportfs -rv
exporting 188.188.188.0/24:/www

重启服务,放行服务

[root@zjx-0703-PHP ~]# systemctl restart nfs
[root@zjx-0703-PHP ~]# systemctl restart rpcbind
[root@zjx-0703-PHP ~]# firewall-cmd --add-service=nfs
success
[root@zjx-0703-PHP ~]# firewall-cmd --add-service=nfs --permanent 
success
[root@zjx-0703-PHP ~]# firewall-cmd --zone=public --add-port=9000/tcp
success
[root@zjx-0703-PHP ~]# firewall-cmd --zone=public --add-port=9000/tcp --permanent 
success

在nginx中,创建共享文件目录/www,修改主配置文件与PHP服务器关联

[root@zjx-0703-Nginx ~]# mkdir /www
[root@zjx-0703-Nginx ~]# vim /usr/local/nginx/conf/nginx.conf
        # pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000
        #
        location ~ \.php$ {
            root           /www;
            # 写入PHP的IP
            fastcgi_pass   188.188.188.188:9000;
            fastcgi_index  index.php;
            fastcgi_param  SCRIPT_FILENAME  /scripts$fastcgi_script_name;
            include        fastcgi.conf;
        }

        # deny access to .htaccess files, if Apache's document root
[root@zjx-0703-Nginx ~]# nginx -s reload

挂载共享目录

[root@zjx-0703-Nginx ~]# mount -t nfs 188.188.188.188:/www /www/
[root@zjx-0703-Nginx ~]# df -Th /www/
文件系统             类型  容量  已用  可用 已用% 挂载点
188.188.188.188:/www nfs4   17G  4.3G   13G   26% /www

搭建网页,并访问

[root@zjx-0703-Nginx ~]# vim /www/index.php
# 文件中加如下面内容
<?php
        echo "kkk"
?>
[root@zjx-0703-Nginx ~]# firefox 188.188.188.189/index.php

PHP与Nginx整合成功,访问成功
在这里插入图片描述

  • MySQL与php的整合

      MySQL授权用户
    
[root@zjx-0703-LNMP ~]# mysql 
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 5
Server version: 5.5.22 Source distribution

Copyright (c) 2000, 2011, Oracle and/or its affiliates. All rights reserved.

Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

mysql> set password=password("123.com");
Query OK, 0 rows affected (0.01 sec)

mysql> grant all on *.* to 'zzz'@'188.188.188.%' identified by '123.com';
Query OK, 0 rows affected (0.01 sec)

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

index.php文件修改内容

[root@zjx-0703-MySQL ~]# vim /www/index.php 
<?php
        $servername="188.188.188.190";
        $username="zzz";
        $password="123.com";
        $conn=mysqli_connect($servername,$username,$password);
        if(!$conn){
                die("cannot connect!!!");
        }
        echo "success connect";
?>

创建共享目录,并挂载

[root@zjx-0703-MySQL ~]# mkdir /www
[root@zjx-0703-MySQL ~]# mount -t nfs 188.188.188.188:/www /www/

放行服务

[root@zjx-0703-MySQL ~]# firewall-cmd --zone=public --add-port=3306/tcp
success
[root@zjx-0703-MySQL ~]# firewall-cmd --zone=public --add-port=3306/tcp --permanent 
success
[root@zjx-0703-MySQL ~]# firewall-cmd --add-service=mysql
success
[root@zjx-0703-MySQL ~]# firewall-cmd --add-service=mysql --permanent 
success

Nginx放行服务

[root@zjx-0703-PHP ~]# firewall-cmd --zone=public --add-port=80/tcp
success
[root@zjx-0703-PHP ~]# firewall-cmd --zone=public --add-port=80/tcp --permanent 
success

当在nginx中访问到success connect便说明成功
在这里插入图片描述

至此,第二组LNMP成功

三、分离LNMP部署完成后,将两组LNMP的MySQL设置为主主关系

两台的设置都相同,但是server-id不能相同

报错解决
主1

[root@zjx-0703-LNMP ~]# cp /usr/local/mysql/support-files/my-medium.cnf /etc/my.cnf
[root@zjx-0703-LNMP ~]# vim my.cnf
# binary logging is required for replication
log-bin=master-bin
log-slave-updata=true

# binary logging format - mixed recommended
binlog_format=mixed

# required unique id between 1 and 2^32 - 1
# defaults to 1 if master-host is not set
# but will not function as a master if omitted
server-id       = 11

# Replication Slave (comment out master section to use this)

[root@zjx-0703-LNMP ~]# systemctl restart mysqld

主2

[root@zjx-0703-MySQL ~]# cp /usr/local/mysql/support-files/my-medium.cnf /etc/my.cnf
[root@zjx-0703-MySQL ~]# vim my.cnf
# binary logging is required for replication
log-bin=master-bin
log-slave-updata=true

# binary logging format - mixed recommended
binlog_format=mixed

# required unique id between 1 and 2^32 - 1
# defaults to 1 if master-host is not set
# but will not function as a master if omitted
server-id       = 12

# Replication Slave (comment out master section to use this)

[root@zjx-0703-MySQL ~]# systemctl restart mysqld

配置MySQL-1时同时配置MySQL-2
MySQL-1配置

mysql> mysql> grant replication slave on *.*to'kms'@'188.188.188.% ' identified by'123.com';
Query OK, 0 rows affected (0.00 sec)

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

mysql> show master status;
+-------------------+----------+--------------+------------------+
| File              | Position | Binlog_Do_DB | Binlog_Ignore_DB |
+-------------------+----------+--------------+------------------+
| master-bin.000004 |      107 |              |                  |
+-------------------+----------+--------------+------------------+
1 row in set (0.00 sec)


mysql> stop slave;
Query OK, 0 rows affected, 1 warning (0.00 sec)

mysql> change master to master_host='188.188.188.190',master_user='kkk',master_password='123.com',master_log_file='master-bin-bin.000001',master_log_pos=107;
Query OK, 0 rows affected (0.01 sec)

mysql> start slave;
Query OK, 0 rows affected (0.01 sec)

mysql> show slave status\G

在这里插入图片描述

MySQL-2

mysql> grant replication slave on *.*to'kkk'@'188.188.188.%' identified by '123.com';
Query OK, 0 rows affected (0.00 sec)

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

mysql> show master status;
+-------------------+----------+--------------+------------------+
| File              | Position | Binlog_Do_DB | Binlog_Ignore_DB |
+-------------------+----------+--------------+------------------+
| master-bin.000003 |      334 |              |                  |
+-------------------+----------+--------------+------------------+
1 row in set (0.00 sec)

mysql> stop slave;
Query OK, 0 rows affected, 1 warning (0.00 sec)

mysql> change master to master_host='188.188.188.180',master_user='kms',master_password='123.com',master_log_file='master-bin-bin.000004',master_log_pos=107;
Query OK, 0 rows affected (0.01 sec)

mysql> start slave;
Query OK, 0 rows affected (0.01 sec)

mysql> show slave status\G

在这里插入图片描述

四、Nginx负载均衡配置
[root@zjx-0703-Nginx-load ~]#  vim /usr/local/nginx/conf/nginx.conf
    #gzip  on;
    #静态页面访问地址
     upstream zzz{
        # 服务器地址,页面IP:端口  工作优先级  最大失败次数  连接超时时间
             server 172.169.25.253:80 weight=2 max_fails=2 fail_timeout=30s;
             server 172.169.25.254:80 weight=3 max_fails=2 fail_timeout=30s;
     }
     动态页面访问地址
    upstream kkk{
        server 188.188.188.180:80 weight=2 max_fails=2 fail_timeout=30s;
        server 188.188.188.189:80 weight=2 max_fails=2 fail_timeout=30s;
    }
    server {
        listen       80;
        #location ~ \.php$ {
        #    proxy_pass   http://127.0.0.1;
        #}
        # 静态页面访问配置
        location ~*\.(html|gif|png|jpeg|jpg) {
                  proxy_pass      http://zzz;
        }
        # 动态页面访问配置
        location ~ \.php$ {
            proxy_pass  http://kkk;
            proxy_redirect  off;
            proxy_set_header  Host  $host;
            proxy_set_header  X_Real_IP  $remote_addr;
            proxy_set_header  X_Forward_For  $proxy_add_x_forwarded_for;
        }
        # pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000
        #

nginx -s reload

进入IP地址配置文件,将IP获取方式改为static,之后在下面加入改内容

IPADDR0=192.168.1.2
NETMASK0=255.255.255.0
IPADDR1=188.188.188.250
NETMASK1=255.255.255.0
IPADDR2=172.169.25.250
NETMASK=255.255.255.0

[root@zjx-0703-Nginx-load ~]#  ip addr 
2: ens33: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
    link/ether 00:0c:29:3f:27:ac brd ff:ff:ff:ff:ff:ff
    inet 172.169.25.250/16 brd 172.169.255.255 scope global ens33
       valid_lft forever preferred_lft forever
    inet 188.188.188.250/24 brd 188.188.188.255 scope global ens33
       valid_lft forever preferred_lft forever
    inet 192.168.1.2/24 brd 192.168.1.255 scope global ens33
       valid_lft forever preferred_lft forever
    inet6 fe80::b3e1:947a:855d:f4cf/64 scope link 
       valid_lft forever preferred_lft forever

与以他两个服务器ping通之后就OK了

五、DNS
[root@zjx-0703-DNS ~]#  yum -y install bind
[root@zjx-0703-DNS ~]# vim /etc/*/*/*ens33
[root@zjx-0703-DNS ~]# systemctl restart network
[root@zjx-0703-DNS ~]# vim /etc/named.conf 

[root@zjx-0703-DNS ~]# cd /var/named/
[root@zjx-0703-DNS named]#  cp -p named.localhost proncomix.zone
[root@zjx-0703-DNS named]#  vim /etc/named.rfc1912.zones 
[root@zjx-0703-DNS named]#  vim proncomix.zone 
[root@zjx-0703-DNS named]#  systemctl restart named

# named.rfc1912.zones在该配置文件文末添加以下内容
[root@zjx-0703-DNS ~]# vim /etc/named.rfc1912.zones 
zone "proncomix.com" IN {
        type master;
        file "proncomix.zone";
};

/etc/named.conf在该配置文件文末添加以下内容

options {
        listen-on port 53 { any; };
        listen-on-v6 port 53 { ::1; };
        directory       "/var/named";
        dump-file       "/var/named/data/cache_dump.db";
        statistics-file "/var/named/data/named_stats.txt";
        memstatistics-file "/var/named/data/named_mem_stats.txt";
        allow-query     { any; };

修改正向解析数据文件

[root@zjx-0703-DNS ~]# vim /var/named/proncomix.zone 
$TTL 1D
@       IN SOA  proncomix.com. root.proncomix.com. (
                                        0       ; serial
                                        1D      ; refresh
                                        1H      ; retry
                                        1W      ; expire
                                        3H )    ; minimum
        NS      @
        A       192.168.1.2
        AAAA    ::1
www     A       192.168.1.2

[root@zjx-0703-DNS ~]# vim /etc/hosts
192.168.1.2 www.proncomix.com
六、客户端访问

重启服务后,用客户端访问
在客户端上指定一下DNS

客户端IP—192.168.1.20

[root@zjx-0703-client ~]# vim /etc/resolv.conf 
nameserver 192.168.1.10

访问即可

# 访问静态
[root@zjx-0703-client ~]# firefox www.proncomix.com/

刷新页面时,出现两个不同页面,访问成功
在这里插入图片描述
在这里插入图片描述

# 访问动态数据库
[root@zjx-0703-client ~]# firefox www.proncomix.com/index.php

在这里插入图片描述
在这里插入图片描述
当使用IP访问Nginx是,发现能访问成功
所以到Nginx主配置文件添加内容

[root@zjx-0703-Nginx-load ~]#  vim /usr/local/nginx/conf/nginx.conf
# 添加一个server,设置为使用IP访问便报错404
server {
	listen 80 default;
	return 404;
}

客户端在试着访问
在这里插入图片描述
至此,实验完成

Logo

为开发者提供学习成长、分享交流、生态实践、资源工具等服务,帮助开发者快速成长。

更多推荐