Linux+Apache+MySql+PHP
相关知识:
LAMP是一个缩写,它指一组通常一起使用来运行动态网站或者服务器的自由软件。
linux 操作系统
apache 网页服务器
mysql 数据库管理系统(或者数据库服务器)
php 脚本语言。
LAMP系统的三个工具
apache 1995年以前就有很多的WWW服务器软件,其中以HTTPd占有率最高。后来HTTPd经过多次修订后,才在1995年以布ApacheA pache Server)。它主要提供WWW的服务器平台,后面的MySQLPHP都要用apache来处理。
2PHP http://www.php.net/
按照官方的说法,PHP是一个工具,它可以被用来建立动态网页,php程序代码可以直接嵌入HTML网页中,就像编缉HTML网页一样简单。所以说,php是一种程序语言,可以直接在网页中编写,不需要经过编译即可执行。由于具有自由软件、跨平台、容易学习以及执行效率高等优点,目前它是很热门的一个设计网页的软件。
3MySQL http://www.mysql.org
MySQL 数据库管理系统(或者数据库服务器)
MySQL由于性能高、成本低、可靠性好,已经成为最流行的开源数据库,因此被广泛地应用在Internet上的中小型网站中。随着MySQL的不断成熟,它也逐渐用于更多大规模网站和应用,比如维基百科GoogleFacebook等网站。非常流行的开源软件组合LAMP中的“M”指的就是MySQL
注:这里的linux是基于RedHat Enterprise Linux 5
下面来开始建立LAMP平台。Linux+httpd-2.4.1+Mysql-5.5.20+PHP-5.3.10源码编译安装过程。
一、编译安装 httpd-2.4.1
1、首先要做的是解决依赖关系
先要把开发环境准备好。安装上开发包组。安装开发包组"Development Tools""Development Libraries"
代码:
#yum grouplist            查看上面所提到的开发包组是否已安装。如果没有安装则执行: 
# yum -y groupinstall "Development Libraries" "Development Tools"
另外,httpd-2.4.1编译过程也要依赖于pcre-devel软件包,需要事先安装。此软件包系统光盘自带。因此,找到并安装即可。
代码:
# yum -y install pcre-devel
对于httpd-2.4.1需要较新版本的aprapr-util,因此需要事先对其进行升级。升级方式有两种,一种是通过源代码编译安装,一种是直接升级rpm包。这里选择使用后一种方式进行。在网站http://www.apache.org/下载需要的rpm包的如下4个软件包:
apr-1.4.6-1.i386.rpm
apr-devel-1.4.6-1.i386.rpm
apr-util-1.4.1-1.i386.rpm
apr-util-devel-1.4.1-1.i386.rpm
下载完成之后,使用“rpm -Uvh”进行升级即可。
代码:
# rpm -Uvh apr-1.4.6-1.i386.rpm apr-util-1.4.1-1.i386.rpm
# rpm -Uvh apr-devel-1.4.6-1.i386.rpm apr-util-devel-1.4.1-1.i386.rpm
好了,依赖关系和安装前的准备工作完成之后,就可以开始来安装apache了。
2、编译安装httpd-2.4.1
首先下载httpd-2.4.1到本地。下载地址:http://www.apache.org/。下载完成后执行如下命令进行编译安装过程:  
注:在安装之前一定要确保系统中没有其他版本的apache。
代码:
# tar xvf httpd-2.4.1.tar.bz2
# cd httpd-2.4.1
# ./configure --prefix=/usr/local/apache --sysconfdir=/etc/httpd --enable-so --enable-ssl --enable-cgi --enable-rewrite --with-zlib
# make    
# make install
3、修改httpd的主配置文件,设置其Pid文件的路径,这个设置可以方便apache软件的管理。
编辑/etc/httpd/httpd.conf文件,添加如下行即可:
# vim /etc/httpd/httpd.conf
添加如下行: PidFile "/var/run/httpd.pid"
4、为了方便启动apache服务所以要为apache提供SysV服务脚本/etc/rc.d/init.d/httpd,内容如下:
#!/bin/bash
#
# httpd                Startup script for the Apache HTTP Server
#
# chkconfig: - 85 15
# description: Apache is a World Wide Web server.    It is used to serve \
#                HTML files and CGI.
# processname: httpd
# config: /etc/httpd/conf/httpd.conf
# config: /etc/sysconfig/httpd
# pidfile: /var/run/httpd.pid

# Source function library.
. /etc/rc.d/init.d/functions

if [ -f /etc/sysconfig/httpd ]; then
                . /etc/sysconfig/httpd
fi

# Start httpd in the C locale by default.
HTTPD_LANG=${HTTPD_LANG-"C"}

# This will prevent initlog from swallowing up a pass-phrase prompt if
# mod_ssl needs a pass-phrase from the user.
INITLOG_ARGS=""

# Set HTTPD=/usr/sbin/httpd.worker in /etc/sysconfig/httpd to use a server
# with the thread-based "worker" MPM; BE WARNED that some modules may not
# work correctly with a thread-based MPM; notably PHP will refuse to start.

# Path to the apachectl script, server binary, and short-form for messages.
apachectl=/usr/local/apache/bin/apachectl
httpd=${HTTPD-/usr/local/apache/bin/httpd}
prog=httpd
pidfile=${PIDFILE-/var/run/httpd.pid}
lockfile=${LOCKFILE-/var/lock/subsys/httpd}
RETVAL=0

start() {
                echo -n $"Starting $prog: "
                LANG=$HTTPD_LANG daemon --pidfile=${pidfile} $httpd $OPTIONS
                RETVAL=$?
                echo
                [ $RETVAL = 0 ] && touch ${lockfile}
                return $RETVAL
}

stop() {
  echo -n $"Stopping $prog: "
  killproc -p ${pidfile} -d 10 $httpd
  RETVAL=$?
  echo
  [ $RETVAL = 0 ] && rm -f ${lockfile} ${pidfile}
}
reload() {
        echo -n $"Reloading $prog: "
        if ! LANG=$HTTPD_LANG $httpd $OPTIONS -t >&/dev/null; then
                RETVAL=$?
                echo $"not reloading due to configuration syntax error"
                failure $"not reloading $httpd due to configuration syntax error"
        else
                killproc -p ${pidfile} $httpd -HUP
                RETVAL=$?
        fi
        echo
}

# See how we were called.
case "$1" in
    start)
  start
  ;;
    stop)
  stop
  ;;
    status)
                status -p ${pidfile} $httpd
  RETVAL=$?
  ;;
    restart)
  stop
  start
  ;;
    condrestart)
  if [ -f ${pidfile} ] ; then
    stop
    start
  fi
  ;;
    reload)
                reload
  ;;
    graceful|help|configtest|fullstatus)
  $apachectl $@
  RETVAL=$?
  ;;
    *)
  echo $"Usage: $prog {start|stop|restart|condrestart|reload|status|fullstatus|graceful|help|configtest}"
  exit 1
esac

exit $RETVAL
  在这里还有一个简单的方法,前提是:在安装http-2.4.1时,只要在make istall之前 用yum 源安装一个apache 即“# yum -y install httpd”复制/etc/rc.d/init.d/httpd 文件,然后再修改文件中几项就可以了。最后不要忘了移除这个httpd即“# yum -y remove httpd”。一定要记住这几项操作要在make install 之前哟!
而后为此脚本赋予执行权限并加入服务列表中,并要在开机时自动开启服务:
代码:
# chmod +x /etc/rc.d/init.d/httpd
# chkconfig --add httpd
# chkconfig httpd on
接下来就可以启动服务进行测试了。结果会如图所示:

完成以上的步骤一个www服务器就建立成功了。
注:如果未能正常启动成功,有可能与SELinux这个服务有关,所以在启动之前要把这个服务关闭掉。
代码:
# getenforce    
这个命令是用于查看SELinux的状态
关闭SELinux的命令是:
# setenforce 0
执行此命令后SELinux的状态为:Permissive
上面的方式只是临时有效在下次开机后SELinux又是开启的状态。所以还要通过修改配置文件来永久的关闭这个服务。编辑/etc/selinux/config这个配置文件
代码:
定位到:SELINUX=Enforcing
修改为:SELINUX=Permissive

下面来安装php和mysql了,因为php在安装的时候要依赖到mysql的一些文件所以要先安装mysql
二、安装mysql-5.5.20
1、准备数据存放的文件系统。
新建一个逻辑卷,并将其挂载至一个特定目录,并实现开机自动挂载。这里假设其逻辑卷的挂载目录为/mydata,而后需要创建/mydata/data目录做为mysql数据的存放目录。
代码:
#fdisk /dev/sda
新建一个大小为10G的新分区。并把id 改为8e 。在这里是/dev/sda5。
#partrobe /dev/sda
#pvcreate /dev/sda5   //创建pv
#vgcreate myvg /dev/sda5   //创建vg
#lvcreate -L 2G -n mysql myvg    //先创建一个2G大的逻辑卷,以后还可以再扩展。 
#mke2fs -j -b 2048 /dev/myvg/mysql
#vim /etc/fstab
在其中添加一行:/dev/myvg/mysql        /mydata             ext3        default     0 0
#mkdir /mydata
#mount -a    
#mount         查看是否挂载了。
#mkdir /mydata/data        创建/mydata/data目录来做为mysql数据库的存放目录
2、新建用户以安全方式运行数据库进程:
代码:
# groupadd -r mysql
# useradd -g mysql -r -s /sbin/nologin -M -d /mydata/data mysql
# chown -R mysql:mysql /mydata/data     改变/mydata/data的权限为mysql用户是为了能以安全方式运行。
前面的准备工作做完之后就来安装数据库吧。
3、安装并初始化mysql-5.5.20
首先下载平台对应的mysql版本至本地,下载地址:http://www.mysql.com/downloads/。这里是32位平台,因此,选择的为mysql-5.5.20-linux2.6-i686.tar.gz
下面开始安装:
代码:
# tar xf mysql-5.5.20-linux2.6-i686.tar.gz -C /usr/local
# cd /usr/local/     //进入这个目录并为mysql-5.5.20-linux2.6-i686 创建链接为mysql 
# ln -sv mysql-5.5.20-linux2.6-i686    mysql
# cd mysql    
# chown -R mysql:mysql .    // 改变这个目录中文件的权限。 
# ./scripts/mysql_install_db --user=mysql --datadir=/mydata/data        //对数据库进行初始化,会在/mydata/data目录中生成数据库文件。 
# chown -R root .   //再把当前的这个目录中的文件属主改为root
4、为mysql提供主配置文件:
代码:
# cd /usr/local/mysql
# cp support-files/my-large.cnf    /etc/my.cnf
并修改/etc/my.cnf文件中thread_concurrency的值为你的CPU个数乘以2,比如这里使用如下行:
thread_concurrency = 2 (原文件的值为8
另外还需要添加如下行指定mysql数据文件的存放路径:
datadir = /mydata/data
5、为mysql提供sysv服务脚本并添加至服务列表,开机自动开启服务:
代码:
# cd /usr/local/mysql
# cp support-files/mysql.server    /etc/rc.d/init.d/mysqld
# chkconfig --add mysqld
# chkconfig mysqld on
而后就可以启动服务测试使用了。结果会如图所示:

为了使用mysql的安装符合系统使用规范,并将其开发组件导出给系统使用,这里还需要进行如下步骤:
6、输出mysqlman手册至man命令的查找路径:
编辑/etc/man.config,添加如下行即可:
MANPATH /usr/local/mysql/man
在这里也apache添加man手册,即添加如下行:
MANPATH /usr/local/apache/man
7、输出mysql的头文件至系统头文件路径/usr/include
这可以通过简单的创建链接实现:
代码:
# ln -sv /usr/local/mysql/include    /usr/include/mysql
8、输出mysql的库文件给系统库查找路径:
代码:
# echo '/usr/local/mysql/lib' > /etc/ld.so.conf.d/mysql.conf
9、修改PATH环境变量,让系统可以直接使用mysql的相关命令。
代码:
# vim /etc/profile
在文件中添加 :PATH=$PATH:/usr/local/mysql/bin:/usr/local/apache/bin
在这里也为apache添加上路径。
然后让系统重新载入系统库:
代码:
# ldconfig
在新开一个终端就可以用mysql命令了。结果会如图所示:

完成以上的步骤mysql就安装完成了。

三、编译安装php-5.3.10
1、首先要解决依赖关系:
请配置好yum源(可以是本地系统光盘)后执行如下命令:
代码:
# yum -y groupinstall "X Software Development"
   如果想让编译的php支持mcrypt扩展,此处还需要下载如下两个rpm包并安装或升级它们:
libmcrypt-2.5.7-5.el5.i386.rpm
libmcrypt-devel-2.5.7-5.el5.i386.rpm
代码:
# rpm -Uvh libmcrypt-2.5.7-5.el5.i386.rpm libmcrypt-devel-2.5.7-5.el5.i386.rpm
2、编译安装php-5.3.10
下载源码包至本地目录。下载地址:http://www.php.net/downloads.php 下载完成后就可以安装了。
代码:
# tar xf php-5.3.10.tar.bz2
# cd php-5.3.10
# ./configure --prefix=/usr/local/php --with-mysql=/usr/local/mysql --with-openssl --with-mysqli=/usr/local/mysql/bin/mysql_config --enable-mbstring --with-freetype-dir --with-jpeg-dir --with-png-dir --with-zlib --with-libxml-dir=/usr --enable-xml    --with-apxs2=/usr/local/apache/bin/apxs --with-mcrypt
# make
# make test
# make intall
注:“make test ”是测试一下。
3、为php提供配置文件:
代码:
# cp php.ini-production /usr/local/php/lib/php.ini
4、编辑apache配置文件httpd.conf,以使apache支持php
代码:
# vim /etc/httpd/httpd.conf
1、定位至"AddType"添加如下二行
     AddType application/x-httpd-php    .php
     AddType application/x-httpd-php-source    .phps
2、定位至DirectoryIndex index.html    
     修改为:
        DirectoryIndex    index.php    index.html
经过以上的步骤php就安装完成了。
5、检测一下php是否与apache正常工作
首先新建一个目录来存放网页,并创建一个php格式的网页。
# mkdir -pv /www/htdocs
# cd /www/htdocs
# vim index.php
添加如下行:
<?php
phpinfo();
?>
然后修改apache配置文件/etc/httpd/httpd.conf 定位至“DocumentRoot”把路径修改为“/www/htdocs”
保存退出,并重新加载配置文件。
在浏览器中本机的ip地址就可以检测到结果了。如果以上操作正确会出现如下图的内容:


四、安装phpMyAdmin这个来软件来管理数据库。
下载phpMyAdmin-3.4.10.1-all-languages.tar.bz2
编译安装:
代码:
#cd /www/htdocs/
#tar xvf phpMyAdmin-3.4.10.1-all-languages.tar.bz2
#ln -sv phpMyAdmin-3.4.10.1-all-languages pma  
在浏览器中输入:http://ip/pma就能显示有关phpMyAdmin的相关内容了。
显示结果如下:

并且可以输入用户名和密码进入,就可以在图形界面管理数据库了。
注:在数据库的用户密码设置方法如下所示:
代码:
# mysqladmin -uroot -hlocalhost -p password '123456'
这里设置的是root用户主机是localhost。这里是为了简单所以设置密码为123456.在实际可要设置的更加的严密。

到此简单的LAMP平台成功搭建完成了。

如果有发现不对地方,请指出来,以便尽快的更改。谢谢!