apache
# tar -jxvf httpd-2.2.9.tar.bz2
# cd httpd-2.2.9
# ./configure --prefix=/usr/local/apache2 --enable-mods-shared=all --enable-so
# make
# make install

//./configure --prefix=/usr/local/apache2 --enable-mods-shared=all --enable-so 将apache安装到/usr/local/apache2目录下,同时动态编译所有模块,并装载DSO。为什么要这样呢,因为我是个懒人,如果以后有要用到某一模块,我就不用再次去编译程序了,只要修改下httpd.conf就行了。当然,那些暂时未用到的模块我也会注释掉,为了安全,也是为了资源和效率~

-------------------------------------------------------------------------------------
mysql
mysql的安装,我是按照官网的文档一步步的命令操作的,在这我就简单地解释下

# groupadd mysql
# useradd -g mysql mysql

//创建mysql组,创建一个mysql用户。目的就是为mysql创建隔离用户,出于安全考虑。其实就用useradd就可以了,因为在linux下创建一个用户,如果没指明,会自动创建同名组,并隶属该组。

# gunzip < mysql-VERSION.tar.gz | tar -xvf -
# cd mysql-VERSION

//解压,并转到文件目录。tar就行了~

# ./configure --prefix=/usr/local/mysql
# make
# make install

//编译安装,安装的位置是/usr/local/mysql

# cp support-files/my-medium.cnf /etc/my.cnf

//配置文件。用support-files/my-medium.cnf作为模板,放到/etc中。以后需要配置mysql的,直接修改my.cnf文件就行了

# cd /usr/local/mysql
# chown -R mysql .
# chgrp -R mysql .

//进入mysql文件目录,改变文件的所有权。留意后面的 "." ,否则提示出错~

# bin/mysql_install_db --user=mysql

//创建mysql授权表。只需运行一次。用"--user="指定一用户,否则就是使用当用登录用户
而我这里却遇到了问题,运行后提示出错
[ERROR] /usr/local/mysql/libexec/mysqld: unknown option '--skip-federated'
[ERROR] Aborting
[Note] /usr/local/mysql/libexec/mysqld: Shutdown complete
原因是/etc/my.cnf中有一个skip-federated参数,用#注释就行了

# chown -R root .
# chown -R mysql var

//文件的所有权重新改为root, var目录的所有权依然是mysql.
到这,有些人会有点晕,前面改了,现在又改回去。其实是有原因的,前面的修改,主要是为了顺利创建授权表

# bin/mysqld_safe --user=mysql &

//初始化。一般不会出什么什么。
之后就可以用mysqladmin修改root的密码。无论什么情况,都要有这个习惯~

-------------------------------------------------------------------------------------
php
# ./configure --with-apxs2=/usr/local/apache2/bin/apxs --with-mysql=/usr/local/mysql --with-pear --with-zlib
# make & make install

//支持apache,支持mysql,安装pear,方便以后管理; 安装zlib,网页压缩,加速传输。

# cp php.ini-dist /usr/local/lib/php.ini

//php的配置文件

之后就是修改httpd.conf文件。加入模块支持,还有就是加入文档格式支持。
到此,基础建筑终于建好了,下面的事就是上层建筑的架设了,看你想弄什么,在这就不写了~

后话,在LNIUX下安装,一定要注意顺序。如果要支持PHP,则PHP一定是最后安装的(为啥?注意到“--with-apxs2=/usr/local/apache2/bin/apxs --with-mysql=/usr/local/mysql”了没?)