LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
查看: 4487|回复: 16

[参考]搭建Nginx 0.5.35 + php 5.2.5 (ArchLinux)

[复制链接]
发表于 2008-4-6 14:25:16 | 显示全部楼层 |阅读模式
前言:我是以尝鲜为主要目的,对于性能的测试实在不想搞,不过我一向以人家的测试报告为准的
  1. pacman -S php
复制代码
默认配置文件在/etc/php/php.ini

增加php5扩展模块
  1. pacman -S gd
  2. vi /etc/php/php.ini
复制代码
加入extension = "gd.so"

安装Zend Optimizer,到Zend官方网站下载相应CPU的版本,解压后运行./install
  1. pacman -S php-eaccelerator
  2. vi /etc/php/php.ini
复制代码
zend_extension=/usr/lib/php/20060613/eaccelerator.so
eaccelerator.shm_size=16
eaccelerator.cache_dir=/tmp/eaccelerator
eaccelerator.enable=1
eaccelerator.optimizer=1
eaccelerator.check_mtime=1
eaccelerator.debug=0
eaccelerator.filter=""
eaccelerator.shm_max=0
eaccelerator.shm_ttl=0
eaccelerator.shm_prune_period=0
eaccelerator.shm_only=0
eaccelerator.compress=1
eaccelerator.compress_level=9
zend_extension=/usr/local/Zend/lib/ZendExtensionManager.so
zend_extension_ts=/usr/local/Zend/lib/ZendExtensionManager_TS.so
[color="Red"]这两行搞到最后

创建web服务用户
  1. groupadd www
  2. useradd -md /home/httproot -g www -p Insecure0 nginx
  3. chmod +w /home/httproot
复制代码
  1. pacman -S lighttpd
复制代码
只是为了得到spawn-fcgi
启动php-cgi进程,监听127.0.0.1的10080端口,进程数为16,用户为nginx:
  1. spawn-fcgi -a 127.0.0.1 -p 10080 -C 16 -u nginx -f php-cgi
复制代码
  1. pacman -S nginx
复制代码
默认配置文件在/etc/nginx/conf/nginx.conf
  1. vi /etc/nginx/conf/nginx.conf
复制代码
user nginx;

worker_processes 10;

error_log logs/error.log crit;

#pid logs/nginx.pid;

#Specifies the value for maximum file descriptors that can be opened by this process.
worker_rlimit_nofile 51200;

events
{
use epoll;

worker_connections 51200;
}

http
{
include conf/mime.types;
default_type application/octet-stream;

charset gb18030;

server_names_hash_bucket_size 128;

#sendfile on;
#tcp_nopush on;

keepalive_timeout 60;

tcp_nodelay on;

gzip on;
gzip_min_length 1k;
gzip_buffers 4 8k;
gzip_http_version 1.1;
gzip_types text/plain application/x-javascript text/css text/html application/xml;

server
{
listen 80;
server_name localhost;
index index.html index.php;
root /home/httproot;

if (-d $request_filename)
{
rewrite ^/(.*)([^/])$ http://$host/$1$2/ permanent;
}

location ~ .*\.php?$
{
root /home/httproot;
include conf/fastcgi_params;
fastcgi_pass 127.0.0.1:10080;
fastcgi_index index.php;
}

log_format main '$remote_addr - $remote_user [$time_local] "$request" '
'$status $body_bytes_sent "$http_referer" '
'"$http_user_agent" $http_x_forwarded_for';
access_log /data1/logs/access.log main;
}

启动Nginx
  1. ulimit -SHn 51200
  2. /etc/rc.d/nginx start
复制代码
  1. su nginx
  2. vi /home/httproot/index.php
复制代码
[PHP]<?php
phpinfo();
?>[/PHP]
测试127.0.0.1
  1. netstat -l
复制代码
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address           Foreign Address         State     
tcp        0      0 localhost:10080         *:*                     LISTEN     
tcp        0      0 *:cvspserver            *:*                     LISTEN     
tcp        0      0 *:http                  *:*                     LISTEN


优化Linux内核参数
  1. vi /etc/sysctl.conf
复制代码
net.ipv4.tcp_fin_timeout = 30
net.ipv4.tcp_keepalive_time = 300
net.ipv4.tcp_syncookies = 1
net.ipv4.tcp_tw_reuse = 1
net.ipv4.tcp_tw_recycle = 1
net.ipv4.ip_local_port_range = 5000 65000


使配置立即生效:
  1. /sbin/sysctl -p
复制代码

加入启动服务
  1. vi /etc/rc.conf
复制代码
DAEMONS=(................nginx);
  1. vi /etc/profle
复制代码
ulimit -SHn 51200
spawn-fcgi -a 127.0.0.1 -p 10080 -C 16 -u nginx -f php-cgi

任务结束了

参考文献:http://hi.baidu.com/vincent%5Flu ... 1ccb11b21bba6a.html
http://techpush.com/archives/ins ... r-on-slicehost-vps/
发表于 2008-4-6 15:44:20 | 显示全部楼层
这么有意义的帖子,怎能不回?
回复 支持 反对

使用道具 举报

发表于 2008-4-6 23:45:52 | 显示全部楼层
不错不错,支持
回复 支持 反对

使用道具 举报

发表于 2008-4-13 01:37:28 | 显示全部楼层
不错,正需要
回复 支持 反对

使用道具 举报

发表于 2009-10-10 20:57:56 | 显示全部楼层
不懂为什么要通过安装 lighttpd 来得到spawn-fcgi,AUR中有个spawn-fcgi 1.6.3-1难到不能使用吗?

照的你方法安装好nginx后,没办法启动啊,所示如下:
  1. :: Checking configuration                                                [BUSY]
  2. [emerg]: getgrnam("nginx") failed in /etc/nginx/conf/nginx.conf:1
  3. configuration file /etc/nginx/conf/nginx.conf test failed    [FAIL]
复制代码

这是怎么一回事,第一行是 user  nginx;
回复 支持 反对

使用道具 举报

发表于 2009-10-10 21:04:42 | 显示全部楼层
Post by lwkyy;2035105
不懂为什么要通过安装 lighttpd 来得到spawn-fcgi,AUR中有个spawn-fcgi 1.6.3-1难到不能使用吗?

因为那是aur里面的,ligghttpd是extra里面的。

如果用AUR中的spawn-fcgi的话,教程里面就要讲解aur和makepkg的知识(当然对archer来说,一般都知道aur)。
回复 支持 反对

使用道具 举报

发表于 2009-10-10 22:58:06 | 显示全部楼层
我按这配置没办法成功,getgrnam("nginx")问题没办法解决,看了下张宴的配置过程,装nginx的user改用www后(建立了www用户httproot目录也给了www),nginx能启动起来了,测试个HTML文件也没问题,但测试php文件时就不行了,提示找不到404,郁闷。
回复 支持 反对

使用道具 举报

发表于 2009-10-12 20:30:46 | 显示全部楼层
我这里也出现了这样的问题,

WEB目录我设置为/home/httproot   目录的权限是700,
drwx------  2 http  http   4096 10月 11 02:05 httproot

问题是这样的:在浏览器里访问静态文件时正常,但一访问php文件时就无任何显示,看access.log文件得知访问都是500请求,而访问像html这样的文件时是正常的200。

nginx.conf设置是这样的
  1. user http http;
  2. worker_processes  8;
  3. error_log  logs/error.log crit;
  4. #pid        logs/nginx.pid;
  5. #Specifies the value for maximum file descriptors that can be opened by this process.
  6. worker_rlimit_nofile 65535;
  7. events {
  8.         use epoll;
  9.     worker_connections  65535;
  10. }
  11. http {
  12.     include       mime.types;
  13.     default_type  application/octet-stream;
  14.         #charset utf-8;
  15.         server_names_hash_bucket_size 128;
  16.         client_header_buffer_size 32k;
  17.         large_client_header_buffers 4 32k;
  18.         client_max_body_size 8m;
  19.     #access_log  logs/access.log  main;
  20.     sendfile        on;
  21.     tcp_nopush     on;
  22.     #keepalive_timeout  0;
  23.     keepalive_timeout  65;
  24.     tcp_nodelay on;
  25.         fastcgi_connect_timeout 300;
  26.         fastcgi_send_timeout 300;
  27.         fastcgi_read_timeout 300;
  28.         fastcgi_buffer_size 64k;
  29.         fastcgi_buffers 4 64k;
  30.         fastcgi_busy_buffers_size 128k;
  31.         fastcgi_temp_file_write_size 128k;
  32.     gzip on;
  33.         gzip_min_length    1k;
  34.     gzip_buffers    4 16k;
  35.     gzip_http_version 1.0;
  36.     gzip_comp_level 2;
  37.     gzip_types    text/plain application/x-javascript text/css application/xml;
  38.     gzip_vary on;
  39.         #vhosts settings
  40.         include vhosts.conf;
  41. }
复制代码

vhosts.conf文件配置是这样的:
  1. server {
  2.         listen       80;
  3.         server_name  localhost;
  4.         index index.html index.php;
  5.         root   /home/httproot;
  6.         autoindex on;
  7.        
  8.         #error_page  404              /404.html;
  9.         location / {
  10.                 root /home/httproot;
  11.                 index index.html index.php;
  12.         }
  13.         location ~ .*\.php?$ {
  14.                 root /home/httproot;
  15.                 include fastcgi_params;
  16.                 fastcgi_pass 127.0.0.1:9000;
  17.                 fastcgi_index index.php;
  18.         }
  19.         location ~ .*\.(gif|jpg|jpeg|png|bmp|swf)$ {
  20.                 expires      30d;
  21.         }
  22.         location ~ .*\.(js|css)?$ {
  23.                 expires      1h;
  24.         }   
  25.         log_format main '$remote_addr - $remote_user [$time_local] "$request" '
  26.                 '$status $body_bytes_sent "$http_referer" '
  27.                 '"$http_user_agent" $http_x_forwarded_for';
  28.         access_log /var/log/nginx/access.log main;
  29. }
复制代码

看日志中error.log中没有任何输出,在access.log中的输出像这样的:
  1. 127.0.0.1 - - [11/Oct/2009:02:13:05 +0000] "GET /index.php HTTP/1.1" 500 5 "-" "Mozilla/5.0 (X11; U; Linux i686; en-US) AppleWebKit/532.2 (KHTML, like Gecko) Chrome/4.0.221.8 Safari/532.2" -
复制代码

在启动nginx之前我使用过如下命令:
  1. spawn-fcgi -a 127.0.0.1 -p 9000 -c 16 -u http -f php-cgi
复制代码
并提示成功!

感觉问题还是出在nginx与PHP之间的通信上,但不知如何解决。请高人教我看看!
回复 支持 反对

使用道具 举报

发表于 2009-11-1 15:47:23 | 显示全部楼层
默认php软件包不包含FastCGI,所以要安装下
sudo pacman -S php php-cgi
这样就可以了
回复 支持 反对

使用道具 举报

发表于 2009-11-1 16:41:33 | 显示全部楼层
顶楼写文的时候,确实是包含 FastCGI 的,但后来 php 和 php-cgi 被分成两个包了,原因当然是 KISS,呵呵。
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表