LAMP简单架构实验:Apache+NFS+MySQL

实验要求


  1. 两台WEB服务器,Apache-2.4[编译] + PHP-5.6.14[编译];
  2. 数据库服务器, MariaDB-5.4.46[通用二进制];
  3. NFS服务器,存放网页文件;
  4. DNS中做轮循,分别指向这两台WEB服务器,起到负载均衡的作用,当然也可以做单点故障切换;
  5. 搭建的是DZ论坛,要求实现负载均衡,要保证数据一致,即通过web1访问的论坛数据和web2一致;

拓扑如下:

实验步骤1.部署WEB1



1.1 安装编译开发环境

yum  groupinstall "Development Tools" "Server Platform Development" -y

1.2 编译安装Apr-1.5『因为Apache2.4依赖1.4以上版本的apr和apr-util』

./configure --prefix=/usr/local/apr
make && make install

此处遇到报错:

Error:rm: cannot remove `libtoolT‘: No such file or directory

解决:编辑目录下configure文件,注视掉 # $RM "$cfgfile"

1.3 编译安装Apr-util

./configure --prefix=/usr/local/apr-util --with-apr=/usr/local/apr
make && make install

1.4 编译安装Apache-2.4

需指明apr、apr-util路径,否则会自动寻找,如果系统上有1.4以下版本的apr可能会出错!

./configure --prefix=/usr/local/apache --sysconfdir=/etc/httpd/ --enable-so 
--enable-ssl --enable-cgi --enable-rewrite --with-zlib --with-pcre --with-apr=/usr/local/apr --with-apr-util=/usr/local/apr-util --enable-modules=most --enable-mpms-shared=all --with-mpm=prefork

1.5 创建apache用户,为httpd2.4进程运行

groupadd -r -g 48 apache
useradd -r -u 48 -g 48 apache

1.6 编辑apache配置文件,以apache用户身份运行web进程

vi /etc/httpd/httpd.conf
164行 User  apache
165行 Group apache

1.7 准备PHP安装环境

yum -y install zlib zlib-devel bzip2 bzip2-devel freetype freetype-devel libmcrypt libmcrypt-devel libxml2 libxml2-devel libxslt libxslt-devel libpng libpng-devel libjpeg-turbo libjpeg-turbo-devel curl libcurl-devel gd-devel openssl

细心的你一定发现这里的包大多成对出现,请注意一般-devel附包都未安装,devel包需要指定EPEL源,反正我用的是Aliyun的EPEL源 http://mirrors.aliyun.com/repo/

也许一些特殊的CMS需要特别的PHP库支持,可以通过PHP的phpize后期方便的编译后调用即可。


1.8 编译安装libiconv

wget 
./configure --prefix=/usr/local/libiconv
make && make install

1.9 编译安装PHP

  ./configure --prefix=/usr/local/php --with-config-file-path=/etc/php/php.ini --with-config-file-scan-dir=/etc/php.d/ --with-apxs2=/usr/local/apache/bin/apxs --enable-mbstring --with-freetype-dir --with-jpeg-dir --with-png-dir --with-zlib --with-bz2 --enable-xml --with-xsl --with-libxml-dir  --with-mcrypt  --with-openssl --with-curl  --with-iconv=/usr/local/libiconv --enable-sockets --enable-short-tags --enable-static --enable-gd-native-ttf --enable-ftp --enable-maintainer-zts --with-mysql=mysqlnd --with-pdo-mysql=mysqlnd --with-mysqli=mysqlnd

关于PHP和MySQL结合驱动问题,可以参考我的博文《》

1.10 编辑php配置文件

mkdir /etc/php/
cp /download/php-5.6.14/php.ini-production /etc/php/php.ini
vim /ect/php/php.ini
data.timezone = “Asia/Shanghai”    修改时区

1.11 编辑apache主配置文件

vim /etc/httpd/httpd.conf
LoadModule php5_module   modules/libphp5.so

AddType application/x-httpd-php .php .phtml
AddType application/x-httpd-php-source .phps

<IfModule dir_module>
DirectoryIndex index.php index.html
</IfModule>	

请注意由于加载的libphp5.so使用的相对路径,而/usr/local/apache并未写到环境变量,所以可能会出问题。建议 export PATH=/usr/local/apache:/usr/local/apache/bin:$PATH

1.12 编辑一个测试页面,测试是否成功!

至此,Web服务器端已搭设完毕!web1和web2安装步骤相同。

实验步骤2.部署MariaDB Server



2.1 通用二进制安装MariaDB

在之前已经成功部署过MariaDB Server,请参照我博文 《MariaDB通用二进制部署手册》

2.2 创建数据库

在架构中MariadDB Server是独立于Web服务器的,所以Web服务器上的PHP引擎通过php-mysql驱动连接到MariaDB Server是基于TCP/IP协议栈的远程连接,这需要在数据库服务器上授权

CREATE DATABASE BBS;
GRANT ALL PRIVILEGES ON BBS.* TO ‘bbs‘@‘10.134.140.%‘ IDENTIFIED BY ‘zxczxc‘ WITH GRANT OPTION;
FLUSH PRIVILEGES;

2.3 查看数据库授权信息

至此,数据库服务器搭建完毕!

实验步骤3.部署NFS Server



架构中NFS Server承担着存放网页数据的功用,要能够被前端的Web1 Server和Web2 Server正常读写!

3.1 创建目录,解压DZ BBS

mkdir /wwwroot && cd /wwwroot
wget 
unzip Discuz_X3.2_SC_UTF8.zip

3.2 创建用户

这个用户要与前端Web Server上的apache用户的UID、GID一样,这是为了保证前端的web服务器挂载NFS后读写权限的有效且安全

groupadd -r -g 48 apache
useradd -r -u 48 -g 48 apache
setfacl -R -m u:apache:rwx /wwwroot/

3.3 编辑NFS配置文件

vi /etc/exports
/wwwroot 10.134.140.63(rw,async,all_squash,anonuid=48,anongid=48) 10.134.140.64(rw,async,all_squash,anonuid=48,anongid=48)
service nfs start

至此,NFS服务器搭建完毕,所有网页内容均存放于/wwwroot/bbs下,只允许10.134.140.63/64挂载该目录,且对该目录的使用身份映射为NFS Server上的apache用户,而apache用户对/wwwroot/权限为rwx

实验步骤4.挂载NFS,配置主站点



4.1 在Web Server上挂载远程的wwwroot

mkdir /wwwroot/
setfacl -R -m u:apache:rwx /wwwroot/
mount -t nfs 10.134.140.66:/wwwroot/ /wwwroot/

4.2 编辑主站点配置文件

vi /etc/httpd/httpd.conf

DocumentRoot "/wwwroot/bbs"
<Directory "/wwwroot/bbs">
....
</Directory>

4.3 在Web Server2上同样进行挂载操作!修改主站点配置文件。

至此,所有配置已准备完毕,确保所有服务正常启动后,进行测试!

实验步骤5.测试架构



5.1 访问Web Server1进行DZ论坛的初始化安装

检查环境中,可以看到各组件支持情况,很幸运,全部满足!

5.2 设置运行环境

[略过,无影响,是设置DZ论坛群集的]


5.3 创建数据库

下一步后,静待安装完成!即可成功访问DZ论坛了!

5.4 通过Web1 Server发帖子


5.5 通过Web2 Server验证

架构实验基本完成!

几点小结


  1. 前端的DNS服务器限于篇幅我没做,直接使用63/64地址访问效果一致~偷懒了;
  2. 试验中安装DZ论坛发现提示"数据库连接错误" ,最后发现是iptables规则导致,清空OK;
  3. 绝大多数情况下,编译安装提示某个包xx未装,而自己的确装了,这一般都是由于xx-devel附包未装,指定好EPEL源,安装即可;
  4. 在PHP编译时已经预先编译了常见的组件,如果某些CMS需要特别组件,无需重新编译,phpize可动态编译新组建,然后修改php.ini调用该so即可;
  5. 绝大多数服务器启动失败,无外乎3个原因:
    1. 特定目录的权限不够!
    2. 安装或启动脚本使用了相对路径,而未写入环境变量!
    3. 配置文件有问题!

希望这几点能帮助到你,当然以上架构还可以将PHP与Apache拆分,前端Apache响应静态内容,通过FastCGI将php动态请求交给PHP Server!

时间: 2024-10-05 06:41:02

LAMP简单架构实验:Apache+NFS+MySQL的相关文章

LAMP编译安装之Apache+php+mysql

环境模型: (1)PHP作为apache的模块编译安装. (2)mysql数据库在另一台服务器上安装.版本为MariaDB5.5.33    IP:192.168.1.124 (3)PHP版本5.4.36,http的版本2.4 (4)安装Apache和php的主机IP为192.168.1.123. 一.编译安装apache    1.解决依赖关系     httpd-2.4.9需要较新版本的apr和apr-util,因此需要事先对其进行升级.升级方式有两种,一种是通过源代码编译安装,一种是直接升

ZH奶酪:Ubuntu 14.04配置LAMP(Linux、Apache、MySQL、PHP)

ZH奶酪:Ubuntu 14.04安装LAMP(Linux,Apache,MySQL,PHP) 之前已经介绍过LAMP的安装,这边文章主要讲解一下LAMP的配置. 1.配置Apache (1)调整KeepAlive设置(参考[1].[2]): 在内存非常充足的服务器上,不管是否关闭 KeepAlive 功能,服务器性能不会有明显变化: 如果服务器内存较少,或者服务器有非常大量的文件系统访问时,或者主要处理动态网页服务,关闭 KeepAlive 后可以节省很多内存,而节省出来的内存用于文件系统Ca

apache + php +mysql 环境搭建lamp

Apache + php +mysql 环境搭建lamp 此次试验搭建lamp环境,Apache 服务前端服务器,PHP.mysql为后端服务器,NFS为请求页面资源共享存储,试验设计如图:(系统Centos6.7,源码软件版本Apache 2.4.3.php5.6.7.Mariadb-10.1.19 ) 一.配置NFS服务器 1,安装nfs-utils,启动rpcbind服务,启动nfs服务. 2,创建NFS目录 mkdir /htdoc 3,编辑 vim /etc/exports,添加 /h

门户网站架构Nginx+Apache+MySQL+PHP+Memcached+Squid

服务器的大用户量的承载方案 一.前言二.编译安装三. 安装MySQL.memcache四. 安装Apache.PHP.eAccelerator.php-memcache五. 安装Squid六.后记 一.前言,准备工作 当前,LAMP开发模式是WEB开发的首选,如何搭建一个高效.可靠.稳定的WEB服务器一直是个热门主题,本文就是这个主题的一次尝试.我们采用的架构图如下:引用——– ———- ————- ——— ————| 客户端 | ===> |负载均衡器| ===> |反向代理/缓存| ===

lamp :在Linux 下搭建apache、Mysql、php

CentOS下搭建LAMP环境 LAMP: Linux + Apache + PHP + Mysql. 系统: CentOS 7,64位. CentOS安装 我选取了64位的CentOS 7这个Linux系统,安装过程也很简单,不再过多叙述,只稍微介绍一下我的分区情况: Apache编译安装 我选择了httpd 2.2这个版本,可以参考官方说明文档. 安装依赖: 安装依赖需要用到的gcc.g++编译器: ########gcc.g++ sudo yum install gcc sudo yum

11.1 LAMP架构介绍 11.2 MySQL、MariaDB介绍 11.3/11.4/11.5 MySQL安装

11.1 LAMP架构介绍 11.2 MySQL.MariaDB介绍 11.3/11.4/11.5 MySQL安装 扩展 mysql5.5源码编译安装 http://www.aminglinux.com/bbs/thread-1059-1-1.html mysql5.7二进制包安装(变化较大) http://www.apelearn.com/bbs/thread-10105-1-1.html 11.1 LAMP架构介绍 Linux + Apache(httpd)+ MySQL + PHP  PH

CentOS 6.6安装配置LAMP服务器(Apache+PHP5+MySQL)

准备篇: CentOS 6.6系统安装配置图解教程 http://www.osyunwei.com/archives/8398.html 1.配置防火墙,开启80端口.3306端口 vi /etc/sysconfig/iptables -A INPUT -m state --state NEW -m tcp -p tcp --dport 80 -j ACCEPT -A INPUT -m state --state NEW -m tcp -p tcp --dport 3306 -j ACCEPT

linux下lamp环境搭建(apache安装,mysql安装,php安装)

1.卸载系统内置的LAMP环境 1)卸载httpd服务(内置Apache) ① 使用rpm指令查询安装的httpd服务 ② 卸载httpd服务 如果出现以上提示,代表系统默认不允许我们卸载软件,使用强制卸载 - - nodeps 依次卸载其他软件 2)卸载mysql服务 3)卸载php服务 2.LAMP环境安装注意事项 ① 必须把Linux系统中的内置AMP卸载干净 ② 注意软件的安装顺序 第一步:首先安装Apache环境 第二步:安装MySQL环境 第三步:安装PHP环境 3.Apache软件

CentOS 6.5系统安装配置LAMP(Apache+PHP5+MySQL)服务器环境

CentOS 6.5系统安装配置LAMP(Apache+PHP5+MySQL)服务器环境 准备篇: 1.配置防火墙,开启80端口.3306端口vi /etc/sysconfig/iptables-A INPUT -m state --state NEW -m tcp -p tcp --dport 80 -j ACCEPT #允许80端口通过防火墙-A INPUT -m state --state NEW -m tcp -p tcp --dport 3306 -j ACCEPT #允许3306端口