我正在使用FastCGI和lighttpd运行Django应用程序.
在决定maxrequests,maxspare,minspare,maxchildren使用什么值时,有人可以解释一下我应该考虑什么吗?
这些选项没有太多记录,但似乎非常重要.
不要只告诉我他们做了什么; 我想了解它们有什么含义以及我应该如何决定使用什么值.
谢谢.
我们正在迁移到运行Windows 2003和IIS 6的新服务器.当我的PHP代码运行时,它会在特定行上发出警告(我现在期待但很快就会修复).但是,当它遇到警告时,会立即停止处理并在HTTP标头中返回500错误.通常,我希望PHP输出警告,但继续处理脚本.
在遇到警告时,IIS,FastCGI或PHP的配置中是否会出现500个错误?
澄清:我不想压制警告; 我希望他们展示.我不希望脚本停止处理警告.
所以我想在python中做更多的web开发,我选择了由lighttpd w/fastcgi主持的cherrypy.但我的问题是一个非常基本的问题:为什么每次更改应用程序代码或底层库的代码时都需要重新启动lighttpd(或apache)?
我意识到这个问题延伸到对fastcgi模型的基本错误(即差)理解,所以我对这里的任何学校都开放,但我习惯于只更改一个PHP文件并且它出现,而不是必须反弹网络服务器.
任何阐明/有用的嘲弄都赞赏.
我正在尝试使用MVC.NET,Nginx和Fastcgi设置事件流.流式传输对我来说使用xsp4很好,但是我无法通过Nginx和Fastcgi来使用它.我的目标是打开一个EventSource流和下游数据到我的网站.
我尝试添加'ngx_http_upstream_keepalive'模块 - http://wiki.nginx.org/HttpUpstreamKeepaliveModule - 这很有趣,因为在模块描述中有"注意 - 这不适用于HTTP上游".但等等,是不是模块的名称?无论如何,也许我在这里很困惑.我也尝试将'proxy_buffering off'添加到我的nginx.conf中,这也没有帮助.
我明白这应该很容易,但我不知所措.我可以添加一些属性来添加到我的nginx.conf中吗?或者有什么东西可以添加到.NET中的响应?
请帮帮我StackOverflow!
我想了解网络服务器(例如:nginx)和cgi/fastcgi如何相互通信.Web服务器如何将cgi脚本传递给cgi进程以及cgi进程如何响应请求.
在Nginx中,我们这样配置让nginx将PHP脚本传递给php-fpm
location / {
root /home/service/public_html;
fastcgi_pass unix:/tmp/php-fpm-test.socket;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME /home/service/public_html/index.php;
include fastcgi_params;
}
Run Code Online (Sandbox Code Playgroud)
它是如何工作的?
编辑:如果有人能给我一段伪代码来描述进程(或其他)与php-fpm unix socket之间的通信,将不胜感激.
http://www.atmel.com/Images/compiler.jpg
背景
我已经有5年的PHP背景了,在上个月我一直忙于找到一种用C++做网络的方法(即使我知道这是幼稚和愚蠢的,我觉得C++是唯一真正的编程语言而且我有这种对它的宗教信仰让我爱它而且只有它.
我的CGI之旅
我发现了几篇博客文章(主要是2000 - 2003年),讨论并在这里进行了一些聊天讨论.这就是我收集的内容:
fork-exec遇到了每个进程的执行问题,这有点减慢了一切真实的问题
今天我必须决定使用PHP或CGI.而且我在问你:
这是我到目前为止所理解的.
PHP-FPM和WSGI是FastCGI上的层?
那么说WSGI是Python的FPM是正确的吗?
我试图在nginx和fastcgi-mono-server下运行ServiceStack的webservice API.
服务器启动正常,API已启动并正在运行.我可以通过ServiceStack分析器在浏览器中看到响应时间,它们的运行时间不超过10毫秒.
但是一旦我使用"siege"进行小负载测试(使用10个连接只有500个请求),我就开始获得502 Bad Gateway.要恢复,我必须重新启动fastcgi-mono-server.
nginx服务器很好.fastcgi-mono-server是在这个小负载后停止响应的服务器.
我已经尝试使用tcp和unix套接字(我知道unix套接字的权限问题,但我已经修复了).
这是我的配置:
server {
listen 80;
listen local-api.acme.com:80;
server_name local-api.acme.com;
location / {
root /Users/admin/dev/acme/Acme.Api/;
index index.html index.htm default.aspx Default.aspx;
fastcgi_index Default.aspx;
fastcgi_pass unix:/tmp/fastcgi.socket;
include /usr/local/etc/nginx/fastcgi_params;
}
}
Run Code Online (Sandbox Code Playgroud)
要启动fastcgi-mono-server:
sudo fastcgi-mono-server4 /applications=local-api.acme.com:/:/Users/admin/dev/acme/Acme.Api/ /socket=unix:/tmp/fastcgi.socket /multiplex=True /verbose=True /printlog=True
Run Code Online (Sandbox Code Playgroud)
编辑:我忘了提一个重要的细节:我在Mac OS X上运行它.
我还测试了Mono的所有可能的Web服务器配置:控制台应用程序,apache mod_mono,nginx fast_cgi和proxy_pass模块.在Mono 3.2.3 + Mac OS X下的一些请求之后,所有这些都出现了同样的崩溃问题.
我能够在Linux机器上测试相同的配置,并且没有任何问题.
所以在Mac OS X上运行时似乎是一个Mono/ASP.NET问题.
我试图在hostgator上部署一个简单的静态站点.我遵循了本教程,最初是在我的.htaccess(其中abc.com是网站):
AddHandler fcgid-script .fcgi
Options +FollowSymLinks
RewriteEngine On
RewriteRule (media/.*)$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(admin/.*)$ index.fcgi/$1 [L]
RewriteCond %{HTTP_HOST} ^abc\.com$ [OR]
RewriteCond %{HTTP_HOST} ^www\.abc\.com$
RewriteRule ^/?$ "http\:\/\/abc\.com\/index\.fcgi" [R=301,L]
Run Code Online (Sandbox Code Playgroud)
但这不起作用,只会出于某种原因从我的模板目录中加载"home.html".当我试图关注任何链接时,我会得到一个hostgator 404错误页面.然后经过一些研究并与hostgator支持人员交谈几次后,我将其更改为更简单:
AddHandler fcgid-script .fcgi
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*)$ index.fcgi/$1 [QSA,L]
Run Code Online (Sandbox Code Playgroud)
我在public_html目录中的index.fcgi文件如下所示:
#!/usr/local/bin/python
import sys, os, user
from django.core.servers.fastcgi import runfastcgi
sys.path.insert(0, "/usr/lib/python2.6")
sys.path.insert(0, "/home/joeshmo/django")
sys.path.insert(0, "/home/joeshmo/django/Projects")
sys.path.insert(0, "/home/joeshmo/django/Projects/PersonalWebsite")
# Switch to the directory of your project.
os.chdir("home/joeshmo/django/Projects/PersonalWebsite/")
# Set the DJANGO_SETTINGS_MODULE environment variable.
os.environ['DJANGO_SETTINGS_MODULE'] …Run Code Online (Sandbox Code Playgroud) 我试图安装php5-fpm,但是在尝试安装libapache2-mod-fastcgi时遇到了问题.
我收到以下消息:
After this operation, 250 kB of additional disk space will be used.
Selecting previously unselected package libapache2-mod-fastcgi.
(Reading database ... 63345 files and directories currently installed.)
Preparing to unpack .../libapache2-mod-fastcgi_2.4.7~0910052141-1.1_amd64.deb ...
Unpacking libapache2-mod-fastcgi (2.4.7~0910052141-1.1) ...
Setting up libapache2-mod-fastcgi (2.4.7~0910052141-1.1) ...
apache2_invoke: Enable module fastcgi
Action 'configtest' failed.
The Apache error log may have more information.
apache2_reload: Your configuration is broken. Not restarting Apache 2
Run Code Online (Sandbox Code Playgroud)
我将很快发布我的apache日志,因为它是一个大文件,我需要先解析它.
顺便说一句,我做了一个快速:
grep -RIs "FastCgiExternalServer" /etc/apache2
Run Code Online (Sandbox Code Playgroud)
并得到以下回应:
/etc/apache2/conf-available/php5-fpm.conf:FastCgiExternalServer /usr/lib/cgi-bin/php5-fcgi -socket /var/run/php5-fpm.sock -pass-header Authorization
Run Code Online (Sandbox Code Playgroud)
这也是,当我尝试重启Apache时: …