繁体   English   中英

如何配置apache2和fastCGI来运行我的c ++应用程序

[英]how to config apache2 and fastCGI to run my c++ application

我用c ++编写了一个程序并用gcc编译它(就像fastcgi.com中的示例一样),但我不知道如何在localhost上运行它。

我搜索的每个地方,我发现mod_fcgi的php配置不适用于c ++。

是否有任何机构配置apache和mod_fcgi来运行c ++ Web应用程序???

mod_fcgi? 我发现只有mod_fastcgi和mod_fcgid。 Apache配置看起来非常简单。 让我们编译FastCGI示例并创建一个简约的Apache实例来提供它:

  1. 安装libfcgi-dev

  2. 在某处创建临时目录并从https://opensource.apple.com/source/FastCGI/FastCGI-4/fcgi/doc/fcgi-devel-kit.htm#S3.1编译示例

    当你只是运行它,它已经有一些输出:

     $ ./tiny-cgi Content-type: text/html <title>FastCGI Hello!</title><h1>FastCGI Hello!</h1>Request number 1 running on host <i>(null)</i> 
  3. 安装apache2和libapache2-mod-fcgid; 创建配置文件apache.conf:

     User www-data Listen 8080 PidFile apache.pid DocumentRoot . LoadModule fcgid_module /usr/lib/apache2/modules/mod_fcgid.so SetHandler fcgid-script Options +ExecCGI ErrorLog error.log 

    用户www-data很重要,因为它可以访问/var/lib/apache2/fcgid/sock/ ,这对于fcgid非常重要(我在Debian上运行,也许在其他地方会有所不同)。 将DocumentRoot与其余目录放在同一目录中并不是很好,但这只是一个简单的例子。

  4. 运行sudo /usr/sbin/apache2 -d . -f apache.conf -X sudo /usr/sbin/apache2 -d . -f apache.conf -X

    -X用于调试模式,当服务器没有守护进程(不分离)时,这对于这种播放非常方便。

  5. 转到http://localhost:8080/tiny-cgi ,您将看到FastCGI程序的输出。 如果没有,请参阅error.log

  6. 停止Apache,安装libapache2-mod-fastcgi,将配置中的两行替换为:

     LoadModule fastcgi_module /usr/lib/apache2/modules/mod_fastcgi.so SetHandler fastcgi-script 
  7. 再次访问http://localhost:8080/tiny-cgi

这是我家的开发PC的一个例子。 它是运行在127.0.0.1:90上的C ++ Web服务,我正在测试/调试。 “FcgidIOTimeout”设置为3600,因此当我使用gdb(调试器)逐步执行fcgi进程时,mod_fcgid不会超时等待响应。 如果在调试时超时,fcgi应用程序将被终止。 更进一步说,有一个ScriptAlias和一个目录告诉Apache cgi文件夹在哪里...“/ home / dgnorton / prj / dfi / build / src /”...这是我项目的构建输出文件夹。 您还需要检查该目录的权限。

我只在家用系统上使用它进行调试。 在使用任何此类文件之前,请阅读Apache和mod_fcgid文档。

Listen 90

NameVirtualHost 127.0.0.1:90

<VirtualHost 127.0.0.1:90>
   ServerName www.example1.com
   DocumentRoot /var/www/dfi

   <IfModule fcgid_module> 
      FcgidIOTimeout 3600
   </IfModule>

    <Directory />
        Options FollowSymLinks
        AllowOverride None
    </Directory>
    <Directory /var/www/>
        Options Indexes FollowSymLinks MultiViews
        AllowOverride None
        Order allow,deny
        allow from all
    </Directory>

    ScriptAlias /cgi/ /home/dgnorton/prj/dfi/build/src/
    <Directory "/home/dgnorton/src/dfi/build/src">
        AllowOverride None
        Options +ExecCGI -MultiViews +SymLinksIfOwnerMatch
        Order allow,deny
        Allow from all
    </Directory>

    ErrorLog /var/log/apache2/error.log

    # Possible values include: debug, info, notice, warn, error, crit,
    # alert, emerg.
    LogLevel warn

    CustomLog /var/log/apache2/access.log combined

    Alias /doc/ "/usr/share/doc/"
    <Directory "/usr/share/doc/">
        Options Indexes MultiViews FollowSymLinks
        AllowOverride None
        Order deny,allow
        Deny from all
        Allow from 127.0.0.0/255.0.0.0 ::1/128
    </Directory>

</VirtualHost>

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM