34233 发表于 2016-2-1 08:53:44

部署搭建分层次LAMP架构+Wordpress+phpMyAdmin+MySQL主从复制 实现高可用架构

实验主要是基于LAMP来搭建 wordpress个人博客,实现MySQL主从复制、并且使用phpMyAdmin管理数据库。实验步骤目录:

一、准备说明
二、MySQL安装配置三、Apache安装配置
四、PHP安装配置五、Apache结合PHP六、wordpress安装配置七、phpMyAdmin安装配置八、MySQL主从复制

一、准备说明
Linux发行版本:centos 6.7 x86_64 (三台)

HostNameIP备注
lanp192.168.0.112安装Apache+Nginx+PHP
mysql-master192.168.0.109主MySQL
mysql-slaver192.168.0.110从MySQL
MySQL 版本:mysql-5.1.73
Apache 版本:httpd-2.2.31
PHP 版本:php-5.3.27
WordPress 版本:wordpress-4.4.1
phpMyAdmin 版本: 4.0.10.14


二、MySQL安装配置
1、在mysql-master上操作

# cd /usr/local/src/
# wget http://mirrors.sohu.com/mysql/MySQL-5.1/mysql-5.1.73-linux-x86_64-glibc23.tar.gz
# tar -zxvf mysql-5.1.73-linux-x86_64-glibc23.tar.gz
# mv mysql-5.1.73-linux-x86_64-glibc23 /usr/local/mysql
# cd /usr/local/mysql/
# useradd -s /sbin/nologin mysql
# mkdir -p /data/mysql
# chown -R mysql /data/mysql
# cp support-files/my-large.cnf /etc/my.cnf
# cp support-files/mysql.server /etc/init.d/mysqld
# chmod 755 /etc/init.d/mysqld
# vim /etc/init.d/mysqld                               //修改启动脚本

basedir=/usr/local/mysqldatadir=/data/mysql
# ./scripts/mysql_install_db --user=mysql --datadir=/data/mysql
# chkconfig --add mysqld
# chkconfig mysqld on
# service mysqld start

Starting MySQL.. SUCCESS!
2、在mysql-slaver上操作

若不想下载MySQL安装包,可以通过scp命令直接远程拷贝主上的MySQL安装包,需在主从上都安装 openssh-clients 这个包,就可以用scp命令。
# yum install -y openssh-clients

# scp root@192.168.0.109:/usr/local/src/mysql-5.1.73-linux-x86_64-glibc23.tar.gz /usr/local/src/
后续的安装步骤同在mysql-master上操作。
3、主从MySQL都加入到环境变量中

# vim /etc/profile                                                 //末尾加入两行
PATH=$PATH:/usr/local/mysql/binexport PATH
# source /etc/profile                                          //使修改生效# echo $PATH                                                      //可以查看环境变量这样我们就可以直接输入 mysql 命令进入了。



三、Apache安装配置以下步骤在 lanp 上操作。安装之前先安装一些必要的库文件:# yum install -y gcc zlib-devel pcre pcre-devel apr apr-devel1、安装# cd /usr/local/src/# wget http://mirrors.sohu.com/apache/httpd-2.2.31.tar.bz2# tar -jxvf httpd-2.2.31.tar.bz2# cd httpd-2.2.31# ./configure \--prefix=/usr/local/apache2 \--with-included-apr \--enable-so \--enable-deflate=shared \--enable-expires=shared \--enable-rewrite=shared \--with-pcre# make# make install2、配置
# vim /usr/local/apache2/conf/httpd.conf#ServerName www.example.com:80                                    //去掉前面的注释符#,如下         
ServerName localhost:803、启动
# /usr/local/apache2/bin/apachectl start
# netstat -lnp |grep httpd

tcp      0      0 :::80         :::*         LIST          EN      1609/httpd


四、PHP安装配置以下步骤在 lanp 上操作。1、安装一些必需的库文件# yum install -y libjpeg libjpeg-devel libpng libpng-devel freetype freetype-devel libxml2 libxml2-devel glibc glibc-devel glib2 glib2-devel bzip2 bzip2-devel ncurses ncurses-devel curl curl-devel e2fsprogs e2fsprogs-devel krb5 krb5-devel openssl openssl-devel openldap openldap-devel nss_ldap openldap-clients openldap-servers libtool libtool-ltdl-devel# rpm -ivh "http://www.aminglinux.com/bbs/data/attachment/forum/month_1211/epel-release-6-7.noarch.rpm" # yum install -y libmcrypt-devel1、安装PHP# cd /usr/local/src/# wget http://mirrors.sohu.com/php/php-5.3.27.tar.gz
# tar -zxvf php-5.3.27.tar.gz
# cd php-5.3.27
# ./configure \
--prefix=/usr/local/php \
--with-apxs2=/usr/local/apache2/bin/apxs \
--with-config-file-path=/usr/local/php/etc\
--with-mysql=mysqlnd \
--with-mysqli=mysqlnd \
--with-pdo-mysql=mysqlnd \
--with-libxml-dir \
--with-gd \
--with-jpeg-dir \
--with-png-dir \
--with-freetype-dir \
--with-iconv-dir \
--with-zlib-dir \
--with-bz2 \
--with-openssl \
--with-mcrypt \
--enable-soap \
--enable-gd-native-ttf \
--enable-mbstring \
--enable-sockets \
--enable-exif \
--disable-ipv6
注意:这里使用了 php 自带的 mysql 驱动程序 "mysqlnd"
# make
# make install# cp php.ini-production /usr/local/php/etc/php.ini
五、Apache结合PHP以下步骤在 lanp 上操作1、编辑Apache配置文件
# vim /usr/local/apache2/conf/httpd.conf
①首先找到:
AddType application/x-gzip .gz .tgz                              //在其下面增加如下一行:
AddType application/x-httpd-php .php
②再找到:
<IfModule dir_module>
    DirectoryIndex index.html
</IfModule>
更改为:
<IfModule dir_module>
    DirectoryIndex index.html index.htm index.php
</IfModule>

2、重启服务# /usr/local/apache2/bin/apachectl -t

Syntax OK
# /usr/local/apache2/bin/apachectl restart
3、测试
# vim /usr/local/apache2/htdocs/info.php
<?php
phpinfo();
?>

保存脚本后用浏览器输入 http://192.168.0.112/info.php 测试,如下图所示

六、wordpress安装配置1、下载解压wordpress
# cd /usr/local/src/
# wget https://cn.wordpress.org/wordpress-4.4.1-zh_CN.tar.gz# tar -zxvf wordpress-4.4.1-zh_CN.tar.gz# mkdir -p /data/web# mv wordpress /data/web/blog2、配置虚拟主机①开放虚拟主机配置文件# vim /usr/local/apache2/conf/httpd.conf
#Include conf/extra/httpd-vhosts.conf            //去掉#号,如下

Include conf/extra/httpd-vhosts.conf

②编辑虚拟主机# vim /usr/local/apache2/conf/extra/httpd-vhosts.conf
<VirtualHost *:80>
    DocumentRoot "/data/web/blog"
    ServerNameblog.test.com
</VirtualHost>

③打开80端口# vim /usr/local/apache2/conf/httpd.conf
<Directory />
   Options FollowSymLinks
   AllowOverride None
   Order deny,allow
   Deny from all
</Directory>
改为:
<Directory />
   Options FollowSymLinks
   AllowOverride all
   Order deny,allow
   Allow from all
</Directory>
保存退出后检测配置是否正确,并重启Apache服务:

# /usr/local/apache2/bin/apachectl -t
Syntax OK
# /usr/local/apache2/bin/apachectl restart

3、新建数据库(在mysql-master(0.109)机器上)
# mysqlmysql> create database blog;
mysql> grant all on blog.* to 'tpp'@'192.168.0.112' identified by '123456';
mysql> flush privileges;

4、安装wordpress首先找到本机 C:\Windows\System32\drivers\etc 下的hosts文件,添加下面内容后保存退出。

192.168.0.112blog.test.com pma.test.com
再用浏览器输入网址blog.test.com 会出现以下安装界面

点击“现在就开始”


注意:提交后提示不能写入wp-config.php文件,需我们手工创建这个文件:
# vim wp-config.php      //将提示信息贴入其中
完成之后,点击"进行安装";最后进入欢迎页面,填入相应信息后点击安装即可。首页如下:

注意:当我们在WordPress博客里面添加图片附件时会报一个错误:”无法建立目录wp-content/uploads/2016/01。有没有上级目录的写权限?“。这时查看wp-content文件夹权限为755,我们将其改为777,上传图片会提示成功,问题解决!而后再将wp-content文件夹属性权限改为755即可,保证文件安全!操作如下:

# cd /data/web/blog/# chmod 777 wp-content# chmod 755 wp-content

七、phpMyAdmin安装配置
官方下载地址:http://www.phpmyadmin.net/downloads/
1、下载解压
# cd /usr/local/src/
# wget https://files.phpmyadmin.net/phpMyAdmin/4.0.10.14/phpMyAdmin-4.0.10.14-all-languages.tar.gz
# tar -zxvf phpMyAdmin-4.0.10.14-all-languages.tar.gz

# mv phpMyAdmin-4.0.10.14-all-languages /data/web/pma
# cd /data/web/pma/
2、修改配置文件
# cp libraries/config.default.php config.inc.php
# vim config.inc.php

$cfg['Servers'][$i]['host'] = '192.168.0.109';                //数据库IP地址
$cfg['Servers'][$i]['auth_type'] = 'config';                   //认证模式
$cfg['Servers'][$i]['user'] = 'tpp';                              //数据库用户
$cfg['Servers'][$i]['password'] = '123456';

3、增加虚拟主机
# vim /usr/local/apache2/conf/extra/httpd-vhosts.conf       //末尾增加

<VirtualHost *:80>
    DocumentRoot "/data/web/pma"
    ServerName pma.test.com
</VirtualHost>

# /usr/local/apache2/bin/apachectl -t

Syntax OK
# /usr/local/apache2/bin/apachectl restart
4、phpMyAdmin主界面
浏览器输入 http://pma.test.com 就可以看到如下主界面



八、MySQL主从复制

步骤详细解释说明可见我之前的文章:
1、查看blog库
mysql> show databases;
mysql> use blog;
mysql> show tables;

2、在mysql-master上操作

# vim /etc/my.cnf         //在段添加以下内容

server-id = 1                     
log-bin = mysql-bin   
max_binlog_size = 500M               
binlog_cache_size = 128K      
binlog-do-db = blog         
log-slave-updates         
expire_logs_day = 2         
binlog_format = mixed
注意:binlog-do-db = blog,定义需要同步的数据库名字,如果是多个库,以逗号隔开;也可以设置黑名单。

重启 mysqld 服务
# /etc/init.d/mysqld restart
Shutting down MySQL... SUCCESS!Starting MySQL. SUCCESS!

再添加一个用于主从同步的用户:repl,密码为:123456

# mysql
mysql> grant replication slave on *.* to 'repl'@'192.168.0.110' identified by '123456';
mysql> flush privileges;                                 //刷新权限

mysql> flush tables with read lock;               //锁死表读,防止主库再写数据

mysql> show master status;                            //查看状态,待会儿要用这个参数



最后备份 blog 库

# mysqldump blog > /data/blog.sql

3、在mysql-slaver上操作
先从主上拷贝备份的 blog 库
# scp root@192.168.0.109:/data/blog.sql /data/创建和主数据库一样的 blog库# mysql -e "create database blog"# mysql blog < /data/blog.sql
修改配置文件
# vim /etc/my.cnf                            //在段修改添加以下地方

server-id = 2
master-host=192.168.0.109
master-user=repl
master-password=123456
master-port=3306
master-connect-retry=30                                                   //控制重试间隔,默认为60秒
slave-skip-errors=1062                                                      //忽略错误,1062为主键重复错误
replicate-do-db = blog
slave-skip-errors=1007,1008,1053,1062,1213,1158,1159 //忽略一些其他错误,不影响数据库完整性
重启 mysqld 服务
# /etc/init.d/mysqld restart

Shutting down MySQL.. SUCCESS!Starting MySQL. SUCCESS!
同步数据库

# mysql
mysql> slave stop;
mysql> change master to master_host='192.168.0.109',master_port=3306,master_user='repl',master_password='123456',master_log_file='mysql-bin.000010',master_log_pos=343;
mysql> slave start;

查看从的状态
mysql> show slave status\G;
注意:当看到 Slave_IO_Running 和 Slave_SQL_Running 参数都为 Yes 时,表示主从配置成功。若为No,很有可能就是授权主从同步的用户、密码或者IP哪个不对;没有关闭防火墙,也会导致这个问题。

4、测试主从是否同步
首先在主数据库上解锁,并创建一个表:test_tb
# mysql
mysql>UNLOCK TABLES;
mysql> use blog;
mysql> create table test_tb (`id` int(4), `name` char(20)) ENGINE=MySIAM DEFAULT CHARSET=gbk;

然后在从数据库上查看
# mysql
mysql> use blog;
mysql> show tables;

从上图可知主从配置测试成功。

页: [1]
查看完整版本: 部署搭建分层次LAMP架构+Wordpress+phpMyAdmin+MySQL主从复制 实现高可用架构