设为首页 收藏本站
查看: 1076|回复: 0

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

[复制链接]
累计签到:1 天
连续签到:1 天
发表于 2015-11-2 11:03:05 | 显示全部楼层 |阅读模式
实验要求

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

拓扑如下:
wKioL1YzFBzx8zlMAA3cwI7OQDQ648.jpg

实验步骤1.部署WEB1

1.1 安装编译开发环境
1
yum  groupinstall "Development Tools" "Server Platform Development" -y



1.2 编译安装Apr-1.5『因为Apache2.4依赖1.4以上版本的apr和apr-util』
1
2
./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
1
2
./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可能会出错!

1
2
./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进程运行

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



1.6 编辑apache配置文件,以apache用户身份运行web进程
1
2
3
vi /etc/httpd/httpd.conf
164行 User  apache
165行 Group apache



1.7 准备PHP安装环境

1
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
1
2
3
wget
./configure --prefix=/usr/local/libiconv
make && make install



1.9 编译安装PHP
1
  ./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配置文件
1
2
3
4
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主配置文件
1
2
3
4
5
6
7
8
9
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 编辑一个测试页面,测试是否成功!
wKiom1YzGrCx5vVvABNDZGqK5DE548.jpg

至此,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协议栈的远程连接,这需要在数据库服务器上授权
1
2
3
CREATE DATABASE BBS;
GRANT ALL PRIVILEGES ON BBS.* TO 'bbs'@'10.134.140.%' IDENTIFIED BY 'zxczxc' WITH GRANT OPTION;
FLUSH PRIVILEGES;



2.3 查看数据库授权信息

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

实验步骤3.部署NFS Server

架构中NFS Server承担着存放网页数据的功用,要能够被前端的Web1 Server和Web2 Server正常读写!
3.1 创建目录,解压DZ BBS
1
2
3
mkdir /wwwroot && cd /wwwroot
wget
unzip Discuz_X3.2_SC_UTF8.zip



3.2 创建用户
这个用户要与前端Web Server上的apache用户的UID、GID一样,这是为了保证前端的web服务器挂载NFS后读写权限的有效且安全
1
2
3
groupadd -r -g 48 apache
useradd -r -u 48 -g 48 apache
setfacl -R -m u:apache:rwx /wwwroot/



3.3 编辑NFS配置文件
1
2
3
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
1
2
3
mkdir /wwwroot/
setfacl -R -m u:apache:rwx /wwwroot/
mount -t nfs 10.134.140.66:/wwwroot/ /wwwroot/



4.2 编辑主站点配置文件

1
2
3
4
5
6
vi /etc/httpd/httpd.conf

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



4.3 在Web Server2上同样进行挂载操作!修改主站点配置文件。
至此,所有配置已准备完毕,确保所有服务正常启动后,进行测试!

实验步骤5.测试架构

5.1 访问Web Server1进行DZ论坛的初始化安装
检查环境中,可以看到各组件支持情况,很幸运,全部满足!
wKiom1YzIziiOIBlABIq-PRJsJg603.jpg


5.2 设置运行环境
[略过,无影响,是设置DZ论坛群集的]

5.3 创建数据库
wKiom1YzJK6glOh0ABK8WNm-VGI952.jpg
下一步后,静待安装完成!即可成功访问DZ论坛了!

5.4 通过Web1 Server发帖子
wKiom1YzJZLAS4kuABDjiE-3QOw242.jpg

5.5 通过Web2 Server验证

wKioL1YzJevBeK9dABTH7ENfU6Y595.jpg

架构实验基本完成!

几点小结

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

    • 特定目录的权限不够!
    • 安装或启动脚本使用了相对路径,而未写入环境变量!
    • 配置文件有问题!

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

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-134015-1-1.html 上篇帖子: 完全yum安装LAMP环境并加载fastcgi模块(首发) 下篇帖子: LAMP分布式部署
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表