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

本文涉及的产品
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
RDS MySQL Serverless 高可用系列,价值2615元额度,1个月
简介:

    实验主要是基于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 ,如需转载请自行联系原作者



相关实践学习
基于CentOS快速搭建LAMP环境
本教程介绍如何搭建LAMP环境,其中LAMP分别代表Linux、Apache、MySQL和PHP。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助 &nbsp; &nbsp; 相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
相关文章
|
3天前
|
存储 算法 关系型数据库
【MySQL技术内幕】2.3-InnoDB体系架构
【MySQL技术内幕】2.3-InnoDB体系架构
7 1
|
9天前
|
缓存 关系型数据库 MySQL
MySQL数据库——InnoDB引擎-架构-内存结构(Buffer Pool、Change Buffer、Adaptive Hash Index、Log Buffer)
MySQL数据库——InnoDB引擎-架构-内存结构(Buffer Pool、Change Buffer、Adaptive Hash Index、Log Buffer)
24 3
|
11天前
|
Ubuntu 关系型数据库 MySQL
ubuntu apt 安装wordpress所需所有的 一键脚本 扩展您的PHP似乎没有安装运行WordPress所必需的MySQL扩展。
ubuntu apt 安装wordpress所需所有的 一键脚本 扩展您的PHP似乎没有安装运行WordPress所必需的MySQL扩展。
ubuntu apt 安装wordpress所需所有的 一键脚本 扩展您的PHP似乎没有安装运行WordPress所必需的MySQL扩展。
|
16天前
|
Kubernetes 负载均衡 应用服务中间件
k8s 二进制安装 优化架构之 部署负载均衡,加入master02
k8s 二进制安装 优化架构之 部署负载均衡,加入master02
|
26天前
|
运维 监控 JavaScript
【阿里云云原生专栏】Serverless架构下的应用部署与运维:阿里云Function Compute深度探索
【5月更文挑战第21天】阿里云Function Compute是事件驱动的无服务器计算服务,让用户无需关注基础设施,专注业务逻辑。本文详述了在FC上部署应用的步骤,包括创建函数、编写代码和部署,并介绍了运维功能:监控告警、日志管理、版本管理和授权管理,提供高效低成本的计算服务。
238 6
|
26天前
|
SQL 存储 关系型数据库
MySQL架构
【5月更文挑战第21天】MySQL架构
24 1
|
29天前
|
运维 监控 Docker
使用Docker进行微服务架构的部署
【5月更文挑战第18天】本文探讨了如何使用Docker进行微服务架构部署,介绍了Docker的基本概念,如容器化平台和核心组件,以及它与微服务的关系。通过Docker,每个微服务可独立运行在容器中,便于构建、测试和部署。文章详细阐述了使用Docker部署微服务的步骤,包括定义服务、编写Dockerfile、构建镜像、运行容器、配置服务通信、监控和日志管理以及扩展和更新。Docker为微服务提供了可移植、可扩展的解决方案,是现代微服务架构的理想选择。
|
1月前
|
SQL canal 运维
MySQL高可用架构探秘:主从复制剖析、切换策略、延迟优化与架构选型
MySQL高可用架构探秘:主从复制剖析、切换策略、延迟优化与架构选型
|
1月前
|
安全
SiteGround如何设置WordPress网站自动更新
iteGround Autoupdate功能会自动帮我们更新在他们这里托管的所有WordPress网站,这样做是为了保证网站安全,并且让它们一直保持最新状态。他们会根据我们选择的设置自动更新不同版本的WordPress,包括主要版本和次要版本。在每次自动更新之前,他们都会为我们的网站做一个完整的备份,这样如果有什么问题,我们可以轻松地恢复到之前的状态。在本文中,我们将介绍如何在SiteGround中设置WordPress网站自动更新。
49 0
SiteGround如何设置WordPress网站自动更新
|
1月前
WordPress网站更换域名后如何重新激活elementor
本文讲解WordPress网站更换域名后如何重新激活elementor。首先你需要在WordPress后台elementor下点击Disconnect断开原elementor连接,然后登录elementor官网,在后台解除原网站授权;接着在WordPress后台重新连接并激活elementor。
76 2
WordPress网站更换域名后如何重新激活elementor

推荐镜像

更多