部署搭建分层次LAMP架构+Wordpress+phpMyAdmin+MySQL主从复制
实验主要是基于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.7x86_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-mastersrc]# wgethttp://mirrors.sohu.com/mysql/MySQL-5.1/mysql-5.1.73-linux-x86_64-glibc23.tar.gz [root@mysql-master src]# tar -zxvfmysql-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]# wgethttp://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]# wgethttp://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 ①首先找到: AddTypeapplication/x-gzip.gz.tgz //在其下面增加如下一行: AddTypeapplication/x-httpd-php.php ②再找到: <IfModuledir_module> DirectoryIndexindex.html </IfModule> 更改为: <IfModuledir_module> DirectoryIndexindex.htmlindex.htmindex.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 AllowOverrideNone Order deny,allow Denyfrom all </Directory> 改为: <Directory /> Options FollowSymLinks AllowOverrideall Order deny,allow Allowfrom 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 databaseblog; 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文件,需我们手工创建这个文件: [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]# wgethttps://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 tabletest_tb(`id` int(4), `name` char(20)) ENGINE=MySIAM DEFAULT CHARSET=gbk; 然后在从数据库上查看 [root@mysql-slaver ~]# mysql mysql> use blog; mysql> show tables; 从上图可知主从配置测试成功。 本文转自 M四月天 51CTO博客,原文链接:http://blog.51cto.com/msiyuetian/1740236 ,如需转载请自行联系原作者