装逼爱好者 - 2011年7月
type: channel
link: https://www.zbuse.com/2011/07/
description: 您正在访问位于非洲的夏威夷海岸附近的喜马拉雅山脉的富士山上的索马里域名网站!
items: 修改hosts访问google
items: 修改或增加主题的(blockquote)样式
items: 门户网站架构Nginx+Apache+MySQL+PHP+Memcached+Squid
items: IIS6.0下PHP FastCGI环境搭建
items: Linux下LAMP（Apache+PHP+MySql）环境配置（第二版）
items: 又拍网架构-又一个用到python的网站
items: VMware下linux虚拟机工具安装
items: MySql数据库迁移常用方法
items: Windows PowerShell-Windows下的Shell管理
items: LAMP网站架构方案分析

修改hosts访问google
type: item
date: 2011-07-30T19:23:14+00:00
description: 在hosts里添加Google Docs的解析IP直接绕过DNS查询，就能正常使用https的Google了。 hosts文件的位置： windows：C:\Windows\System32\drivers\etc\hosts linux:/etc/hosts用记事本打开hosts文件，下面这些内容添加到hosts文件：##Google.com Google.com 203.208.46.164 www.google.com #主页 203.208.46.164 google.com #主页 203.208.46.72 m.google.com #Google移动版 203.208.46.99 accounts.google.com #帐户 203.208.46.32 services.google.com #服务申请 203.208.46.24 goto.google.com #跳转 203.208.46.19 jmt0.google.com 203.208.46.139 wire.l.google.com 203.208.46.139 dl-ssl.google.com 203.208.46.139 dl.google.com 203.208.46.139 ssl.google.com 203.208.46.139 profiles.google.com 203.208.46.139 encrypted.google.com 203.208.46.139 chrome.angrybirds.com##Google.com.hk 谷歌香港 203.208.46.190 www.google.com.hk 203.208.46.190 www.google.com.tw 203.208.46.190 google.com.tw 203.208.46.145 images.google.com.hk 203.208.46.155 video.google.com.hk 203.208.46.37 maps.google.com.hk 203.208.46.82 news.google.com.hk 203.208.46.80 translate.google.com.hk 203.208.46.34 blogsearch.google.com.hk 203.208.46.3 picasaweb.google.com.hk 203.208.46.155 toolbar.google.com.hk 203.208.46.135 desktop.google.com.hk 203.208.46.28 id.google.com.hk 203.208.46.19 wenda.google.com.hk 203.208.46.180 www.googlechinawebmaster.com##Google.cn 谷歌中国（启用此地址无法正常使用谷歌音乐） 203.208.46.80 translate.google.cn #翻译 203.208.46.156 blogsearch.google.cn #博客搜索 203.208.46.175 pack.google.cn #软件精选（跳转） 203.208.46.149 news.google.cn #新闻（跳转） 203.208.46.136 video.google.cn #视频（跳转） 203.208.46.186 music.googleusercontent.cn##Google.com.tw Google台湾 203.208.46.132 www.google.com.tw #主页 203.208.46.159 picasaweb.google.com.tw #picasaweb##Google.co.jp Google日本 203.208.46.21 www.google.co.jp#IPv6：ipv6.google.co.jp 203.208.46.81 www.google.com.tr #土耳其 203.208.46.39 www.google.com.au #澳大利亚 203.208.46.185 www.google.com.vn #越南 203.208.46.135 www.google.com.pk #巴基斯坦 203.208.46.6 www.google.com.my #马来西亚 203.208.46.102 www.google.com.pe 203.208.46.138 www.google.co.za 203.208.46.130 www.google.co.ve 203.208.46.81 www.google.com.ph 203.208.46.1…

修改或增加主题的(blockquote)样式
type: item
date: 2011-07-30T19:13:54+00:00
description: 下面就是更改css文件啦~我还是从inove主题中复制出来的, 同样, 如果你懒的自己找的话, 就直接复制下面的代码吧~ blockquote { background:#F4F5F7 url(blockquote.gif) 3px 3px no-repeat; border:1px dashed #CCC; padding:8px 12px 8px 36px; margin:5px 0;} 修改你自己主题中的style.css这个文件, 搜索blockquote, 我的css文件中就一个blockquote, 如果你的css文件中有很多的话, 就替换类似这种形式的代码吧.blockquote{……}保存上传就可以啦下面我搜集了一些blockquote，放出来给大家用，希望大家会喜欢blockquote引用样式1 1 2 blockquote {background: #ECF6F3; margin: 0px 25px 15px 25px; padding: 0px 25px 0px 10px; border: 5px solid #e9e3d1;} #content blockquote p {margin: 0px; padding: 10px 0px 10px 0px;} blockquote引用样式2 1 blockquote{border-left:5px solid #DDD; margin:15px 30px 0 10px; padding-left:20px} blockquote引用样式3 1 2 3 4 5 6 blockquote { margin: 1em 3em; padding: .5em; background-color: #f6ebc1; } blockquote p { margin: 0; } blockquote引用样式4 1 2 3 4 5 6 7 blockquote { margin: 1em 3em; padding: .5em 1em; border-left: 5px solid #fce27c; background-color: #f6ebc1; } blockquote p { margin: 0; } blockquote引用样式5 1 blockquote { margin: 1em 20px; padding-left: 50px; background: transparent url(quote.gif) no-repeat; } blockquote引用样式6 1 2 3 4 5 6 7 8 9 10 11 12 blockquote { margin: 1em 2em; border-left: 1px dashed #999; padding-left: 1em; } blockquote p:first-letter { float: left; margin: .2em .3em .1em 0; font-family: “Monotype Corsiva”, “Apple Chancery”, fantasy; font-size: 220%; font-weight: bold; } blockquote p:first-line { font-variant: small-caps; } blockquote引用样式7 1 2 3 4 5 6 7 8 9 blockquote { color: #66a; font-weight: bold; font-style: italic; margin: 1em 3em; } blockquote p:before { content: ‘”‘; } blockquote p:after { content: ‘”‘; } blockquote引用样式8 1 2 3 4 5 6 7 8 blockquote { margin: 5px 10px 5px 10px; padding: 15px 20px 15px 20px; border-width: 1px; border-style: solid; border-color: #cfcfcf; background: url(images/blockquote1-img.png) no-repeat; } blockquote引用样式9 1 2 3 4 5 6 7 8 9 10 blockquote { margin: 5px 10px 5px 10px; padding: 10px 10px 10px 10px; border-width: 3px; border-style: solid; border-color: #980000; colo…

门户网站架构Nginx+Apache+MySQL+PHP+Memcached+Squid
type: item
date: 2011-07-30T02:48:34+00:00
description: 服务器的大用户量的承载方案一、前言二、编译安装三、 安装MySQL、memcache四、 安装Apache、PHP、eAccelerator、php-memcache五、 安装Squid六、后记一、前言，准备工作当前，LAMP开发模式是WEB开发的首选，如何搭建一个高效、可靠、稳定的WEB服务器一直是个热门主题，本文就是这个主题的一次尝试。我们采用的架构图如下：引用——– ———- ————- ——— ————| 客户端 | ===> |负载均衡器| ===> |反向代理/缓存| ===> |WEB服务器| ===> |数据库服务器|——– ———- ————- ——— ————Nginx Squid Apache,PHP MySQLeAccelerator/memcache准备工作：引用服务器： Intel(R) Xeon(TM) CPU 3.00GHz * 2, 2GB mem, SCISC 硬盘操作系统：CentOs4.4，内核版本2.6.9-22.ELsmp，gcc版本3.4.4软件：Apache 2.2.3（能使用MPM模式）PHP 5.2.0（选用该版本是因为5.2.0的引擎相对更高效）eAccelerator 0.9.5（加速PHP引擎，同时也可以加密PHP源程序）memcache 1.2.0（用于高速缓存常用数据）libevent 1.2a（memcache工作机制所需）MySQL 5.0.27（选用二进制版本，省去编译工作）Nginx 0.5.4（用做负载均衡器）squid-2.6.STABLE6（做反向代理的同时提供专业缓存功能）二、编译安装 安装Nginx1.) 安装Nginx发音为[engine x]，是由俄罗斯人Igor Sysoev建立的项目,基于BSD许可。据说他当初是F5的成员之一，英文主页：http://nginx.net。俄罗斯的一些大网站已经使用它超过两年多了，一直表现不凡。Nginx的编译参数如下：[root@localhost]#./configure –prefix=/usr/local/server/nginx –with-openssl=/usr/include \–with-pcre=/usr/include/pcre/ –with-http_stub_status_module –without-http_memcached_module \–without-http_fastcgi_module –without-http_rewrite_module –without-http_map_module \–without-http_geo_module –without-http_autoindex_module在这里，需要说明一下，由于Nginx的配置文件中我想用到正则，所以需要 pcre 模块的支持。我已经安装了 pcre 及 pcre-devel 的rpm包，但是 Ngxin 并不能正确找到 .h/.so/.a/.la 文件，因此我稍微变通了一下：[root@localhost]#mkdir /usr/include/pcre/.libs/[root@localhost]#cp /usr/lib/libpcre.a /usr/include/pcre/.libs/libpcre.a[root@localhost]#cp /usr/lib/libpcre.a /usr/include/pcre/.libs/libpcre.la然后，修改 objs/Makefile 大概在908行的位置上，注释掉以下内容：./configure –disable-shared接下来，就可以正常执行 make 及 make install 了。2.) 修改配置文件 /usr/local/server/nginx/conf/nginx.conf以下是我的 nginx.conf 内容，仅供参考：#运行用户user nobody nobody;#启动进程worker_processes 2;#全局错误日志及PID文件error_log logs/error.log notice;pid logs/nginx.pid;#工作模式及连接数上限events {use epoll;worker_connections 1024;}#设定http服务器，利用它的反向代理功能提供负载均衡支持http {#设定mime类型include conf/mime.types;default_type application/octet-stream;#设定日志格式log_format main ‘$remote_addr – $remote_user [$time_local] ‘‘”$request” $stat…

IIS6.0下PHP FastCGI环境搭建
type: item
date: 2011-07-29T14:48:34+00:00
description: FastCGI是可伸缩架构的CGI开放扩展，其主要行为是将CGI解释器进程保持在内存中并因此获得较高的性能。传统的CGI解释器的反复加载是CGI性能低下的主要原因，如果CGI解释器保持在内存中并接受FastCGI进程管理器调度，则可以提供良好的性能、伸缩性等。今天介绍一下IIS6.0下PHP FastCGI环境搭建，一些资料称IIS下FastCGI的运行效率是ISPAI的两倍之多。不管到底怎么样，如果您还停留在ISAPI的运行环境下的话，一定要先测试再使用。免得造成不必要的麻烦。第一步：下载安装FastCGI Extension for IIS下载地址:http://www.microsoft.com/downloads/details.aspx?FamilyID=2d481579-9a7c-4632-b6e6-dee9097f9dc5&displaylang=en安装后确认IIS中，Web 服务扩展 – FastCGI Handler处于打开状态；第二步：注册PHP到FastCGI打开C:\WINDOWS\system32\inetsrv\fcgiext.ini文件：在文件最下方 [Types] 下添加以下配置：[Types]php=PHP[PHP]ExePath=C:\PHP\php-cgi.exe注：ExePath这个路径为存放PHP文件夹的路径；第三步：配置php.ini主要是以下两项，其它的按个人需要进行配置：extension_dir = “C:\PHP\ext”fastcgi.impersonate = 1第四步：配置IIS支持右键网站 -> 属性 -> 主目录 -> 配置 -> 添加，如下图配置：可执行文件路径：C:\WINDOWS\system32\inetsrv\fcgiext.dll最后：重启IIS；cmd–iisreset;phpinfo();Server API CGI/FastCGIOK!

Linux下LAMP（Apache+PHP+MySql）环境配置（第二版）
type: item
date: 2011-07-29T02:48:34+00:00
description: LAMP是一个缩写Linux+Apache+MySql+PHP，它指一组通常一起使用来运行动态网站或者服务器的自由软件：* Linux，操作系统；* Apache，网页服务器；* MySQL，数据库管理系统（或者数据库服务器）；* PHP 和有時 Perl 或 Python，脚本语言。今天介绍一下Linux下LAMP（Apache+PHP+MySql）环境配置：1、下载软件MySql：wget http://down1.chinaunix.net/distfiles/mysql-5.0.56.tar.gzApache：wget http://apache.freelamp.com/httpd/httpd-2.2.13.tar.gzPHP：wget http://125.39.113.23:9203/CDE349DEF7D7A6AC19DE5771F752CA258C693F634815D4BE/cn.php.net/distributions/php-5.2.10.tar.bz22、安装MySql安装步骤：shell> groupadd mysqlshell> useradd -g mysql mysqlshell> gunzip < mysql-VERSION.tar.gz | tar -xvf – 或 tar -zxvf mysql-5.0.56.tar.gz（解压mysql源码包）shell> cd mysql-VERSION（进入mysql源码文件夹）shell> ./configure –prefix=/usr/local/mysqlshell> makeshell> make installshell> cp support-files/my-medium.cnf /etc/my.cnfshell> cd /usr/local/mysqlshell> bin/mysql_install_db –user=mysqlshell> chown -R root .shell> chown -R mysql varshell> chgrp -R mysql .shell> bin/mysqld_safe –user=mysql &修改mysql root 密码$ mysqladmin -u root password newpass添加服务项cp /usr/local/mysql/share/mysql/mysql.server /etc/init.d/mysqldchmod 755 /etc/init.d/mysqldchkconfig –add mysqld3、安装Apachetar zvxf httpd-2.2.13.tar.gzcd httpd-2.2.13修改src/include/httpd.h 增大最大线程数#define HARD_SERVER_LIMIT 256改成#define HARD_SERVER_LIMIT 2560保存退出编译apache./configure –prefix=/usr/local/apache –enable-module=so –enable-module=rewrite –enable-shared=max –htdocsdir=/var/www &&makemake install#这里我们通过enable-module参数告诉设置脚本，我们需要启动so和rewrite模块，so模块是用来提DSO支持的apache核 心模块，而rewrite模块则是用意实现地址重写的模块，由于rewrite模块需要DBM支持，如果在初次安装时没有编译进apache，以后需要用 到时需要重新编译整个apache才可以实现。为此除非你可以确定以后不会用到rewrite模块，否则还是建议你在第一次编译的时候把rewrite模 块编译好。enable-shared=max 这个参数的作用时编译apache时，把除了so以外的所有apache的标准模块都编译成DSO模块。而不是编译进apache核心内。好了安装apache很简单的哦，启动apache看看/usr/local/apache/bin/apachectl start然后 通过浏览器查看http://youhost/，如果正常则说明安装成功。apache设为linux服务cp /usr/local/apache2/bin/apachectl /etc/init.d/httpdvi /etc/init.d/httpd在在#!/bin/sh后面加入下面两行#chkconfig:345 85 15#description: Start and stops the Apache HTTP Server.然后chmod +x /etc/rc.d/i…

又拍网架构-又一个用到python的网站
type: item
date: 2011-07-28T02:48:34+00:00
description: 又拍网是一个照片分享社区，从2005年6月至今积累了260万用户，1.1亿张照片，目前的日访问量为200多万。5年的发展历程里经历过许多起伏，也积累了一些经验，在这篇文章会介绍一些在技术上的积累。又拍网和大多数Web2.0站点一样，构建于大量开源软件之上，包括MySQL、PHP、nginx、Python、memcached、redis、Solr、Hadoop和RabbitMQ等等。又拍网的服务器端开发语言主要是PHP和Python，其中PHP用于编写Web逻辑（通过HTTP和用户直接打交道）， 而Python则主要用于开发内部服务和后台任务。在客户端则使用了大量的Javascript， 这里要感谢一下MooTools这个JS框架，它使得我们很享受前端开发过程。 另外，我们把图片处理过程从PHP进程里独立出来变成一个服务。这个服务基于nginx，但是是作为nginx的一个模块而开放REST API。图1：开发语言由于PHP的单线程模型，我们把耗时较久的运算和I/O操作从HTTP请求周期中分离出来， 交给由Python实现的任务进程来完成，以保证请求响应速度。这些任务主要包括：邮件发送、数据索引、数据聚合和好友动态推送（稍候会有介绍）等等。通常这些任务由用户触发，并且，用户的一个行为可能会触发多种任务的执行。 比如，用户上传了一张新的照片，我们需要更新索引，也需要向他的朋友推送一条新的动态。PHP通过消息队列（我们用的是RabbitMQ）来触发任务执行。图2：PHP和Python的协作数据库一向是网站架构中最具挑战性的，瓶颈通常出现在这里。又拍网的照片数据量很大，数据库也几度出现严重的压力问题。 因此，这里我主要介绍一下又拍网在分库设计这方面的一些尝试。分库设计和很多使用MySQL的2.0站点一样，又拍网的MySQL集群经历了从最初的一个主库一个从库、到一个主库多个从库、 然后到多个主库多个从库的一个发展过程。最初是由一台主库和一台从库组成，当时从库只用作备份和容灾，当主库出现故障时，从库就手动变成主库，一般情况下，从库不作读写操作（同步除外）。随着压力的增加，我们加上了memcached，当时只用其缓存单行数据。 但是，单行数据的缓存并不能很好地解决压力问题，因为单行数据的查询通常很快。所以我们把一些实时性要求不高的Query放到从库去执行。后面又通过添加多个从库来分流查询压力，不过随着数据量的增加，主库的写压力也越来越大。在参考了一些相关产品和其它网站的做法后，我们决定进行数据库拆分。也就是将数据存放到不同的数据库服务器中，一般可以按两个纬度来拆分数据:垂直拆分:是指按功能模块拆分，比如可以将群组相关表和照片相关表存放在不同的数据库中，这种方式多个数据库之间的表结构不同。水平拆分:而水平拆分是将同一个表的数据进行分块保存到不同的数据库中，这些数据库中的表结构完全相同。拆分方式一般都会先进行垂直拆分，因为这种方式拆分方式实现起来比较简单，根据表名访问不同的数据库就可以了。但是垂直拆分方式并不能彻底解决所有压力问题，另外，也要看应用类型是否合适这种拆分方式。如果合适的话，也能很好的起到分散数据库压力的作用。比如对于豆瓣我觉得比较适合采用垂直拆分， 因为豆瓣的各核心业务/模块（书籍、电影、音乐）相对独立，数据的增加速度也比较平稳。不同的是，又拍网的核心业务对象是用户上传的照片，而照片数据的增加速度随着用户量的增加越来越快。压力基本上都在照片表上，显然垂直拆分并不能从根本上解决我们的问题，所以，我们采用水平拆分的方式。拆分规则水平拆分实现起来相对复杂，我们要先确定一个拆分规则，也就是按什么条件将数据进行切分。 一般2.0网站都以用户为中心，数据基本都跟随用户，比如用户的照片、朋友和评论等等。因此一个比较自然的选择是根据用户来切分。每个用户都对应一个数据库，访问某个用户的数据时， 我们要先确定他/她所对应的数据库，然后连接到该数据库进行实际的数据读写。那么，怎么样对应用户和数据库呢？我们有这些选择：· 按算法对应最简单的算法是按用户ID的奇偶性来对应，将奇数ID的用户对应到数据库A，而偶数ID的用户则对应到数据库B。这个方法的最大问题是，只能分成两个库。另一个算法是按用户ID所在区间对应，比如ID在0-10000之间的用户对应到数据库A， ID在10000-20000这个范围的对应到数据库B，以此类推。按算法分实现起来比较方便，也比较高效，但是不能满足后续的伸缩性要求，如果需要增加数据库节点，必需调整算法或移动很大的数据集， 比较难做到在不停止服务的前提下进行扩充数据库节点。· 按索引/映射表对应这种方法是指建立一个索引表，保存每个用户的ID和数据库ID的对应关系，每次读写用户数据时先从这个表获取对应数据库。新用户注册后，在所有可用的数…

VMware下linux虚拟机工具安装
type: item
date: 2011-07-27T02:48:34+00:00
description: 虚拟化在我们现在的网站架构中，可以说是无处不在，如果你有在VMware，像我一样碰到了Linux下的时间跑不准问题。那么安装虚拟机工具则可以帮您解决这一烦恼。1、在VM菜单下选择Install VMwaretools(在虚拟机配置里面）；2、挂接VMwaretools 的ISO镜像盘；#mkdir /mnt/cdrom#mount -t iso9660 /dev/cdrom /mnt/cdrom3、将VMwaretools的安装包拷贝到磁盘；#cp /mnt/cdrom/vmware-linux-tools.tar.gz /tmp注：安装包名，根据实际版本定。4、解压；#cd /tmp#tar -zxvf vmware-linux-tools.tar.gz5、安装；#lsbin doc etc FILES INSTALL installer lib vmware-install.plvmware-install.pl则为安装文件。#./vmware-install.pl安装时会提示一些路径，如果没有特殊需要则按默认安装即可。6、重启系统，完成安装。

MySql数据库迁移常用方法
type: item
date: 2011-07-26T14:48:34+00:00
description: 在MySql的日常使用中不可避免的会出现数据迁移的时候。如：更换数据库服务器、更换数据库类型。小插曲：我国的文字真是博大精深，“迁移”这个词能把我们常做的数据库的迁移都表达清楚。如： 释义1：搬移；从一处搬到另一处。（对应：更换数据库服务器） 释义2：变化、变迁。（对应：更换数据库类型）。 1、更换数据库服务器可采用数据库备份程序：mysqldumpmysqldump客户端可用来转储数据库或搜集数据库进行备份或将数据转移到另一个SQL服务器(不一定是一个MySQL服务器)。转储包含创建表和/或装载表的SQL语句。有3种方式来调用mysqldump：shell> mysqldump [options] db_name [tables]shell> mysqldump [options] —database DB1 [DB2 DB3...]shell> mysqldump [options] –all–database如果没有指定任何表或使用了—database或–all–database选项，则转储整个数据库。要想获得你的版本的mysqldump支持的选项，执行mysqldump —help。如果运行mysqldump没有–quick或–opt选项，mysqldump在转储结果前将整个结果集装入内存。如果转储大数据库可能会出现问题。该选项默认启用，但可以用–skip-opt禁用。如果使用最新版本的mysqldump程序生成一个转储重装到很旧版本的MySQL服务器中，不应使用–opt或-e选项。mysqldump最常用于备份一个整个的数据库：shell> mysqldump –opt db_name > backup-file.sql你可以这样将转储文件读回到服务器：shell> mysql db_name < backup-file.sql或者为：shell> mysql -e “source /path-to–backup/backup-file.sql” db_namemysqldump也可用于从一个MySQL服务器向另一个服务器复制数据时装载数据库：shell> mysqldump –opt db_name | mysql –host=remote_host -C db_name2、更换数据库类型可采用：MySQL GUI ToolsMySQL GUI Tools一个可视化界面的MySQL数据库管理控制台，提供了四个非常好用的图形化应用程序，方便数据库管理和数据查询。这些图形化管理工具可以大大提 高数据库管理、备份、迁移和查询效率，即使没有丰富的SQL语言基础的用户也可以应用自如。它们分别是：MySQL Migration Toolkit：数据库迁移MySQL Administrator：MySQL管理器MySQL Query Browser：用于数据查询的图形化客户端MySQL Workbench：DB Design工具(zsh)下载地址：http://dev.mysql.com/downloads/gui-tools/5.0.html

Windows PowerShell-Windows下的Shell管理
type: item
date: 2011-07-26T02:48:34+00:00
description: Windows PowerShell 是一种命令行外壳程序和脚本环境，使命令行用户和脚本编写者可以利用 .NET Framework 的强大功能。它引入了许多非常有用的新概念，从而进一步扩展了您在 Windows 命令提示符和 Windows Script Host 环境中获得的知识和创建的脚本。UNIX系统一直有着功能强大的壳程式（shell），Windows PowerShell的诞生就是要提供功能相当于UNIX系统BASH的命令列壳程式，同时也内建脚本语言以及辅助脚本程式的工具。怎么安装Windows PowerShell？安装需求：先说明一点PowerShell是由.NET驱动的，所以您必须满足如下条件方可安装： Windows XP Service Pack 2、Windows 2003 Service Pack 1 或 Windows 的更高版本 Microsoft .NET Framework 2.0 安装方法：1、打开Windows Update网址；2、选择自定义，在软件在选择Windows PowerShell，下载更新进行安装。或者到这里下载直接安装：http://www.microsoft.com/downloads/details.aspx?displaylang=en&FamilyID=10ee29af-7c3a-4057-8367-c9c1dab6e2bf更多安装内容，看这里怎么使用Windows PowerShell？从“开始”菜单中打开“运行”窗口：输入：powershellWindows PowerShell 窗口先来一条命令试试：ls（别以为只有unix*才有ls了^_^）手册下载：不管您提新手还是老鸟，一本手册将会在您最需要的时候为您提供方便的下载：WindowsPowerShell用户手册

LAMP网站架构方案分析
type: item
date: 2011-07-25T14:48:34+00:00
description: LAMP（Linux-Apache-MySQL-PHP）网站架构是目前国际流行的Web框架， 该框架包括：Linux操作系统，Apache网络服务器，MySQL数据库，Perl、PHP或者Python编程语言，所有组成产品均是开源软件，是 国际上成熟的架构框架，很多流行的商业应用都是采取这个架构，和Java/J2EE架构相比，LAMP具有Web资源丰富、轻量、快速开发等特点，微软 的.NET架构相比，LAMP具有通用、跨平台、高性能、低价格的优势，因此LAMP无论是性能、质量还是价格都是企业搭建网站的首选平台。对于大流量、大并发量的网站系统架构来说，除了硬件上使用高性能的服务器、负载均衡、CDN等之外，在软件架构上需要重点关注下面几个环节：使用高性能 的操作系统（OS）、高性能的网页服务器（Web Server）、高性能的数据库（Databse）、高效率的编程语言等。下面我将从这几点对其一一讨论。操作系统Linux操作系统有很多个不同的发行版，如Red Hat Enterprise Linux、SUSE Linux Enterprice、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使用。LAMP网站架构图Web服务器、缓存和PHP加速Apache是LAMP架构最核心的Web Server，开源、稳定、模块丰富是Apache的优势。但Apache的缺点是有些臃肿，内存和CPU开销大，性能上有损耗，不如一些轻量级的Web 服务器（例如nginx）高效，轻量级的Web服务器对于静态文件的响应能力来说远高于Apache服务器。Apache做为Web Server是负载PHP的最佳选择，如果流量很大的话，可以采用nginx来负载非PHP的Web请求。nginx是一个高性能的HTTP和反向代理服 务器，Nginx以它的稳定性、丰富的功能集、示例配置文件和低系统资源的消耗而闻名。Nginx不支持Windows，只能在包括Linux等环境下安 装，也不支持PHP和CGI等，但支持负载均衡和容错，可和Apache配合使用，是轻量级的HTTP服务器的首选。Web服务器的缓 存也有多种方案，Apache提供了自己的缓存模块，也可以使用外加的Squid模块进行缓存，这两种方式均可以有效的提高Apache的访问响应能力。 Squid Cache是一个Web缓存服务器，支持高效的缓存，可以作为网页服务器的前置cache服务器缓存相关请求来提高Web服务器的速度，把Squid放在 Apache的前端来缓存Web服务器生成的动态内容，而Web应用程序只需要适当地设置页面实效时间即可。如访问量巨大则可考虑使用memcache作 为分布式缓存。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数据…