ngnix与php-fpm 安装一例,纯命令行的安装步骤,没有注释,谨供参考。
yum install libxml2-devel
yum install bzip2-devel
yum install curl-devel
yum install libmcrypt
yum install libmcrypt-devel
yum install postgresql-devel
5.2
./configure --prefix=/usr/local/php --enable-fastcgi --enable-fpm --with-mcrypt --with-zlib --enable-mbstring --disable-pdo --with-pgsql --with-curl --disable-debug --enable-pic --disable-rpath --enable-inline-optimization --with-bz2 --with-xml --with-zlib --enable-sockets --enable-sysvsem --enable-sysvshm --enable-pcntl --enable-mbregex --with-mhash --enable-xslt --enable-memcache --enable-zip --with-pcre-regex
5.3
./configure --prefix=/usr/local/php --enable-fpm --with-mcrypt --with-zlib --enable-mbstring --disable-pdo --with-pgsql --with-curl --disable-debug --disable-rpath --enable-inline-optimization --with-bz2 --with-zlib --enable-sockets --enable-sysvsem --enable-sysvshm --enable-pcntl --enable-mbregex --with-mhash --enable-zip --with-pcre-regex
ldconfig -p | grep ltdl //发现存在,所以已安装,只是因为名字的关系,找不到
cd /usr/lib
ln -s libltdl.so.3.1.4 libltdl.so
ldconfig
make clean
make
make install
cd /usr/local/php/bin
yum install autoconf
./pecl install memcache
yum install libevent-devel
#./configure --prefix=/usr/local/libevent
./configure --prefix=/usr/local/memcached //安装memcached
/usr/local/memcached/bin/memcached -d -m 32 -l 127.0.0.1 -p 11211 -u root
yum -y install pcre-devel
./configure --prefix=/usr/local/nginx --without-mail_pop3_module --without-mail_imap_module --without-mail_smtp_module
make & make install
ln -s /usr/local/nginx/conf /etc/nginx
yum install mysql-devel
./configure --with-php-config=/usr/local/php/bin/php-config
cp mysql.so /usr/lib/php/modules/
您可能感兴趣的文章:
nginx下设置php-fpm使用socket文件的方法分享
nginx中php-fpm使用sock方式配置的例子
深入理解php-fpm.conf中的两个重要参数
nginx中php-fpm调优方法
有关nginx+php-fpm配置文件的组织结构
在nginx中查看php-fpm工作状态
Centos下yum安装nginx+PHP-FPM+eAccelerator+mysql
nginx貌似没有虚拟目录的说法,因为它本来就是完全根据目录来设计并工作的。如果非要给nginx安上一个虚拟目录的说法,那就只有alias标签比较"像"。
alias标签和root标签的区别:
alias指定的目录是准确的,root是指定目录的上级目录,并且该上级目录要含有location指定名称的同名目录。
另外,使用alias标签的目录块中不能使用rewrite的break。
来看一个配置文件:
alias /home/html/abc/;
}
在这段配置下,http://test/abc/a.html就指定的是/home/html/abc/a.html。这段配置亦可改成
root /home/html/;
}
这样,nginx就会去找/home/html/目录下的abc目录了,得到的结果是相同的。但是,如果我把alias的配置改成:
alias /home/html/def/;
}
那么nginx将会从/home/html/def/取数据,这段配置还不能直接使用root配置,如果非要配置,只有在/home/html/下建立一个 def->abc的软link(快捷方式)了。一般情况下,在location /中配置root,在location /other中配置alias是一个好习惯。至于alias和root的区别,我估计还没有说完全,如果在配置时发现奇异问题,不妨把这两者换换试试。
nginx alias的设置
nginx也有像apache的别名功能,格式为:
root /home/www/default;
index index.php;
}
但nginx在处理php脚本时,需要传递给fastcgi才能处理,所以比apache的别名设置多一个。
下面以phpmyadmin别名设置为例:
root /home/www/default;
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
}
location ~ /phpmyadmin {
root /home/www/default;
index index.php;
}
配置完成Nginx+PHP+MySQL环境以后,稳定运行几个月,但是最近发现有个问题,如果请求的PHP文件不存在,不是报404错误,而是出现no input file specified的提示。
检查问题,分析原因:
在于Nginx没有检查这个PHP文件是否存在,直接把所有PHP文件都交由后端php-fpm处理了,而php-fpm找不到请求的php文件,所以报出这样的错误消息,
解决方法:
在nginx.conf中增加一行:
fastcgi_intercept_errors on;