LNMP搭建04 -- 配置Nginx支持PHP
首先建立存放网页文件的目录,执行 mkdri /usr/local/server/www
然后进入到该目录中 cd /usr/local/server/www
然后创建一个测试文件: phpinfo.php
然后,开始配置Nginx,进入 /usr/local/server/nginx/conf
将nginx.conf 复制一份命名为:nginx.conf.rxbak
然后修改
nginx.conf:
index index.html index.htm;
改为:
index index.html index.htm index.php;
#location ~ \.php$ {
#
root html;
#
fastcgi_pass 127.0.0.1:9000;
#
fastcgi_index index.php;
#
fastcgi_param SCRIPT_FILENAME /scripts$fastcgi_script_name;
# include
fastcgi_params;
#}
改为:
location ~ \.php$ {
#
root html;
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
}
《2015年12月24日 修正》
安装完成后发现没有curl,参考 http://www.centoscn.com/image-text/config/2015/0521/5490.html
整理如下:
##源码编译安装curl:
安装cURL
wget http://curl.haxx.se/download/curl-7.42.1.tar.gz
tar -zxf curl-7.42.1.tar.gz
./configure --prefix=/usr/local/curl(可选,默认安装在/usr/local/bin目录下)
make & make install
解压PHP源码包,并进入到ext/curl目录
安装:
/usr/local/php/bin/phpize
./configure --with-php-config=/usr/local/php/bin/php-config --with-curl=DIR(默认路径时无需指定)
make&&make install
会在/usr/local/php/lib/php/extensions/no-debug-non-zts-20100525生成curl.so文件
进入/usr/local/php,将源码包的php.ini-development 复制到/usr/local/php/php.ini
然后再php.ini 最后加入一行:extension=curl.so 就可以了。
接下来,安装memcache 和 memcached
本来要用编译安装的,但最后还是失败。幸运的是,我自己找出了一个很好的办法。如下:
可参考:http://www.111cn.net/sys/linux/64048.htm
安装memcache:
进入php安装好的目录bin下执行:
./pecl install memcache
可能会出错:
Cannot find autoconf. Please check your
autoconf installation and the
$PHP_AUTOCONF environment variable. Then, rerun this script.
ERROR: `phpize' failed
解决办法:sudo apt-get install autoconf
然后再执行刚才的命令:
输入
yes
这里提示要在 php.ini 添加 extension=memcache.so
注意:此时需要知道php.ini 应该在什么位置,在phpinfo中可以查看到:
php.ini-development和php.ini-production是系统推荐的php.ini设置参数,前者是为开发环境推荐的,允许调试、少占资源的原则,后者是为实际上线后的产品环境推荐的,禁止报错、提高性能的原则。
在之前编译的源码包中,找到 php.ini-production
复制到
/usr/local/server/php
如果有问题,试试: 复制 /etc/php5/cli/php.ini 到
/usr/local/server/php/php.ini
现在开始给php.ini 最后添加
extension=memcache.so
保存退出。
然后重启 php-fpm 和 nginx
查看
phpinfo
接下来,同样的,很简单,安装 memcached:
进入php安装好的目录bin下执行:
./pecl install memcached
之后一系列出错,可上次明明成功。哎,无语!
最后没办法,编译安装吧!
先把下面这些乱七八糟的先安装了再说:
apt-get install -y build-essential gcc g++ make m4 libpcre3 libpcre3-dev
libcurl4-gnutls-dev libjpeg62-dev libpng12-dev libmemcached-dev
sudo apt-get install libevent-dev
sudo apt-get install libsasl2-dev
sudo apt-get install m4
① 安装 libevent
tar zxvf libevent-2.0.20-stable.tar.gz
cd libevent-2.0.20-stable/
sudo ./configure --prefix=/usr/local/libevent
make
make install
② 安装 libmemcached
tar zxvf libmemcached-0.42.tar.gz
cd libmemcached-0.42/
./configure --prefix=/usr/local/libmemcached --with-memcached --enable-sasl
make
make install
③ 安装 memcached
tar zxvf memcached-2.2.0.tgz
cd memcached-2.2.0/
/usr/local/php/bin/phpize
./configure --enable-memcached --with-php-config=/usr/local/php/bin/php-config
--with-libmemcached-dir=/usr/local/libmemcached --enable-memcached-sasl
make
make install
安装完成:
有的说是,在php.ini 后面添加上面截图的。但是我加了 extension=memcached.so ,也成功了!真的很无语!!!
配置nginx
支持 ThinkPHP
在 nginx 下面用 ThinkPHP 做开发,每次输入
类似 /test/tp/index.php/Index/index 的
URI , 提示没有找到该页
在网上搜了一下,原来 nginx 原来不支持 pathinfo
模式,需要自己配置
在配置文件的 server 块中,加入以下内容:
# ThinkPHP 的 pathinfo 支持 -------------- BEGIN location /qgzs_apiv2/app/ { index index.php; if (!-e $request_filename) { rewrite ^/qgzs_apiv2/app/(.*)$/qgzs_apiv2/app/index.php/$1 last; break; } } location ~ .+\.php($|/) { set $script $uri; set $path_info "/"; if ($uri ~ "^(.+\.php)(/.+)") { set $script $1; set $path_info $2; } fastcgi_pass 127.0.0.1:9000; fastcgi_index index.php?IF_REWRITE=1; include fastcgi_params; fastcgi_param PATH_INFO $path_info; fastcgi_param SCRIPT_FILENAME $document_root/$script; fastcgi_param SCRIPT_NAME $script; } # ThinkPHP 的 pathinfo 支持 -------------- END
其中 /qgzs_apiv2/app/ 是我项目的路径
保存配置之后,重启 nginx ,配置成功
直接支持类似于 /Index.html 这样的伪静态模式