编译安装LAMP

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

不介绍LAMP了,你懂的。

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

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

wKiom1MyzAOigDHWAAF5zKjyA_Q167.jpg


二、编译安装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

wKioL1Mym5vCm-lCAAByfnbH6ko686.jpg

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

wKioL1MynCKD1QHkAABweWM7teI601.jpg

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

wKiom1MypwOhT73NAACphzOyOcE581.jpg

httpd-2.4.9安装成功!


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

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

wKiom1Myp6GxsEFbAAPmqTxX8h4987.jpg


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

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

wKiom1MyqXPSqSzCAAIyeU0RLYk430.jpg


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

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

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

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

source /etc/profile.d/httpd.sh

wKioL1MysKvwGTcOAABIwKXhV-I810.jpg

环境变量配置成功!


(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/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


为脚本添加执行权限:

chmod +x httpd


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

wKiom1Mys6GyyMKPAADfMbEcb9Y139.jpg


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

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

PidFile  "/var/run/httpd.pid"

wKioL1Mys9vQfrAFAABIUltt384557.jpg


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

wKioL1MytCXy2qPlAAB1UPEEnJQ001.jpg


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

wKiom1Myt7rQunLAAABczsmSaKM951.jpg


查看 80 端口是否被监听

wKioL1MyuCGDVh29AAHocotTltk139.jpg


wKiom1MyuBiQEQZTAACF7SeX3BY603.jpg


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 mysql
useradd -g mysql -r -s /sbin/nologin -d /mysqldata/data mysql
mkdir -p /mysqldata/data
chown -R mysql:mysql /mysqldata/data/


(2)、解压软件。

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


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

wKiom1Myz9qRBPzSAAEjRuIQHME657.jpg


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

wKiom1My5L_zhLiEAAIUJThi8Ro667.jpg


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

wKiom1My48TD-2KNAAMDWouHrNg335.jpg


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

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

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

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


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

wKioL1My5gKxvkFIAAL5-UeQR8M056.jpg


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

wKiom1My5pjgmoeoAABrQYe_l_8315.jpg


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

thread_concurrency = 2


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

datadir = /mysqldata/data


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

wKioL1My53jQrC8qAACp-DfqDnc848.jpg


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

wKiom1My5-yTh2-TAADgVWgyKY0842.jpg


(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.conf
ldconfig

wKiom1My6ZaSKDfwAAIe1EafAp4626.jpg


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

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

wKioL1My61rSPj0tAACCCOsVvng812.jpg


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

wKioL1My7BvTRvknAACilikjH_A944.jpg


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

wKioL1My7bOATW65AALHWhbqcAc829.jpg


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

删除密码为空的mysql用户:

wKioL1My7zyBJKQNAAGJUwb114g537.jpg


给root用户授权:

wKiom1My74SBPXbdAAD4ZZrK3p0126.jpg


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

wKioL1My78ayIURcAAIWuYS0Itg032.jpg


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。

make
make test
make install


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

wKiom1My9rnwL0ZRAAB0SgL-nL8465.jpg


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

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

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


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

DirectoryIndex  index.php  index.html


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

<?php
phpinfo();
?>

wKiom1M0Jf-Q-eZdAAK49jkyaBI730.jpg


三、测试环境

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

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

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

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

注释掉网站根目录:

#DocumentRoot "/var/www/html"

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

<VirtualHost *:80>
    ServerAdmin [email protected]
    DocumentRoot "/var/www/html/joomla"
    ServerName www.wubinary.com
    ErrorLog "logs/wubinary.com.error_log"
    CustomLog "logs/wubinary.com-access_log" common
</VirtualHost>

重新启动服务。


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

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

wKiom1M0NrWAyehRAAIE3Wu05Zc598.jpg


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

wKioL1M0Nx6SV4-GAAH-X46wbzM774.jpg


wKiom1M0OViRcmNbAAOwZjxgbcQ522.jpg


安装成功了!


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性能如下:

wKiom1M0P8KRcXmgAANX8MMokzQ015.jpg


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





你可能感兴趣的:(apache,mysql,lamp,httpd,php编译安装lamp)