apache/nginx - 执行程序从 http 请求中获取参数

apache/nginx -execute program taking params from http request

我在 Ubuntu 14.04 上使用 VPS 和 Apache/Nginx(在不同时间),并通过 exec() 在 php 中执行 commands/programs。现在我知道了,我不需要 Php 来执行这些事情,比方说:

exec('whoami'); or
exec('myexec');

因为 php 在我的案例中只是充当附加层。那么我可以只使用 apache/nginx 从对它发出的 http 请求中获取数据(get、post..)和 'pass' 作为某些可执行程序和 'return the output'(纯文本)的参数吗?假设一个 calc 程序接收 3 个参数 ( 4,5,+ ) 和 return 输出 ( 9 ).

我已经看过这个 ques ,但它用 Lua 脚本说明了过程,而我正在尝试用 c++ 做一些业余项目。目前我不知道如何进行,因为我只熟悉 php LAMP stack ,如果我在某个地方错了,一些指导会有所帮助:)

您可以将 CGI 与您的网络服务器一起使用,因此当请求某个 URL 时,它会提供您的 C++ 代码的输出。我不确定这是否可以称为 "good" 实践,但这是实现您想要的目标的一种方法。 有关详细信息,请查看此 link http://www.tutorialspoint.com/cplusplus/cpp_web_programming.htm

免责声明:我不是 C++ 程序员,所以这实际上可能行不通。

  • Web 服务器配置

    确保您的网络服务器支持 CGI 并进行相应配置。 Apache 2 虚拟主机文件示例:

     <Directory "/var/www/cgi-bin">
         AllowOverride None
         Options ExecCGI
         Order allow,deny
         Allow from all
     </Directory>
    
    <Directory "/var/www/cgi-bin">
        Options All
    </Directory>
    
  • 示例 C++ 程序

     #include <iostream>
    using namespace std;
    
    int main ()
    {
    
       cout << "Content-type:text/html\r\n\r\n";
       cout << "<html>\n";
       cout << "<head>\n";
       cout << "<title>Hello World - First CGI Program</title>\n";
       cout << "</head>\n";
       cout << "<body>\n";
       cout << "<h2>Hello World! This is my first CGI program</h2>\n";
       cout << "</body>\n";
       cout << "</html>\n";
    
       return 0;
    }
    

    编译以上代码并将可执行文件命名为cplusplus.cgi。将其放在 /var/www/cgi-bin 目录或您在 Apache 配置文件中配置的任何目录中。不要忘记使其可执行 (chmod 770 cplusplus.cgi)。现在,如果你访问 URL www.example.org/cgi-bin/cplusplus 你应该看到输出 Hello World! This is my first CGI program