部署搭建分层次LAMP架构+Wordpress+phpMyAdmin+MySQL主从复制

本文涉及的产品
云数据库 RDS MySQL,集群系列 2核4GB
推荐场景:
搭建个人博客
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
云数据库 RDS MySQL,高可用系列 2核4GB
简介:

    实验主要是基于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 测试,如下图所示

wKiom1apoazBjp_dAAEI93AlCn4445.png



六、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 会出现以下安装界面

wKiom1aramrD9e8EAAEoGIkfZ8c313.png

点击“现在就开始”

wKiom1arbhzDOx5OAABVDl1mL9c759.png

注意:提交后提示不能写入wp-config.php文件,需我们手工创建这个文件:

[root@lanp blog]# vim wp-config.php        //将提示信息贴入其中

完成之后,点击"进行安装";最后进入欢迎页面,填入相应信息后点击安装即可。首页如下:

wKiom1arcHuCF9IlAACRbAHOVps369.png

注意:当我们在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 就可以看到如下主界面

wKioL1areGujDHQ5AAJUduO4css557.png



八、MySQL主从复制


步骤详细解释说明可见我之前的文章:

MySQL主从配置:http://msiyuetian.blog.51cto.com/8637744/1697288

1、查看blog库

mysql> show databases;

mysql> use blog;

mysql> show tables;

wKioL1asSMXSap5CAAA9aRzaFBw597.png

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;                            //查看状态,待会儿要用这个参数

wKiom1asaquwz-l_AAAglaTroAA986.png


最后备份 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;

wKiom1asbETxSaCVAAA5pBF17LE875.png注意:当看到 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;

wKiom1ascXKQDpZ1AAAoMtI0MKM252.png

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






      本文转自 M四月天 51CTO博客,原文链接:http://blog.51cto.com/msiyuetian/1740236 ,如需转载请自行联系原作者



相关实践学习
如何快速连接云数据库RDS MySQL
本场景介绍如何通过阿里云数据管理服务DMS快速连接云数据库RDS MySQL,然后进行数据表的CRUD操作。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助 &nbsp; &nbsp; 相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
相关文章
|
2月前
|
SQL 关系型数据库 MySQL
mysql主从复制概述和配置
【10月更文挑战第22天】MySQL 主从复制是一种将主服务器的数据复制到一个或多个从服务器的技术,实现读写分离,提高系统性能和可用性。主服务器记录变更日志,从服务器通过 I/O 和 SQL 线程读取并应用这些变更。适用于读写分离、数据备份和恢复、数据分析等场景。配置步骤包括修改配置文件、创建复制用户、配置从服务器连接主服务器并启动复制进程。
129 1
|
2月前
|
分布式计算 资源调度 Hadoop
大数据-80 Spark 简要概述 系统架构 部署模式 与Hadoop MapReduce对比
大数据-80 Spark 简要概述 系统架构 部署模式 与Hadoop MapReduce对比
83 2
|
2月前
|
监控 关系型数据库 MySQL
深入了解MySQL主从复制:构建高效稳定的数据同步架构
深入了解MySQL主从复制:构建高效稳定的数据同步架构
143 1
|
8天前
|
关系型数据库 MySQL 数据库
docker高级篇(大厂进阶):安装mysql主从复制
docker高级篇(大厂进阶):安装mysql主从复制
66 24
|
8天前
|
Serverless 决策智能 UED
构建全天候自动化智能导购助手:从部署者的视角审视Multi-Agent架构解决方案
在构建基于多代理系统(Multi-Agent System, MAS)的智能导购助手过程中,作为部署者,我体验到了从初步接触到深入理解再到实际应用的一系列步骤。整个部署过程得到了充分的引导和支持,文档详尽全面,使得部署顺利完成,未遇到明显的报错或异常情况。尽管初次尝试时对某些复杂配置环节需反复确认,但整体流程顺畅。
|
2月前
|
存储 关系型数据库 MySQL
MySQL主从复制原理和使用
本文介绍了MySQL主从复制的基本概念、原理及其实现方法,详细讲解了一主两从的架构设计,以及三种常见的复制模式(全同步、异步、半同步)的特点与适用场景。此外,文章还提供了Spring Boot环境下配置主从复制的具体代码示例,包括数据源配置、上下文切换、路由实现及切面编程等内容,帮助读者理解如何在实际项目中实现数据库的读写分离。
123 1
MySQL主从复制原理和使用
|
1月前
|
监控 安全 持续交付
构建高效的微服务架构:从设计到部署
构建高效的微服务架构:从设计到部署
25 1
|
1月前
|
Docker 微服务 容器
使用Docker Compose实现微服务架构的快速部署
使用Docker Compose实现微服务架构的快速部署
62 1
|
2月前
|
SQL 关系型数据库 MySQL
Mysql中搭建主从复制原理和配置
主从复制在数据库管理中广泛应用,主要优点包括提高性能、实现高可用性、数据备份及灾难恢复。通过读写分离、从服务器接管、实时备份和地理分布等机制,有效增强系统的稳定性和数据安全性。主从复制涉及I/O线程和SQL线程,前者负责日志传输,后者负责日志应用,确保数据同步。配置过程中需开启二进制日志、设置唯一服务器ID,并创建复制用户,通过CHANGE MASTER TO命令配置从服务器连接主服务器,实现数据同步。实验部分展示了如何在两台CentOS 7服务器上配置MySQL 5.7主从复制,包括关闭防火墙、配置静态IP、设置域名解析、配置主从服务器、启动复制及验证同步效果。
Mysql中搭建主从复制原理和配置
|
1月前
|
供应链 监控 安全
网络安全中的零信任架构:从概念到部署
网络安全中的零信任架构:从概念到部署