最近由于某些原因把网站服务器从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
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 |
# 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的重要参数。
1 2 3 4 5 6 7 8 9 10 |
# 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(可选,最后做也行):
1 2 |
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的文件:
1 2 3 4 5 6 7 8 9 |
# 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,配置段如下:
1 2 3 4 5 |
; 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。
1 2 3 4 5 |
# start php-fpm php–fpm # check by port netstat –anp | fgrep —color 9000 |
连接nginx和php-fpm
准备“著名的info.php“。
1 2 3 |
<?php phpinfo(); ?> |
放在nginx的”htdocs“中,本文中为/usr/local/nginx/html/。接下来修改nginx.conf,主要是取消location php部分的注释,修改其中的内容。
1 2 3 4 5 6 7 8 9 |
# 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并测试。
1 2 3 |
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的在这里,我这里也有一个。 […]