- 论坛徽章:
- 0
|
这几天吃了个螃蟹
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 数据库 |
|