共计 5781 个字符,预计需要花费 15 分钟才能阅读完成。
一、需求分析
1. 前端需支持更大的访问量,单台 Web 服务器已无法满足需求了,则需扩容 Web 服务器;
2. 虽然动态内容可交由后端的 PHP 服务器执行,但静态页面还需要 Web 服务器自己解析,那是否意味着多台 Web 服务器都需要在各自的系统中都存有一份静态页面数据呢?那么如果能将静态页面集中存放,所有 Web 服务器都来集中地取文件,对于文件的一致性就有了保障,这个集中地就叫做“文件共享服务器”;
二、需求实现:
1.web1 充当 http 服务器和 DNS 解析服务器,客户端到 web1 和 web2 的请求,如果是静态资源请求通过 php 主机的 NFS 服务挂载的存储返回结果
2.web1 和 web2 对于客户端动态资源请求都反向代理到后端 php 服务器进行执行后返回结果
3.web1 和 web2 实现 DNS 轮询,客户端访问博客网站是负载均衡的。
4. 建立 wordpress 博客
5. 数据库存储 wordpress 博客的各种数据
三、架构图
四、步骤概述
1. 部署 LAMP 环境、配置 NFS 服务器
2.web1、web2、php 服务器全部挂载 NFS 共享目录为网站根目录
3. 配置 httpd 实现动静分离
4. 配置 DNS 实现负载均衡
五、详细过程
1.web1、web2 服务器编译安装 Apache
# 安装依赖包
yum groupinstall "development tools"
yum install openssl-devel expat-devel pcre-devel
#
# 解压文件
tar xvf apr-1.6.2.tar.gz
tar xvf apr-util-1.6.0.tar.gz
tar xvf httpd-2.4.27.tar.bz2
cp -r apr-1.6.2 httpd-2.4.27/srclib/apr
cp -r apr-util-1.6.0 httpd-2.4.27/srclib/apr-util
#
# 编译安装
cd httpd-2.4.27/
./configure \
--prefix=/app/httpd24 \
--sysconfdir=/etc/httpd24 \
--enable-so --enable-ssl \
--enable-rewrite --with-zlib \
--with-pcre --with-included-apr \
--enable-modules=most \
--enable-mpms-shared=all \
--with-mpm=prefork
#
make && make install
#
# 配置环境变量
vim /etc/profile.d/lamp.sh
PATH=/app/httpd24/bin/:$PATH
. /etc/profile.d/lamp.sh
#
# 启动服务
apachectl start
2. 数据库服务器二进制安装 mariadb
# 解压文件
tar xvf mariadb-10.2.8-linux-x86_64.tar.gz -C /usr/local/
cd /usr/local
#
# 创建软连接,mariadb 在 /usr/local 下必须名为 MySQL,可以创建软连接,可以改名
ln -s mariadb-10.2.8-linux-x86_64/ mysql
#
# 创建用户
useradd -r -m -d /app/mysqldb -s /sbin/nologin mysql
cd mysql/
#
# 初始化数据库
scripts/mysql_install_db --datadir=/app/mysqldb --user=mysql
#
# 创建配置文件
mkdir /etc/mysql
cp support-files/my-large.cnf /etc/mysql/my.cnf
#
# 修改配置文件,指定数据库存放路径
vim /etc/mysql/my.cnf
[mysqld]
datadir = /app/mysqldb 在 mysqld 下添加这三行
innodb_file_per_table = ON
skip_name_resolve = ON
#
# 复制启动脚本,添加开机自动启动
cp support-files/mysql.server /etc/init.d/mysqld
chkconfig --add mysqld
chkconfig --list
service mysqld start
#
# 创建日志目录
mkdir /var/log/mariadb
chown mysql /var/log/mariadb/
#
# 添加环境变量
vim /etc/profile.d/lamp.sh
PATH=/app/httpd24/bin/:/usr/local/mysql/bin/:$PATH
. /etc/profile.d/lamp.sh
#
# 调用安全加固脚本,加固数据库。汉字为每一项的翻译
mysql_secure_installation
是否设置 root 密码
输入密码
确认密码
是否设置匿名用户
是否允许 root 远程登录
删除 test 数据库
现在是否生效
3.PHP 应用服务器编译安装 PHP7
# 安装依赖包
yum install libxml2-devel bzip2-devel libmcrypt-devel gcc openssl-devel
tar xvf php-7.1.7.tar.bz2
#
# 编译安装
cd php-7.1.7.tar.bz2
./configure \
--prefix=/app/php \
--enable-mysqlnd \ #mysqlnd 指明 Mysql 不再本地
--with-mysqli=mysqlnd \
--with-pdo-mysql=mysqlnd \
--with-openssl \
--enable-mbstring \
--with-freetype-dir \
--with-jpeg-dir \
--with-png-dir \
--with-zlib \
--with-libxml-dir=/usr \
--enable-xml \
--enable-sockets \
--enable-fpm \ #用 FPM 模式
--with-mcrypt \
--with-config-file-path=/etc/php \
--with-config-file-scan-dir=/etc/php.d \
--with-bz2
#
# 创建 PHP 配置文件
mkdir /etc/php/
cp php.ini-production /etc/php/php.ini
#
# 复制服务脚本,添加开机自动启动
cp sapi/fpm/init.d.php-fpm /etc/init.d/php-fpm
chmod +x /etc/init.d/php-fpm
chkconfig --add php-fpm
chkconfig --list php-fpm
#
# 创建 fpm 的配置文件
cd /app/php/etc
cp php-fpm.conf.default php-fpm.conf
cd /app/php/etc/php-fpm.d/
cp www.conf.default www.conf
vim www.conf
listen = 172.18.68.23:9000 #设置监听的IP,注释监听所有,只写端口监听鄋
;listen.allowed_clients = 127.0.0.1. #把这项注释掉,分号为注释
systemctl start php-fpm
4. 配置 NFS 服务器
NFS 服务器的配置特别简单,最重要的时配置完后就赶紧将 NFS 共享目录挂载至 web1、web2、PHP 服务器的网站根目录。
mkdir -pv /app/nfs/web # 创建共享目录,此目录为网站的根目录,实现统一管理。
vim /etc/exports
/app/nfs/web 172.18.0.0/16(ro,sync,root_squash,no_all_squash)
# 允许 172.18.0.1 网段挂载 NFS 共享,如果要提高安全性应该控制到主机
-
Web1 服务器
mount 172.18.68.24:/app/nfs/web /app/httpd24/htdocs #/app/httpd24/htdocs 为 httpd.conf 中的根目录
-
Web2 服务器
mount 172.18.68.24:/app/nfs/web /app/httpd24/htdocs #/app/httpd24/htdocs 为 httpd.conf 中的根目录
-
PHP 应用服务器
mkdir /app/httpd24/htdocs #PHP 没有根目录,/app/httpd24/htdocs 为 NFS 的挂载点。 mount 172.18.68.24:/app/nfs/web /app/httpd24/htdocs
5. 配置 Apache 实现动静分离
-
加载模块
vim /etc/httpd24/httpd.conf LoadModule proxy_module modules/mod_proxy.so # 取消两行的注释,加载两模块 LoadModule proxy_fcgi_module modules/mod_proxy_fcgi.so
-
动静分离
在配置文件的末尾追加这四行,利用代理将所有以.php 结尾的文件交给 PHP 服务器处理,实现动静分离vim /etc/httpd24/httpd.conf AddType application/x-httpd-php .php AddType application/x-httpd-php-source .phps ProxyRequests Off 关闭正向代理 ProxyPassMatch ^/(.*\.php)$ fcgi://127.0.0.1:9000/app/httpd24/htdocs/$1 # 要确保 PHP 服务器中有这个目录,(在 NFS 中创建这个目录,且将 NFS 挂载至此目录。) apachectl restart
6. 部署 wordpress 博客
因为 web1、web2、PHP 服务器都使用 NFS 共享的目录作为根目录,所以只需要将 wordpress 博客系统部署在 NFS 服务器上即可让所有服务器得到同样的数据。
-
安装博客程序
# 解压博客程序 tar xvf wordpress-4.8.1-zh_CN.tar.gz -C /app/httpd24/htdocs cd /app/httpd24/htdocs mv wordpress/ blog/ # 创建配置文件 cd /app/httpd24/htdocs/blog/ cp wp-config-sample.php wp-config.php
-
配置数据库
wordpress 需要数据库,所以在此先创建一个 wordpress 专用的数据库,且创建授权用户。mysql -uroot -pCentOS create datebase wpdb; grant all on wpdb.* to wpuser@'172.18.68.%' identified by 'centos';
-
配置 wordpress 连接数据库
# 编辑配置文件,写入创建的 IP、数据库、与用户性 vim wp-config.php define('DB_NAME', 'wpdb'); # /** MySQL 数据库用户名 */ define('DB_USER', 'wpuser'); # /** MySQL 数据库密码 */ define('DB_PASSWORD', 'centos'); # /** MySQL 主机 */ define('DB_HOST', 'localhost');
7. 登录测试
- 浏览器打开,http://IP,设置管理员的用户名密码,点击安装
- 输入用户名密码,即可进入博客网站的后台页面。
- 默认风格的博客页面首页,还是比较好看滴、
8. 配置 DNS 负载均衡
购买了单独域名后,在后台控制面板中添加两条 A 记录,就可以达到负载均衡。
到这里基于 LAMP+NFS 架构的双 Web 服务器、动静分离网站就搭建完成了。
双 WEB 服务器架构的好处在于如果有一台服务器宕机不会是整个网站瘫痪。
NFS 共享存储的好处在于,DNS 负载均衡后,不论用户被分配到哪台主机上,都能看到相同的页面得到相同的结果。
下面关于 LAMP 相关 的内容你可能也喜欢:
LAMP 平台安装 Xcache 和 Memcached 加速网站运行 http://www.linuxidc.com/Linux/2015-06/118835.htm
CentOS 7 下搭建 LAMP 平台环境 http://www.linuxidc.com/Linux/2015-06/118818.htm
CentOS 7.3 下配置 LAMP 实现 WordPress http://www.linuxidc.com/Linux/2017-07/145947.htm
Ubuntu 14.04 配置 LAMP+phpMyAdmin PHP(5.5.9)开发环境 http://www.linuxidc.com/Linux/2014-10/107924.htm
LAMP 结合 NFS 构建小型博客站点 http://www.linuxidc.com/Linux/2015-08/121029.htm
CentOS7 下安装部署 LAMP 环境 http://www.linuxidc.com/Linux/2016-04/130653.htm
CentOS 7 上安装(LAMP)服务 Linux,Apache,MySQL,PHP http://www.linuxidc.com/Linux/2017-05/143868.htm
Ubuntu Server 14.04 LTS 下搭建 LAMP 环境图文详解 http://www.linuxidc.com/Linux/2016-12/138758.htm
Ubuntu Server 16.04 下配置 LAMP 环境 http://www.linuxidc.com/Linux/2016-12/138757.htm
在 Ubuntu 17.04 上安装搭建 LAMP 组件环境 http://www.linuxidc.com/Linux/2017-07/145644.htm
CentOS 6.7 编译安装 LAMP 详解 http://www.linuxidc.com/Linux/2017-03/141244.htm
Ubuntu 16.04 搭建 LAMP 开发环境 http://www.linuxidc.com/Linux/2016-10/136327.htm
本文永久更新链接地址:http://www.linuxidc.com/Linux/2017-10/147740.htm