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

本文涉及的产品
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
云数据库 RDS MySQL,集群系列 2核4GB
推荐场景:
搭建个人博客
云数据库 RDS PostgreSQL,集群系列 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 ,如需转载请自行联系原作者



相关实践学习
如何在云端创建MySQL数据库
开始实验后,系统会自动创建一台自建MySQL的 源数据库 ECS 实例和一台 目标数据库 RDS。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助 &nbsp; &nbsp; 相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
相关文章
|
26天前
|
分布式计算 资源调度 Hadoop
大数据-80 Spark 简要概述 系统架构 部署模式 与Hadoop MapReduce对比
大数据-80 Spark 简要概述 系统架构 部署模式 与Hadoop MapReduce对比
56 2
|
1月前
|
监控 关系型数据库 MySQL
深入了解MySQL主从复制:构建高效稳定的数据同步架构
深入了解MySQL主从复制:构建高效稳定的数据同步架构
99 1
|
2月前
|
NoSQL 关系型数据库 MySQL
微服务架构下的数据库选择:MySQL、PostgreSQL 还是 NoSQL?
在微服务架构中,数据库的选择至关重要。不同类型的数据库适用于不同的需求和场景。在本文章中,我们将深入探讨传统的关系型数据库(如 MySQL 和 PostgreSQL)与现代 NoSQL 数据库的优劣势,并分析在微服务架构下的最佳实践。
|
3月前
|
负载均衡 应用服务中间件 持续交付
微服务架构下的Web服务器部署
【8月更文第28天】随着互联网应用的不断发展,传统的单体应用架构逐渐显露出其局限性,特别是在可扩展性和维护性方面。为了解决这些问题,微服务架构应运而生。微服务架构通过将应用程序分解成一系列小型、独立的服务来提高系统的灵活性和可维护性。本文将探讨如何在微服务架构中有效部署和管理Web服务器实例,并提供一些实际的代码示例。
102 0
|
2月前
|
运维 Cloud Native Devops
云原生架构的崛起与实践云原生架构是一种通过容器化、微服务和DevOps等技术手段,帮助应用系统实现敏捷部署、弹性扩展和高效运维的技术理念。本文将探讨云原生的概念、核心技术以及其在企业中的应用实践,揭示云原生如何成为现代软件开发和运营的主流方式。##
云原生架构是现代IT领域的一场革命,它依托于容器化、微服务和DevOps等核心技术,旨在解决传统架构在应对复杂业务需求时的不足。通过采用云原生方法,企业可以实现敏捷部署、弹性扩展和高效运维,从而大幅提升开发效率和系统可靠性。本文详细阐述了云原生的核心概念、主要技术和实际应用案例,并探讨了企业在实施云原生过程中的挑战与解决方案。无论是正在转型的传统企业,还是寻求创新的互联网企业,云原生都提供了一条实现高效能、高灵活性和高可靠性的技术路径。 ##
164 3
|
2月前
|
缓存 Java 应用服务中间件
随着微服务架构的兴起,Spring Boot凭借其快速开发和易部署的特点,成为构建RESTful API的首选框架
【9月更文挑战第6天】随着微服务架构的兴起,Spring Boot凭借其快速开发和易部署的特点,成为构建RESTful API的首选框架。Nginx作为高性能的HTTP反向代理服务器,常用于前端负载均衡,提升应用的可用性和响应速度。本文详细介绍如何通过合理配置实现Spring Boot与Nginx的高效协同工作,包括负载均衡策略、静态资源缓存、数据压缩传输及Spring Boot内部优化(如线程池配置、缓存策略等)。通过这些方法,开发者可以显著提升系统的整体性能,打造高性能、高可用的Web应用。
68 2
|
20天前
|
存储 关系型数据库 MySQL
Mysql(4)—数据库索引
数据库索引是用于提高数据检索效率的数据结构,类似于书籍中的索引。它允许用户快速找到数据,而无需扫描整个表。MySQL中的索引可以显著提升查询速度,使数据库操作更加高效。索引的发展经历了从无索引、简单索引到B-树、哈希索引、位图索引、全文索引等多个阶段。
55 3
Mysql(4)—数据库索引
|
5天前
|
关系型数据库 MySQL Linux
在 CentOS 7 中通过编译源码方式安装 MySQL 数据库的详细步骤,包括准备工作、下载源码、编译安装、配置 MySQL 服务、登录设置等。
本文介绍了在 CentOS 7 中通过编译源码方式安装 MySQL 数据库的详细步骤,包括准备工作、下载源码、编译安装、配置 MySQL 服务、登录设置等。同时,文章还对比了编译源码安装与使用 RPM 包安装的优缺点,帮助读者根据需求选择最合适的方法。通过具体案例,展示了编译源码安装的灵活性和定制性。
37 2
|
8天前
|
存储 关系型数据库 MySQL
MySQL vs. PostgreSQL:选择适合你的开源数据库
在众多开源数据库中,MySQL和PostgreSQL无疑是最受欢迎的两个。它们都有着强大的功能、广泛的社区支持和丰富的生态系统。然而,它们在设计理念、性能特点、功能特性等方面存在着显著的差异。本文将从这三个方面对MySQL和PostgreSQL进行比较,以帮助您选择更适合您需求的开源数据库。
38 4
|
14天前
|
存储 关系型数据库 MySQL
如何在MySQL中创建数据库?
【10月更文挑战第16天】如何在MySQL中创建数据库?

热门文章

最新文章