Linux系统下安装软件有两种方式:一种是通过软件包安装,一种是通过源码编译安装。
RPM是”Redhat Package Manager”的缩写,根据名字也能猜到这是Redhat公司开发出来的。RPM 是以一种数据库记录的方式来将你所需要的套件安装到你的Linux 主机的一套管理程序。也就是说,你的linux系统中存在着一个关于RPM的数据库,它记录了安装的包以及包与包之间依赖相关性 。RPM安装的优点是:由于已经预先在linux机器上编译好并打包好的文件,所以安装起来非常快捷和方便 。但有时需要针对特定环境,不同的版本选择不同的软件包 。
而如果我们选择了通过源代码进行安装,通过源代码编译我们可以
a) 针对自己的硬件平台选用合适的编译器来优化编译后的二进制代码;
b) 根据不同的软件平台环境调整相关的编译参数;
c) 针对我们特定应用场景选择需要什么组件不需要什么组件;
d) 根据我们的所需要存储的数据内容选择只安装我们需要的字符集;
e) 可以根据特定应用场景所作的各种调整等等
不过,在源码安装给我们带来更大灵活性的同时,同样也给我们带来了可能引入的隐患:
a) 对编译参数的不够了解造成编译参数使用不当可能使编译出来的二进制代码不够稳定;
b) 对自己的应用环境把握失误而使用的优化参数可能反而使系统性能更差;
c) 还有一个并不能称之为隐患的小问题就是源码编译安装将使安装部署过程更为复杂,所花费的时间更长;
本文这里针对源码编译安装PHP并搭配nginx运行(源码安装nginx见文章附录)做了一些配置过程中的记录。具体的配置过程如下。
二.配置过程:
配置前的准备工作:
创建安装目录,这里假设为/usr/local/php:
1. cd /usr/local/php 进入该目录 下载php源码
wget http://cn.php.net/get/php-5.3.10.tar.gz/from/this/mirror
2.安装编译php所需要的库文件
yum -y install libevent libevent-devel libxml2 libxml2-devel libmcrypt libmcrypt-devel libmcrypt libmcrypt-devel curl-devel libpng-devel libtool-ltdl-devel (比较多,我这里一次性下载了)
3.添加用户组和用户账号:(我这里以fpm用户组和fpm用户名为例)
4.解压缩php源代码包:
5.进入解压好的php-5.3.10 这个目录配置相应的参数:
附:具体的参数:
./configure --prefix=/usr/local/php \
--enable-fpm \
--with-fpm-user=fpm \
--with-fpm-group=fpm \
--with-mysql=mysqlnd \
--with-mysqli=mysqlnd \
--with-pdo-mysql=mysqlnd \
--without-pdo-sqlite \
--without-sqlite3 \
--without-sqlite \
--with-mysql-sock=/tmp/mysql.sock \
--with-curl \
--enable-mbstring \
--with-mhash \
--with-mcrypt \
--with-openssl \
--with-gd \
--enable-sockets \
--with-gettext \
--with-zlib \
--enable-zip \
--enable-soap \
--with-xmlrpc
不出意外的话,会看到下图的结果:
6.编译:(这个过程比较耗时)
编译完成的最后会出现下图:
7.开始安装:
8.复制php.ini到php安装目录 php.ini-development 到/usr/local/php/lib 这个目录下并重命名为php.ini:
9.做方便php的运行的链接,不用配置环境变量
现在我们可以查看php的版本:
10.php-fpm的配置
进入php-fpm的主配置文件 php-fpm.conf,找到图中的部分做相应的修改:
使用命令php-fpm启动php,可以使用命令ps aux | grep php查看php进程是否开启:
11. 配置php-fpm 能通过unix domain socket的方式实现快速连接(可选)
说明:平时大家配置的nginx连接fastcgi的方式都是tcp的,现在我们尝试使用的是一种速度更快的方法即unix domain socket:
cd /var/run 进入该目录,创建一个php-fpm.sock 文件并修改其所有者:
vi /usr/local/php/etc/php-fpm.conf
12.同时修改nginx(niginx的安装请参考附录)的主配置文件/etc/nginx/nginx.conf ,增加下面这句:
fastcgi-pass unix:/var/run/php-fpm.sock
13.最后就是在/usr/share/html 这个目录下创建一个文件夹 命名为info.php,在里面添加以下测试内容:
<?php /*注意脚本语言的书写*/
phpinfo();
?>
三.测试结果:
在页面输入http://192.168.1.111/info.php(我这里以ip地址为192.168.1.111做例子)就可以看到php的测试页面:
四.可能遇到的问题的解决方案:
(P.S.我在做测试的时候发现nginx在安装的过程中出现的问题比较多,所以这里列举的都是nginx的问题)
1.第一次下载nginx源代码包的时候,由于网速不稳定遇到wget断开再重新连接的情况,原本以为没什么问题,结果在解压缩时提示下图的错误:
后来我使用wget -c +网址 重新下载,再解压缩就没这个问题了。使用wget -c断点续传,对于我们下载大文件时突然由于网络等原因中断非常有帮助,我们可以继续接着下载而不是重新下载一个文件。
2.启动nginx时提示下图的错误:
这种情况出现的原因是因为nginx重复启动了,如果是需要重新启动nginx可以使用命令 /usr/sbin/niginx -s reload
3.另外,还需要注意的一点是,niginx和php这里并没有设置开机自启动,所以每一次开机启动时都需要手动启动php以及nginx。
附录:
源码编译安装Nginx :
1.开始安装之前,首先要下载相应的编译库文件,wdOS系统下默认安装了openssl-devel这个库文件,所以还需要安装 glib2-devel pcre-devel bzip2-devel gzip-devel
使用命令 yum install glib2-devel pcre-devel bzip2-devel gzip-devel 下载安装即可
2.进入/usr/local/src 这个目录下载nginx源码:
解压缩nginx 源代码包:tar -zxvf nginx-1.0.4.tar.gz
3.进入解压好的nginx-1.0.4 这个目录配置相应的参数:
附:环境参数:
./configure \
--user=nginx \
--group=nginx \
--prefix=/usr/share \
--sbin-path=/usr/sbin/nginx \
--conf-path=/etc/nginx/nginx.conf \
--error-log-path=/var/log/nginx/error.log \
--http-log-path=/var/log/nginx/access.log \
--pid-path=/var/log/run/nginx.pid \
--lock-path=/var/log/lock/subsys/nginx \
--with-http_ssl_module \
--with-http_realip_module \
--with-http_addition_module \
--with-http_sub_module \
--with-http_dav_module \
--with-http_flv_module \
--with-http_gzip_static_module \
--with-http_stub_status_module \
--with-http_perl_module \
--with-mail \
--with-mail_ssl_module
4.进行编译: (这个时间相对php要短很多)
make
5.进行安装;
make install
6.安装完成后使用命令/usr/sbin/nginx 启动nginx,之后你在本机的浏览器输入http:// ip地址 我这里以192.168.1.111为例说明: