天天看点

构建LAMP动态网站

虽然关于LAMP架设的文章,51cto上已经有很多很多了,但我还是想写一篇这样的文章,来对自己的工作经验做个总结。我将把《构建LAMP动态网站》分两篇文章来进行讲解,第一篇首先是搭建一个LAMP的WEB框架,第二篇是在这个WEB框架上搭建一个电影网站。

--------------------------------------------------------------------

前言:

动态网站一般由http服务器、应用程序服务器以及数据库服务器几部分构成。从整个架构上看,通常称http服务器为前端、应用服务器为中间层、数据库为后端。

在网站运行初期,如果用户的访问量不大的话,可以考虑把3个组件安装到同一个物理服务器上,等用户量上来以后,再考虑把他们单独分开,每个组件占据一个服务器甚至多个物理服务器(负载均衡群集模式)。不管是一个物理服务器,还是多个物理服务器,Web与应用服务器一般都安装在同一个主机上。

LAMP即:Linux+Apache+MySQL+PHP(Perl),是目前国际上流行且成熟的Web网站架构,很多流行的商业应用都是采用这个架构,与Java/J2EE架构相比,LAMP具有Web资源丰富、轻量、快速开发等特点,与微软的.NET架构相比,LAMP具有通用、跨平台、高性能、开源等优势。因此,LAMP无论是性能、质量还是价格都是企业搭建网站的首选平台。

安装前的准备:

由于LAMP安装还是比较复杂,为保证安装顺利进行,首先要完成安装前的准备工作。

1.准备安装包。

首先需要准备好下列安装包。

  1. httpd-2.2.9.tar.gz  
  2. mysql-5.0.41.tar.gz  
  3. php-5.2.6.tar.gz  
  4. phpMyAdmin-3.0.0-rc1-all-languages.tar.gz  
  5. libxml2-2.6.30.tar.gz  
  6. libmcrypt-2.5.8.tar.gz  
  7. zlib-1.2.3.tar.gz  
  8. gd-2.0.35.tar.gz  
  9. Autoconf-2.61.tar.gz  
  10. freetype-2.3.5.tar.gz  
  11. libpng-1.2.31.tar.gz  
  12. ZendOptimizer330a.tar.gz 

2.关闭iptables/Selinux 。

  1. #service iptables stop  
  2. #chkconfig iptables off 
  3. #vi /etc/selinux/config  

把SELINUX=enforcing注释掉:#SELINUX=enforcing 。

然后新加一行为:SELINUX=disabled 。

保存退出,重启系统。

3.检查编译工具 。

在安装Linux系统时必须把GCC编译工具安装上,我们用下列命令检查编译工具是否存在。

  1. #gcc –-version 

4.卸载rpm方式安装的Apache、MySQL、PHP 。(--nodeps :忽略软件包依赖性)

如果有安装,使用如下命令进行卸载:

  1. #rpm -e httpd httpd-manual webalizer subversion mod_python mod_ssl mod_perl system-config-httpd php php-cli php-ldap php-common mysql dovecot --nodeps 

5.安装库文件。

为了能让PHP支持更多的图片类型/格式(如:GIF、PNG和JPEG等),以及支持登录验证码显示一类的功能,需要先安装一些组件,如GD2等,然后在安装PHP。在安装GD2库之前还要先安装最新的zlib、libpng、freetype、jpegsrc及GD2等库文件。

1)安装 libxml2 库文件 。

  1. # ./configure --prefix=/usr/local/libxml2  
  2. # make && make install  
构建LAMP动态网站
构建LAMP动态网站

2)安装 libmcrypt 库文件 。

  1. # ./configure --prefix=/usr/local/libmcrypt  
  2. # make && make install 
构建LAMP动态网站
构建LAMP动态网站

3)安装 zlib 库文件。

  1. # ./configure --prefix=/usr/local/zlib  
  2. # make && make install  
构建LAMP动态网站
构建LAMP动态网站

4)安装 libpng 库文件。

  1. # ./configure --prefix=/usr/local/libpng  
  2. # make && make install  
构建LAMP动态网站
构建LAMP动态网站

5)安装 jpeg6 库文件。

  1. # tar zxf  jpegsrc.v7.tar.gz  
  2. # ./configure --prefix=/usr/local/jpeg --enable-shared --enable-static  
  3. # make  && make install  
构建LAMP动态网站
构建LAMP动态网站

6)安装 freetype 库文件。

  1. # ./configure --prefix=/usr/local/freetype  
  2. # make && make install  
构建LAMP动态网站
构建LAMP动态网站

7)安装 autoconf 库文件。

  1. # ./configure  
  2. # make && make install  
构建LAMP动态网站
构建LAMP动态网站

8)安装GD库文件。

这个过程稍微复杂一点,需要在正式安装前做头文件的链接操作,如果不进行这步,安装GD2时可能会出错。

(1)链接头文件,其操作为:

  1. # ln -s /usr/local/libpng/include/pngconf.h /usr/include/  
  2. # ln -s /usr/local/libpng/include/png.h /usr/include/  
构建LAMP动态网站
(2)安装GD2,其指令为:
  1. # ./configure  \     
  2. > --prefix=/usr/local/gd2  \     
  3. > --with-zlib=/usr/local/zlib  \     
  4. > --with-jpeg=/usr/local/jpeg  \     
  5. > --with-png=/usr/local/libpng  \     
  6. > --with-freetype=/usr/local/freetype     
  7. # make && make install   
构建LAMP动态网站
构建LAMP动态网站

-----------------------------------------------------------------------

开始安装LAMP

总体来说,在Linux系统中源代码包的安装过程基本上都是一成不变的“四大步骤”:解包(tar)、配置(configure)、编译(make)、安装(make install)。需要安装的所有软件都要按照一定的顺序安装,如先安装Apache,再安装MySQL,最后安装PHP。但安装成功的关键在于安装的顺序和一些软件包的配置上。

1.安装 Apache 服务器。

安装Apache,完全遵循通用的GNU软件安装习惯。如果不知道怎么从这步入手,可以在源代码解包后查看Install这个文件。如果没有特殊的要求或者为着学习的目的,按照Install文件的“Quick Start - UNIX”指引,很容易就可以完成安装操作。接下来,我们分步来完成安装操作。当然,这就是实际的应用场景了。

当安装好以上这些库文件后,就可以正式安装Apache服务器了。

  1. # tar zxf httpd-2.2.9.tar.gz -C /usr/src         //解包  
  2. # cd /usr/src/httpd-2.2.9/  
  3. # ./configure \                                    //配置  
  4. > --prefix=/usr/local/apache  \      //指定安装目录  
  5. > --sysconfdir=/etc/httpd  \          //指定配置文件存放的位置  
  6. > --with-z=/usr/local/zlib   \           //指定zlib库文件的位置  
  7. > --enable-so   \        //启用动态共享对象DSO(Dynamic Shared Object)机制。Apache的功能模块,分静态模块和动态模块。静态模块是功能模块与Apache本身结合在一起;而动态模块则是程序需要调用时,才加载的模块。  
  8. //静态模块查看:/usr/local/apache/bin/apachectl -l  
  9. //动态模块查看:ls /usr/local/apache/modules  
  10. //不过在没有整合Apache与应用服务(如PHP、Tomcat)之前,Apache模块目录里没有我们所期待的文件,只有整合完毕,才会有libPHP5.so这样的文件存在。  
  11. > --enable-rewrite          //启用网页地址重写功能,用于网站优化及目录迁移维护。  
  12. > --enable-charset-lite   //启动字符集支持,以便支持使用各种字符集编码的网页。  
  13. > --enable-cgi                  //启用CGI脚本程序支持,便于扩展网站的应用访问能力。  
  14. > --with-mpm=worker  //指定Apache的进程模型为worker。默认情况下,进程模型选择prefork。为什么要选择这个模型呢?主要的目的是为了改善Apache的性能。在未使用worker模式之前,我的Apache服务器经常过载,短信报警频繁,而改用worker模式后,Apache的进程数大大减少了,负载也大大降低,运行平稳。  
构建LAMP动态网站
  1. # make && make install          //编译及安装  
构建LAMP动态网站

2.确定Apache安装结果。

首先需要检查的是:在安装过程中所指定的选项,是否都按照我们的意图完成了。下面我们 一 一 进行检验。

1)检查安装目录。检查prefix选项指定的目录,看其是否存在。如果存在,再检查其包含的子目录及文件。

构建LAMP动态网站

因为./configure配置中指定了--sysconfdir=/etc/httpd 配置文件存放的目录,所以我这里还要检查/etc/httpd目录下是否有Apache配置文件。

构建LAMP动态网站

2)检查编译进来的模块,在前面的配置里,我指定了五个相关的选项  “--enable-so、--enable-rewirte、--enable-charset-lite、--enable-cgi、--with-mpm=worker,看是否都被正确的编译进来。在安装目录中,运行命令:

  1. # /usr/local/apache/bin/apachectl -l  
输出结果如下图所示:
构建LAMP动态网站
从图中可以看出,我在配置时指定与模块相关的5个选项都在输出中出现了,这正是我们所期待的,有了这个输出,完全不必担忧因为选项少而影响功能,因为默认情况下,已经编译了很多模块。

注:当然,如果所需的模块不在这个输出列表中的话,可以在配置configure时显式指定相关选项。

3)检查Apache是否能正常运行。一般情况下,只要检查Apache配置文件的语法是否正确就可以了。其方法为:

执行命令 :

  1. # /usr/local/apache/bin/apachectl -t  
只要输出为“Systax OK”,一般都能正常启动Apache。 Apache的行为完全由配置文件httpd.conf所控制。配置文件httpd.conf非常复杂,以我这种方法安装后的配置文件,总行数达到409.对于初次接触Apache的人,其实只需要知道一个地方——根文档DocumentRoot的位置,把网站内容放在这个目录下,启动Apache服务后,就能展示整个站点。Apache的配置有一些技巧,掌握了这些技巧,就能避免修改配置文件时出现混乱。比如反复修改后,记不得到底修改了哪些内容。

经验:尽量少修改配置文件,打开“#Include conf/extra/httpd-host.conf”,大部分变更、增加、修改操作都在虚拟主机配置文件中完成。这样既有利于调试,也能大大降低风险。即使把虚拟主机文件修改的一团糟,只要将主配置文件中包含虚拟主机的那行注释掉,或者重新再撰写这个配置文件即可。

3.优化执行路径。

通过源码编译安装的httpd服务,程序路径并不在默认的搜索路径中,为了使该服务在使用时更加方便,可以为相关程序添加符号链接。

# ln -s /usr/local/apache/bin/* /usr/local/bin/

这样再执行相关命令时就不用输入冗长的路径了。例如,当执行“httpd -v”(用于查看程序版本)时,即相当于执行“/usr/local/apache/bin/httpd -v”.

  1. # httpd -v  
构建LAMP动态网站

4.添加httpd系统服务

若希望将httpd添加为系统服务,以便通过chkconfig进行管理,需要建立可控的服务脚本。例如,可将 apachectl 脚本复制为 /etc/init.d/httpd ,并在文件开头添加 chkconfig 识别配置,然后再将其添加为标准的Linux系统服务。

  1. # cp /usr/local/apache/bin/apachectl /etc/init.d/httpd  
  2. # vi /etc/init.d/httpd  
  3.    #!/bin/bash  
  4.   #chkconfig: 35 85 15            //服务识别参数,级别3、5中启动;启动和关闭的顺序分别为85、15  
  5.   #description: Startup script for the Apache HTTP Server         //服务描述信息  
  6. ……    //省略部分内容  
构建LAMP动态网站
构建LAMP动态网站
  1. # chkconfig --add httpd    //将httpd添加为系统服务     
  2. # chkconfig --list httpd     //查看httpd服务的自启动状态   
构建LAMP动态网站

注:成功执行上述操作以后,每次Linux系统进入运行级别3、5时,httpd服务将会自动运行。在日常维护过程中,可以直接使用apachectl工具来控制httpd服务,也可以使用/etc/init.d/httpd脚本。例如,当执行:

  1. # /etc/init.d/httpd start  
或者 
  1. # service httpd start    
命令时,等同于执行:
  1. # /usr/local/httpd/bin/apachectl start     
命令,都用来启动httpd服务器程序。

继续阅读