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

本文涉及的产品
RDS AI 助手,专业版
RDS MySQL DuckDB 分析主实例,基础系列 4核8GB
RDS Agent(兼容OpenClaw),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 ,如需转载请自行联系原作者



相关实践学习
每个IT人都想学的“Web应用上云经典架构”实战
本实验从Web应用上云这个最基本的、最普遍的需求出发,帮助IT从业者们通过“阿里云Web应用上云解决方案”,了解一个企业级Web应用上云的常见架构,了解如何构建一个高可用、可扩展的企业级应用架构。
MySQL数据库入门学习
本课程通过最流行的开源数据库MySQL带你了解数据库的世界。 &nbsp; 相关的阿里云产品:云数据库RDS MySQL 版 阿里云关系型数据库RDS(Relational Database Service)是一种稳定可靠、可弹性伸缩的在线数据库服务,提供容灾、备份、恢复、迁移等方面的全套解决方案,彻底解决数据库运维的烦恼。 了解产品详情:&nbsp;https://www.aliyun.com/product/rds/mysql&nbsp;
相关文章
|
负载均衡 算法 关系型数据库
大数据大厂之MySQL数据库课程设计:揭秘MySQL集群架构负载均衡核心算法:从理论到Java代码实战,让你的数据库性能飙升!
本文聚焦 MySQL 集群架构中的负载均衡算法,阐述其重要性。详细介绍轮询、加权轮询、最少连接、加权最少连接、随机、源地址哈希等常用算法,分析各自优缺点及适用场景。并提供 Java 语言代码实现示例,助力直观理解。文章结构清晰,语言通俗易懂,对理解和应用负载均衡算法具有实用价值和参考价值。
大数据大厂之MySQL数据库课程设计:揭秘MySQL集群架构负载均衡核心算法:从理论到Java代码实战,让你的数据库性能飙升!
|
运维 数据可视化 关系型数据库
使用 Websoft9 运维面板部署和维护 WordPress 到底有多简单?
如何实现 WordPress 极速部署?Websoft9 通过应用商店一键安装与可视化运维管理,10 分钟完成零门槛上线。
528 1
|
存储 SQL 关系型数据库
Mysql高可用架构方案
本文阐述了Mysql高可用架构方案,介绍了 主从模式,MHA模式,MMM模式,MGR模式 方案的实现方式,没有哪个方案是完美的,开发人员在选择何种方案应用到项目中也没有标准答案,合适的才是最好的。
1274 3
Mysql高可用架构方案
|
存储 SQL 关系型数据库
MySQL进阶突击系列(03) MySQL架构原理solo九魂17环连问 | 给大厂面试官的一封信
本文介绍了MySQL架构原理、存储引擎和索引的相关知识点,涵盖查询和更新SQL的执行过程、MySQL各组件的作用、存储引擎的类型及特性、索引的建立和使用原则,以及二叉树、平衡二叉树和B树的区别。通过这些内容,帮助读者深入了解MySQL的工作机制,提高数据库管理和优化能力。
|
11月前
|
关系型数据库 MySQL 分布式数据库
Super MySQL|揭秘PolarDB全异步执行架构,高并发场景性能利器
阿里云瑶池旗下的云原生数据库PolarDB MySQL版设计了基于协程的全异步执行架构,实现鉴权、事务提交、锁等待等核心逻辑的异步化执行,这是业界首个真正意义上实现全异步执行架构的MySQL数据库产品,显著提升了PolarDB MySQL的高并发处理能力,其中通用写入性能提升超过70%,长尾延迟降低60%以上。
|
监控 关系型数据库 MySQL
深入了解MySQL主从复制:构建高效稳定的数据同步架构
深入了解MySQL主从复制:构建高效稳定的数据同步架构
481 1
|
NoSQL 关系型数据库 MySQL
微服务架构下的数据库选择:MySQL、PostgreSQL 还是 NoSQL?
在微服务架构中,数据库的选择至关重要。不同类型的数据库适用于不同的需求和场景。在本文章中,我们将深入探讨传统的关系型数据库(如 MySQL 和 PostgreSQL)与现代 NoSQL 数据库的优劣势,并分析在微服务架构下的最佳实践。
|
数据可视化 NoSQL 开发者
国内免费高效部署WordPress方案探索之Websoft9多应用托管实践
在数字化普及的当下,WordPress 成为众多开发者和企业的建站首选。然而国内缺乏高效免费的部署方案。本文对比主流平台后推荐 **Websoft9**:其具备一键部署、多应用托管、性能优越、技术体系完善等优势,支持 WordPress 与其他系统的集成,适配阿里云、华为云等主流平台,是当前最值得尝试的开源建站方案之一。
362 0
国内免费高效部署WordPress方案探索之Websoft9多应用托管实践
|
负载均衡 算法 关系型数据库
大数据新视界--大数据大厂之MySQL数据库课程设计:MySQL集群架构负载均衡故障排除与解决方案
本文深入探讨 MySQL 集群架构负载均衡的常见故障及排除方法。涵盖请求分配不均、节点无法响应、负载均衡器故障等现象,介绍多种负载均衡算法及故障排除步骤,包括检查负载均衡器状态、调整算法、诊断修复节点故障等。还阐述了预防措施与确保系统稳定性的方法,如定期监控维护、备份恢复策略、团队协作与知识管理等。为确保 MySQL 数据库系统高可用性提供全面指导。
|
关系型数据库 MySQL PHP
源码编译安装LAMP(HTTP服务,MYSQL ,PHP,以及bbs论坛)
通过以上步骤,你可以成功地在一台Linux服务器上从源码编译并安装LAMP环境,并配置一个BBS论坛(Discuz!)。这些步骤涵盖了从安装依赖、下载源代码、配置编译到安装完成的所有细节。每个命令的解释确保了过程的透明度,使即使是非专业人士也能够理解整个流程。
457 18

推荐镜像

更多