分布式部署lnmp+wordpress

分布式部署LNMP+WordPress

  • 案例目标
  1. 了解分布式部署WordPress的架构
  2. 了解分布式部署WordPress应用的配置与操作

  • 案例分析
  1. 规划节点

IP

主机名

节点

192.168.200.30

mysql1

数据库主节点

192.168.200.40

mysql2

数据库从节点

192.168.200.50

nginx

Nginx服务节点

192.168.200.60

php

PHP环境节点

    2. 基础准备

使用已经分别完成了主从数据库的安装配置、Nginx服务的安装、PHP环境的安装,本实战案例将进行分布式LNMP环境的调试及WordPress应用的部署。

  • 案例实施

1.PHP的安装

使用远程连接工具CRT连接到虚拟机,并进行修改主机名的操作,将虚拟机的主

机名修改为php。命令如下:

   [root@localhost ~]# hostnamectl set-hostname php
[root@localhost ~]# logout
[root@php ~]# hostnamectl 
   Static hostname: php
         Icon name: computer-vm
           Chassis: vm
        Machine ID: 179f6c8f2e7942ef81b0f5565a6883fa
           Boot ID: e48eac1312ca40beae638f6f43e0c31a
    Virtualization: vmware
  Operating System: CentOS Linux 7 (Core)
       CPE OS Name: cpe:/o:centos:centos:7
            Kernel: Linux 3.10.0-327.el7.x86_64
      Architecture: x86-64

关闭防火墙firewalld及SELinux服务,命令如下:

# setenforce 0

# systemctl stop firewalld

使用镜像文件自行配置本地YUM源,编译安装基础环境,命令如下:

[root@php ~]#yum -y install gcc gcc-c++ libxml2-devel libcurl-devel openssl-devel bzip2-devel openssl bzip2 bzip2-devel  libpng libpng-devel  freetype freetype-devel  epel-release  libmcrypt-devel

使用远程传输工具,将提供的libmcrypt-2.5.8.tar.gz压缩包上传至php节点的/usr/local/src目录下,解压该压缩包,进入解压后目录,编译安装该服务,命令如下:

[root@php src]# tar -zxvf libmcrypt-2.5.8.tar.gz   

[root@php src]# cd libmcrypt-2.5.8/  

[root@php libmcrypt-2.5.8]# ./configure --prefix=/usr/local/libmcrypt && make && make install  

使用远程传输工具。将提供的php-5.6.27.tar.gz压缩包上传至php节点的/usr/local/src

目录下,解压该压缩包,进入解压后的目录,编译安装PHP服务,命令如下:

root@php src]# tar -zxvf php-5.6.27.tar.gz   

[root@php src]# cd php-5.6.27/  

[root@php php-5.6.27]#./configure --prefix=/usr/local/php5.6 --with-mysql=mysqlnd \

--with-pdo-mysql=mysqlnd --with-mysqli=mysqlnd --with-openssl --enable-fpm \

--enable-sockets --enable-sysvshm --enable-mbstring --with-freetype-dir --with-jpeg-dir \

--with-png-dir --with-zlib --with-libxml-dir=/usr --enable-xml --with-mhash \

--with-mcrypt=/usr/local/libmcrypt --with-config-file-path=/etc \

--with-config-file-scan-dir=/etc/php.d --with-bz2 --enable-maintainer-zts

如果没有报错提示,则进行下一步安装,命令如下:

[root@php php-5.6.27]#make && make install

在等待10分钟左右的时间,编译安装完毕。

创建用户ID,注意这个nginx的id号要和nginx主机上的保持一致。命令如下:

[root@php php-5.6.27]# groupadd -g 1001 nginx  

[root@php php-5.6.27]# useradd -u 900 nginx -g nginx -s /sbin/nologin   

[root@php php-5.6.27]# tail -1 /etc/passwd  

nginx:x:900:1001::/home/nginx:/sbin/nologin  

PHP压缩包中提供了PHP环境需要用到的模板文件,需要对文件进行改名后才能使用,复制文件并改名,命令如下:

[root@php php-5.6.27]# cp php.ini-production /etc/php.ini  

[root@php php-5.6.27]# cp sapi/fpm/init.d.php-fpm /etc/init.d/php-fpm    

赋予文件执行权限,命令如下:

[root@php php-5.6.27]# chmod +x /etc/init.d/php-fpm

添加PHP服务到启动列表,并设置开机启动,命令如下:

[root@php php-5.6.27]# chkconfig --add php-fpm

[root@php php-5.6.27]# chkconfig php-fpm on

修改PHP的主配置文件php-fpm.conf,命令如下:

[root@php php-5.6.27]# cp /usr/local/php5.6/etc/php-fpm.conf.default /usr/local/php5.6/etc/php-fpm.conf

[root@php php-5.6.27]# vi /usr/local/php5.6/etc/php-fpm.conf

[root@php ~]# grep -n '^'[a-Z] /usr/local/php5.6/etc/php-fpm.conf
25:pid = run/php-fpm.pid
149:user = nginx
150:group = nginx
164:listen = 192.168.200.60:9000
224:pm = dynamic
235:pm.max_children = 50
240:pm.start_servers = 5
245:pm.min_spare_servers = 5
250:pm.max_spare_servers = 35

找到配置文件中的相应参数并修改,修改成上述配置

分布式部署lnmp+wordpress_第1张图片

在完成上述配置并保存退出之后,就可以启动PHP服务,并检查是否启动成功。命令如下:(netstat命令无法使用时,请自行使用YUM源安装net-tools工具)

[root@php php-5.6.30]# service php-fpm start

Starting php-fpm  done

[root@php php-5.6.30]# yum install -y net-tools

[root@php php-5.6.30]# netstat -nlpt

Active Internet connections (only servers)

Proto Recv-Q Send-Q Local Address           Foreign Address         State       PID/Program name    

tcp        0      0 192.168.2.11:9000       0.0.0.0:*               LISTEN      27287/php-fpm: mast

tcp        0      0 0.0.0.0:22              0.0.0.0:*               LISTEN      1052/sshd           

tcp        0      0 127.0.0.1:25            0.0.0.0:*               LISTEN      1517/master         

tcp6       0      0 :::22                   :::*                    LISTEN      1052/sshd           

tcp6       0      0 ::1:25                  :::*                    LISTEN      1517/master         

分布式部署lnmp+wordpress_第2张图片

2. nginx的安装

  修改主机名命令如下:

[root@localhost ~]# hostnamectl set-hostname nginx

[root@localhost ~]# logout

[root@nginx ~]# hostnamectl

   Static hostname: nginx

         Icon name: computer-vm

           Chassis: vm

        Machine ID: 179f6c8f2e7942ef81b0f5565a6883fa

           Boot ID: 9ac638fec1c64c94aab96d0acfa4f542

    Virtualization: vmware

  Operating System: CentOS Linux 7 (Core)

       CPE OS Name: cpe:/o:centos:centos:7

            Kernel: Linux 3.10.0-327.el7.x86_64

      Architecture: x86-64

关闭防火墙及SELinux服务
关闭防火墙firewalld及SELinux服务,命令如下:

# setenforce 0

# systemctl stop firewalld

安装配置基础服务
自行配置本地YUM源,编译安装基础环境,命令如下:

[root@nginx ~]#yum install gcc gcc-c++ openssl-devel zlib-devel zlib pcre-devel -y

创建指定用户,这个nginx用户要和PHP服务器上创建的nginx两者id一致,这里先创建用户,命令如下:

[root@nginx ~]# groupadd -g 1001 nginx  

[root@nginx ~]#useradd -u 900 nginx -g nginx -s /sbin/nologin  

[root@nginx ~]# tail -1 /etc/passwd  

分布式部署lnmp+wordpress_第3张图片

使用远程传输工具,将提供的nginx-1.12.2.tar.gz压缩包上传至nginx节点的/usr/local/src/目录下,并解压到当前目录,命令如下:

[root@nginx src]# tar -zxvf nginx-1.12.2.tar.gz

进入nginx-1.12.2目录,编译并安装,命令如下:

[root@nginx src]# cd nginx-1.12.2/

[[email protected]]#./configure --prefix=/usr/local/nginx --with-http_dav_module \

--with-http_stub_status_module --with-http_addition_module \

--with-http_sub_module --with-http_flv_module --with-http_mp4_module \

--with-http_ssl_module --with-http_gzip_static_module --user=nginx --group=nginx

如果没有报错提示,请进行下一步安装,命令如下:

[[email protected]]#make && make install

编译安装完毕后,创建软连接并启动测试,命令如下:(netstat命令无法使用时,请自行使用YUM源安装net-tools工具)

[root@nginx nginx-1.12.2]# ln -s /usr/local/nginx/sbin/nginx /usr/local/sbin/  

[root@nginx nginx-1.12.2]# nginx -t  

[root@nginx nginx-1.12.2]# nginx

[root@nginx nginx-1.12.2]# netstat -ntpl

分布式部署lnmp+wordpress_第4张图片

3.mysql的安装 

修改主机名

mysql1节点:

[root@localhost ~]# hostnamectl set-hostname mysql1

[root@localhost ~]# logout

[root@mysql1 ~]# hostnamectl

分布式部署lnmp+wordpress_第5张图片

mysql2节点:

[root@localhost ~]# hostnamectl set-hostname mysql2

[root@localhost ~]# logout

[root@mysql2 ~]# hostnamectl

分布式部署lnmp+wordpress_第6张图片

关闭防火墙及SELinux服务

两个节点关闭防火墙firewalld及SELinux服务,命令如下:

# setenforce 0

# systemctl stop firewalld

配置hosts文件

两个节点配置hosts文件,修改为如下:

127.0.0.1   localhost localhost.localdomain localhost4 localhost4.localdomain4

::1         localhost localhost.localdomain localhost6 localhost6.localdomain6

192.168.200.30  mysql1

192.168.200.40  mysql2

  配置YUM源并安装数据库服务

挂载镜像并自行配置YUM源,配置完毕后,两个节点安装数据库服务,命令如下:

# yum install -y mariadb mariadb-server

两个节点启动数据库服务并设置开机自启,命令如下:

# systemctl start mariadb

# systemctl enable mariadb

Created symlink from /etc/systemd/system/multi-user.target.wants/mariadb.service to /usr/lib/systemd/system/mariadb.service.

初始化数据库

两个节点初始化数据库,配置数据库root密码为000000,命令如下:

[root@mysql1 ~]# mysql_secure_installation

配置mysql主节点

修改mysql1节点的数据库配置文件,在配置文件/etc/my.cnf中的[mysqld]增添如下内容。

[root@mysql1 ~]# cat /etc/my.cnf

[mysqld]

log_bin = mysql-bin                       #记录操作日志

binlog_ignore_db = mysql                  #不同步mysql系统数据库

server_id = 30                            #数据库集群中的每个节点id都要不同,一般使用IP地址的最后段的数字,例如192.168.200.30,server_id就写30

datadir=/var/lib/mysql

socket=/var/lib/mysql/mysql.sock

# Disabling symbolic-links is recommended to prevent assorted security risks

symbolic-links=0

# Settings user and group are ignored when systemd is used.

# If you need to run mysqld under a different user or group,

# customize your systemd unit file for mariadb according to the

# instructions in http://fedoraproject.org/wiki/Systemd



[mysqld_safe]

log-error=/var/log/mariadb/mariadb.log

pid-file=/var/run/mariadb/mariadb.pid



#

# include all files from the config directory

#

!includedir /etc/my.cnf.d

重启数据库服务,并进入数据库,命令如下:

[root@mysql1 ~]# systemctl restart mariadb

[root@mysql1 ~]# mysql -uroot -p000000

分布式部署lnmp+wordpress_第7张图片

在mysql1节点,授权在任何客户端机器上可以以root用户登录到数据库,然后在主节点上创建一个user用户连接节点mysql2,并赋予从节点同步主节点数据库的权限。命令如下:

MariaDB [(none)]> grant all privileges  on *.* to root@'%' identified by "000000";

Query OK, 0 rows affected (0.00 sec)



MariaDB [(none)]> grant replication slave on *.* to 'user'@'mysql2' identified by '000000';

Query OK, 0 rows affected (0.00 sec)

 配置mysql2主从节点

修改mysql2节点的主从数据库配置文件,在配置文件/etc/my.cnf中的[mysqld]增

加如下内容。

[root@mysql2 ~]# cat /etc/my.cnf

[mysqld]

log_bin = mysql-bin                       #记录操作日志

binlog_ignore_db = mysql                  #不同步mysql系统数据库

server_id = 40                            #数据库集群中的每个节点id都要不同,一般使用IP地址的最后段的数字,例如192.168.200.40,server_id就写40

datadir=/var/lib/mysql

socket=/var/lib/mysql/mysql.sock

# Disabling symbolic-links is recommended to prevent assorted security risks

symbolic-links=0

# Settings user and group are ignored when systemd is used.

# If you need to run mysqld under a different user or group,

# customize your systemd unit file for mariadb according to the

# instructions in http://fedoraproject.org/wiki/Systemd



[mysqld_safe]

log-error=/var/log/mariadb/mariadb.log

pid-file=/var/run/mariadb/mariadb.pid



#

# include all files from the config directory

#

!includedir /etc/my.cnf.d

在从节点mysql2上登录MariaDB数据库,配置从节点连接主节点的连接信息。master_host为主节点主机名mysql1,master_user为上一步中创建的用户user,命令如下:

[root@mysql2 ~]# systemctl restart mariadb

[root@mysql2 ~]# mysql -uroot -p000000

....................

MariaDB [(none)]> change master to master_host='mysql1',master_user='user',master_password='000000';

分布式部署lnmp+wordpress_第8张图片

配置完毕主从数据库之间的连接信息之后,开启从节点服务。使用show slave status\G命令,并查看从节点服务状态,如果Slave_IO_Running和Slave_SQL_Running的状态都为YES,则从节点服务开启成功。命令如下:

MariaDB [(none)]> start slave;

MariaDB [(none)]> show slave status\G

可以看到Slave_IO_Running和Slave_SQL_Running的状态都是Yes,配置数据库主从集群成功。  

分布式部署lnmp+wordpress_第9张图片

验证主从数据库

先在主节点mysql1中创建库test,并在库test中创建表company,插入表数据,创建完成后,查看表company数据,命令如下:

[root@mysql1 ~]# mysql -uroot -p000000

 分布式部署lnmp+wordpress_第10张图片

-

登录mysql2节点的数据库,查看数据库列表。找到test数据库,查询表,并查询内容验证从数据库的复制功能,命令如下:

[root@mysql2 ~]# mysql -uroot -p000000

分布式部署lnmp+wordpress_第11张图片

可以查看到主数据库中刚刚创建的库、表、信息,验证从数据库的复制功能成功。

4. 分布式LNMP环境的调试

 配置nginx服务支持PHP环境

[root@nginx ~]# vi /usr/local/nginx/conf/nginx.conf

…省略…

location / {
            root   /www;                              #更改网页目录
            index  index.php index.html index.htm;    #添加index.php
        }

…省略…

location ~ \.php$ {                                  #去掉location{}前的注释符
            root           /www;                     #更改目录为/www
            fastcgi_pass   192.168.200.60:9000;      #注意:在这里添加PHP主机IP地址
            fastcgi_index  index.php;
            fastcgi_param  SCRIPT_FILENAME  /scripts$fastcgi_script_name;
            include        fastcgi_params;
        }

…省略…

修改完毕后,保存退出。

接着在/usr/local/nginx/conf/fastcgi_params添加配置,命令如下:

[root@nginx ~]# vi /usr/local/nginx/conf/fastcgi_params

fastcgi_param  QUERY_STRING       $query_string;
fastcgi_param  REQUEST_METHOD     $request_method;
fastcgi_param  CONTENT_TYPE       $content_type;
fastcgi_param  CONTENT_LENGTH     $content_length;


fastcgi_param  SCRIPT_NAME        $fastcgi_script_name;
fastcgi_param  SCRIPT_FILENAME    $document_root$fastcgi_script_name; #添加这行代码
fastcgi_param  REQUEST_URI        $request_uri;
fastcgi_param  DOCUMENT_URI       $document_uri;
fastcgi_param  DOCUMENT_ROOT      $document_root;
fastcgi_param  SERVER_PROTOCOL    $server_protocol;
fastcgi_param  REQUEST_SCHEME     $scheme;
fastcgi_param  HTTPS              $https if_not_empty;


fastcgi_param  GATEWAY_INTERFACE  CGI/1.1;
fastcgi_param  SERVER_SOFTWARE    nginx/$nginx_version;

fastcgi_param  REMOTE_ADDR        $remote_addr;
fastcgi_param  REMOTE_PORT        $remote_port;
fastcgi_param  SERVER_ADDR        $server_addr;
fastcgi_param  SERVER_PORT        $server_port;
fastcgi_param  SERVER_NAME        $server_name;

# PHP only, required if PHP was built with --enable-force-cgi-redirect
fastcgi_param  REDIRECT_STATUS    200;

 

创建目录

在nginx和php节点,创建/www目录,并修改用户和用户组,命令如下:

nginx节点:

​
[root@nginx ~]# mkdir /www  

[root@nginx ~]# chown nginx:nginx /www/  

php节点:

[root@php ~]# mkdir /www  

[root@php ~]# chown nginx:nginx /www/  

部署WordPress
nginx节点:

[root@nginx ~]# unzip wordpress-4.7.3-zh_CN.zip   

[root@nginx ~]# mv wordpress/* /www/

php节点:

[root@php ~]# unzip wordpress-4.7.3-zh_CN.zip   

[root@php ~]# mv wordpress/* /www/

在nginx节点,修改WordPress应用的配置文件,WordPress应用提供了wp-config-sample.php模版文件,将模板文件复制为wp-config.php,并修改,命令如下:

[root@nginx ~]#cp /www/wp-config-sample.php /www/wp-config.php

[root@nginx ~]# vi /www/wp-config.php

…省略…

// ** MySQL 设置 - 具体信息来自您正在使用的主机 ** //
/** WordPress数据库的名称 */
define('DB_NAME', 'wordpress');

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

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

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

/** 创建数据表时默认的文字编码 */
define('DB_CHARSET', 'utf8');

/** 数据库整理类型。如不确定请勿更改 */
define('DB_COLLATE', '');

…省略…

按照上述文件修改配置文件,保存退出后,将该配置文件scp至php节点的/www目录下,命令如下:

[root@nginx ~]# scp /www/wp-config.php [email protected]:/www/

创建WordPress数据库

在mysql1节点,登录数据库,使用命令创建WordPress数据库,命令如下:

[root@mysql1 ~]# mysql -uroot -p000000

分布式部署lnmp+wordpress_第12张图片

验证WordPress应用

在Nginx节点重启Nginx服务,命令如下:

[root@nginx ~]# nginx -s reload

在浏览器中输入192.168.2.10地址进行访问,会出现著名的WordPress五分钟安装程序,填写必要的信息,然后单击左下角“安装WordPress”按钮,进行WordPress应用的安装.

分布式部署lnmp+wordpress_第13张图片

稍等片刻,安装完毕后,进入WordPress后台界面.

分布式部署lnmp+wordpress_第14张图片

单击页面左上角的“myblog”图标,进入WordPress首页.

分布式部署lnmp+wordpress_第15张图片

至此,分布式部署LNMP+WordPress应用已完成。

你可能感兴趣的:(linux)