在我的ToDo列表中从fcgiwrap迁移到uWSGI(这也带来了我计划使用的其他许多好处)之后,我终于设法build立了一个以uWSGI v2.0为特色的debian-wheezytesting系统, nginx v1.4.4。 在第一步中,我想通过uWSGI的cgi-plugin可靠地运行.cgi-scripts,并以最小的开销(相当弱的硬件),同时可以轻松地增强我的configuration,同时也可以通过框架部署应用程序,例如bottle / flask / django作为第二步。 所以我select了使用uWSGI的皇帝模式 ,这个模式目前只能控制一个configuration来运行uWSGI-cgi-plugin的两个工作者,每个工作者有两个线程。 检查出各种function之后,设置或多或less都可以正常运行了,但我觉得有两种奇怪的行为,我认为这些行为是错误的 : 一旦配件被configuration为向皇帝发送心跳(例如,通过向.ini添加heartbeat = 20 ),如果.cgi没有在定义的心跳时间内运行,则皇帝将重复杀死/重新生成附属的主人。 configuration的工人数量似乎并不重要。 这个vassal忽略了reload-mercy = 10这个选项,因为它仍然logging着your mercy for graceful operations on workers is 60 seconds (这是默认值)。 好吧,这只是一个小问题,与我无关。 使用心跳选项的原因是我想尽可能使用内置的uWSGI机制来保证我的cgis / apps的可用性。 任何提示我可能会误解或做错? 我看不出任何明显的原因,为什么不应该在我的configuration中将心跳选项与cgi-module结合使用,而是希望得到更进一步的了解! 我假设nginx与上述问题无关,另外我还仔细检查了文件和目录 – perms … uWSGI是通过init.d-script启动的,但是手动启动时的行为是一样的。 我的configuration如下: 在nginx.conf中的部分: location ~ ^/cgi-bin/.*\..+$ { root /usr/local/nginx/vhosts/testdomain.com/cgi-bin; gzip off; include uwsgi_params; uwsgi_modifier1 […]
我很难得到一个Web窗体来运行一个CGI脚本,需要执行一个具有root权限的命令。 表格是: <form class="mainform" action="./py/print_msg.py" method="POST"> <textarea name="post" cols=70 rows=20></textarea><br> <input type="submit" value="Print" class="button"> <input type="reset" value="Clear" class="button"> </form> python脚本print_msg.py是可执行文件( -rwxr-xr-x 1 root root ),并且只是打印string到浏览器的版本就可以正常工作,所以apache的CGI设置就好了。 #!/usr/bin/env python from Adafruit_Thermal import * print "Content-type: text/html\n\n" printer = Adafruit_Thermal("/dev/ttyAMA0", 19200, timeout=5) printer.wake() time.sleep(1) print "test" printer.sleep() 这在root运行时有效。 我编辑了/etc/sudoers如下: www-data ALL=(ALL) NOPASSWD: /usr/bin/sudo -u root /home/pi/www/html/py/print_msg.py 不知道这是否意味着万维网数据可以运行该脚本作为根或如果它会这样做,而不需要调用sudo ? […]
操作系统:CentOS 7 / Apache:2.4 我正在升级机器和软件,其中一部分涉及从Apache 2.2.x升级到Apache 2.4.x. 它的很好的一部分工作正常,包括PHP脚本和纯HTML文件,但我有很大的问题,试图让Perl CGI脚本运行。 暂时,在排除故障时,我已经禁用了Selinux的httpd,(作为宽容:即。semanage permissive -a httpd_t),所以我知道这不是问题。 我已经尝试了很多东西,但底线是我不能从/ cgi-bin /运行任何东西。 这个特定的站点,由于遗留的原因,不在/ var / www /下,但在/ home / www / htdocs /下,但是我认为这只是Selinux的一个问题,目前它被禁用。 所以,我在Apache错误日志中得到的错误消息的例子如下: AH01215: Can't open perl script "/home/www/htdocs/zac/cgi-bin/test.cgi": Permission denied 我尝试了不同的东西,但是我现在有一个“apache”作为/ cgi-bin /的组拥有者,拥有777的权限,以及作为所有者和组的脚本的apache,权限为777.脚本非常简单, (只是打印一些文本来testing),我已经删除并重新添加每个脚本(即#!/ usr / bin / perl)中的第一行,以确保没有任何可笑的字符。 我知道在2.4的conf文件中的一些语法是不同的,但我认为我有一切可以,请看下面: <VirtualHost *> DocumentRoot "/home/www/htdocs/zac/" ServerName www.zacserver.pc ServerAlias zacserver ScriptAlias […]
我在Centos 7上安装了LAMP堆栈。我还有三个CMS在httpd虚拟主机上运行:WordPress,Joomla和OpenCart。 问题:如何为每个虚拟主机configuration不同的PHP模式,CGI和FCGI? 我有每个CMS单独的.conf文件。 PHP版本7。
我希望你能帮助,我只是一个初学者! 我列出了一些可能不相关的额外细节。 我使用ASCII码FTP95Pro将cgi脚本上传到Apache / 2.2.10服务器上的本地/个人目录。 脚本在terminal会话中使用perl在我的web服务器上正确执行。 因此,我的代码没有致命的语法错误。 在/ cgi-bin /中的每个cgi脚本都会有网页的“操作”。 有系统目录文件链接到我的本地目录文件的符号链接。 FollowSymLinks已启用(不确定如何)。 权限是正确的(755)。 这个设置显然没有改变。 这些脚本已经完成了多年,直到2010年。但现在,在2010年,我已经用新的脚本/文件replace了工作脚本,现在具有完全相同的文本,文件名和权限。 只有date(上次修改)已更改。 但现在我收到一个500内部服务器错误,并不能确定为什么。 我的服务器pipe理员假设我有代码错误。 但是自去年以来,代码并没有改变,并且它在web服务器控制台上使用perl myscript.cgi运行正常(尽pipe没有参数) 有什么你可以想到的可能已经改变? 我怀疑新的十年。 我认为服务器去年从Linux交换到Windows操作系统,但我的服务器pipe理员得到它一切正常。 有没有什么不寻常的,他可能错过了,与2010年有关?
我正在尝试将AWStats添加到我正在工作的Apache网站上。 但是当我去我的Perl脚本失败: http://localhost/awstats/awstats.pl?config=my.domain.here 我在浏览器中得到这个错误500: Internal Server Error The server encountered an internal error or misconfiguration and was unable to complete your request. 我有以下错误日志条目 [Mon Feb 01 19:59:48 2010] [error] [client 127.0.0.1] (OS 2)The system cannot find the file specified. : couldn't create child process: 720002: awstats.pl [Mon Feb 01 19:59:48 2010] [error] [client 127.0.0.1] (OS […]
问题: Apache2拒绝运行我的CGI脚本,告诉我找不到这个文件。 示例日志: [Wed Jul 14 09:22:19 2010] [error] [client 192.168.111.1] (2)No such file or directory: exec of '/home/pnathan/public_html/ajax.pl' failed [Wed Jul 14 09:22:19 2010] [error] [client 192.168.111.1] Premature end of script headers: ajax.pl 要点: ajax.pl是chmod 755.它所在的目录树是chmod 755.在同一个目录下有另一个脚本运行。 ajax.pl的LS: -rwxr-xr-x 1 pnathan pnathan 534 2010-07-14 09:12 ajax.pl 我的Apache2configuration文件中有这个块: <Directory /home/pnathan/public_html> Options Indexes FollowSymLinks MultiViews AllowOverride […]
在共享服务器(特别是运行Debian的DreamHost共享服务器,但我不知道这是否重要),mod_suexec被激活,PHP和Python被迫使用CGI或FastCGI,你会期望Passenger进程作为Apache用户运行或者作为乘客驱动的应用程序运行的从其主目录的用户? 请解释你的答案的基础。 (为了与DreamHost的PHP和Python的方法保持一致,我猜测后者是一致的,但是我对Passenger如何与Apache交互很模糊,更不用说mod_suexec了。)
在Apache中,我想要一个URL“/ myscript”或“/ myscript?param = myparam”来执行位于以下位置的CGI脚本: /usr/local/scripts/custom.pl 我努力了: Action custom-action /usr/local/scripts/custom.pl <Location "/myscript"> SetHandler custom-action </Location> 但是这不起作用。 任何想法如何实现URL到脚本的映射?
我想从/ var / www / html / cgi-bin和/ var / www / html / s1 / cgi-bin执行cgi文件。 我目前在我的httpd.conf中有这个 Options Indexes FollowSymLinks ExecCGI ScriptAlias /cgi-bin/ "/var/www/html/cgi-bin/" # # "/var/www/cgi-bin" should be changed to whatever your ScriptAliased # CGI directory exists, if you have that configured. # <Directory "/var/www/cgi-bin"> AllowOverride None Options None Order allow,deny Allow from […]