一、编译环境及各软件版本

不介绍LAMP了,你懂的。

以下为本次编译环境及各软件版本:

linux web服务器 php mysql
CentOS 6.4 httpd-2.4.9 php-5.4.26 mysql-5.5.33-linux2.6-x86_64

二、编译安装LAMP

   编译安装LAMP和安装其它软件是一样的,但是安装顺序是,PHP必须放到最后安装,安装apache时要先安装两个组件,apr和apr-util。

1、编译安装apache

(1)、安装httpd必要的组件apr。从httpd的官网下载apr-1.5.0.tar.bz2软件包,解压进入目录,即可开始安装。

# tar xf apr-1.5.0.tar.bz2# cd apr-1.5.0# ./configure --prefix=/usr/local/apr# make && make install

apr安装成功!

(2)、安装httpd必要的组件apr-util。从httpd的官网下载apr-util-1.5.3.tar.bz2软件包,解压进入目录,即可开始安装。

# tar xf apr-util-1.5.3.tar.bz2# cd apr-util-1.5.3# ./configure --prefix=/usr/local/apr-util --with-apr=/usr/local/apr# make && make install

apr-util安装成功!

(3)、编译安装httpd-2.4.9。解压软件包,进入目录,设置软件参数。

httpd-2.4新特性:

1)、MPM支持在运行时装载:

--enable-mpms-shared=all --with-mpm=event   把所有能启用的mpm都编译进来,默认使用event

2)、完全支持event

3)、异步读写

4)、能够实现在每模块及每目录上指定日志级别

5)、每请求配置:<If>, <Elseif>

6)、增强版的表达式分析器

7)、毫秒级的keepalive timeout

8)、基于FQDN的虚拟主机不再需要NameVirtualHost指令

9)、对内存的占用降低了

10)、支持使用片定义变量

   11)、新增了一些模块:mod_proxy_fcgi, mod_ratelimit, mod_request, mod_remoteip。

   12)、对于基于IP的访问控制做了修改,不再支持使用order, allow, deny这些机制;而是统一使用require进行。

./configure --prefix=/usr/local/apache --sysconfdir=/etc/httpd --enable-so --enable-ssl --enable-cgi --enable-rewrite --with-zlib --with-pcre --with-apr=/usr/local/apr --with-apr-util=/usr/local/apr-util --enable-modules=most --enable-mpms-shared=all --with-mpm=event#各参数说明--prefix=/usr/local/apache  #指定安装目录--sysconfdir=/etc/httpd     #配置文件目录--enable-so                 #支持基于DSO动态加载模块--enable-ssl                #支持ssl模块,即可以使用https协议--enable-cgi                #支持cgi--enable-rewrite            #支持url重写模块--with-zlib                 #数据报文压缩模块,必须要这个模块--with-pcre                 #支持pcre--with-apr=/usr/local/apr   #指定apr位置--with-apr-util=/usr/local/apr-util #指定apr-util位置--enable-modules=most      #最大化安装DSO模块,即安装常用模块--enable-mpms-shared=all    #基于共享的方式安装所有MPM模块--with-mpm=event            #默认MPM模块为event

参数设置完成,并检查成功后,就可以使用make命令编译并安装软件了。

make && make install

httpd-2.4.9安装成功!

(4)、导出httpd的头文件。

ln -sv /usr/local/apache/include /usr/include/httpd

(5)、导出httpd的帮助文件。

vim /etc/man.config#在文件内加上帮助文件路径MANPATH /usr/local/apache/man

(6)、给环境变量添加路径。

编辑文件/etc/profile.d/httpd.sh,在文件内加上以下内容:

export PATH=/usr/local/apache/bin:$PATH

执行命令 source 使新的配置文件生效:

source /etc/profile.d/httpd.sh

环境变量配置成功!

(7)、添加服务脚本。

在目录/etc/rc.d/init.d/目录下,新建文件httpd,并添加以下控制脚本,该脚本取自httpd2.2的服务脚本。

#!/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/httpd.conf# config: /etc/sysconfig/httpd# pidfile: /var/run/httpd.pid# Source function library.. /etc/rc.d/init.d/functionsif [ -f /etc/sysconfig/httpd ]; then        . /etc/sysconfig/httpdfi# 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/apachectlhttpd=${HTTPD-/usr/local/apache/bin/httpd}prog=httpdpidfile=${PIDFILE-/var/run/httpd.pid}lockfile=${LOCKFILE-/var/lock/subsys/httpd}RETVAL=0start() {        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 1esacexit $RETVAL

为脚本添加执行权限:

chmod +x httpd

(8)、将脚本添加至服务。

(9)、修改配置文件/etc/httpd/httpd.conf。

在文件内添加PID文件路径:

PidFile  "/var/run/httpd.pid"

修改根目录为/var/www/html:

(10)、启动服务,测试服务是否添加成功。

查看 80 端口是否被监听

2、编译安装mysql-5.5.33-linux2.6-x86_64

mysql有好几个可安装的版本:

   a、操作系统自带的rpm包

b、MySQL官方rpm包

c、通用二进制格式

d、源码编译

此处我们使用的是二进制已编译好的版本,所以我们直接把软件包解压至软件安装目录即可。

注意:基于这种已编译好的方式安装mysql,mysql软件包必须解压安装至/usr/local目录,并且安装目录必须为mysql。

(1)、添加系统用户mysql,用于作mysql软件的运行用户。

groupadd -r mysqluseradd -g mysql -r -s /sbin/nologin -d /mysqldata/data mysqlmkdir -p /mysqldata/datachown -R mysql:mysql /mysqldata/data/

(2)、解压软件。

tar xf mysql-5.5.33-linux2.6-x86_64.tar.gz -C /usr/local

使用原目录创建一个软链接mysql,这样以后升级也方便:

(3)、查看安装帮助文档,INSTALL-BINARY 可以知道接下来的操作

修改mysql目录下所有文件的权限为mysql。

(4)、运行目录scripts下的脚本mysql_install_db,创建mysql数据库。

scripts/mysql_install_db --user=mysql --datadir=/mysqldata/data

--user: 指定mysqld服务运行的用户

--datadir:指定mysql数据库存放位置

(5)、将mysql软件目录所有文件的权限改为root。

(6)、为mysql提供主配置文件,如果系统内存大于512M,则使用my-large.cnf文件作为系统配置文件。

并修改此文件中thread_concurrency的值为你的CPU个数乘以2,比如这里使用如下行:

thread_concurrency = 2

另外还需要添加如下行指定mysql数据文件的存放位置:

datadir = /mysqldata/data

(7)、为mysql提供sysv服务脚本:

(8)、将mysql添加至服务列表:

(9)、为了使mysql的安装符合系统使用规范,输出mysql的man手册至man命令的查找路径:

编辑/etc/man.config,添加如下行即可:

MANPATH  /usr/local/mysql/man

(10)、输出mysql的头文件至系统头文件路径/usr/include,通过简单的创建链接实现:

ln -sv /usr/local/mysql/include  /usr/include/mysql

(11)、输出mysql的库文件给系统库查找路径:

echo '/usr/local/mysql/lib' > /etc/ld.so.conf.d/mysql.confldconfig

(12)、修改PATH环境变量,让系统可以直接使用mysql的相关命令。编辑文件/etc/profile.d/mysql.sh,添加以下几行:

export $PATH=/usr/local/mysql/bin:$PATH

(13)、启动服务,并使用mysql客户端给root用户添加密码。

使用mysql客户端工具,mysql连接mysql数据库,并给root添加密码:

(14)、删除无用帐号,给root帐号授与mysql数据库最大权限。

删除密码为空的mysql用户:

给root用户授权:

(15)、查看root登录密码是否可以使用:

3、编译安装php-5.4.26

此处我们把PHP编译成apache的一个模块,让apache管理php工作。

(1)、解压PHP软件包,并配置相关安装参数。

./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  --enable-sockets --with-apxs2=/usr/local/apache/bin/apxs --with-mcrypt  --with-config-file-path=/etc --with-config-file-scan-dir=/etc/php.d --with-bz2  --enable-maintainer-zts##参数说明:--prefix=/usr/local/php        #php安装路径--with-mysql=/usr/local/mysql  #mysql软件路径--with-openssl                 #支持ssl--with-mysqli=/usr/local/mysql/bin/mysql_config #支持mysqli接口--enable-mbstring             #支持多字节字符串,用于支持中文--with-freetype-dir           #支持freetype字体解析工具,需先安装freetype-devel软件包--with-jpeg-dir               #支持处理jpeg图片--with-png-dir                #支持处理png图片--with-zlib                   #支持数据报文zlib压缩--with-libxml-dir=/usr        #指定解析xml库的文件的路径--enable-xml                  #支持解析xml--enable-sockets              #支持基于sockets通信--with-apxs2=/usr/local/apache/bin/apxs  #指定apxs工具路径--with-config-file-path=/etc  #配置文件路径--with-config-file-scan-dir=/etc/php.d #指定扩展配置文件目录--with-bz2                    #支持bz2压缩格式--enable-maintainer-zts       #对应apache的MPM模块worker或event

(2)、编译安装php。

makemake testmake install

(3)、为php提供配置文件:

(4)、编辑apache配置文件/etc/httpd/httpd.conf,让apache支持PHP。

在配置文件中添加以下两行:

AddType application/x-httpd-php  .phpAddType application/x-httpd-php-source  .phps

定位至DirectoryIndex index.html,修改为:

DirectoryIndex  index.php  index.html

(5)、重新启动apache,测试PHP是否安装配置成功。在网站根目录/var/www/html下编辑首页index.php文件:

三、测试环境

   lamp的安装基本完成了,我们随便弄个PHP网站程序测试一下吧。

1、新建一个虚拟主机,www.wubinary.com。

编辑httpd配置文件,导入vhost模块及虚拟主机配置文件:

LoadModule vhost_alias_module modules/mod_vhost_alias.soInclude /etc/httpd/extra/httpd-vhosts.conf

注释掉网站根目录:

#DocumentRoot "/var/www/html"

编辑配置文件/etc/httpd/extra/httpd-vhosts.conf,配置如下虚拟主机:

ServerAdmin admin@wubinary.com DocumentRoot "/var/www/html/joomla" ServerName www.wubinary.com ErrorLog "logs/wubinary.com.error_log" CustomLog "logs/wubinary.com-access_log" common

重新启动服务。

2、下载一套网站程序joomla,解压至/var/www/html/joomla目录。

3、新建一个数据库joomla及数据库用户joomlauser:

4、本地客户端hosts文件绑定域名,打开www.wubinary.com就可以开始安装网站程序了。

安装成功了!

5、使用httpd自带的性能测试工具ab,测试一下服务器的性能:

命令:

ab -c 模拟的并发数 -n 总请求数 http://www.domain.com

测试:

ab -c 5 -n 50 http://www.wubinary.com/index.php

使用ab命令5个并发,50条请求测试httpd性能如下:

每秒执行2.95条请求,可以看出性能好差。。。。。