在ServiceStack网站上列出,它表明ServiceStack可以在Mono上运行:
这些不同的配置是什么,哪些是Mono上的Web服务的首选?
我正在使用Perl开发一个带有一些C的Web应用程序,这对于一些重载数字运算来说是必要的.到目前为止我遇到的主要问题是试图决定是否应该使用mod-perl,mod-fastcgi或两者来运行我的脚本,因为我很难分析每个mod的优点和缺点.
任何人都可以发布摘要或提供一个链接,我可以找到一些比较信息,也许一些建议与示例?
我们最近迁移到了PHP-FPM.但是我们遇到了一些长时间运行的脚本的问题.代码看起来大致如下:
foreach ($items as $item) {
set_time_limit(30);
proccessThatTakesAround2secs();
}
Run Code Online (Sandbox Code Playgroud)
正常的PHP脚本时间限制也是30秒.之前工作正常,因为我们将每个项目的剩余时间限制重新设置为30秒.大约有1000个项目,这意味着该脚本通常需要大约30分钟才能完成.但是我们已经达到了以下问题:
FastCGI:comm与服务器"/usr/local/php-5.6.24/sbin/php5-fpm"中止:空闲超时(30秒)
现在我的问题是,将空闲超时增加到一个小时是否明智但仍然确保PHP脚本运行时间不超过30秒,除非我们使用set_time_limit?有没有办法在每个脚本的基础上设置空闲超时(类似于set_time_limit?)
这是我们的池配置:
[www]
user = www-data
group = www-data
listen = /var/run/php5-fpm.sock
listen.owner = www-data
listen.group = www-data
pm = static
pm.max_children = 55
pm.max_requests = 10000
php_value[memory_limit] = 128M
php_value[max_execution_time] = 30
php_value[upload_max_filesize] = 20M
php_value[post_max_size] = 20M
php_value[max_input_vars] = 9999
Run Code Online (Sandbox Code Playgroud)
这是我们的fastcgi.conf
<IfModule mod_fastcgi.c>
AddType application/x-httpd-fastphp5 .php
Action application/x-httpd-fastphp5 /php5-fcgi
Alias /php5-fcgi /usr/local/php-5.6.24/sbin/php5-fpm
FastCgiExternalServer /usr/local/php-5.6.24/sbin/php5-fpm -socket /var/run/php5-fpm.sock -idle-timeout 30 -pass-header Authorization
<Directory /usr/local/php-5.6.24/sbin/>
Require …Run Code Online (Sandbox Code Playgroud) 我正在使用Apache + mod_fastcgi + php-fpm.我正在尝试解析大文件并在php脚本max_execution_time中设置为0,但脚本在30秒后失败,并在错误日志中显示消息:"FastCGI:comm with server"/ usr/lib/cgi-bin/lz-fcgi"aborted:空闲超时(30秒)".在下面的配置中,您可以看到-idle-timeout指令设置为900秒,我很困惑服务器获取值30s的位置?当我切换到mod_php或mod_fcgid时它没关系,这个mods的所有适当设置都正常工作请帮忙看看哪里?
这里配置:Apache全局conf示例
<IfModule mod_fastcgi.c>
AddHandler fastcgi-script .fcgi
FastCgiIpcDir /usr/local/etc/php-fpm/
FastCgiConfig -singleThreshold 100 -killInterval 300 -idle-timeout 900 -maxClassProcesses 1 -pass-header HTTP_AUTHORIZATION
FastCgiWrapper /usr/lib/apache2/suexec
#AddHandler php5-fcgi .php .php3 .php4 .php5 .phtml
#Action php5-fcgi /php5-fcgi
#Alias /php5-fcgi /usr/lib/cgi-bin/php5-fcgi
</IfModule>
Run Code Online (Sandbox Code Playgroud)
Vhost示例
<VirtualHost *:80 >
ServerName site.ru
DocumentRoot /var/www/site.ru
ServerAlias www.site.ru
SuexecUserGroup user group
ScriptAlias /cgi-bin/ /var/www/site/cgi-bin/
<IfModule mod_fastcgi.c>
FastCgiExternalServer /usr/lib/cgi-bin/lz-fcgi -socket /tmp/lz-fcgi.sock -idle-timeout 900 -user user -group group
AddHandler lz-fcgi .php .php3 .php4 .php5 .phtml
Action lz-fcgi …Run Code Online (Sandbox Code Playgroud) 所以,我需要在一台服务器上运行多个php应用程序/站点.一个或多个应该使用apache和mod_php5运行,一个或多个应该能够使用mod_fastcgi和php-fpm运行.mod_php5目前是正常的,如果我禁用mod_php5,fastcgi工作,但我很难让他们同时工作.
我认为这可以通过在apache中使用文件匹配,if.mod_fastcgi和if.mod_actions的某种组合来实现,但我无法弄清楚它是什么.如果需要,我们可以安装执行此操作所需的任何apache模块.
超级奖励积分,如果有不同版本的vhost for Apache 2.2或更少,你也有这个片段,或者至少知道我应该做什么
我不会发布我拥有的整个虚拟主机,因为我知道它们是错的,但第一个,默认的,基于mod_php的虚拟主机看起来像这样...
#NameVirtualHost 127.0.0.1:80 < Apache 2.2 or less
<VirtualHost 127.0.0.1:80>
ServerAdmin webmaster@localhost
ServerName some.site.tld
DocumentRoot /var/www/some/site/
<Directory /var/www/some/site/>
Options Indexes FollowSymLinks MultiViews
Require all granted
# Order deny,allow < Apache 2.2 or less
# Allow from all < Apache 2.2 or less
</Directory>
ErrorLog /var/log/apache2/error.log
CustomLog /var/log/apache2/access.log combined
</VirtualHost>
Run Code Online (Sandbox Code Playgroud)
理想情况下,我希望这些保持不变,如果我们需要更多这些,我们可以添加更多.
我想要的结果是能够使用像第一个配置这样的东西来放入为mod_php配置的新vhosts,并且还为了快速cgi而放入vhosts,如下所示.
# NameVirtualHost 0.0.0.0:80 < Apache 2.2 or Less
<VirtualHost 0.0.0.0:80>
ServerAdmin webmaster@localhost
ServerName some.application.tld
DocumentRoot /opt/some/app/dir/
ErrorLog /var/log/apache2/error.log
CustomLog /var/log/apache2/access.log combined
<IfModule mod_fastcgi.c> …Run Code Online (Sandbox Code Playgroud) 请允许我声明我是FastCGI的新手.我的OS X机器上有MAMP的Apache.默认的PHP处理程序是Apache Handler 2.0(libphp5.so).我想改变FastCGI并遵循这里的答案:如何配置Apache在Ubuntu 12.04上通过终端运行PHP作为FastCGI?
我在httpd.conf的末尾添加了以下内容:
<IfModule mod_fastcgi.c>
AddHandler php5.fcgi .php
Action php5.fcgi /php5.fcgi
Alias /php5.fcgi /Applications/MAMP/fcgi-bin/php5.fcgi
FastCgiServer /Applications/MAMP/fcgi-bin/php5.fcgi -socket /Applications/MAMP/tmp/php-fcgi/php5-fpm.sock -pass-header Authorization -idle-timeout 3600
#FastCgiExternalServer /Applications/MAMP/fcgi-bin/php5.fcgi -socket /Applications/MAMP/tmp/php-fcgi/php5-fpm.sock -pass-header Authorization -idle-timeout 3600
<Directory /Applications/MAMP/fcgi-bin>
Order allow,deny
Allow from all
</Directory>
</IfModule>
Run Code Online (Sandbox Code Playgroud)
但是,正如您所看到的,FastCgiExternalServer已被注释掉.相反,我不得不使用FastCgiServer原因,否则Apache在尝试请求页面时会给我以下错误:
[星期五06月23日23:25:22] [错误] [客户端:: 1](2)没有这样的文件或目录:FastCGI:无法连接到服务器"/Applications/MAMP/fcgi-bin/php5.fcgi" : 连接失败
[星期五06月23日23:25:22 2016] [错误] [client :: 1] FastCGI:从服务器"/Applications/MAMP/fcgi-bin/php5.fcgi"收到的不完整标题(0字节)
但/Applications/MAMP/fcgi-bin/php5.fcgi存在且其内容是:
#!/bin/bash
PHP_CGI=/Applications/MAMP/bin/php/php5.6.2/bin/php-cgi
exec $PHP_CGI
Run Code Online (Sandbox Code Playgroud)
什么之间的区别FastCgiServer和FastCgiExternalServer,为什么FastCgiExternalServer在我的情况没有工作,但FastCgiServer …
在Apache mod_fastcgi下运行的My Perl web-app经常会出现如下错误:
在线119处超过未决信号(120)的最大计数.
我已经看到这与文件上传有关,但我不确定这是唯一的时间.我在得到错误之前(或可能在之后)也得到了一个SIGPIPE.
有什么想法吗?
编辑 感谢大家的建议.有人问119行是什么.对不起,应该把它放进去.它是在一段代码中,我在上传的文件上运行病毒检查程序.我不是每次都会得到错误,只是偶尔.
if(open VIRUS_CK, '|/usr/local/bin/clamscan - --no-summary >'.$tmp_file) {
print VIRUS_CK $data; // THIS IS LINE 119
close VIRUS_CK;
if (($? >> 8) == 1) {
open VIRUS_OUTPUT, '<'.$tmp_file;
my $vout = <VIRUS_OUTPUT>;
close VIRUS_OUTPUT;
$vout =~ s/^stdin:\s//;
$vout =~ s/FOUND$//;
print STDERR "virus found on upload: $vout\n";
return undef, 'could not accept attachment, virus found: '.$vout;
}
unlink($tmp_file);
}
Run Code Online (Sandbox Code Playgroud) 在Apache mod_fastcgi上创建每用户php5-fpm池时,以下哪种方法是向PHP池授予Web服务器权限的最安全方式和有效方式?
将组设置为www-data:
listen.owner = username
listen.group = www-data
listen.mode = 0660
user = username
group = www-data
Run Code Online (Sandbox Code Playgroud)
虽然这个由PHP创建的文件将所有权设置为用户名:www-data,而通过SCP上传的文件将具有用户名:username.
加入www-data补充组username:
listen.owner = username
listen.group = username
listen.mode = 0660
user = username
group = username
Run Code Online (Sandbox Code Playgroud)
-
usermod -aG username www-data
Run Code Online (Sandbox Code Playgroud)
哪些选项是安全的?您也可以分享更好的方法.
我检查了以下指南:
但它们都是在发现并修复了#67060号错误之前编写的.
我编写了一个WSGI应用程序,我需要将其部署到服务器,但是我已经获得了一个已经安装了mod_python的服务器.
我不允许删除mod_python,因为已经有一些mod_python应用程序在运行.
我考虑过的一个选项是将mod_wsgi与mod_python一起安装,但是我经历了一些消息,发现这是一个坏主意.显然mod_wsgi和mod_python混合不好.
我考虑的另一个选择是安装mod_fastcgi并使用fastcgi部署它.
我很想听听是否有人有更好的想法,这不会打破服务器上运行的当前mod_python应用程序.
我将 Apache(Debian 上的 2.2.22)配置为通过 FastCGI 处理 PHP 文件:
<FilesMatch ".+.php$">
SetHandler 应用程序/x-httpd-php
</文件匹配>
动作应用程序/x-httpd-php /fcgi-bin/php5-fpm 虚拟别名
/fcgi-bin/php5-fpm /fcgi-bin-php5-fpm FastCgiExternalServer
/fcgi-bin-php5-fpm -socket /var/run/php5-fpm.sock -idle-timeout 600 -pass-header 授权
显示自定义文件未找到 (HTTP 404) 页面在 Apache 中配置如下:
<目录“/home/http/domain/root”>
..
错误文档 404 /pagenotfound.htm
..
</目录>
使用自定义 404 pagenotfound.htm 文件回答对不存在的非 PHP 文件的请求。没问题。
但是对不存在的 PHP 文件的请求以 http-status-header“HTTP/1.1 404 Not Found”和内容“File not found.”回答,所以不是我的自定义错误页面。问题!
Apache 错误日志显示(在后一种情况下):
[Sat Nov 21 14:03:07 2015] [error] [client xx.xxx.xx.xx] FastCGI: server "/fcgi-bin-php5-fpm" stderr: Primary script unknown
使用 PHP-FPM 时如何为不存在的 PHP 文件配置自定义 …
mod-fastcgi ×10
apache ×7
php ×6
fastcgi ×3
perl ×2
c# ×1
linux ×1
mod-perl ×1
mod-php ×1
mod-python ×1
mod-wsgi ×1
mono ×1
python ×1
servicestack ×1
virtualhost ×1