Articles of cgi

我如何以编程方式重新启动一个系统服务(而不是apache)从Linux中的Apache?

我需要简单的方法来允许最终用户从同一个框中的apache服务的网页重新启动tomcat。 我们试图让我们的QC部门轻松地将我们的webapp的新版本部署到apache。 我们使用samba,但是我们需要一个简单的方法让他们在部署之前/之后停止/启动tomcat服务器。 这只会用于内部的盒子。 有没有现有的解决scheme呢? 还是会更容易写一些快速的PHP应用程序来处理这个?

运行python Webserver作为Windows服务

我有服务器和控制台脚本 ,不断监听控制台和服务器请求的端口。 在UNIX环境中,我将服务器和控制台脚本都作为连续运行的守护进程来运行,这将保持监听端口。 有什么办法在Windows中让他们像在UNIX守护进程一样运行? 我也希望他们起床重新启动(应重新启动时自动启动) 我读了关于Windows服务,并按照这里写的代码,但我的网页404错误 __version__ = "0.4" __all__ = ["RequestHandler"] import atexit import BaseHTTPServer import CGIHTTPServer import copy import os import select import SimpleHTTPServer import sys import time import threading import urllib from signal import SIGTERM from BaseHTTPServer import HTTPServer, BaseHTTPRequestHandler from SocketServer import ThreadingMixIn class ThreadedHTTPServer(ThreadingMixIn, HTTPServer): pass class RequestHandler(SimpleHTTPServer.SimpleHTTPRequestHandler): have_fork = […]

mod_xsendfile不能用于CGI和mod_rewrite

我正在尝试使用apache模块xsendfile在文件stream中获得更好的性能。 问题是,它只是在工作,如果我不使用PHP作为CGI版本,如果我不使用我的url重写规则 。 问题1:mod_rewrite 在浏览器中调用这个函数将会工作: http://subdomain.domain.de/image.php 这一个会给我一个404: http://subdomain.domain.de/rewrittenImageUrl 重写规则是正确的。 404错误是由xsendfile模块触发的。 如果我在htaccess的规则中添加一个“R”( 就像这个问题中提到的那样 ),它会再次工作,因为我被redirect到上面给出的第一个地址。 但redirect不是我想要的。 我也注意到了这个关于符号链接的post ,但是我认为这不可能是我的文章的解决scheme,只要我使用使用getenv('document_root')生成的绝对path? 这个程序不应该使用任何符号链接,是吗? 还是我错过了什么? 问题2:CGI 如果我将PHP模式切换到cgi版本,我将得到一个0字节的文件。 这似乎是相同的行为,如服务器会反应没有任何安装的xsendfile。 我已经将模块更新到最新版本。 也testing了绝对和相对的链接没有任何成功。 除此之外, 取消激活输出压缩不起作用。 要完成给定的信息,这里是我正在使用的PHP代码: ini_set('zlib.output_compression', 'Off'); $realImagePath = getenv('document_root')."fixedRelativeImagePathNoParamsNeeded.jpg"; $imageInfos = @getimagesize($realImagePath); header('Content-Type: '.$imageInfos['mime']); header("X-Sendfile: $realImagePath"); exit(); 任何人都有线索? 更新(2014-01-06) 第二个问题解决了 :我不知道为什么,但是在apacheconfiguration文件中打开xsendfile而不是使用htaccess文件。 (我会在下面添加一个答案,因为另一个问题也解决了。) 除了第一个之外:首先,我没有在httpd.conf中添加任何选项,因为它应该使用标准configuration。 无论如何,我现在要求我的提供商将绝对项目path添加到XSendFilePath的白名单作为全局设置。 这暂时解决了1.用mod_rewrite的问题。 但是这似乎并不是真正的解决scheme,因为我在服务器上运行了许多不同的项目,每个项目都有一个分离的下载path。 所以我需要问我的提供者,每次开始一个新的项目时,都要为configuration添加一个新的path。 我仍然不能使用mod_rewrotite的x-sendfile,尽pipe我应该可以访问文档根目录而不需要任何额外的设置。

如何获得需要gem才能正常运行的Ruby CGI程序?

我configuration了我的Apache安装来运行Ruby CGI脚本。 我现在试图运行一个简单的Ruby CGI脚本,需要一个gem。 当我从命令行运行这个脚本时,它输出正确。 但是当我把它称为Apache CGI脚本时,它会生成一个Apache Internal Server Error 。 该脚本如下所示: #!/Ruby/bin/ruby require 'RedCloth' # <– This is the gem puts "Content-type: text/html" puts puts puts "<html>" puts "<head>" puts "</head>" puts "<body>" puts "I want to call a gem." puts "</body>" puts "</html>" Apache错误日志显示了这些行: C:/Ruby/lib/ruby/1.9.1/rubygems/config_file.rb:56:in `join': can't convert nil into String (TypeError) [error] […]

为了将数据从HTML表单传递到Perl脚本的步骤

我创build了一个简单的HTML,其中包含下面的表单: <form action="WEB-INF/cgi/run.pl" method="post"> <table border="0" cellspacing="0"> <tbody> <tr><th align="center" bgcolor="F7F5F2"> <p class="normal">Submission Form</p> </th></tr> <tr><td align="center" bgcolor="F7F5F2"> <p class="normal">Insert your text below:</p> </td></tr> <tr><td><textarea wrap="virtual" name="seq_data" rows="15" cols="80"></textarea></td></tr> </tbody></table> or upload a file : <input type="file" name="file" size="29" border="0"><br><br> <input class="normalc" value="Submit Query" type="submit"> <input class="normalc" value="Clear Form" type="reset"><p></p> </form> 我需要将表单中的数据作为input传递给perl脚本(run.pl)。 在search互联网时,我读到:1)我需要通过Apache Tomcattesting我的网站。 我已经安装了Apache […]

允许EC2上的Apache通过CGI脚本运行sudo命令

我有一个在AWS上运行的Amazon(AMI)Linux EC2实例。 我创build了一个perl脚本,当它通过web url(CGI脚本)被调用时,它将创build目录。 但是,由于浏览器正在执行脚本,用户apache正在运行perl脚本。 因为apache不允许在不使用sudo的情况下执行mkdir命令,所有的目录都不会被创build。 我已经通过浏览器修改了脚本执行的权限(755),但是没有一个mkdir命令可以工作。 我甚至尝试在perl脚本中使用sudo命令,但是我没有运气。 但是,所有的非sudo命令工作,如“CD”等 如果有人知道如何解决这个问题,我将不胜感激。

Apache 2.2 CGI perl超时,即使定期打印仍然超时

我有一个cgi代码,正在从客户端JavaScript AJAX调用。 然而,呼叫的结果被客户丢弃。 在后端发生这个代码: $|=1; my $i = 0; while (<$fh_echo>) { #To prevent apache timing out the cgi script. print "." if $i % 100 == 0; #Do stuff $i++; } 尽pipe定期打印,这仍然超时: [warn] [client 10.23.12.87] Timeout waiting for output from CGI script [error] [client 10.23.12.87] (70007)The timeout specified has expired: ap_content_length_filter: apr_bucket_read() failed 我认为,丢弃输出的事实不应该有任何forms的影响是否允许apache允许cgi脚本继续。 […]

我如何在我的Web服务器上运行Python CGI脚本?

我想在我的Web服务器(Apache 2.2)上运行一个Python CGI脚本。 当我尝试运行test.py文件时,出现以下错误: <!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN"> <html><head> <title>403 Forbidden</title> </head><body> <h1>Forbidden</h1> <p>You don't have permission to access /test.py on this server.</p> </body></html> 在错误日志中: [client 127.0.0.1] Options ExecCGI is off in this directory: C:/Program Files (x86)/Apache Software Foundation/Apache2.2/htdocs/test.py 那么可能是什么问题呢?

如何在CGI中调用带有参数的python函数?

我想要构build一个使用python脚本浏览Apache2服务器的接口。 我花了几天的时间学习python,今天又熟悉CGI。 我想testing一些东西,比如用户从基本目录导航到他想要的path的可能性 /var/www/cgi-bin 例如通过input他想要访问的path /etc/httpd/conf.d 。 为此,我有这样的change_path.py脚本: import os def changePath(path): os.chdir(path) 我已经运行了这个脚本,以确保一切正常设置: #!/usr/bin/python # Import modules for CGI handling import cgi, cgitb, os cwd = os.getcwd() print "Content-type:text/html\r\n\r\n" print "<html>" print "<head>" print "<title>TestScript</title>" print "</head>" print "<body>" print "<h2> Current working directory is: %s</h2>" % cwd print "</body>"

从网页调用Python脚本

我search了一段时间,但我找不到如何做我想要的简明解释。 我有一个相当复杂的程序,我想做一个简单的Web界面。 理想情况下,网页上会有两个文本字段“foo”和“bar”。 当用户点击提交时,会运行一个python脚本“src / script.py”,它可以以某种方式访问​​这些字段的内容。 我有apache2和mod_python。