lamp 测试mysql_LAMP简单架构实验:Apache+NFS+MySQL

实验要求两台WEB服务器,Apache-2.4[编译] + PHP-5.6.14[编译];

数据库服务器, MariaDB-5.4.46[通用二进制];

NFS服务器,存放网页文件;

DNS中做轮循,分别指向这两台WEB服务器,起到负载均衡的作用,当然也可以做单点故障切换;

搭建的是DZ论坛,要求实现负载均衡,要保证数据一致,即通过web1访问的论坛数据和web2一致;

拓扑如下:

93a54891b8070833c0f43c20c8559819.bmp

实验步骤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 编译安装libiconvwget

./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

DirectoryIndex index.php index.html

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

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

7abe133c39e4cfbcd7d13d5d6ab2fda2.bmp

至此,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 查看数据库授权信息

7397ec77accac70d5556b8eecdfe4431.bmp

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

实验步骤3.部署NFS Server

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

3.1 创建目录,解压DZ BBSmkdir /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上挂载远程的wwwrootmkdir /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"

....

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

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

实验步骤5.测试架构

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

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

cc7a06232481b20dbc8c5cb90280ae86.bmp

5.2 设置运行环境

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

5.3 创建数据库

efaa3423ee58d491649bdf5e0472d2bb.bmp

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

5.4 通过Web1 Server发帖子

f196d9b9d53466cdb1c5fa4704c42328.bmp

5.5 通过Web2 Server验证

80c6ef193687e2d1e430b4897082c966.bmp

架构实验基本完成!

几点小结前端的DNS服务器限于篇幅我没做,直接使用63/64地址访问效果一致~偷懒了;

试验中安装DZ论坛发现提示"数据库连接错误" ,最后发现是iptables规则导致,清空OK;

绝大多数情况下,编译安装提示某个包xx未装,而自己的确装了,这一般都是由于xx-devel附包未装,指定好EPEL源,安装即可;

在PHP编译时已经预先编译了常见的组件,如果某些CMS需要特别组件,无需重新编译,phpize可动态编译新组建,然后修改php.ini调用该so即可;

绝大多数服务器启动失败,无外乎3个原因:特定目录的权限不够!

安装或启动脚本使用了相对路径,而未写入环境变量!

配置文件有问题!

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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
目标检测(Object Detection)是计算机视觉领域的一个核心问题,其主要任务是找出图像中所有感兴趣的目标(物体),并确定它们的类别和位置。以下是对目标检测的详细阐述: 一、基本概念 目标检测的任务是解决“在哪里?是什么?”的问题,即定位出图像中目标的位置并识别出目标的类别。由于各类物体具有不同的外观、形状和姿态,加上成像时光照、遮挡等因素的干扰,目标检测一直是计算机视觉领域最具挑战性的任务之一。 二、核心问题 目标检测涉及以下几个核心问题: 分类问题:判断图像中的目标属于哪个类别。 定位问题:确定目标在图像中的具体位置。 大小问题:目标可能具有不同的大小。 形状问题:目标可能具有不同的形状。 三、算法分类 基于深度学习的目标检测算法主要分为两大类: Two-stage算法:先进行区域生成(Region Proposal),生成有可能包含待检物体的预选框(Region Proposal),再通过卷积神经网络进行样本分类。常见的Two-stage算法包括R-CNN、Fast R-CNN、Faster R-CNN等。 One-stage算法:不用生成区域提议,直接在网络中提取特征来预测物体分类和位置。常见的One-stage算法包括YOLO系列(YOLOv1、YOLOv2、YOLOv3、YOLOv4、YOLOv5等)、SSD和RetinaNet等。 四、算法原理 以YOLO系列为例,YOLO将目标检测视为回归问题,将输入图像一次性划分为多个区域,直接在输出层预测边界框和类别概率。YOLO采用卷积网络来提取特征,使用全连接层来得到预测值。其网络结构通常包含多个卷积层和全连接层,通过卷积层提取图像特征,通过全连接层输出预测结果。 五、应用领域 目标检测技术已经广泛应用于各个领域,为人们的生活带来了极大的便利。以下是一些主要的应用领域: 安全监控:在商场、银行
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值