在linux中由于存在yum这种包管理方式,使得安装部署软件变得十分简单易用,但在某些特定情况下,由于有特殊需求,需要基于编译这种方式来定制化安装所需要的软件,以能特供自己所需的功能,此处我们来基于编译实现LAMP环境,来揭开编译安装这种听起来高大上的安装方式。
首先来交代一下实验环境
系统:CentOS 7.2
IP地址::172.16.38.100
httpd版本:httpd-2.4.10
php版本:php-5.4.40
mysql版本:mysql-5.5.33
一、编译安装httpd:
1、首先准备编译安装所需要的开发包组:
yum -y groupinstall "Development Tools" yum install pcre-devel
httpd2.4依赖于apr和apr-util,apr全称为apache portable runtime(apache可移植运行库),这是一个可以使apache跨平台运行的底层库文件。
2、安装apr-1.5.0.tar.bz2
tar xf apr-1.5.0.tar.bz2
执行configure脚本开始编译:
./configure --prefix=/usr/local/apr
结束后,如没有error之类的错误提示,则执行
make && make install
3、安装apr-util-1.5.3:
tar xf apr-util-1.5.3.tar.bz2
执行configure脚本开始编译:
./configure --prefix=/usr/local/apr-util --with-apr=/usr/local/apr
结束后,如没有error之类的错误提示,则执行
make && make install
准备工作就绪,下面开始正式编译httpd2.4
4、解压httpd源码包:
tar xf httpd-2.4.10.tar.bz2
执行configure脚本开始编译:
./configure --prefix=/usr/local/apache --sysconfdir=/etc/httpd24 --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/httpd24 配置文件路径 --enable-so 允许运行时加载DSO模块 --enable-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 启用大多数常用的模块 --enable-mpms-shared=all 启用MPM所有支持的模式 --with-mpm=event 默认使用enevt模式
结束后,如没有error之类的错误提示,则执行
make && make install
因为编译过程中,没有明确的成功提示,可在每一步操作完成之后使用命令:
echo $?
来查看此前一步命令的执行结果返回值,返回1即为成功;
5、安装后所需配置:
a)导出头文件:
ln -sv /usr/local/apache24/include/ /usr/include/httpd "/usr/include/httpd" -> "/usr/local/apache24/include/"
b)更新环境变量:
# vim /etc/profile.d/httpd24.sh
而后执行:
. /etc/profile.d/httpd24.sh
使环境变量生效
c)导出man手册文件
vim /etc/man_db.conf
d)启动httpd服务:
至此,httpd安装完成。
二、基于通用二进制格式安装mariadb-5.5.46:
1、下载通用二进制格式的mariadb包,解压到/usr/local/目录,并将解压目录软连接至mysql目录,便于管理
2、查看解压出来的目录中,关于安装的说明文件:
less INSTALL-BINARY
3、添加系统用户:mysql,作为mariadb运行时的用户,修改mysql目录的属组属主为mysql,是的mariadb对该目录具有相应的权限:
4、指定数据库存放目录,且目录的属主属组为mysql:
5、修改mariadb配置文件,修改其中的数据目录为上述目录:
vim /etc/my.cnf
6、执行数据库初始化脚本:
scripts/mysql_install_db --user=mysql --datadir=/mydata/data --skip_name_resolve
7、导出PATH环境变量、库文件、头文件:
PATH环境变量:
vim /etc/profile.d/mysql.sh
读取文件使之生效:
. /etc/profile.d/mysql.sh
库文件:
vim /etc/ld.so.conf.d/mysql.conf
头文件:
ln -sv /usr/local/mysql/include/mysql/ /usr/include/mysql
8、提供服务脚本,使得可以使用systemctl来管理数据库服务:
cp mysql.server /etc/rc.d/init.d/mysqld
9、执行数据库安全初始化命令,以增加其安全性:
mysql_secure_installation
10、启动mysql:
mysql
此时可见,mysql启动成功,二进制安装mariadb到此结束;
三、编译安装php-5.4.40:
php与httpd结合的方式有两种:基于module方式和基于fastcgi方式,具体哪种方式需要在编译安装php时启用对应的选项即可,此处以fastcgi(php-fpm)的方式为主。
1、安装php编译中所依赖的程序包:
yum install libxml2-devel libmcrypt-devel bzip2-devel freetype-devel
简单说明: libxml:使php支持xml格式的文件输出 libcrypt:使php支持加密功能 bzip2:使php支持以压缩方式传输数据 freetype:使php支持多字体
注:实际中,需要根据需求来安装所需的包,以使php实现不同的功能
2、解压php-5.4.40.tar.bz2:
tar xf php-5.4.40.tar.bz2
3、编译安装:
./configure --prefix=/usr/local/php --with-mysql=/usr/local/mysql --with-openssl --with-mysqli=/usr/local/mysql/bin/mysql_config --enable-xml --with-gd --enable-mbstring --with-png-dir --with-jpeg-dir --with-freetype-dir --with-zlib --with-libxml-dir=/usr --enable-xml --enable-sockets --enable-fpm --with-mcrypt --with-config-file-path=/etc/php.ini --with-config-file-scan-dir=/etc/php.d --with-bz2
简要说明: --prefix 指明安装路径 --with-mysql 指明依赖的mysql的路径 --with-openssl 指明依赖的openssl,用于支持ssl通信 --with-mysqli 指明依赖的mysqli,mysqli是mysql的另外一个访问接口 --with-freetype-dir 用于支持显示的字体,可能会要安装freetype-devel --with-png-dir 用于显示支持png格式的图片 --with-jpeg-dir 用于显示支持jpeg格式的图片 --enable-mbstring 用于让mysql支持中文 --with-zlib 用于支持压缩功能 --with-libxml 用于分析xml格式 --enable-xml 表示支持xml --enable-sockets 表示支持以sockets方式进行通信 --with-apxs2 指明apxs文件的路径,apxs文件作用是第三方模块可以借助该文件与httpd建立关联关系 相当于一个衔接器的作用 --with-mcrypt 表示支持加密库 --with-config-file-path=/etc 表示配置文件的存放路径 --with-config-file-scan-dir=/etc/php.d 表示还要扫描哪个目录下的.ini结尾的文件作为配置文件的组成部分 --with-bz2 表示支持bz2压缩 如果httpd使用的MPM为worker或event,则需要启用该选项 --enable-maintainer-zts 当启用的MPM为worker或event时,需要启动该选项,因为此处我们是以prefork的MPM,所以不用此项 --with 之类的选项,会到对应依赖的文件的默认安装路径下去寻找,如果程序不是安装在默认路径下,则需要用=等号指定位置,如果没有安装对应程序,则需要手动安装,一般编译时用到的程序是程序的devel包 如果httpd与php结合的方式为php-fpm,则需要将--with-apxs2=/usr/local/apache24/bin/apxs去掉,然后启用--enable-fpm选项
编译过程中可能会出现错误:如下
安装对应包即可:
yum -y install libjpeg-devel
又是错误:
yum install libpng-devel
全程无错误后执行:
make && make install
4、拷贝配置文件:
pwd /usr/local/php/etc cp php-fpm.conf.default php-fpm.conf
修改配置文件:
vim php-fpm.conf
5、启动php-fpm
/usr/local/php/sbin/php-fpm
至此php-fpm顺利启动
四、修改httpd配置文件,使其支持代理php请求至php-fpm
1、修改httpd配置文件,启动反向代理
vim /etc/httpd24/httpd.conf
开启下列模块:
重启httpd服务:
apachectl start
httpd服务启动成功
2、在httpd文件中加入如下配置,将用户请求的所有以.php结尾的资源全部反代给php-fpm处理:
vim /etc/httpd24/httpd.conf
创建测试页:
vim /usr/local/apache24/htdocs/index.html
创建php测试目录:
mkdir /test/www/ -pv
vim /test/www/index.php
测试效果:
至此,顺利将前端php请求送至php-fpm处理,而后将处理结果返回至客户端。