官方网站:
MemAdmin是基于PHP5以及JQuery的网站监控环境。
发现的问题:
(1)nginx中如何集成php的页面。
与apache不同的是,nginx本身并不集成php模块,所以需要编译并运行php,需要集成外部的php环境。
下面介绍nginx使用fastcgi与后端进行交互。
安装php5-cgi模块:
redhat下面需要安装spawn-fcgi,安装步骤如下:
./configure --prefix=/usr/local/program/spawn-fcgi-1.6.4
make & make install
但是在安装了spawn-fcgi以后还是要安装php的环境,所以我们选择去直接安装php5,其内部集成了fastcgi。
./configure --prefix=/usr/local/program/php-5.6.8/ --with-config-file-path=/usr/local/program/php-5.6.8/etc/
报错:
configure: error: xml2-config not found. Please check your libxml2 installation.
安装:yum -y install libxml2
yum -y install libxml2-devel
在安装完成libxml2与libxml2-devel以后,configure顺利的完成,但是在make的时候,报出了如下的错误:
libtool: link: `ext/opcache/ZendAccelerator.lo' is not a valid libtool object
没有找到具体的原因,但是通过先执行make clean 解决了。
make & make install
中途没有出现问题,在安装完成以后,将安装目录中的php.ini-production拷贝到对应的etc文件夹中,在安装根目录的bin子目录下面,我们执行以下命令来启动php服务:
./php-cgi -b 127.0.0.1:9000
通过nginx配置与php的关联:
本身对于nginx与php来说,他们之间是没有任何关联的,他们之间通过fastcgi进行关联,在php5中是自带fastcgi的,所以需要在nginx.conf的location指令下面做如下的配置:
fastcgi_param SCRIPT_FILENAME /usr/local/program/memadmin-1.0.12$fastcgi_script_name;
注意这个红色的部分,这部分的内容指定了php脚本文件所在的文件目录,该目录就是放置php脚本的目录。
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
include fastcgi_params;这一句指令一定要添加,否则有问题。
在完成了以上的配置以后,对应路径访问的php文件就会被php进行解析,最终生成内容。
我们输入:
http://192.168.244.129/memAdmin/index.php,我们看到能正确的打开了php的页面,但是报出了如下错误:
PHP未安装Memcache扩展
The memcache extension for PHP must be loaded first
对于以上的问题,解决方案如下:
我们需要安装php的memcached扩展,方法如下:
1、安装依赖库libmemcached
./configure & make & make install
安装memcached for php module,地址如下:
解压后跳转到对应的目录,然后执行:
/usr/local/program/php-5.6.8/bin/phpize
./configure --enable-memcache --with-php-config=/usr/local/program/php-5.6.8/bin/php-config
make & make install
最终生成的extension文件的目录如下:
Installing shared extensions: /usr/local/program/php-5.6.8/lib/php/extensions/no-debug-non-zts-20131226/
修改php.ini中的内容,如下所示:
注:
找到extension_dir并修改为如下:
extension_dir = "/usr/local/program/php-5.6.8/lib/php/extensions/no-debug-non-zts-20131226/"
添加如下配置(memcached.so是上面配置的目录下面的文件):
extension = memcached.so
extension = memcached.so
这些都完成以后,启动php-cgi: nohup ./php-cgi -b 127.0.0.1:9000 &
在做完了以上的配置以后,发现还是没有成功的集成memcache,通过memcached的测试页面,在nginx的error.log中发现以下错误:
PHP Fatal error: Class 'Memcache' not found in /usr/local/program/memadmin-1.0.12/memcached_test.php on line 2
产生该问题的原因是,php memcache extension的版本与php的版本不契合的原因,memcache extension有两种,分别为memcache.so与memcached.so,我们需要使用的是memcache.so,原先使用的extension版本为2.0.17,php的版本为5.8,现在将extension的版本升级为2.2.7,一切正常。
在这一切都做完以后,输入http://192.168.244.129/memAdmin/index.php以后,能够正常进入页面了。
(2)在进行配置的时候,如果配置的数据比较多的时候,会发生提交不了的情况,原因是因为nginx对于fastcgi的头大小进行了限制。
可以在http,server,location这三个层级下面进行如下配置:
fastcgi_buffer_size 128k;
fastcgi_buffers 8 128k;
fastcgi_buffers 8 128k;