Chinaunix

标题: CentOS6.0+Nginx1.1.4+PHP5.3.8+MySQL5.5.16只能访问第一个php文件 [打印本页]

作者: jumpfrog    时间: 2011-09-24 18:48
标题: CentOS6.0+Nginx1.1.4+PHP5.3.8+MySQL5.5.16只能访问第一个php文件
这几天吃了个螃蟹

CentOS6.0+Nginx1.1.4+PHP5.3.8+MySQL5.5.16 跑网站程序。各程序编译安装正常,Nginx静态页面正常显示,诡异的是只能访问第一个php文件,输入其他的php文件的地址,依然显示第一个php文件执行的结果。请各位大虾帮忙判断一下是哪里出了问题。



CentOS 6.0 64bit (Basic Server)下安装Nginx1.1.4+PHP 5.3.8+Mysql 5.5.16

1. 安装 CentOS 6.0 64bit (Basic Server)
分区
boot        100M
/                5G
/var                10024M
/tmp        8G
/usr                5G
/swap        10024M
/home        all

2.  YUM Packages.
* Tools
  yum install telnet gcc gcc-c++
  yum install libtool
*Nginx
  yum install pcre-devel  zlib-devel
* PHP:
yum install gd-devel libjpeg-devel libpng-devel freetype-devel libxml2-devel curl-devel  

3. MySQL5.5.16
#useradd mysql
#yum install ncurses-devel
#tar zxvf  mysql-5.5.16.tar.gz (注意要下载源代码的包)
#cd mysql-5.5.16-linux2.6-x86_64
cmake . \
-DCMAKE_INSTALL_PREFIX=/usr/local/mysql \
-DMYSQL_DATADIR=/home/mysql/ \
-DMYSQL_UNIX_ADDR=/home/mysql/mysqld.sock \
-DDEFAULT_CHARSET=utf8 \
-DEXTRA_CHARSETS=all \
-DDEFAULT_COLLATION=utf8_general_ci \
-DWITH_MYISAM_STORAGE_ENGINE=1 \
-DWITH_SPHINX_STORAGE_ENGINE=1 \
-DWITH_INNOBASE_STORAGE_ENGINE=1 \
-DWITH_MEMORY_STORAGE_ENGINE=1 \
-DWITH_READLINE=1 \
-DENABLED_LOCAL_INFILE=1 \
-DMYSQL_USER=mysql

#make && make install

要在/etc/my.cnf里面加上
[mysqld]
basedir = /usr/local/mysql
datadir = /home/mysql/data

4. PHP 5.3.8
1). 编译PHP前传
为了安装GD库到yum安装必要的包(libpng,libjpeg等)还要安装 : jpegsrc.v6b.tar.gz,libpng-1.2.8-config.tar.gz(好像只有tar包)
I. 安装jpegsrc.v7.tar.gz
下载软件

进入jpeg-7的源码目录,然后执行以下步骤:
Linux代码  
cp /usr/share/libtool/config/config.sub .   
cp /usr/share/libtool/config/config.guess .   
./configure --enable-shared --enable-static   
make   
mkdir -p /usr/local/man/man1   
make install-lib   /*缺install-lib*/
make install   

II. 安装libpng-1.5.4-config.tar.gz
下载软件
Linux代码  
./configure   
make   
make install  

2). 编译PHP
Linux代码  
./configure --prefix=/usr/local/php --with-pdo-mysql=mysqlnd --with-mysql=mysqlnd --with-mysqli=mysqlnd  --enable-fpm --enable-mbstring --with-curl --with-iconv-dir=/usr/local/libiconv --with-freetype-dir=/usr/local/freetype --with-gd=/usr/local/gd  --with-jpeg-dir=/usr/local/jpeg --with-png-dir=/usr/local/png  --enable-pcntl --enable-sockets --enable-zip --with-zlib --enable-xml


make  
make install  

3). 配置php-fpm并运行
PHP5.3内置了fastcgi支持。
I.  生成配置文件
   复制$PHP_DIR/etc/php-fpm.conf.default 到$PHP_DIR/etc/php-fpm.conf
   打开一下两行注释:
   pid = run/php-fpm.pid
   pm.start_servers = 20
   pm.min_spare_servers = 5
   pm.max_spare_servers = 35
II.. 启动php-fpm
   $PHP_DIR/sbin/php-fpm
III. 停止php-fpm
   killall -9 php-fpm

IV. 加入到服务中去并每次开机自动启动
  cp  $PHP_SOURCE_DIR/sapi/fpm/init.d.php-fpm  /etc/init.d/php-fpm
  chmod 700 /etc/init.d/php-fpm
  chkconfig --add php-fpm
  chkconfig --level 345 php-fpm on
  服务方式启动php-fpm
  service php-fpm restart

5. Nginx
I. tar包安装到/usr/local/nginx
Linux代码  
./configure --prefix=/usr/local/nginx   
make   
make install  

II 启动停止nginx
启动: sbin/nginx (默认使用conf/nginx.conf作为配置文件)
停止: kill `cat /usr/local/nginx/logs/nginx.pid`
III. 令开机自动启动
加入条目
cp /usr/local/nginx/sbin/nginx 到 /etc/rc.local
#echo "/usr/local/nginx/sbin/nginx" >>/etc/rc.local
IV. 虚拟主机配置
  $NGINX_DIR/conf/nginx.conf,增加如下段
Nginx.conf代码  
server {   
     listen       80;   
     server_name  *.helixway.me helixway.me;   
     root   /home/www;  #注意 root要设置在location /外面, 否则接下来访问PHP将会返回一片空白(状态码404)   
  
     location / {   
         index  index.html index.htm;   
     }   
  
     error_page   500 502 503 504  /50x.html;   
     location = /50x.html {   
         root   html;   
     }   
}  

V. 连接fastcgi服务器
这里以www.helixway.me为例,使其支持php
A). 配置文件修改
* 在conf/nginx.conf中的http{ 里加入行:
Nginx.conf代码  
fastcgi_connect_timeout 300;   
fastcgi_send_timeout 300;   
fastcgi_read_timeout 300;   
fastcgi_buffer_size 64k;   
fastcgi_buffers 4 64k;   
fastcgi_busy_buffers_size 128k;   
fastcgi_temp_file_write_size 128k;  

* 在conf/nginx.conf中的server_name 为*.helixway.me的server { 段里加入行:
Nginx.conf代码  
location ~ .*\.(php|php5)?$   
{         
#fastcgi_pass  unix:/tmp/php-cgi.sock;   
fastcgi_pass  127.0.0.1:9000;   
fastcgi_index index.php;   
include fastcgi.conf;   
}  

* 上面配置中include指示符包含了另外一个配置文件fasctcgi.conf,该文件默认存在conf/目录下,一般不需要做任何修改。
B). 重新启动nginx.

别忘了iptables

  
  
  安装路径
程序都在/usr/local/目录下
配置文件位置
nginx  /usr/local/nginx/conf/nginx.conf
mysql /etc/my.cnf
php /usr/local/php/etc/php-fpm.conf
网站程序
/home/www web
/home/mysql/data 数据库
作者: Missex    时间: 2011-09-24 19:11
感觉像是给cache了, 不过你先试试第一次访问访问其他的php能返回正常结果么
作者: jumpfrog    时间: 2011-09-24 19:12
可以的,php返回的都是正常的结果。哪个文件先执行,以后访问任何php文件返回的都是这个文件的执行结果。
作者: chenyx    时间: 2011-09-24 20:40
楼主连续访问两个不同的php文件,看下nginx的log,有没有异常
作者: 论文写作    时间: 2011-10-18 20:08
好像有异常
作者: viekee    时间: 2011-10-19 10:18
我也是这样   后来没心情折腾就换回5.6了
作者: lolizeppelin    时间: 2011-10-19 10:23
我说有src的rpm包有别人编译好的版本不用硬要自己编译?
你要自己编译用src的rpm来rpmbulid不好么?




欢迎光临 Chinaunix (http://bbs.chinaunix.net/) Powered by Discuz! X3.2