nginxでCGIが動かない!?

このQ&Aのポイント
  • CentOS7にnginxをインストールし、Movable Type(以下、mt)を導入しようとしているが、mtのインストールモジュール(*.cgi)をキックしても、HTTP 403エラーと表示される。同ディレクトリのindex.htmlは問題なく表示される。CGIが動く環境にし、mtインストールを可能としたい。
  • nginxのdefaut.confでCGIの設定を行っているが、mtのモジュールが正しく動作しない。CGIを有効化してmtのインストールを完了したい。
  • CentOS7にnginxをインストールし、mtのインストールを試みているが、mtのインストールモジュール(*.cgi)が正常に動作しない。CGIを動かすための設定やアクセス権の設定に問題があるのか確認したい。
回答を見る
  • ベストアンサー

nginxでCGIが動きません

お世話になります。 以下に質問をさせていただきます。 <概要> CentOS7にnginxをインストールし、Movable Type(以下、mt)を導入しようとしているのですが、 mtのインストールモジュール(*.cgi)をキックしても、HTTP 403エラーと表示されてしまいます。 同ディレクトリのindex.htmlは問題なく表示されます。 関連するディレクトリおよびファイルのアクセス権は一律755に設定。 CGIが動く環境にし、mtインストールを可能としたいと思っております、 どうかよろしくお願い致します。 <導入状況>  ・nginx   →ドキュメントルート: /var/www/html     mtモジュール格納場所: /var/www/cgi-bin/mt-site   →defaut.confは以下のように記述    location ~ \.cgi$ {    index index.html;   fastcgi_pass unix:/var/run/fcgiwrap.socket;   include /etc/nginx/fastcgi_params;   fastcgi_param SCRIPT_FILENAME /var/www/cgi-bin/mt-site$fastcgi_script_name;   }  ・CGI動かすためにspawn-fcgi、fcgiwrap、fcgi-develをインストール   spawn-fcgiの記述は以下のとおり    FCGI_SOCKET=/var/run/fcgiwrap.socket    FCGI_PROGRAM=/usr/local/sbin/fcgiwrap    FCGI_USER=nginx    FCGI_GROUP=nginx    FCGI_EXTRA_OPTIONS="-M 0770"    OPTIONS="-u $FCGI_USER -g $FCGI_GROUP -s $FCGI_SOCKET -S $FCGI_EXTRA_OPTIONS -F 1 -P /var/run/spawn-fcgi.pid -- $FCGI_PROGRAM" 初めての投稿のため、配慮が足りず情報が足りない等ありましたら 申し訳ありませんが、ご連絡いただけますと可能な限り答えますので なにとぞよろしくお願い致します。 よろしくお願い致します。

質問者が選んだベストアンサー

  • ベストアンサー
  • h271015
  • ベストアンサー率71% (62/87)
回答No.2

> mtモジュール格納場所を/var/www/html以下に持っていって確認しましたが、 > 状況変わらずでした。 ご確認ありがとうございます。 403なので何かしらのアクセス権の問題と思いますが、例えば、MTのプロセスを実行しているユーザとMTのディレクトリやファイルの所有者:所有グループに違いはないでしょうか。 後はmtモジュール移動後のfastcgi_param のPATHが正しいか、Ubuntu/Debianだとincludeを fastcgi_param ではさむ必要があるなどがパッと考え付きましたがCentOS7でも当てはまるのか分かりません。 === fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; include /etc/nginx/fastcgi_params; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; === http://ptna.hateblo.jp/entry/2016/01/27/Ubuntu14_04_%2B_nginx_%E3%81%A7MT6_2_2%E3%82%92%E5%8B%95%E3%81%8B%E3%81%99%E3%81%BE%E3%81%A7

adakatsu
質問者

お礼

ありがとうございます。 ディレクトリのアクセス権は問題ありませんでした。 ~\.CGI${}コンテナの記述について、fastcgi_paramを変えてみたり しましたが、特に変わらず。。 このコンテナ内でroot /var/www/cgi-bin/mt-site; を追加すると通りました! アドバイスいただいたPATHの問題でしたね! 本当に助かりました。 ベストアンサーにさせていただきました。 今後ともよろしくお願い致します。

その他の回答 (1)

  • h271015
  • ベストアンサー率71% (62/87)
回答No.1

>   →ドキュメントルート: /var/www/html >     mtモジュール格納場所: /var/www/cgi-bin/mt-site ドキュメントルートとして設定されているディレクトリ配下にMovableTypeが設置されていないことが影響しているように思います。 ドキュメントルートを/var/www/htmlとしているのであれば、mtモジュール格納場所を/var/www/html以下にする必要があると思います。 あるいはmtモジュール格納場所を/var/www/cgi-bin/mt-siteとしたい場合、ドキュメントルートを/var/www/cgi-bin等にしなければならないと思います。

adakatsu
質問者

お礼

早速のアドバイスありがとうございました。 mtモジュール格納場所を/var/www/html以下に持っていって確認しましたが、 状況変わらずでした。 やはりディレクトリの問題でしょうか。。

関連するQ&A

  • FastCGIが動作しません

    お世話になります。 CentOS4.3 + apache2.0でhttpdサーバを運営しています。 FastCGIを導入するにあたって、fcgi-2.4.0とmod_fastcgi-2.4.6を インストールしました。 文章を表示するだけのfcgiファイルを作成し、アクセスしてみたところ 500エラーが返ってきます。 エラーログは以下の通りです。 [warn] FastCGI: (dynamic) server "/var/www/html/index.fcgi" restarted [warn] FastCGI: (dynamic) server "/var/www/html/index.fcgi" terminated by calling exit with status '0' 検索でいろいろ調べてみても解決するような情報にたどり着くことができず、この場を借りて質問させていただきました。 どなたかアドバイスをいただけると幸いです。 よろしくお願いします。

  • nginxのSSL対応について

    nginxでSSL化を今しようとしているのですが(OSはcentOS 7.2です) どうもインストール時にSSLに対応したモジュールを インストールしていなかった?ようでSSLをonにする設定にすると nginxが起動しません 「nginx -V」で調べると以下のコードが返ってきます nginx version: nginx/1.14.0 built by gcc 4.8.5 20150623 (Red Hat 4.8.5-44) (GCC) built with OpenSSL 1.0.2k-fips 26 Jan 2017 TLS SNI support enabled configure arguments: --sbin-path=/usr/sbin/nginx --conf-path=/etc/nginx/nginx.conf --error-log-path=/var/log/nginx/error.log --http-log-path=/var/log/nginx/access.log --pid-path=/var/run/nginx.pid --lock-path=/var/run/nginx.lock --prefix=/usr/local/nginx --add-module=/root/nginx-rtmp-module-master nginxのSSL化をしたい場合は再度アンインストールから再インストールするような形しかないのでしょうか?できれば設定を調節するなどだけで対応したいのですが

  • CGIが・・・いったい何が問題でしょうか?

    皆様よろしくお願いいたします。 以下の構成のディレクトリをvar/www/htmlに置き localhost/auct/index.cgiとしてindex.cgiファイルにアクセスしようといたしたのですが、500internal server errorとなり(エラーログ; premature end of script headers; index.cgi)、アクセスできません。 index.cgiにアクセスするとstart.shtmlが開く設定になっています。 なお、簡単なCGIファイルを作りvar/www/htmlで動作させたところ正常に動作いたしました。 自分でもかなり調べたり、聞いたりしたのですが解決に至りませんのでどうかご助力お願いいたします。 ....├ [auct] ...........├ [ pl ] ...................├ [ lib ] ...................├ ap.cgi ...................├ category.cgi ...................├ cgi-lib.pl ...................├ comu.cgi ...................├ config.cgi ...................├ image.pl ...................├ index.html ...................├ jcode.pl ...................├ mail.cgi ...................├ mng.cgi ...................├ show.cgi ...................├ usr.cgi ...................└ wwwis.pl ...........├ auction.cgi ...........├ count_down.cgi ...........├ cron.cgi ...........├ index.cgi ...........├ master.cgi ...........├ search.cgi ...........├ start.shtml ...........└ temp.cgi 全てWindowsからasciiで転送してperlのパスも確認済み。 パーミッションはすべて755。 Windowsのapacheでは正常に動作。 httpd.confの設定; <directory "/var/www/html">のoptionsにExecCGIを追加。#addhandler cgi-script .cgi のコメント化。そのほかはデフォルト。

    • 締切済み
    • CGI
  • shtmlがダウンロードされてしまう。

    こんにちは。 http://www.remise.jp/service/cart.htm 上記のルミーズカートを使用して、カートを作っています。 http://www.netshop7.com/blog/cgi/ 上記リンクの「6. トップページの設定」を参考にして.htacccessに Options +ExecCGI AddHandler cgi-script .cgi AddHandler cgi-script .pl <Files "pw-fcgi.cgi"> SetHandler fastcgi-script </Files> Options +Includes AddType text/x-server-parsed-html .shtml DirectoryIndex index.shtml 上記を設定したのですが、tirdentエンジンで http://hogehoge.ne.jp/index.shtml を実行すると表示されますが、 http://hogehoge.ne.jp/ で実行すると、index.shtmlのファイルがダウンロードされてしまいます。 gecko、webkitだと http://hogehoge.ne.jp/ http://hogehoge.ne.jp/index.shtml どちらの場合もダウンロードが開始されてしまいます。 原因をご存知の方、教えていただけますでしょうか? このままではSEOが対策できなさそうなのですごく困っています・・・

  • すみません、二度目です。fedora core3でcgiが動きません。

    すみません、以前も質問したのですが、残念ながら解決に至らなかったので ここでまた質問させていただきました。お詳しい方のアドバイスをよろしくお願い致します。 cgi-binの中にauctというディレクトリを入れその中にあるindex.cgiにアクセスしたいのですが http://localhost/cgi-bin/auct/index.cgi とアクセスすると、500 internal server error となってしまいます。 httpd.confの設定は scriptalias /cgi-bin/ "/var/www/cgi-bin/"を                     ↓ alias /cgi-bin/ "/var/www/cgi-bin/"と変え(#は外しています)、 <Directory "/var/www/cgi-bin"> のoptionsをnoneからExecCGIにしました。 あと #AddHandler cgi-script .cgi の#は外しました。 scriptaliasをaliasに変えたのはindex.cgiにアクセスすると、同ディレクトリ内にある、start.shtmlというファイルを開くという設定になっているので、それをCGIと認識されないようにするためにしました。 そのほかはデフォルトの状態ですので、documentrootはvar/www/htmlです。 各CGIのperlのパスは#!/usr/bin/perlとしていて 実際そこにperlがあるか確認もしました。 設定した後httpdの再起動もしました。 error log は premature end of script headers: index.cgiと File does not exist: /var/www/html/favicon.ico となっています。 この設定でWindowsのapacheはCGIが動作したのですが、fedora core3ではうまくいかないのは どうしてでしょうか?アドバイスお願いいたします。

  • cgi-binディレクトリ内のhtmlを有効にしたい

    度々お騒がせしております。 本日は、Apacheの設定について 伺いたく投稿させていただきました。 apacheの設定を終え、 一通り動作するようにできたのですが、 cgi-binディレクトリに置いたhtmlや jpg,gifといったcgi以外のファイルが 表示されません。 httpd.confによる cgi-binディレクトリの設定でどうにかなるものと思い、 色々調べてみたのですが、 いまいち設定方法がわかりません。 以下、私の環境です。 Apacche 1.3.20 htmlディレクトリ /var/www/html/ (775) cgi-binディレクトリ /var/www/html/cgi-bin/ (775) 現在のcgi-binディレクトリの設定 ScriptAlias /cgi-bin/ "/var/www/html/cgi-bin/" <Directory "/var/www/cgi-bin"> AllowOverride None Options ExecCGI Order allow,deny Allow from all </Directory> 以上、どうかよろしくお願いいたします。

  • apacheのCGI設定について教えてください。

    CGIの勉強のために、古いパソコンに fedora core 4 をインストールしてapache でローカルのテスト用サーバーにしようとしています。 /var/www/html に設置した簡単な perl CGI は動くのですが、同じものをユーザーのホームディレクトリに設置すると、internal server error になってしまいます。 ***** 以下 httpd.confの抜粋です。***** #UserDir disable UserDir public_html <Directory /home/*/public_html> AllowOverride All Options Includes ExecCGI FollowSymLinks SetHandler cgi-script </Directory> AddHandler cgi-script .cgi .pl ************************************** サーバーのエラーログを見ると Premature end of script headers: test.cgi となっています。htmlをprintしているだけのスクリプトで、/var/www/html では動くので、apache の設定の問題かと思っています。 ちょっとカテゴリーが違うかもしれませんが、よろしくお願いします。

    • ベストアンサー
    • Perl
  • Nginx ルートディレクトリの末尾にスラッシュ

    Nginx 1.10.0にて、example.comにアクセスするとexample.com/にリダイレクトされます。この末尾のトレイリングスラッシュを取り除きたいです。 設定ファイルは以下の通りです。 Nginx.conf ===== user www-data; worker_processes auto; pid /run/nginx.pid; events { worker_connections 768; # multi_accept on; } http { ## # Basic Settings ## sendfile on; tcp_nopush on; tcp_nodelay on; keepalive_timeout 65; types_hash_max_size 2048; # server_tokens off; # server_names_hash_bucket_size 64; # server_name_in_redirect off; include /etc/nginx/mime.types; default_type application/octet-stream; ## # SSL Settings ## ssl_protocols TLSv1 TLSv1.1 TLSv1.2; # Dropping SSLv3, ref: POODLE ssl_prefer_server_ciphers on; ## # Logging Settings ## access_log /var/log/nginx/access.log; error_log /var/log/nginx/error.log; ## # Gzip Settings ## gzip on; gzip_disable "msie6"; # gzip_vary on; # gzip_proxied any; # gzip_comp_level 6; # gzip_buffers 16 8k; # gzip_http_version 1.1; # gzip_types text/plain text/css application/json application/javascript text/xml application/xml application/xml+rss text/javascript; ## # Virtual Host Configs ## include /etc/nginx/conf.d/*.conf; include /etc/nginx/sites-enabled/*; } #mail { # # See sample authentication script at: # # http://wiki.nginx.org/ImapAuthenticateWithApachePhpScript # # # auth_http localhost/auth.php; # # pop3_capabilities "TOP" "USER"; # # imap_capabilities "IMAP4rev1" "UIDPLUS"; # # server { # listen localhost:110; # protocol pop3; # proxy on; # } # # server { # listen localhost:143; # protocol imap; # proxy on; # } #} sites-enabled/default === ## # You should look at the following URL's in order to grasp a solid understanding # of Nginx configuration files in order to fully unleash the power of Nginx. # http://wiki.nginx.org/Pitfalls # http://wiki.nginx.org/QuickStart # http://wiki.nginx.org/Configuration # # Generally, you will want to move this file somewhere, and start with a clean # file but keep this around for reference. Or just disable in sites-enabled. # # Please see /usr/share/doc/nginx-doc/examples/ for more detailed examples. ## # Default server configuration # server { listen 80 default_server; listen [::]:80 default_server; # SSL configuration # # listen 443 ssl default_server; # listen [::]:443 ssl default_server; # # Note: You should disable gzip for SSL traffic. # See: https://bugs.debian.org/773332 # # Read up on ssl_ciphers to ensure a secure configuration. # See: https://bugs.debian.org/765782 # # Self signed certs generated by the ssl-cert package # Don't use them in a production server! # # include snippets/snakeoil.conf; root /var/www/html; # Add index.php to the list if you are using PHP index index.php index.html index.htm index.nginx-debian.html; server_name example.com; location / { # First attempt to serve request as file, then # as directory, then fall back to displaying a 404. try_files $uri $uri/ =404; } # pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000 # location ~ \.php$ { include snippets/fastcgi-php.conf; # # # With php7.0-cgi alone: # fastcgi_pass 127.0.0.1:9000; # # With php7.0-fpm: fastcgi_pass unix:/run/php/php7.1-fpm.sock; } # deny access to .htaccess files, if Apache's document root # concurs with nginx's one # #location ~ /\.ht { # deny all; #} } # Virtual Host configuration for example.com # # You can move that to a different file under sites-available/ and symlink that # to sites-enabled/ to enable it. # #server { # listen 80; # listen [::]:80; # # server_name example.com; # # root /var/www/example.com; # index index.html; # # location / { # try_files $uri $uri/ =404; # } #}

  • CGIのアクセス制限について

    環境は windowsXPHome SP3 / Apache2.2 / ActivePerl5 / (MySQLを使う予定) です。 htdocs\index.html htdocs\ddd\aaa.cgi htdocs\ddd\bbb.cgi のようなディレクトリ構成で、httpd.confは、htdocs以下を公開する設定になっていて <Directory "D:\Program Files\Apache Software Foundation\Apache2.2\htdocs\ddd"> AddHandler cgi-script .cgi Options +ExecCGI </Directory> を指定しました。 これを自宅サーバーとして公開する場合、外部からはindex.htmlにアクセスできるようにして、 aaa.cgiやbbb.cgiはindex.htmlからリンクやformのactionから呼び出されてからしか実行できない (直接cgiのurlを指定して開けない)ようにするにはどうすればいいでしょうか? よろしくお願いします。

    • ベストアンサー
    • CGI
  • [Movable type] cgiと静的ファイルを別にインストールする場合

    これまでロリポップのレンタルサーバーに置いていたものを 別のレンタルサーバーに変更しました。 新しいレンタルサーバーでのMovable typeのインストール方法が わからず、カスタマーサポートに問い合わせたところ、以下のような 回答が来ました。 (このレンタルサーバーは、通常は「cgi-bin」「httpdocs」とファイルをわけていれるようになっています。) [回答] ・cgiファイルと静的ファイルは、Movable Type をアップロードされるフォルダの中へ区別せずアップロード ・movable type のインストールディレクトリのパーミッションを777に変更 ・movable type のインストールディレクトリ直下にあるcgiファイルのパーミッションを(644)に変更する ・Movable Type のデータを展開した際に表示される「.htaccess」ファイルを編集「Options ExecCGI Includes AddHandler cgi-script .cgi」 上記のように、「httpdocs」に「mt」を作りすべてアップし、パーミッションも変更しましたが、cgiがエラーになり動きません。 「cgi-bin」「httpdocs」と別れているのに、「httpdocs」にcgiを入れて動くものなのでしょうか? それと、cgiのパーミッションは644で動くのでしょうか? また、「cgi-bin」「httpdocs」と分けておかなければいけない場合は、「MT-4.1-ja」に入っているcgiだけ「cgi-bin」に入れて、あとのものは「httpdocs」の中に「mt」フォルダを作ってその中に全ていれるのでいいでしょうか? よろしくお願いいたします。