在linux系统下架设网站,最经典的组合就是apache+mysql+php,再接下来的几篇文章里,我们将逐个测试apache+mysql+php的功能
1,准备好所需软件
2. 解压缩文件
 tar xzvf http-2.2.3.tar.gz -C /usr/local/lq
 tar xzvf mysql.5.0.24.tar.gz -C /usr/local/lq
 tar xzvf php-5.1.6.tar.gz -C /usr/local/lq
3.编译安装apache
 cd /usr/local/lq/http-2.2.3
 ./configure --prefix=/usr/local/web/http --enable-modules=most --enable-shared=max
 make
 make install
完成后,启动apache
 /usr/local/web/http/bin/apachectl start
然后使用netstat -natup查看一下httpd是否运行
在IE里输入http://127.0.0.1,如果出现it works,则表示apache正常运行
4.编译安装mysql
 cd /usr/local/lq/mysql.5.0.24
 ./configure --prefix=/usr/local/web/mysql --localstatedir=/var/lib/mysql --sysconfdir=/etc
 make
 make install
 /usr/local/web/mysql/bin/mysql_install_db   #这个步骤在产生 grant tables 这个东西!也就是数据库啦!
这个步骤很是重要,如果没有此步骤,则你的 MySQL 是不会动作的!
 useradd mysql
 chown -R mysql:mysql /usr/local/web/mysql
 chown -R mysql:mysql /var/lib/mysql/* 
 cp /usr/local/web/mysql/share/mysql/my-medium.cnf /etc/my.cnf (创建mysql配置文件)
 /usr/local/web/mysql/bin/mysqld_sage -u mysql &  #以mysql身份激活mysql
 /usr/local/web/mysql/bin/mysql -u mysql  #以mysql身份测试连接数据库
 为mysql和root用户设置登录mysql数据库的密码和权限
 grant all *.* to mysql@"localhost" IDENTIFIED by "mylove"
 grant all *.* to root@"localhost" IDENTIFIED BY "qing"
至此mysql数据库安装完成
5.编译安装php
 cd /usr/local/lq/php-5.1.6
 ./configure --prefix=/usr/local/web/php --with-apxs2=/usr/local/web/http/bin/apxs --with-mysql=/usr/local/web/mysql
 make
 make install
 cp /usr/local/lq/http-5.1.6/php.ini-dist /usr/local/lib/php.int #将主要的 php 设定档 php.ini-dist 拷贝成 /usr/local/lib/php.ini 这个档案,
这是因为 apache 或其它程序执行 php 时需要到 usr/local/lib/ 中去使用这档案.
6.设置http.conf文档,使之支持php
 [root @zcm conf]# vi httpd.conf
1). 基础环境设定:以下这些在 httpd.conf 中的选项分别代表的意义为:
ServerType standalone
上面在设定激活 apache 的状态,如果是 standalone 表示开机即执行,
通常我们都是选择 standalone 这个(默认值),不过,若选择:
ServerType inetd :则表示使用网际网络的服务来联机时才激活!
ServerRoot "/usr/local/apache"
表示 apache 的目录所在地
Timeout 300
这是用来设定连接到你这部主机的客户端,当超过 300 秒客户端还没有
办法连上你的主机时,就予以断线处理!
MinSpareServers 5 <=若是小站或是一般小型个人网站,可以改成 3
MaxSpareServers 10 <=若是小站或是一般小型个人网站,可以改成 5
StartServers 5
MaxClients 150 <=若是小站或是一般小型个人网站,可以改成 100
上面两个是开启 httpd 服务数目的地方,当你执行 httpd 之后,
在 shell 下执行 ps -aux|grep httpd 就可以看到 httpd 的数目量,
通常这与你的 RAM 有关,如果是小站的话,可以设小一点,
例如最小设 3 最大设 5 即可!而 StartServers 则设与 Min 相同即可!
至于 MaxClients 则可以设小一点,因为设定太大很耗系统资源,
而太小则无法让很多人连上来!所以可以设成例如 100。
Port 80
这东西尽量不用动,因为 www 服务的预设通讯口(port)就是 80,
除非你要自己架一个别人连不进来的网站(内部网站),
User nobody
Group nobody
将 apache 预设为 nobody 这个人及群组!意即所有人皆可以使用
ServerAdmin admin@163.com
这个是设定你的机器的 httpd 管理员帐号!设成你的帐号吧!
ServerName ns1.suzhou.com:80
这是你主机的名称,先将前面的批注符号拿掉吧!
请设定吧,如果你没有主机名称,就选 localhost 吧!
BindAddress *
这是用来允许你的 WWW 接受虚拟 IP 的机器的项目,例如你的虚拟网域为
192.168.1.0 ,则可以将 * 改成 192.168.1.0 喔!通常如果要接受虚拟 IP 的话,
直接打 * 就好了!
2). 路径设定:以下的参数在设定每一个网页或者是服务的路径所在!(旧版在 access.conf 中)
DocumentRoot "/usr/local/apache/htdocs"
上面这个在设定你的主机的主要首页所在
<Directory "/usr/local/apache/htdocs">
Options Indexes ExecCGI FollowSymLinks MultiViews
AllowOverride None
Order allow,deny
Allow from all
</Directory>
上面显示在主机主网页放置的目录下 WWW 所可以进行的事情!
options 为网页可以进行的工作,可以复选,有以下的几个项目:
ExecCGI:表示可以在这个目录中执行 CGI 程序;
FollowSymLinks:表示可以连结至他处;
MultiViews:表示可以执行动画、音乐等项目
AllowOverride None 表示任何人都可以读取资料;
至于Allow from all 则表示你的主机接受任何位置来源的连接。
<IfModule mod_userdir.c>
UserDir public_html
</IfModule>
上面这个选项需要开启,那样你的用户帐号才可以有首页!
而你用户的首页放置在 /home/user/public_html 下,你可以将
public_html 改成 WWW ,则用户的首页就需要放在
/home/user/www,若以上面的设定,则以我为例,我的首页需要放在
/home/frank/public_html 底下才行!
<IfModule mod_dir.c>
DirectoryIndex index.html index.htm index.php
</IfModule>
这个是用来说明首页的文件名称,通常默认值是 index.html,但是有些
网页编辑器的附档名是 index.htm ,所以你可以加上后面的几个档名,
如此一来,你的首页就可以支持多种档名了!
基本上均使用默认值也就可以了!
3). 开启 PHP 与其它模块:由于我们需要可以支持 php 模块的 apache ,所以需要将这个模块开启喔!
AddType application/x-httpd-php .php
AddType application/x-httpd-php-source .phps
 
修改好之后,重启apache;/usr/local/web/http/bin/apachectl restart
7.测试php和mysql
 cd /usr/local/web/http/htdocs
 建立index.php文件,内容如下
  <?
 phpinfo( );
 ?>
如果编译安装成功,你会看到php的状态
 
8.设置虚拟主机,基于域名的
 只需在http.conf文件中添加
<VirtualHost www.aaa.com:80>
        ServerAdmin admin@163.com
        DocumentRoot "/usr/local/web/http/web/www.linuxwolf.cn"
        ServerName www.aaa.com
        DirectoryIndex index.html index.php
        ErrorLog logs/www.aaa.com-error_log
        CustomLog logs/www.aaa.com-access_log common
</VirtualHost>
按此格式可以添加很多虚拟主机
 
 
总结:1.安装apache完成后,如果没设置http.conf中的ServerName的参数,则会出现无法启动的错误
     2.安装mysql的时候,如果chown -R mysql:mysql /usr/local/web/mysql
chown -R mysql:mysql /usr/local/mysql/*
这个地方权限设置错误,会出现无法激活mysql数据库,或者链接数据库的时候出现无法找到/tmp/mysql.sock的错误