Apache 是世界排名第一的Web 服务器, 根据Netcraf所作的调查,世界上百分之五十以上的 Web 服务器在使用 Apache。 尤其是现在,使用 LAMP(Linux + Apache + MySQL + PHP)来搭建中等级别的应用已经是一种流行的方式,因此,掌握 Apache 的配置是系统工程师必备的技能之一。 使用 LAMP(Linux + Apache + MySQL + PHP)来搭建中等级别的应用(尤 其是电子商务)已经是一种流行的方式,因为全部是开源和免费的软件,所以成本非常低廉本节介绍平台的搭建。在搭建平台时,也可以直接使用 RPM 包来安装,但是由于使用 RPM 包在一些系统上不支持,因此我们使用更通用的方法: 直接从源代码来装。 Apache 的特性: 1) 几乎可以运行在所有的计算机平台上. 2) 支持最新的HTTP/1.1 协议 3) 简单而且强有力的基于文件的配置(HTTPD.CONF) 4) 支持通用网关接口(CGI) 5) 支持虚拟主机. 6) 支持HTTP 认证. 7) 集成PERL. 8) 集成的代理服务器 9) 可以通过WEB 浏览器监视服务器的状态, 可以自定义日志. 10) 支持服务器端包含命令(SSI). 11) 支持安全SOCKET 层(SSL). 12) 具有用户会话过程的跟踪能力. 13) 支持FASTCGI 14) 支持JAVA SERVLETS. 从源代码安装 Apache (1)获取源代码 创建存放软件的目录: mkdir /home/linux_tools 到[url]http://www.apache.org/[/url]下载最新稳定版的源代码,放/home/linux_tools。 本案例中下载的是 httpd-2.0.59.tar.bz2 (2)解压软件包 tar –jxvf httpd-2.0.59.tar.bz2 cd httpd-2.0.59 (3)配置编译选项 Apache 是模块化的服务器,核心服务器中只包含了功能最常用的模块,而扩展功能由其他模块提供。设置过程中,你必须指定需要包含的模块。Apache 文档中有模块清单备查,其中状态为"Base"的模块会被默认地包含进核心服务器,如果不需要包含某个模块(比如mod_userdir),则必须明确地禁用它;其他状态的模块(比如mod_expires),也必须明确启用以使之包含进核心服务器。 Apache 有两种使用模块的方法,其一是永久性包含进核心;如果操作系统支持动态共享对象(DSO),而且能为 autoconf 所检测,则模块还可以被动态编译。DSO模块的存储是独立于核心的,可以被核心使用由 mod_so 模块提供的运行时mod_so 模块会被自动包含进核心。如果希望核心能够装载 DSO,而不实际编译任何动态模块,需要明确指定--enable-so。 在我们的电子商务网站中,一般情况下,核心模块功能我们全部启用;除此之外,我们还要启用 SSL 加密(mod_ssl);为了使搜索引擎更容易收录我们的网页,需要将动态页面的 URL 重写为静态页面的 URL,需要mod_rewrite;为了今后动态添加模块而不重新编译 apache(例如添加 PHP 的支持),需要启用mod_so。基于上面的分析,我在配置编译选项时,推荐使用以下选项: ./configure --prefix=/usr/local/apache2 --enable-ssl --enable-so --enable-rewrite 每个项目及网站的情况不同,如果还需要支持其它的模块,请在编译时使用相应的选项。 (4)编译并安装 make make install MYSQL 的安装配置 1.下载软件: 创建存放软件的目录: mkdir /home/linux_tools (可以存放在任何自己想存放的目录) 到[url]http://dev.mysql.com/Downloads/[/url] 下载最新稳定版的源代码, 放到 /home/linux_tools。 本文中下载的是:mysql-5.0.28.tar.gz 2.解压软件: tar -zxvf mysql-5.0.25.tar.gz 3.进入源代码目录: cd mysql-5.0.25 4.创建MySQL 的运行用户 groupadd mysql adduser -g mysql mysql 5.配置编译选项: ./configure --prefix=/usr/local/mysql --with-unix-socket-path=/usr/local/mysql/tmp/mysql.sock --datadir=/usr/local/mysql/database/mysql_data --enable-assembler --with-mysqld-ldflags=-all-static --with-mysqld-user=mysql 编译选项说明: --prefix=/usr/local/mysql:将所有文件安装到/usr/local/mysql 目录下--with-unix-socket-path=/usr/local/mysql/tmp/mysql.sock : 指定MySQL 的 Unix socket 文件存放的目录。 --datadir=/usr/local/mysql/database/mysql_data 指定mysql数据库存放位置. --enable-assembler:允许使用汇编模式(优化性能) --with-mysqld-ldflags=-all-static:服务器使用静态库(优化性能) --with-mysqld-user=mysql:指定MySQL 的运行用户。 其它常用编译选项说明: --without-server:仅编译安装客户端工具。 --with-client-ldflags=-all-static:客户端使用静态库。 --with-charset=CHARSET:指定 MySQL 使用的默认字符集。CHARSET 可以是: big5cp1251、cp1257、czech、danish、dec8、dos、euc_kr、gb2312、gbk、german1、hebrew、hp8、hungarian、koi8_ru、koi8_ukr、latin1、latin2、sjis、swe7、tis620、ujis、usa7 或win1251ukr。如果不指定,默认使用 latin1。 如果你需要其它选项, 请使用./configure --help 查看 7.编译: make 8.安装: make install 9.拷贝 MySQL 的配置文件到/etc 目录下 cp support-files/my-medium.cnf /etc/my.cnf 修改数据库字符为utf-8 Vi /etc/my.cnf 修改client和mysqld内容:改后内容如下 [mysqld] datadir=/var/lib/mysql socket=/var/lib/mysql/mysql.sock user=mysql default-character-set=utf8 # Default to using old password format for compatibility with mysql 3.x # clients (those using the mysqlclient10 compatibility package). old_passwords=1 default-character-set=utf8 [client] default-character-set=utf8 初始化数据库: cd /usr/local/mysql mkdir –p /usr/local/mysql/database/mysql_data bin/mysql_install_db --user=mysql (生成mysql.sock) chown -R root /usr/local/mysql(将软件的安装目录拥有者改为 root 用户) chown -R mysql /usr/local/mysql/database/mysql_data(将存放数据库的目录拥有者改为 mysql 用户) chgrp -R mysql /usr/local/mysql(将软件的安装目录属组改为 mysql 组) 10.启动数据库服务: /usr/local/mysql/bin/mysqld_safe --user=mysql & 11.设置环境变量: 如果要使用本地的客户端工具,并且不想每次都输入完整路径,就需要设置 PATH 变量。 Vi /etc/profile,在最后增加一行 export PATH=$PATH:/usr/local/mysql/bin 让path变量立即生效 Source /etc/profile 12.测试: 执行/usr/local/mysql/bin/mysql,出现如下提示符 [root@vfast mysql]# /usr/local/mysql/bin/mysql Welcome to the MySQL monitor. Commands end with ; or /g. Your MySQL connection id is 1 Server version: 5.0.28-log Source distribution Type 'help;' or '/h' for help. Type '/c' to clear the buffer. mysql> 执行show databases,显示当前系统内的数据库,出现如下提示: mysql> show databases; +--------------------+ | Database | +--------------------+ | information_schema | | mysql | | test | +--------------------+ 3 rows in set (0.01 sec) 13.启动脚本(使系统启动时自动启动 MySQL 数据库服务): 在 Linux 系统下: 在/etc/rc.local 文件内添加下面的行: /usr/local/mysql/bin/mysqld_safe --user=mysql& 14.MySQL 的启动和停止脚本 如果不想使用13 步中的方法来在系统启动时自动启动 MySQL 服务,也可以使 用MySQL 提供的脚本: [root@vfast mysql-5.0.28]# cp support-files/mysql.server /etc/init.d/MySQL [root@vfast mysql-5.0.28]# chmod 755 /etc/init.d/MySQL [root@vfast mysql-5.0.28]# chkconfig --add MySQL 从源代码安装 PHP PHP 是一种嵌入在 HTML 并由服务器解释的脚本语言。它可以用于管理动态 内容、支持数据库、处理会话跟踪,甚至构建整个电子商务站点。它支持许多流行 的数据库,包括 MySQL、PostgreSQL、Oracle、Sybase、Informix 和 Microsoft SQL Server。 要使 PHP 支持相关的功能那么在安装前需要安装相应的软件,例如要使 PHP 支持MySQL 数据库,在编译 PHP 之前,必须首先安装 MySQL 数据库. 在安装完Apache 和MySQL 后,可以开始安装PHP 了。安装PHP 的步骤如下: (1)获取源代码 创建存放软件的目录: mkdir /home/linux_tools 到[url]http://www.php.net/[/url]下载最新稳定版的源代码,放到/home/linux_tools。 本案例中下载的是 php-5.1.4.tar.bz2 (2)解压 tar –jxvf php-5.1.4.tar.bz2 cd php-5.1.4 (3)配置编译选项 刚才已经提到,打算使用 MySQL 来存储数据,因此必须要指名支持 MySQL 数据(--with-mysql),并指名 MySQL 数据的安装位置;如果需要处理 XML 数据,需要 --wiht-xml 和 –with-dom; 如果需要使用 PHP 脚本来生成图片, 需要使用--with-gd。 总之如果需要使用的功能的库文件不在系统路径内,必须要明确支持,如果不明确支持,那么配置脚本自动进行处理。集体需要使用什么功能,这取决于站点的PHP 脚本使用的函数大多数情况下,需要这样来配置编译选项: ./configure --prefix=/usr/local/php --with-apxs2=/usr/local/apache2/bin/apxs --with-mysql=/usr/local/mysql --with-mysql-sock=/usr/local/mysql/tmp/mysql.sock --with-config-file-path=/usr/local/php/lib --with-xml --with-openssl --enable-ftp --enable-sockets 其中--with-apxs2=/usr/local/apache2/bin/apxs 选项的作用是:在安装时会修 改APACHE 的配置文件,加入 PHP 模块,同时将模块复制到 apache 的模块目录下。 (4)编译并安装 make make install (5)拷贝 php 的配置文件 cp php.ini-dist /usr/local/php/php.ini PHP 5.3 cp php.ini-development /usr/local/php/lib/php.ini 在编译php 时使用--with-config-file-path=[dir]来明确指明配置文件的存储位置,那么就拷贝到指定位置,否则就拷贝到:安装目录/usr/local/php/ 测试安装是否成功 要进行测试,vi /usr/local/apache2/conf/httpd.conf: (1)修改 DocumentRoot,的值,指定web 页面的存储位置 DocumentRoot "/ web" (2)确保文件中已经存在并且启用下面的行 LoadModule php5_module modules/libphp5.so (3)在文件中添加下面的行: AddType application/x-httpd-php .php 目的是使以php 为扩展名的文件会使用 PHP 程序来解析 。 (4)创建一个测试文件/web/vfast.php,其内容如下: <?php phpinfo(); ?> (5)启动 apache 服务: /usr/local/apache2/bin/apachectl start (6)在浏览器中访问刚才的页面,例如:[url]http://localhost/vfast.php[/url] 如果成功返回php 的相关信息,说明安装成功。