一、编译环境及各软件版本
不介绍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/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)、将脚本添加至服务。
(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 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,这样以后升级也方便:
(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.conf ldconfig
(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。
make make test make install
(3)、为php提供配置文件:
(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(); ?>
三、测试环境
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:
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条请求,可以看出性能好差。。。。。