LAMP企业架构拓展实战原理,3步能彻底搞清楚!

本文详细介绍了LAMP架构的组成、工作原理及其在企业中的应用。内容涵盖LAMP的动态网站构建、Apache与PHP的交互、MySQL数据库的角色,以及如何通过源码编译和YUM安装进行LAMP的搭建。此外,还讨论了LAMP的拓展与性能优化,包括拆分架构和使用Redis提升性能。
摘要由CSDN通过智能技术生成

LAMP(Linux+Apache+MySQL/MariaDB+Perl/PHP/Python)是一组用来搭建动态网站的开源软件架构,本身是各自独立的软件服务,放在一起使用,拥有了越来越高的兼容度,共同组成了一个强大的Web应用程序平台。

本章向读者介绍互联网主流企业架构LAMP应用案例、PHP解释性语言详解、LAMP组合通信原理、LAMP企业源码架设、LAMP拓展及使用Redis提升LAMP性能优化等。

LAMP企业架构简介

随着开源潮流的蓬勃发展,开放源代码的LAMP已经与J2EE和.Net商业软件形成三足鼎立之势,并且该软件开发的项目在软件方面的投资成本较低,因此受到整个IT界的关注。LAMP架构受到大多数中小企业的运维、DBA、程序员的青睐,Apache默认只能发布静态网页,而LAMP组合可以发布静态+PHP动态页面。

静态页面通常指不与数据库发生交互的页面,是一种基于w3c规范的一种网页书写格式,是一种统一协议语言,所以称之为静态网页。静态页面被设计好之后,一般很少去修改,不随着浏览器参数改变而内容改变,需注意的是动态的图片也是属于静态文件。从SEO角度来讲,HTML页面更有利于搜索引擎的爬行和收录。常见的静态页面以.html、.gif、.jpg、.jpeg、.bmp、.png、.ico、.txt、.js、.css等结尾。

动态页面通常指与数据库发生交互的页面,内容展示丰富,功能非常强大,实用性广。从SEO角度来讲,搜索引擎很难全面的爬行和收录动态网页,因为动态网页会随着数据库的更新、参数的变更而发生改变,常见的动态页面以.jsp、.php、.do、.asp、.cgi、.apsx等结尾。

Apache与PHP工作原理

LAMP企业主流架构最重要的三个环节,一是Apache WEB服务器,二是PHP(PHP: Hypertext Preprocessor),三是MYSQL数据库。

Apache WEB服务器主要是基于多模块工作,依赖PHP SAPI处理方式中的PHP_MODULE去解析PHP结尾的文件,如图12-1所示:
在这里插入图片描述
在这里插入图片描述
图12-1 Apache+PHP mod工作原理

PHP是一种适用于web开发的动态语言,PHP语言内核基于C语言实现包含大量组件的软件框架,是一种功能强大的解释型脚本语言。PHP底层运行机制如图12-2所示:在这里插入图片描述
图12-2 PHP底层处理机制

PHP底层工作原理包括4个部分:

Zend引擎,属于PHP内核部分,它负责将PHP代码解析为可执行opcode的处理并实现相应的处理方法、实现基本的数据结构、内存分配及管理、提供了相应的api方法供外部调用,是一切的核心,所有的外围功能均围绕Zend实现。
Extensions,围绕着Zend引擎,Extensions通过组件的方式提供各种基础服务,各种内置函数、标准库等都是通过Extension来实现。
Sapi,服务端应用编程接口(Server Application Programming Interface,Sapi),sapi通过一系列钩子函数,基于SAPI可以让PHP与外部进行数据交互。
常见的SAPI编程接口处理方法包括:apache2handler:以apache作为webserver,采用MOD_PHP模式运行时候的处理方式;cgi:webserver和PHP直接的另一种交互方式,FastCGI协议;cli:命令行调用的应用模式。
APP代码应用,又称之为PHP代码程序,基于sapi接口生成不同的应用模式,从而被PHP引擎解析。
当用户在浏览器地址中输入域名或者域名+PHP页面,向HTTP WEB服务器Apache发起HTTP请求,WEB服务器接受该请求,并根据其后缀判断如果请求的页面是以.php结尾,WEB服务器从硬盘或者内存中取出该PHP文件,将其发送给PHP引擎程序。

PHP引擎程序将会对WEB服务器传送过来的文件进行扫描并根据命令从后台读取、处理数据、并动态地生成相应的HTML页面。然后PHP引擎程序将生成的HTML页面返回给WEB服务器,最终WEB服务器将HTML页面返回给客户端浏览器,浏览器基于MIME类型进行解析展示给用户页面。

LAMP企业架构拓展实战
如上LAMP服务均安装至单台服务器,随着用户访问量不断的增加,单台服务器压力逐渐增加,那如何优化LAMP架构,如何拆分LAMP架构呢,怎么把Apache和MySQL分开放在不同的机器呢。

LAMP架构拆分的目的在于缓解单台服务器的压力,可以将PHP、MYSQL单独安装至多台服务器,本节将实现LAP+MySQL的架构,也即是把MYSQL单独拆分出去。部署方法有两种:

YUM安装LAMP多机方案
在Apache WEB服务器只需只需如下代码:

yum install httpd httpd-devel php-devel php php-mysql -y
在MYSQL数据库服务器只需只需如下代码:

yum install mysql-server mysql mysql-devel mysql-libs -y
源码安装LAMP多机方案
源码安装LAMP多机方式,Apache WEB服务与MYSQL数据库服务分别部署在不同的服务器即可,PHP与Apache服务部署在一台服务器,PHP编译参数时加入如下代码进行LAMP的整合,mysqlnd为PHP远程连接MYSQL数据库服务器的一种方式:

./configure –prefix=/usr/local/php5 \

–with-mysql=mysqlnd –with-mysqli=mysqlnd –with-pdo-mysql=mysqlnd \

–with-apxs2=/usr/local/apache2/bin/apxs

make

make install

LAMP企业安装配置
构建LAMP架构有两种方法,一是使用YUM在线安装,另外一种是基于LAMP源码编译安装,YUM在线安装方法如下:

yum install httpd httpd-devel mysql mysql-server mysql-devel php php-devel php-mysql -y

service httpd restart

service mysqld restart

YUM方式安装简单、快捷,但如果需要添加扩展的功能和模块,需使用源码包的方式来编译安装LAMP。如下为LAMP源码编译安装的步骤:

Apache WEB安装,先安装apr、apr-utils库包。
yum install apr-devel apr-util-devel -y;

cd /usr/src ;

wget http://mirror.bit.edu.cn/apache/httpd/httpd-2.2.31.tar.gz

tar xzf httpd-2.2.31.tar.gz

cd httpd-2.2.31

./configure –prefix=/usr/local/apache –enable-so –enable-rewrite

make

make install

MYSQL数据库安装,基于MYSQL5.5编译安装,通过cmake、make、make install三个步骤实现。
wget http://down1.chinaunix.net/distfiles/mysql-5.5.20.tar.gz

yum install cmake make ncurses-devel ncurses -y

cmake . -DCMAKE_INSTALL_PREFIX=/usr/local/mysql55 \

-DMYSQL_UNIX_ADDR=/tmp/mysql.sock \

-DMYSQL_DATADIR=/data/mysql \

-DSYSCONFDIR=/etc \

-DMYSQL_USER=mysql \

-DMYSQL_TCP_PORT=3306 \

-DWITH_XTRADB_STORAGE_ENGINE=1 \

-DWITH_INNOBASE_STORAGE_ENGINE=1 \

-DWITH_PARTITION_STORAGE_ENGINE=1 \

-DWITH_BLACKHOLE_STORAGE_ENGINE=1 \

-DWITH_MYISAM_STORAGE_ENGINE=1 \

-DWITH_READLINE=1 \

-DENABLED_LOCAL_INFILE=1 \

-DWITH_EXTRA_CHARSETS=1 \

-DDEFAULT_CHARSET=utf8 \

-DDEFAULT_COLLATION=utf8_general_ci \

-DEXTRA_CHARSETS=all \

-DWITH_BIG_TABLES=1 \

-DWITH_DEBUG=0

make

make install

将源码安装的Mysql数据库服务设置为系统服务,可以使用chkconfig管理,并启动MYSQL数据库:

cd /usr/local/mysql55/

\cp support-files/my-large.cnf /etc/my.cnf

\cp support-files/mysql.server /etc/init.d/mysqld

chkconfig –add mysqld
chkconfig –level 35 mysqld on

mkdir -p /data/mysql

useradd mysql

/usr/local/mysql55/scripts/mysql_install_db –user=mysql –datadir=/data/mysql/ –basedir=/usr/local/mysql55/

ln -s /usr/local/mysql55/bin/* /usr/bin/

service mysqld restart

PHP服务安装,PHP需与Apache、MySQL进行整合,如图12-3所示,参数命令如下:
cd /usr/src

wget http://mirrors.sohu.com/php/php-5.3.28.tar.bz2

tar jxf php-5.3.28.tar.bz2

cd php-5.3.28 ;

./configure –prefix=/usr/local/php5 –with-config-file-path=/usr/local/php5/etc –with-apxs2=/usr/local/apache2/bin/apxs –with-mysql=/usr/local/mysql55/

make

make install
在这里插入图片描述
图12-3 LAMP源码编译整合

Apache+PHP源码整合
为了能让Apache发布PHP页面,需要将PHP安装完成后的libphp5.so模块与Apache进行整合,vim httpd.conf编辑配置文件,加入如下代码:

LoadModule php5_module modules/libphp5.so

AddType application/x-httpd-php .php

DirectoryIndex index.php index.html index.htm

测试Apache+PHP环境
创建PHP测试页面,在/usr/local/apache/htdocs目录下创建index.php测试页面,执行如下命令自动创建:

cat >/usr/local/apache/htdocs/index.php<<EOF

<?php phpinfo(); ?>

EOF

重新启动Apache服务,浏览器输入 Apache WEB的IP访问,如图12-4所示,即代表LAMP源码环境整合成功。
在这里插入图片描述
图12-4 Apache+PHP测试页面

Discuz PHP论坛安装
LAMP源码整合完毕之后,Dicuz官网下载Discuz开源PHP软件包,将软件包解压并发布在Apache Htdocs发布目录,代码如下:

cd /usr/src ;

wget http://download.comsenz.com/DiscuzX/3.1/Discuz_X3.1_SC_UTF8.zip

unzip Discuz_X3.1_SC_UTF8.zip -d /usr/local/apache/htdocs/

cd /usr/local/apache/htdocs/;\mv upload/* .

chmod 757 -R data/ uc_server/ config/ uc_client/

通过浏览器访问Apache WEB IP,如图12-5所示,选择”我同意”
在这里插入图片描述
图12-5 Discuz安装界面一

进入如图12-6界面,数据库安装,如果不存在则需要新建数据库并授权。
在这里插入图片描述
图12-6 Discuz安装界面二

MYSQL数据库命令行中创建PHP连接MYSQL的用户及密码,命令如下:

create database discuz charset=utf8;

grant all on discuz.* to root@’localhost’ identified by “123456”;

单击下一步,直至安装完成,浏览器自动跳转至如图12-7所示界面:
在这里插入图片描述
图12-7 Discuz安装界面三

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值