webdevqa.jp.net

NginxでCGIスクリプトを実行する方法

Nginxで実行するCGIスクリプトの設定に問題があり、これまでのところ http://wiki.nginx.org/SimpleCGI が見つかりましたが、問題はPerlスクリプトを作成できないことですバックグラウンドで実行されるようにサービスとして実行し、再起動の場合でも自動的に実行を開始します

何かアイデアはありますか? Centos 5を実行しています

私はいくつかの解決策を見つけました ここ しかし、そこに与えられたコードを統合できませんでした このPerlスクリプト 私はPerlに完全にゼロです、助けてくださいありがとう

20
Askhat

NginxはWebサーバーです。 WSGI などのタスクには、アプリケーションサーバーを使用する必要があります。 uwsgiと呼ばれるネイティブの非常に効果的なバイナリインターフェイスを使用して、nginxと通信できます。

13
VBart

別のポートで実行される別のWebサーバー(Apache、Lighttpd)をインストールします。次に、nginxを使用してCGI要求をWebサーバーにプロキシします。

8080にWebサーバーをインストールした後、これをnginx設定に追加するだけです

location /cgi-bin {
    proxy_pass http://127.0.0.1:8080;
}

詳細については Nginx Location Directive Explained をご覧ください。

13
Burak Tamtürk

NginxはネイティブCGIをサポートしていません(代わりにfastCGIをサポートしています)。これの典型的な解決策は、PerlスクリプトをfastCGIプロセスとして実行し、nginx構成ファイルを編集して要求をfastCGIプロセスにリダイレクトすることです。 CGIスクリプトを実行するだけであれば、これは非常に複雑なソリューションです。

このソリューションにnginxを使用する必要がありますか? Perl CGIスクリプトを実行するだけであれば、CGIスクリプトをネイティブに処理し、スクリプトを別のプロセスとして実行する必要がないCGIモジュールに付属しているApacheまたはLighttpdの使用を検討してください。これを行うには、Webサーバーをインストールし、Webサーバーの構成ファイルを編集してCGIモジュールをロードする必要があります。 Lighttpdの場合、CGIファイルの処理を有効にするには、構成ファイルに行を追加する必要があります。次に、CGIファイルをcgi-binフォルダーに入れます。

12
David Farrell

FastCGIを使用したこのハックは、別のWebサーバーを実行するよりも少し優れていることがわかりました。 http://nginxlibrary.com/Perl-fastcgi/

3
Alton Yu

私はこれを見つけました: https://github.com/ruudud/cgi それは言います:

===

On Ubuntu: apt-get install nginx fcgiwrap
On Arch: pacman -S nginx fcgiwrap

Example Nginx config (Ubuntu: /etc/nginx/sites-enabled/default):

server {
    listen   80;
    server_name  localhost;
    access_log  /var/log/nginx/access.log;

    location / {
        root /srv/static;
        autoindex on;
        index index.html index.htm;
    }

    location ~ ^/cgi {
        root /srv/my_cgi_app;
        rewrite ^/cgi/(.*) /$1 break;

        include fastcgi_params;
        fastcgi_pass unix:/var/run/fcgiwrap.socket;
        fastcgi_param SCRIPT_FILENAME /srv/my_cgi_app$fastcgi_script_name;
    }
}

ルートおよびfastcgi_param行をCGIスクリプトを含むディレクトリに変更します。このリポジトリのcgi-bin/dir。

あなたがコントロールマニアで、fcgiwrapを手動で実行する場合、fastcgi_passをそれに応じて変更してください。例にリストされているパスは、すぐに使用可能なfcgiwrapセットアップを使用する場合のUbuntuのデフォルトです。

===

私はそれをしようとしています。

1
Brad Allen