Web服务之LAMP

一、LAMP架构概述

  “千里之行,始于足下”,今天我们来看下web基础之LAMP架构.
  LAMP是指一组通常一起用来运行动态网站或者服务器的自由软件的名字首字母缩写;

    linxu  操作系统
    Apache  网页服务器
    MariaDB MySQL  数据库管理系统(数据服务器)
    PH Perl 或者Puthon脚本语言

  本身都是各自独立的程序,但是因为常被放在一起使用,拥有了越来越高的兼容度,共同组成了一个强大的Web应用程序平台。
下面收集一些网站的架构案例如下:

网站架构方案说明:

  LAMP(Linux- Apache-MySQL-PHP)网站架构是目前国际流行的Web框架,该框架包括:Linux操作系统,Apache网络服务器,MySQL数据 库,Perl、PHP或者Python编程语言,所有组成产品均是开源软件,是国际上成熟的架构框架,很多流行的商业应用都是采取这个架构,和 Java/J2EE架构相比,LAMP具有Web资源丰富、轻量、快速开发等特点,微软的.NET架构相比,LAMP具有通用、跨平台、高性能、低价格的 优势,因此LAMP无论是性能、质量还是价格都是企业搭建网站的首选平台。
  对于大流量、大并发量的网站系统架构来说,除了硬件上使用高性能的服务器、负载均衡、CDN等之外,在软件架构上需要重点关注下面几个环节:使用高性能的操作系统(OS)、高性能的网页服务器(Web Server)、高性能的数据库(Database)、高效率的编程语言等。下面我将从这几点对其一一讨论。

操作系统

  Linux操作系统有很多个不同的发行版,如Red Hat Enterprise Linux、SUSE Linux Enterprise、Debian、Ubuntu、CentOS等,每一个发行版都有自己的特色,比如RHEL的稳定,Ubuntu的易用,基于稳定性和性能的考虑,操作系统选择CentOS(Community ENTerprise Operating System)是一个理想的方案。
  CentOS(Community ENTerprise Operating System)是Linux发行版之一,是RHEL/Red Hat Enterprise Linux的精简免费版,和RHEL为同样的源代码,不过,RHEL和SUSE LE等企业版,提供的升级服务均是收费升级,无法免费在线升级,因此要求免费的高度稳定性的服务器可以用CentOS替代Red Hat Enterprise Linux使用。

Web服务器、缓存和PHP加速

  Apache是LAMP架构最核心的Web Server,开源、稳定、模块丰富是Apache的优势。但Apache的缺点是有些臃肿,内存和CPU开销大,性能上有损耗,不如一些轻量级的Web 服务器(例如nginx)高效,轻量级的Web服务器对于静态文件的响应能力来说远高于Apache服务器。
  Apache做为Web Server是负载PHP的最佳选择,如果流量很大的话,可以采用nginx来负载非PHP的Web请求。nginx是一个高性能的HTTP和反向代理服务器,Nginx以它的稳定性、丰富的功能集、实例配置文件和低系统资源的消耗而闻名。Nginx不支持PHP和CGI等动态语言,但支持负载均衡和容错,可和Apache配合使用,是轻量级的HTTP服务器的首选。
  Web服务器的缓存也有多种方案,Apache提供了自己的缓存模块,也可以使用外加的Squid模块进行缓存,这两种方式均可以有效的提高Apache的访问响应能力。
  Squid Cache是一个Web缓存服务器,支持高效的缓存,可以作为网页服务器的前置cache服务器缓存相关请求来提高Web服务器的速度,把Squid放在 Apache的前端来缓存Web服务器生成的动态内容,而Web应用程序只需要适当的设置页面失效时间即可。如访问量巨大则可考虑使用memcache作为缓存及redis缓存。
  PHP的加速使用eAccelerator加速器,eAccelerator是一个自由开放源码PHP加速器,优化和动 态内容缓存,提高了性能PHP脚本的缓存性能,使得PHP脚本在编译的状态下,对服务器的开销几乎完全消除。它还有对脚本起优化作用,以加快其执行效率, 使PHP程序代码执效率能提高1-10倍。

具体的解决方案有以下几种:

  1、squid + Apache + PHP + eAccelerator
使用Apache负载PHP,使用squid进行缓存,html或图片的请求可以直接由squid返回给用户。很多大型网站都采用这种架构。
  2、nginx/Apache + PHP(fastcgi) + eAccelerator
使用nginx或Apache负载PHP,PHP使用fastcgi方式运行,效率较高。
  3、nginx + Apache + PHP + eAccelerator
此方案综合了nginx和Apache的优点,使用Apache负载PHP,nginx负责解析其他Web请求,使用nginx的rewrite模块,Apache端口不对外开放。

数据库

  开源的数据库中,MySQL在性能、稳定性和功能上是首选,可以达到百万级别的数据存储,网站初期可以将MySQL和Web服务器放在一起,但是当访问量达到一定规模后,应该将MySQL数据库从Web Server上独立出来,在单独的服务器上运行,同时保持Web Server和MySQL服务器的稳定连接。
  当数据库访问量达到更大的级别,可以考虑使用MySQL Cluster等数据库集群或者库表散列等解决方案。
  总的来说,LAMP架构的网站性能会远远优于Windows IIS + ASP + Access(例如月光博客)这样的网站,可以负载的访问量也非常大,国内的大量个人网站如果想要支撑大访问量,采用LAMP架构是一个不错的方案。
  综上所述,基于LAMP架构设计具有成本低廉、部署灵活、快速开发、安全稳定等特点,是Web网络应用和环境的优秀组合。

二、LAMP架构部署

 部署前环境准备:
 查看系统版本:(这里是Centos6.7)
  cat redhat-release
 查看系统版本
  uname -a
 查看版本
  uname -m

部署LAMP版本
apahce 2.2.31+php5.3.27+mysql5.5.49

apache下载地址:
http://mirrors.hust.edu.cn/apache/httpd/httpd-2.2.31.tar.gz
http://mirrors.hust.edu.cn/apache/httpd/httpd-2.4.20.tar.gz

httpd安装

cd/home/oldboy/tools
wget http://mirrors.hust.edu.cn/apache/httpd/httpd-2.2.31.tar.gz
tar xf httpd-2.2.31.tar.gz
cd httpd-2.2.31
#less INSTALL
#less README
yum install zlib zlib-devel -y
./configure --prefix=/application/apache2.2.31 --enable-deflate --enable-expires --enable-headers --enable-modules=most --enable-so --with-mpm=worker --enable-rewrite
make
make install
ln -s /application/apahce2.2.31/ /application/apache
ll /application/apache

虚拟主机的配置:

域名                    站点目录
www.liuliya.com         /var/html/www
blog.liuliya.com          /var/html/blog
bbs.liuliya.com          /var/html/bbs

创建对应目录:
cd /application/apaches/htdocs/
mkdir bbs www blog

apache配置文件:

/application/apache/conf/httpd.conf
vim/application/apache/conf/httpd.conf +396

396行 打开注释 : Include conf/extra/httpd-vhosts.conf
vim /application/apahce/conf/extra/httpd-vhosts.conf
<VirtualHost>

tail /application/apahce/conf/extra/httpd-vhosts.conf
检查语法:
../bin/apahcectl -t
vim httpd.conf

搜索:/ServerName
98行  增加 ServerName 127.0.0.1
396行
apache默认是列目录的
145 行 Option -Indexes FollowSymLinks

优雅重启

../bin/apahcectl start
../bin/apachectl graceful

PHP安装
http://mirrors.sohu.com/php/php-5.3.27.tar.gz
进入下载软件包:

cd /home/oldboy/tools
wget http://mirrors.sohu.com/php/php-5.3.27.tar.gz

install php 5.3.27:
安装拓展库:

yum install zlib-devel libxml2-devel libjpeg-devel libiconv-devel -y
yum install freetype-devel libpng-devel gd-devel curl-devel libxslt-devel -y

libjpeg-devel ==>libjpeg-turbo-devel-1.2.1-3.e16_5.x86_64
curl-devel ==>libcurl-devel-7.19.7-40.e16.6.4x86_64

检查所安装拓展库
rpm -qa freetype-devel libjpeg-turbo-devel libpng-devel gd-devel libcurl-devel libxslt-devel
单独安装libiconv-devel
libiconv-devel:

mkdir -p /home/oldboy/tools
cd /home/oldboy/tools
./configure --prefix-/usr/local/libiconv
make
make install
cd ../

#安装epel源
wget -O /etc/yum.repos.d/epel.repo http://mirrirs.aliyun.com/repo/epel-6.repo
安装加密和哈希库:

yum -y install libmcrypt-devel mhash mhash-devel mcrypt
yum install libxslt-devel -y

开始安装php-5.3.27
解压安装包
tar xf php-5.3.27.tar.gz
cd / php-5.3.27.tar.gz

编译安装其参数

./configure \
--prefix=/application/php5.3.27 \
--with-apxs2=/application/apache/bin/apxs \
--with-mysql=mysqlnd \
--with-pdo-mysql=mysqlnd \
--with-iconv-dir=/usr/local/libiconv \
--with-freetype-dir \
--with-jpeg-dir \
--with-png-dir \
--with-zlib \
--with-libxml-dir=/usr \
--enable-xml \
--disable-rpath \
--enable-bcmath \
--enable-shmop \
--enable-sysvsem \
--enable-inline-optimization \
--with-curl \
--enable-mbregex \
--enable-mbstring \
--with-mcrypt \
--with-gd \
--enable-gd-native-ttf \
--with-openssl \
--with-mhash \
--enable-pcntl \
--enable-sockets \
--with-xmlrpc \
--enable-soap \
--enable-short-tags \
--enable-static \
--with-xsl \
--enable-ftp

参数说明:
–with-mysql=mysqlnd \ #使用本参数本地可以没有mysql软件包

出现configure: error: Cannot find OpenSSL s
解决办法:yum install openssl-devel -y 即可

配置完成。

然后make

make
make install
ln -s /application/php5.3.27/ /application/php
ls /application/php

至此php安装完成!

配置Apache实现与PHP的整合
配置httpd.conf
311行下增加:

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

168行下增加:
DirectoryIndex index.php index.html
建立用户
useradd -u 893 -s /sbin/nologin -M www
67行下增加:

User www
Group www

检查并启动

../bin/apachectl -t
../bin/apachectl graceful

检查状态:(检查完毕后记得删除phpinfo.php)

cd /htdocs/blog
vim phpinfo.php
<?php
phpinfo();
?>


MySQL的安装
具体安装步骤参照:
https://www.liuliya.com/archives/57.html
检查mysql:

vim mysql_status.php
<?php
	$link_id=mysql_concect('db01.etiantian.org','wordpress','123456') or mysql_error();
        if($link_id){
echo "mysql sucessful by liuliya.com training!";
}
else{
	echo mysql_error();
}
?>

至此LAMP搭建完成

小结:
Apache常用的工作模式:
worker模式:
  1.线程模式
  2.占用资源少
  3.稳定行略差
prefork模式:
  1.进程模式
  2.占用资源多
  3.稳定
  4.并发一般

模式的选择:
默认Apahce工作模式是profork模式
可以在编译时候指定工作模式:
--with-mpm=worker \
对于确定好的模式
vim httpd.conf

搜索到mpm 看下路径
然后进入到 extra
vim httpd-mpm.conf


Apache目录许可功能说明
关于程序的安装目录:

<Directory "/application/apache2.2.31/htdocs">
  Options -Indexes FollowSymLinks
  AllowOverride None
  Order allow,deny
  Allow from all
</Directory>
<Directory "/var/html">
  Options -Indexes FllowSymLinks
  AllowOverride None
  Order allow,deny
  Allow from all
</Diretory>

发表评论

发表评论

*

沙发空缺中,还不快抢~