最近由于某些原因把网站服务器从apache切换到nginx,也就是从LAMP到了LEMP(LNMP)。apache和php连接方式是通过模块,nginx和php的连接方式个人选择的是php-fpm(考虑到有些人可能不清楚php-fpm和php的区别,个人建议把php-fpm当作php的一个模块来看,是实现了cgi的可以与其他程序交互的模块。php-fpm更详细的资料可以查询php官网。),以下就是个人编译安装nginx和php-fpm的记录。
安装顺序如下:
- 编译安装nginx
- 确认可以显示HTML页面
- 在mysql已经安装的情况下,编译安装php
- 配置nginx和php-fpm的连接
- 确认基本php页面正常显示
编译安装nginx和测试index.html
# replace 'x' with concrete version number wget http://nginx.org/download/nginx-x.x.x.tar.gz tar zxvf nginx-x.x.x.tar.gz cd nginx-x.x.x.tar.gz # default prefix is /usr/local/nginx ./configuare make make install # link some files for convenience ln -s /usr/local/nginx/sbin/nginx /usr/local/bin/nginx ln -s /usr/local/nginx/conf/nginx.conf /usr/local/etc/nginx.conf # start nginx nginx # test index.html curl http://localhost
编译安装php
编译安装php时需要注意的有
- 内存尽量空出来,小内存的至少不要一边运行mysql一边编译php
- 如果遇到某个命令编译时间过长,用稍微低一点版本的php试试
以下是个人实际编译过程,其中–enable-fpm是启用php-fpm的重要参数。
# replace 'x' with concrete version number wget http://www.php.net/get/php-x.x.x.tar.gz/from/this/mirror -O php-x.x.x.tar.gz tar zxvf php-x.x.x.tar.gz cd php-x.x.x # ensure mysql installed # my mysql is in /usr/local/mysql ./configuare --with-mysql=/usr/local/mysql --enable-fpm --with-zlib --prefix=/usr/local/php make make install
编译之后还不能使用php-fpm,先复制著名的php.ini(可选,最后做也行):
cp php.ini-production /usr/local/php/lib/php.ini ln -s /usr/local/php/lib/php.ini /usr/local/etc/php.ini
准备php-fpm的文件:
# copy default php-fpm configuration cp /usr/local/php/etc/php-fpm.conf.default /usr/local/php/etc/php-fpm.conf ln -s /usr/local/php/etc/php-fpm.conf /usr/local/etc/php-fpm.conf vi /usr/local/etc/php-fpm.conf # find nobody and replace with www-data # link binary file for convenience ln -s /usr/local/php/sbin/php-fpm /usr/local/bin/php-fpm
默认的php-fpm.conf和php.ini不一样,不能直接使用,主要是用户不对,这里在vi修改文件时把默认的nobody改成www-data,配置段如下:
; Unix user/group of processes ; Note: The user is mandatory. If the group is not set, the default user's group ; will be used. user = www-data group = www-data
修改完之后启动php-fpm。
# start php-fpm php-fpm # check by port netstat -anp | fgrep --color 9000
连接nginx和php-fpm
准备“著名的info.php“。
<?php phpinfo(); ?>
放在nginx的”htdocs“中,本文中为/usr/local/nginx/html/。接下来修改nginx.conf,主要是取消location php部分的注释,修改其中的内容。
# vi /usr/local/etc/nginx.conf location ~ \.php$ { fastcgi_pass 127.0.0.1:9000; fastcgi_index index.php; # default is /scripts$fastcgi_script_name # not work, replace '/scripts' with $document_root fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; include fastcgi_params; }
检查配置,重启nginx并测试。
nginx -t nginx -s reload curl http://localhost/info.php
如果显示OK,说明nginx和php连接成功。
至此,nginx+php基本功能OK,不过因为是编译安装的,启动php-fpm和nginx不是很方便,之后的文章会进一步讲解。
2 responses to “编译安装php和nginx”
[…] 接上篇编译安装nginx和php。 […]
[…] 安装nginx的过程这里就不展开了,一搜一大把,官方wiki的在这里,我这里也有一个。 […]