实验主要是基于LAMP来搭建 wordpress个人博客,实现MySQL主从复制、并且使用phpMyAdmin管理数据库。
实验步骤目录:
一、准备说明 二、MySQL安装配置 三、Apache安装配置 四、PHP安装配置 五、Apache结合PHP 六、wordpress安装配置 七、phpMyAdmin安装配置
八、MySQL主从复制 |
步骤详细解释说明可见我之前的文章:
LAMP环境搭建:http://msiyuetian.blog.51cto.com/8637744/1688019
MySQL主从配置:http://msiyuetian.blog.51cto.com/8637744/1697288
一、准备说明
Linux发行版本:centos 6.7 x86_64 (三台)
HostName | IP | 备注 |
lanp | 192.168.0.112 | 安装Apache+PHP |
mysql-master | 192.168.0.109 | 主MySQL |
mysql-slaver | 192.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上操作
[root@mysql-master ~]# cd /usr/local/src/
[root@mysql-master src]# wget http://mirrors.sohu.com/mysql/MySQL-5.1/mysql-5.1.73-linux-x86_64-glibc23.tar.gz
[root@mysql-master src]# tar -zxvf mysql-5.1.73-linux-x86_64-glibc23.tar.gz
[root@mysql-master src]# mv mysql-5.1.73-linux-x86_64-glibc23 /usr/local/mysql
[root@mysql-master src]# cd /usr/local/mysql/
[root@mysql-master mysql]# useradd -s /sbin/nologin mysql
[root@mysql-master mysql]# mkdir -p /data/mysql
[root@mysql-master mysql]# chown -R mysql /data/mysql
[root@mysql-master mysql]# cp support-files/my-large.cnf /etc/my.cnf
[root@mysql-master mysql]# cp support-files/mysql.server /etc/init.d/mysqld
[root@mysql-master mysql]# chmod 755 /etc/init.d/mysqld
[root@mysql-master mysql]# vim /etc/init.d/mysqld //修改启动脚本
basedir=/usr/local/mysql datadir=/data/mysql |
[root@mysql mysql]# ./scripts/mysql_install_db --user=mysql --datadir=/data/mysql
[root@mysql-master mysql]# chkconfig --add mysqld
[root@mysql-master mysql]# chkconfig mysqld on
[root@mysql-master mysql]# service mysqld start
Starting MySQL.. SUCCESS! |
2、在mysql-slaver上操作
若不想下载MySQL安装包,可以通过scp命令直接远程拷贝主上的MySQL安装包,需在主从上都安装 openssh-clients 这个包,就可以用scp命令。
# yum install -y openssh-clients
[root@mysql-slaver ~]# 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/bin export PATH |
# source /etc/profile //使修改生效
# echo $PATH //可以查看环境变量
这样我们就可以直接输入 mysql 命令进入了。
三、Apache安装配置
以下步骤在 lanp 上操作。安装之前先安装一些必要的库文件:
[root@lanp ~]# yum install -y gcc zlib-devel pcre pcre-devel apr apr-devel
1、安装
[root@lanp ~]# cd /usr/local/src/
[root@lanp src]# wget http://mirrors.sohu.com/apache/httpd-2.2.31.tar.bz2
[root@lanp src]# tar -jxvf httpd-2.2.31.tar.bz2
[root@lanp src]# cd httpd-2.2.31
[root@lanp 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
[root@lanp httpd-2.2.31]# make
[root@lanp httpd-2.2.31]# make install
2、配置
[root@lanp httpd-2.2.31]# vim /usr/local/apache2/conf/httpd.conf
#ServerName www.example.com:80 //去掉前面的注释符#,如下
ServerName localhost:80
3、启动
[root@lanp httpd-2.2.31]# /usr/local/apache2/bin/apachectl start
[root@lanp httpd-2.2.31]# netstat -lnp |grep httpd
tcp 0 0 :::80 :::* LIST EN 1609/httpd |
四、PHP安装配置
以下步骤在 lanp 上操作。
1、安装一些必需的库文件
[root@lanp ~]# 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
[root@lanp ~]# rpm -ivh http://dl.fedoraproject.org/pub/epel/6/x86_64/epel-release-6-8.noarch.rpm
[root@lanp ~]# yum install -y libmcrypt-devel
1、安装PHP
[root@lanp httpd-2.2.31]# cd /usr/local/src/
[root@lanp src]# wget http://mirrors.sohu.com/php/php-5.3.27.tar.gz
[root@lanp src]# tar -zxvf php-5.3.27.tar.gz
[root@lanp src]# cd php-5.3.27
[root@lanp 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"
[root@lanp php-5.3.27]# make
[root@lanp php-5.3.27]# make install
[root@lanp php-5.3.27]# cp php.ini-production /usr/local/php/etc/php.ini
五、Apache结合PHP
以下步骤在 lanp 上操作
1、编辑Apache配置文件
[root@lanp ~]# 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、重启服务
[root@lanp ~]# /usr/local/apache2/bin/apachectl -t
Syntax OK |
[root@lanp ~]# /usr/local/apache2/bin/apachectl restart
3、测试
[root@lanp ~]# vim /usr/local/apache2/htdocs/info.php
<?php phpinfo(); ?> |
保存脚本后用浏览器输入 http://192.168.0.112/info.php 测试,如下图所示
六、wordpress安装配置
1、下载解压wordpress
[root@lanp ~]# cd /usr/local/src/
[root@lanp src]# wget https://cn.wordpress.org/wordpress-4.4.1-zh_CN.tar.gz
[root@lanp src]# tar -zxvf wordpress-4.4.1-zh_CN.tar.gz
[root@lanp src]# mkdir -p /data/web
[root@lanp src]# mv wordpress /data/web/blog
2、配置虚拟主机
①开放虚拟主机配置文件
[root@lanp blog]# vim /usr/local/apache2/conf/httpd.conf
#Include conf/extra/httpd-vhosts.conf //去掉#号,如下 Include conf/extra/httpd-vhosts.conf |
②编辑虚拟主机
[root@lanp blog]# vim /usr/local/apache2/conf/extra/httpd-vhosts.conf
<VirtualHost *:80> DocumentRoot "/data/web/blog" ServerName blog.test.com </VirtualHost> |
③打开80端口
[root@lanp blog]# 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服务:
[root@lanp blog]# /usr/local/apache2/bin/apachectl -t
Syntax OK
[root@lanp blog]# /usr/local/apache2/bin/apachectl restart
3、新建数据库(在mysql-master(0.109)机器上)
[root@mysql-master ~]# mysql
mysql> 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.112 blog.test.com pma.test.com |
再用浏览器输入网址 blog.test.com 会出现以下安装界面
点击“现在就开始”
注意:提交后提示不能写入wp-config.php文件,需我们手工创建这个文件:
[root@lanp blog]# vim wp-config.php //将提示信息贴入其中
完成之后,点击"进行安装";最后进入欢迎页面,填入相应信息后点击安装即可。首页如下:
注意:当我们在WordPress博客里面添加图片附件时会报一个错误:”无法建立目录wp-content/uploads/2016/01。有没有上级目录的写权限?“。这时查看wp-content文件夹权限为755,我们将其改为777,上传图片会提示成功,问题解决!而后再将wp-content文件夹属性权限改为755即可,保证文件安全!
操作如下:
[root@lanp pma]# cd /data/web/blog/
[root@lanp blog]# chmod 777 wp-content
[root@lanp blog]# chmod 755 wp-content
七、phpMyAdmin安装配置
官方下载地址:http://www.phpmyadmin.net/downloads/
1、下载解压
[root@lanp blog]# cd /usr/local/src/
[root@lanp src]# wget https://files.phpmyadmin.net/phpMyAdmin/4.0.10.14/phpMyAdmin-4.0.10.14-all-languages.tar.gz
[root@lanp src]# tar -zxvf phpMyAdmin-4.0.10.14-all-languages.tar.gz
[root@lanp src]# mv phpMyAdmin-4.0.10.14-all-languages /data/web/pma
[root@lanp src]# cd /data/web/pma/
2、修改配置文件
[root@lanp pma]# cp libraries/config.default.php config.inc.php
[root@lanp pma]# 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、增加虚拟主机
[root@lanp pma]# vim /usr/local/apache2/conf/extra/httpd-vhosts.conf //末尾增加
<VirtualHost *:80> DocumentRoot "/data/web/pma" ServerName pma.test.com </VirtualHost> |
[root@lanp pma]# /usr/local/apache2/bin/apachectl -t
Syntax OK |
[root@lanp pma]# /usr/local/apache2/bin/apachectl restart
4、phpMyAdmin主界面
浏览器输入 http://pma.test.com 就可以看到如下主界面
八、MySQL主从复制
步骤详细解释说明可见我之前的文章:
MySQL主从配置:http://msiyuetian.blog.51cto.com/8637744/1697288
1、查看blog库
mysql> show databases;
mysql> use blog;
mysql> show tables;
2、在mysql-master上操作
[root@mysql-master ~]# vim /etc/my.cnf //在[mysqld]段添加以下内容
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 服务
[root@mysql-master ~]# /etc/init.d/mysqld restart
Shutting down MySQL... SUCCESS! Starting MySQL. SUCCESS! |
再添加一个用于主从同步的用户:repl,密码为:123456
[root@mysql-master ~]# 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 库
[root@mysql-master ~]# mysqldump blog > /data/blog.sql
3、在mysql-slaver上操作
先从主上拷贝备份的 blog 库
[root@mysql-slaver ~]# scp root@192.168.0.109:/data/blog.sql /data/
创建和主数据库一样的 blog库
[root@mysql-slaver ~]# mysql -e "create database blog"
[root@mysql-slaver ~]# mysql blog < /data/blog.sql
修改配置文件
[root@mysql-slaver ~]# vim /etc/my.cnf //在[mysqld]段修改添加以下地方
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 服务
[root@mysql-slaver ~]# /etc/init.d/mysqld restart
Shutting down MySQL.. SUCCESS! Starting MySQL. SUCCESS! |
同步数据库
[root@mysql-slaver ~]# 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
[root@mysql-master ~]# mysql
mysql>UNLOCK TABLES;
mysql> use blog;
mysql> create table test_tb (`id` int(4), `name` char(20)) ENGINE=MySIAM DEFAULT CHARSET=gbk;
然后在从数据库上查看
[root@mysql-slaver ~]# mysql
mysql> use blog;
mysql> show tables;
从上图可知主从配置测试成功。