Articles of FastCGI的

你知道哪些Apache / PHPconfiguration,它们有多好?

我想问你一些你知道的PHP / Apacheconfiguration方法,它们的优缺点。 我会开始自己: —————- PHP作为Apache模块 —————- 优点 :速度很好,因为你不需要每次启动exe,尤其是在mpm-worker模式下。 您也可以在APC或eAccelerator这种模式下使用各种PHP加速器 。 缺点 :如果你在mpm-worker模式下运行apache,你可能会遇到稳定性问题,因为任何php脚本中的每一个小故障都将导致整个apache进程的线程池不稳定。 在这种模式下,所有的脚本都代表apache用户执行。 这对安全性不利。 mpm-workerconfiguration要求以线程安全模式编译PHP。 至lessCentOS和RedHat默认存储库没有线程安全的PHP版本,所以在这些操作系统上,您至less需要自己编译PHP(有一种方法可以激活Apache上的worker mpm)。 线程安全的PHP二进制文件的使用被认为是实验性的和不稳定的。 此外,许多PHP扩展不支持线程安全模式,或者在线程安全模式下未经过良好testing。 —————- PHP作为CGI —————- 这似乎是最慢的默认configuration,似乎是一个“con”本身;) —————- PHP作为CGI通过mod_suphp —————- 优点 :suphp允许您代表脚本文件所有者执行php scipts。 这样你可以安全地在同一台机器上分离不同的网站。 另外,suphp允许为每个虚拟主机使用不同的php.ini文件。 缺点 :CGI模式下的PHP意味着更低的性能。 在这种模式下,你不能使用像APC这样的PHP加速器,因为每当新进程产生处理脚本的时候,渲染前一个进程的caching就没用了。 顺便说一句,你知道在这个configuration中应用某些加速器的方式吗? 我听说有关使用PHP的字节码cachingshm的东西。 此外,您不能在此模式下通过.htaccess文件configurationPHP。 如果您需要通过.htaccess(php_value / php_flag指令)设置各种脚本选项,您将需要安装P ECL htscanner 。 —————- 通过suexec作为CGI的PHP —————- 这个configuration看起来和suphp一样,但是我听说它比较慢,不太安全。 几乎相同的优点和缺点适用。 —————- PHP作为FastCGI —————- 优点 :FastCGI标准允许单个php进程在php进程死亡之前处理几个脚本。 这样你就可以获得性能,因为不需要为每个脚本启动新的php进程。 […]

SCGI或FastCGI – 你喜欢什么?

我正在做一些关于这个主题的研究(google),但是我能find的都是2-3岁的职位。 我对今天的情况感兴趣。 你喜欢哪个,为什么?

如何从Nginx传递自定义参数到PHP?

我将Nginx 1.2.4与PHP-FPM 5.4.8结合使用,并使用fastcgi pass来尝试将自定义parameter passing给PHP 。 以下是我迄今为止发现的选项: 使用env指令在nginx设置一个环境variables,并从PHP获取getenv()或$_ENV 。 问题是env只在main上下文中运行,而我需要在server上下文中设置参数。 使用fastcgi_param指令为它devise的。 我试过用fastcgi_param改变一些参数的值,但是不成功: nginx的: fastcgi_param PATH_INFO "/var/tmp"; PHP: 我检查了所有可以find的预定义数组: echo '<pre>'; echo "\n".'$GLOBALS'."\n"; var_dump($GLOBALS); echo "\n".'$_SERVER'."\n"; var_dump($_SERVER); echo "\n".'$_GET'."\n"; var_dump($_GET); echo "\n".'$_POST'."\n"; var_dump($_POST); echo "\n".'$_FILES'."\n"; var_dump($_FILES); echo "\n".'$_REQUEST'."\n"; var_dump($_REQUEST); echo "\n".'$_SESSION'."\n"; var_dump($_SESSION); echo "\n".'$_ENV'."\n"; var_dump($_ENV); echo "\n".'$_COOKIE'."\n"; var_dump($_COOKIE); echo "\n".'$php_errormsg'."\n"; var_dump($php_errormsg); echo "\n".'$HTTP_RAW_POST_DATA'."\n"; var_dump($HTTP_RAW_POST_DATA); echo "\n".'$http_response_header'."\n"; […]

在IIS6上安装PHP5时出错

我试图在使用IIS6的Windows Server 2003机器上安装PHP。 我遵循本指南进行安装,包括使用fastCGI的二进制文件。 我想我做了一切正确的,但是,当我去创build我的phpinfo(); 页面我得到以下内容:服务器错误,无法连接到fastcgi服务器。 我试过看所有我能想到的日志。 在IIS日志中没有什么是有用的,PHP甚至没有logging任何错误或事件,也没有logging在我的事件日志中。 请帮助,谢谢:)

如何用FastCGI和Ruby设置Apache?

我一直在阅读很多论坛post,教程等,关于在Linux下用fastcgi设置Apache。 我试图运行fcgi的一些我的ruby开发(不轨),但我觉得它应该适用于任何语言。 请注意,我已经安装了apache,fastcgi,ruby-fcgi等等。 从概念上讲,我很难过。 apache是​​否根据需要产生指定的fcgi进程? 我是否一边开始他们的Apache? 基本上,我正试图让我能够提出正确的问题,如果标题是误导性的,请道歉。

我的php-fpmconfiguration有什么问题?

我有一个64位的服务器,但只有256MB的RAM。 所以,我用fast-cgi移动到nginx服务器来连接到PHP。 我有PHP 5.3.6运行。 问题是每隔两三天,当我尝试访问任何PHP页面,然后我得到服务器内部错误。 唯一的办法是手动重启php-fpm。 这意味着我应该设置一些导致它窒息的错误参数。 下面我列出了相关的configuration。 /etc/php-fpm.conf: – include=/etc/php-fpm.d/*.conf log_level = error ;emergency_restart_threshold = 0 ;emergency_restart_interval = 0 ;process_control_timeout = 0 /etc/php-fpm.d/www.conf: – [www] pm = dynamic pm.max_children = 10 pm.start_servers = 3 pm.min_spare_servers = 2 pm.max_spare_servers = 5 pm.max_requests = 500 /etc/nginx/php.conf: – location ~ \.php { fastcgi_param QUERY_STRING $query_string; fastcgi_param REQUEST_METHOD […]

你如何有条件地在Nginx虚拟主机中包含文件?

在下面的行中,我可能有一个特定于站点的configuration文件,其中包含该站点特有的其他fastcgi_params 。 如果这个文件存在,我想加载它。 server { listen 80 default; server_name _; root /path/www/$host; # Pass PHP scripts to php-fastcgi listening on port 9000 location ~ \.php { include fastcgi_params; fastcgi_pass 127.0.0.1:9000; if (-f /path/www/$host/nginx.conf) { include /path/www/$host/nginx.conf; } } } 但是,这不起作用,我得到的错误是: nginx:[emerg]“include”指令在这里是不允许的… 更新 我认为,而不是分离检查,我可以让包括检查我。 server { listen 80 default; server_name _; root /path/www/$host; # Pass PHP […]

nginx + fastCGI + Django – 在发送到客户端的响应中获取数据损坏

我使用FastCGI在nginx后面运行Django。 我发现,在发送给客户端的一些响应中,随机数据损坏发生在响应中间(中间可能是几百字节左右)。 在这一点上,我已经缩小到nginx的FastCGI处理程序或Django的FastCGI处理程序(即可能是一个漏洞的错误),因为这个问题从来没有发生,当我以独立(即runserver )模式运行Django服务器。 它只发生在FastCGI模式。 其他有趣的趋势: 它往往发生在更大的反应。 当客户端第一次login时,会发送一大堆1MB的数据块同步到服务器数据库。 在第一次同步之后,响应要小得多(通常每次几KB)。 腐败似乎总是发生在一开始发送的1MB块上。 当客户端通过LAN连接到服务器(即低延迟,高带宽连接)时,更经常发生这种情况。 这使得我认为在nginx或flup中存在某种竞争条件,并且由于数据速率的提高而加剧。 现在,我不得不通过在响应头中添加一个额外的SHA1摘要来解决这个问题,并且让客户端拒绝头部与主体校验和不匹配的响应,但是这是一种可怕的解决scheme。 有没有其他人经历过这样的事情,或者有任何的指示,以确定是否是错误的flup或nginx,所以我可以提交适当的团队错误? 在此先感谢您的帮助。 注意:我也在lighttpd + FastCGI + Django中发布了一个类似的bug,在这之后: https : //stackoverflow.com/questions/3714489/lighttpd-fastcgi-django-truncated-response-sent-to-client-due-to – 尽pipe这不是一回事(截断与腐败),但它开始看起来像常见的罪魁祸首是flup / Django,而不是Web服务器.. 编辑:我也应该注意我的环境是什么: Mac mini上的OSX 10.6.6 Python 2.6.1(系统) Django 1.3(官方tarball) flup 1.0.2(来自python卵上的flup网站) nginx + ssl 1.0.0(来自Macports) 编辑:为了响应Jerzyk的评论,组装响应的代码path看起来像(编辑为简洁): # This returns an objc NSData object, which is an array.array # when […]

子文件夹中的nginx项目

我对我的nginxconfiguration感到沮丧,所以我在写configuration文件时要求帮助,以便从同一根目录中的子目录提供多个项目。 这不是虚拟主机,因为它们都使用相同的主机值。 也许一个例子会澄清我的尝试: 请求192.168.1.1/应该从/var/www/public/ 请求192.168.1.1/wiki/应该从/var/www/wiki/public/ 请求192.168.1.1/blog/应该从/var/www/blog/public/ 这些项目正在使用PHP并使用fastcgi。 我目前的configuration是非常小的。 server { listen 80 default; server_name localhost; access_log /var/log/nginx/localhost.access.log; root /var/www; index index.php index.html; location ~ \.php$ { fastcgi_pass 127.0.0.1:9000; fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME /var/www$fastcgi_script_name; include fastcgi_params; } } 我已经尝试了alias和rewrite各种东西,但无法为fastcgi正确设置事物。 看起来应该比写位置块和复制root , index , SCRIPT_FILENAME等更有说服力的方法。 任何指引,让我朝着正确的方向是值得赞赏的。

Nginx $ document_root $ fastcgi_script_name vs $ request_filename

如果在我设置的configuration文件中,我不能注意到任何区别 fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; 要么: fastcgi_param SCRIPT_FILENAME $request_filename; 他们分别做什么? 其中一个比另一个好吗? 提前致谢。