本篇博客介绍如何自行编译安装包,定制符合特定平台的LAMP架构,本测试操作均在虚拟机中实现(Redhat Enterprise Linux 5.8),内容涵盖编译安装httpd、MySQL、php
准备:
准备一台未安装Apaches、MySQL、php的虚拟机
(作者使用的是初始化后的虚拟机)
说明:
本操作过程需要使用自行下载的软件包,软件包自行上网下载即可,建议大家进官网下载,下载rpm包时推荐使用以下两个站点进行下载:www.rpmfind.net、rpm.pbone.net
一、编译安装httpd
httpd安装顺序:apr --> apr-util --> pcre --> httpd
执行安装操作前需要下载以下软件包:
apr-1.5.2.tar.bz2
apr-util-1.5.4.tar.bz2
httpd-2.4.20.tar.bz2
pcre-8.38.tar.gz
httpd安装目录简单说明:
htdocs:网页文件存储路径
include:头文件
logs:日志文件+pid文件
man:帮助文档
manual:手册
module:模块
对于configure各选项不了解的可以使用命令./configure --help | less查看说明,这里不进行解释
1、编译安装apr
# tar xf apr-1.5.2.tar.bz2 # cd apr-1.5.2 # ./configure --prefix=/usr/local/apr # make # make install
2、编译安装apr-util
# tar xf apr-util-1.5.4.tar.bz2 # cd apr-util-1.5.4 # ./configure --prefix=/usr/local/apr-util --with-apr=/usr/local/apr # make # make install
3、编译安装pcre
# tar xf pcre-8.38.tar.gz # cd pcre-8.38 # ./configure --prefix=/usr/local/pcre # make # make install
4、编译安装httpd
# tar xf httpd-2.4.20.tar.bz2 # cd httpd-2.4.20 # ./configure --prefix=/usr/local/apache --sysconfdir=/etc/httpd --enable-so --enable-rewrite --enable-ssl --enable-cgi --enable-cgid --enable-modules=most --enable-mods-shared=most --enable-mpms-shared=all --with-apr=/usr/local/apr --with-apr-util=/usr/local/apr-util --with-pcre=/usr/local/pcre # make # make install
5、测试httpd
# cd /usr/local/apache # bin/apachectl start # netstat -tnlp # ls logs # 出现pid文件 # vim /htdocs/index.html # 修改主页内容
作者测试结果:
6、修改pid文件存储路径至/var/run
# vim /etc/httpd/httpd.conf # 添加记录:PidFile "/var/run/httpd.pid"
7、为httpd添加服务脚本(服务脚本见附件)
# vim /etc/rc.d/init/httpd # ... # chmod +x /etc/rc.d/init/httpd # chkconfig --add httpd # service httpd restart # chkconfig --list httpd # chkconfig --level 35 httpd on # chkconfig --list httpd
8、导出httpd二进制文件
# vim /etc/profile.d/httpd.sh # 添加内容:export PATH=$PATH:/usr/local/apache/bin # 新开一个终端 # echo $PATH # httpd -t
9、到这一步httpd的配置就完成了
二、安装MySQL
这里使用mysql的通用二进制包,需要注意的是,MySQL要求二进制包必须要解压至/usr/local/目录下,并且目录名必须为mysql
作者使用的是mysql5.5,这里使用的压缩包为:mysql-5.5.50-linux2.6-i686.tar.gz
1、解压压缩包至/usr/local
# tar xf mysql-5.5.50-linux2.6-i686.tar.gz -C /usr/local/ # cd /usr/local # ls # ln -sv mysql-5.5.50-linux2.6-i686 mysql # cd mysql
2、创建mysql用户
# groupadd -r -g 306 mysql # useradd -g 306 -r -u 306 mysql # id mysql
3、创建逻辑卷用于存储mysql的数据
# fdisk /dev/sda # 作者这里新建了一个8e类型20G的分区sda5 # partprobe /dev/sda # pvcreate /dev/sda5 # vgcreate myvg /dev/sda5 # lvcreate -n mysql -L 5G myvg # lvs
# mke2fs -j /dev/myvg/mysql # mkdir /mysql # vim /etc/fstab # 添加记录:/dev/myvg/mysql /mysql ext3 defaults 0 0 # mount -a # mount
3、创建mysql数据存储目录
# mkdir /mysql/data # ll /mysql # chown -R mysql.mysql /mysql/data # chmod o-rx /mysql/data # ls -ld /mysql/data
4、初始化数据库
# cd /usr/local/mysql/ # chown -R mysql:mysql . # scripts/mysql_install_db --user=mysql --datadir=/mysql/data/ # chown -R root .
5、为mysql配置服务脚本
# cp support-files/mysql.server /etc/init.d/mysqld # ll /etc/init.d/mysqld # 已经有执行权限了 # chkconfig --add mysqld # chkconfig --list mysqld # 服务在当前级别已启用 # free -m # 查看系统内存 # 作者内存为502,因此选择my-large.cnf作为mysql的配置文件 # cp support-files/my-large.cnf /etc/my.cnf # cat /proc/cpuinfo # 作者有两个处理器,因此将my.cnf中的并发线程数量设置为4 # vim /etc/my.cnf # 修改内容:thread_concurrency = 4 # 并添加记录:datadir=/mysql/data # service mysqld start # netstat -tnlp # 查看3306端口是否处于监听状态
6、导出mysql二进制文件
# mysql # vim /etc/profile.d/mysql.sh # 添加内容:export PATH=$PATH:/usr/local/mysql/bin # 新开一个终端 # mysql
7、导出mysql帮助文档
# vim /etc/man.config # 添加记录:MANPATH /usr/local/mysql/man
8、导出mysql库文件
# vim /etc/ld.so.conf.d/mysql.conf # 编辑:/usr/local/mysql/lib # ldconfig -v
9、导出mysql头文件
# ln -sv /usr/local/mysql/include /usr/include/mysql # ls /usr/include/mysql/
10、至此,mysql的安装就完成了
三、编译安装php(将php安装为apache的模块)
本操作需要用到的软件包:
libmcrypt-2.5.7-5.el5.i386.rpm
libmcrypt-devel-2.5.7-5.el5.i386.rpm
mhash-0.9.2-6.el5.i386.rpm
mhash-devel-0.9.2-6.el5.i386.rpm
php-5.6.22.tar.bz2
xcache-3.2.0.tar.bz2
httpd安装选项简单说明:
./configure --help
--prefix=/usr/local/php
--with-mysql=/usr/local/mysql
指明mysql安装路径
--with-openssl
支持openssl功能
--with-mysqli=/usr/local/mysql/bin/mysql_config
支持mysql的一种与php交互的接口
--enable-mbstring
支持多字节字符串
--with-freetype-dir
支持freetype(自由的,可移植的字体库)的功能rpm -qi freetype
--with-jpeg-dir
支持jpeg图片
--with-png-dir
支持png图片
--with-zlib
支持zlib压缩库
--with-libxml-dir=/usr
表明拓展标记语言库路径
--enable-xml
支持xml
--enable-sockets
支持基于套接字的通信
--with-apxs2=/usr/local/apache/bin/apxs
指明将php编译为apache的模块
--with-mcrypt
支持额外的加密库
--with-config-file-path=/etc
指明php的主配置文件存放路径
--with-config-file-scan-dir=/etc/php.d
指明php的片段配置文件存储路径
--with-bz2
支持bz2压缩库
--enable-maintainer-zts
apache的mpm模式为work或event时需要使用,为prefork时不使用
1、解压压缩包并安装php
# httpd -M # 查看httpd的mpm模式 # 作者的httpd的mpm模式为event(默认) # rpm -ivh *.rpm # 安装上述四个rpm包 # tar xf php-5.6.22.tar.bz2 # cd php-5.6.22 # ./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 # make # make install
2、为php添加配置文件
# cd php-5.6.22 # cp php.ini-production /etc/php.ini
3、结合apache、php
# vim /etc/httpd/httpd.conf # 使apache能够处理php结尾的页面文件 # 添加: AddType application/x-httpd-php .php AddType application/x-httpd-php-source .phps # 修改DirectoryIndex选项 # 修改为:DirectoryIndex index.php index.html # httpd -t # service httpd restart # cd /usr/local/apache/htdocs/ # mv index.html index.php # vim index.php # 添加内容:
# 测试
4、测试连接php、mysql
# vim index.php # 添加内容
测试:
# service mysqld stop
测试:
5、安装xcache(php的扩展功能)
# cd /root/download # tar xf xcache-3.2.0.tar.gz # cd xcache-3.2.0 # /usr/local/php/bin/phpize # ./configure --enable-xcache --with-php-config=/usr/local/php/bin/php-config # make # make install # mkdir /etc/php.d # cp xcache.ini /etc/php.d/ # vim /etc/php.d/xcache.ini # 修改xcache.count=处理器数量 # service httpd restart # vim /usr/local/apache/htdocs/index.php # 编辑内容It works!
6、测试,如下图所示表明安装成功
7、至此LAMP架构算是搭建完成了,需要实现什么功能时,编辑httpd的配置文件启用相应的模块及包含相应的配置文件即可,能力有限,仅将操作流程大致的叙述了一通,详细的大概就需要自行查阅相关资料了,还望见谅,疏漏处还望指出