部署搭建分层次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]