分离式LAMP平台构建

LAMP平台是常用的动态网站平台,现在很多情况下,因为业务请求的原因需要把Apache服务、Mysql(Mariadb)服务和PHP服务分别使用各自的Linux服务器承载,下面我就总结一下分离式LAMP平台构建过程。(我这边使用的源码编译安装)

一、平台构建准备:

    1、Centos 6.6 final系统三个(基础安装,装有包组Development Tools):

192.168.2.3(Apache服务器)

192.168.2.5(PHP服务器)

192.168.2.6(Mariadb服务器)

2、软件版本选择:

Apache:httpd-2.4.9 另包含apr-1.5.0和apr-util-1.5.3

PHP:php-5.4.26

Mariadb:mariadb-5.5.36

另外需要测试平台的软件有数据库管理软件phpMyAdmin-4.0.5-all-languages和中文的博客wordpress-4.2.2-zh_CN

二、分别构建各个服务器:


@安装Apache服务器:

    1、安装apr:

#tar -xf apr-1.5.0.tar.bz2

#cd apr-1.5.0

#./configure --prefix=/usr/local/apr

#make && make install

2、安装apr-util:

#tar -xf apr-util-1.5.3.gz.bz2

#cd apr-util-1.5.3

#./configure --prefix=/usr/local/apr-util --with-apr=/usr/local/apr

#make && make install

3、根据httpd-2.4的新特性,在编译的时候,我们也可以指定一些特定的选项实现对应的性能。下面先总结一下新特性,再在编译./configure时使用一些特定的选项。

①MPM支持在运行时装载

②支持event MPM

③异步读写

④在每模块及每目录分别使用不同的日志级别

⑤每请求的配置;<If>,<Elseif>

⑥增强版的表达式分析器

⑦毫秒级的keep alive的timeout

⑧基于FQDN的虚拟主机不再需要NameVirtualHost指令

⑨支持用户使用自定义变量

第一个选项,使得我们可以在编译的时候不再特定编译成某个模式的多道处理模块,使得我们可以把这个系统当前支持的模式都编译出来,根据需要再设置成相应的模式运行apache就可以了。

第二个选项,使得我们的apache的处理模块可以以线程方式运行。

#tar -xf httpd-2.4.9.tar.bz2

#cd httpd-2.4.9

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

#make && make install

在给定参数下检查环境,少什么就装什么。一般是装XXX-devel包就可以了。

和以前那篇博客一样,编译安装就得手动去 添加PATH变量,导出man手册,若需要二次开发就导出头文件,导出库文件,当然服务脚本是必须提供的,最后若是需要就是将服务加入服务列表chkconfig。

这个版本的配置文件有这些:

#/etc/httpd24为编译安装时定义的目录 /etc/httpd24/httpd.conf # 主配置文件

/etc/httpd24/extra/httpd-default.conf # 默认配置文件(keepalive、AccessFileName等设置)

/etc/httpd24/extra/httpd-userdir.conf # 用户目录配置文件

/etc/httpd24/extra/httpd-mpm.conf # MPM配置文件

/etc/httpd24/extra/httpd-ssl.conf # SSL配置文件

/etc/httpd24/extra/httpd-vhosts.conf # 虚拟主机配置文件

/etc/httpd24/extra/httpd-info.conf # server-status页面配置文件

httpd2.4不再支持使用order, allow, deny这些机制,而是统一使用require进行访问控制。

哦,都弄好了那就启动apache服务吧,不过要记得关闭或放行Selinux和iptables哦。

@安装Mariadb服务器:

    这个服务器我直接下载的二进制包解压配置就行了。不过为了保证数据的安全和其它操作的方便,准备把数据库的数据存放目录单独设置出来,不使用默认的。

具体命令就不写了,无非就是加个分区,格式化成所需要的文件系统类型,编辑/etc/fstab,挂载到系统某个路径,我这里是/mydata/data。

因为是二进制包解压这样安装的,所以为了服务运行的稳定和系统的安全,最好使用特定的用户来运行。

#groupadd -r mysql  #创建一个系统用户组

#useradd -g mysql -r mysql #创建以mysql用户组为基本用户组的系统用户mysql

#id mysql #创建完了使用id命令查看结果

#chown -R mysql.mysql /mydata/data    #将数据存放目录的属主和属组修改成我们创建以运行mariadb的用户和其用户组

接着就是解压安装Mariadb了:

#tar -xf mariadb-5.5.36-linux-x86_64.tar.gz -C /usr/local/    # -C指定解压到哪个目录

#cd /usr/local

#ln -sv mariadb-5.5.36-linux-x86_64 mysql    #创建软链接方便使用

#chown -R mysql.msyql ./mysql    #将程序目录的属主和属组修改成我们创建以运行mariadb的用户和其用户组

接下来就是提供配置文件并初始化数据库了。

#mkdir /etc/mysql    #创建数据库配置文件的目录,不直接放/etc下面以方便区分

#cp /usr/local/mysql/support-files/my-large.cnf    /etc/mysql/my.cnf

#vim /etc/mysql/my.cnf

修改thread_concurrency后面的数值为CPU数量的2倍

添加datadir = /mydata/data    以指明数据文件存放的位置

初始化数据库#/usr/local/mysql/scripts/mysql_install_db --user=mysql --datadir=/mydata/data

接着当然也是提供脚本,加入服务列表,添加PATH变量,导出man手册、库文件和头文件,就可以正常启动服务了。

服务脚本是#cp /usr/local/mysql/support-files/mysql.server /etc/rc.d/init.d/mysqld

#chmod +x /etc/rc.d/init.d/mysqld

@安装PHP服务器

同样还是先解决依赖问题,最好先装上bzip2-devel和libmcrypt-devel这两个开发包。

同样的步骤:

#tar -xf php-5.4.26.tar.bz2

#cd php-5.4.26

#./configure --prefix=/usr/local/php --with-mysql=mysqlnd --with-pdo-mysql=mysqlnd --with-mysqli=mysqlnd --enable-mbstring --with-freetype-dir --with-jpeg-dir --with-png-dir --with-zlib --with-libxml-dir=/usr --enable-xml --enable-sockets --enable-fpm --with-mcrypt --with-config-file-path=/etc --with-config-file-scan-dir=/etc/php.d --with-bz2 --with-openssl

#make && make install

因为是分离式的,而且PHP的版本是5.4的版本,所以不用指定mysql位置,统一使用PHP自己开发的mysqlnd这个驱动来连接远程的Mysql服务器,--with-jpeg和png可以使请求能更快的响应,mbstring可以使用不同类型的字符集,enable-fpm启用Fast-cgi 进程管理器。

同样的提供服务脚本,配置文件,因为LAMP是以PHP-FPM的方式工作的,所以配置文件是要2份的。

#cp /php-5.4.26/php.ini-production /etc/php.ini

PHP-FPM配置文件是:

#cp /usr/local/php/etc/php-fpm.conf.default /usr/local/php/etc/php-fpm.conf

PHP-FPM服务脚本

#cp /php-5.4.26/sapi/ftp/init.d.php-fpm /etc/rc.d/init.d/php-fpm

PHP-FPM配置文件修改以下部分:

pid =/usr/local/php/var/run/php-fpm.pid

listen = 172.16.10.110:9000

pm.max_children = 25  #最大子进程数

pm.start_servers = 5  #开机预启动子进程数

pm.min_spare_servers = 2 #最小空闲子进程数

pm.max_spare_servers = 6 #最大空闲子进程数

加入服务列表后,启动服务,

使用#ss -tnl | grep 9000查看是否服务已经正常启动了。

@将httpd、PHP和Mariadb三个服务器连接起来

首先,我们先将三台服务器的iptables和selinux关闭或放行。

然后,修改httpd服务器的相关配置以使其能结合PHP工作:

加载相应的模块,使请求动态内容如PHP页面能反向代理

#vim httpd.conf

LoadModule proxy_module modules/mod_proxy.so

LoadModule proxy_fcgi_module modules/mod_proxy_fcgi.so

如果要使用虚拟主机,就得注释掉主配置文件里的

#DocumentRoot "/usr/local/apache/htdocs" #这样来关闭主服务器

同时添加Include /etc/httpd24/extra/httpd-vhost来开启虚拟主机

为了支持PHP,还得在主配置文件里面加入以下内容

找到AddType添加以下内容

AddType application/x-httpd-php .php

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

另外找到Directory

在后面加上 index.php添加网站默认主页。

不管是虚拟主机还是主服务器配置,要连接PHP都得关闭正向代理匹配,启用反向代理所有请求的php页面。

在配置段内是这样实现的:

ProxyRequests Off                #关闭正向代理

ProxyPassMatch ^/(.*\.php)$ fcgi://172.16.10.110:9000/web/pma/$1 #代理至php服务器

这些差不多就完成了分离式LAMP平台的构建了。

还有一些小tips:

如每安装完一个服务器,可以先单独测试那个服务器能不能正常使用;如httpd写个测试页访问一下;Mariadb连接到服务器试一下,对了,远程主机连接数据库服务器还得在数据库做相应的用户添加和设置哦;

另分离式的LAMP平台,最好就把网站目录使用共享的文件系统,这样就可以保证httpd服务器和PHP服务器的网站目录内容是一样的了,这里就没有实验哈。

时间: 2024-10-14 06:15:10

分离式LAMP平台构建的相关文章

编译安装LAMP及分离式LAMP平台构建

前言 LAMP网站架构是目前国际流行的Web框架,该框架包括:Linux操作系统,Apache网站服务器,MySQL数据库,Perl.PHP或者Python编程语言,所有组成产品均是开源软件,是国际上成熟的架构框架,很多流行的商业应用都是采取这个架构,和Java/J2EE架构相比,LAMP具有Web资源丰富.轻量.快速开发等特点,与微软的.NET架构相比,LAMP具有通用.跨平台.高性能.低价格的优势,因此LAMP无论是性能.质量还是价格都是企业搭建网站的首选平台.但由于MySQL作为SUN公司

源码编译安装分离式LAMP平台

前言: LAMP是指:Linux(操作系统),Apache(Web服务器),MySQL/MariaDB(数据库),PHP/Perl/Python(脚本语言),所有组成产品各自独立的开源软件,组合在一起使用,就组成了目前互联网中流行的Web框架:与Java/J2EE架构相比,LAMP具有Web资源丰富,轻量,开发快速等特点,与微软的.NET架构相比,LAMP具有通用.跨平台.高性能.低价格的优势,因此LAMP无论是性能.质量还是价格都是企业搭建网站的首选平台. 工作原理: 分离式的LAMP架构,A

Centos 6.5 配置分离式LAMP平台环境 多服务器编译安装Apache2.4.x PHP5.4.x MariaDB5.5.x

这次LAMP环境才去多服务器方式,apache部署在一台服务器上 PHP部署在一台服务器上 MariaDB部署在一台服务器上. 测试OS:Centos 6.5 x86_64 软件版本:apache 2.4.x php5.4.x MariaDB 5.5.x 网络环境: [[email protected] ~]# ifconfig eth0 | awk -F'[ :]+' '/inet addr/{print$4}' 172.16.41.163 ###httpd服务器 [[email protec

基于Centos 6.5 配置分离式LAMP平台环境的一次扩展实现多PHP Apache和自建DNS来提升LAMP的负载

要达到的目的双Apache+PHP能正常的被DNS轮询解析到Apache 1 2 服务器能正常访问NFS上的静态资源PHP 1 2 服务器能正常访问NFS上的PHP资源Apache 1 2 和PHP 1 2服务器都能和MariaDB数据库服务器通信最终实现低价格提高网站负载的方案 由于这里使用了7台服务器所以下文区别服务器的方法请看命令行的[[email protected] ~]这个字段 服务器编号 服务器IP 服务器安装的服务 服务器系统 LookBack163 172.16.41.163

RedHat下构建LAMP平台+Discuz!论坛

LAMP的简介: lAMP平台的构成组件: Linux:作为LAMP架构的基础,提供用于支撑web站点的操作系统,能够与其他三个组件提供更好地稳定性.兼容性. Apache:作为LAMP架构前端,是一款功能强大.稳定性好的web服务器程序,该服务器直接面向用户提供网站访问,发送网页.图片等内容. Mysql:作为LAMP架构后端,是一款流行的开源关系数据库系统. PHP:作为三种开发动态网页的编程语言,负责解释动态网页文件,并提供web应用程序的开发和运行环境. LAMP平台的应用优势: 1. 

漫漫运维路——基于fpm的LAMP平台的构建

构建LAMP平台,可以把PHP编译为apache的一个模块或者直接把PHP编译为一个单独的服务,然后独立运行,当apache需要和PHP通信时,apache就变为了一个客户端,向PHP发起请求,然后由PHP把apache发去的代码解释后发回apache,最后由apache返回给客户端. 要编译实现fpm模式的LAMP平台,可以使用两台或者三台虚拟机,分别在虚拟机上编译出apache和PHP和MariaDB,在此我使用两台虚拟机.一台独立运行MariaDB,另一台运行apache和PHP.规划如下

第二十三期 Linux的LAMP网站平台构建

在CentOS7系统中开启Web/FTP等网络服务应用时,可能会收到默认配置的防火墙.SELinux等安全防护策略影响.为了避免干扰,学习过程中建议禁止这些保护机制. 关闭防火墙策略: [[email protected] ~]# systemctl stop firewalld [[email protected] ~]# systemctl disable firewalld 关闭SELinux保护机制: [[email protected] ~]# setenforce 0 //立即切换为

ansible中角色和模板使用及部署lamp平台

一.roles ansilbe自1.2版本引入的新特性,用于层次性.结构化地组织playbook.roles能够根据层次型结构自动装载变量文件.tasks以及handlers等.要使用roles只需要在playbook中使用include指令即可.简单来讲,roles就是通过分别将变量.文件.任务.模块及处理器放置于单独的目录中,并可以便捷地include它们的一种机制.角色一般用于基于主机构建服务的场景中,但也可以是用于构建守护进程等场景中. 一个roles的案例如下所示:        si

在CentOS6上使用源码编译LAMP平台

最近在学习重要的Web服务,当然也就少不了很重要的httpd和php.而动态网站必定又会使用数据库如mysql之类的,那么,今天就总结一下最近做的LAMP平台编译实验.具体过程如下. 实验名:在CentOS6上使用源码编译LAMP平台 实验环境:CentOS6.5,安装时选择了使用最多的两个开发包组. 使用系统默认基本yum源+epel6源(aliyun: http://mirrors.aliyun.com/repo/epel-6.repo) 使用源码包:httpd-2.4.9 ;二进制安装包m