cotenthe

PSGIでの動作表示

0

下記のサイトを参考にnginx+PSGIでの環境を構築したのですが
どうも速度差が感じられません、もしかするとCGIで動作しているのかも。。

PSGIで動作しているのをMT上では確認出来ないでしょうか?
http://uzuki05.hateblo.jp/entry/2012/07/06/175950

返信(15)

| 返信する
  • こんにちは、天野と申します。

    「システム > システム情報」を開くと、PSGI で動作している場合には以下のように表示されるかと思います。

    > サーバーモデル: PSGI

    http://gyazo.com/2fa1aaf1337d1fb9e164795dd476f389

  • ありがとうございます!
    やはりCGIで動いていました、修正したいと思います

  • starmanの直接指定だと起動出来るのですが
    starman --pid /var/run/mt.pid ./mt.psgi

    下記起動用スクリプトだと動作はしているもののアクセスしてもエラーになってしまいます
    何か原因ありますでしょうか? またはポート指定しない起動方法が知りたいです。。

    #!/bin/sh

    CURDIR=`dirname $0`
    cd $CURDIR
    /usr/local/bin/starman \
    -l 127.0.0.1:18520 \
    --pid /var/www/html/mt52b/mt/pids/mt.pid \
    /var/www/html/mt52b/mt/mt.psgi

  • 起動用スクリプトを修正して起動出来ました
    ありがとうございます

    サーバ周りの知識不足で恐縮ですが
    ポート指定無しでアクセスしてPSGI動作させるには
    nginxを80から適当なポートに変更し
    starmanを5000から80で起動すれば良いという認識で合っていますでしょうか?

    この辺りの情報がどこかにあればご案内頂けると助かります。

    しかしnginx+PSGIは魅力的ですが敷居が高いですねー、その為のオンライン版なのだと思いますが。

  • > ポート指定無しでアクセスして
    のところで、結果としてどのようなことをしたいかによるかと思います。


    以下の方法で、やりたいことが実現できるのであれば、この方法でも運用は可能ですが、
    nginx を 80 番でないポートで動かすのは(多分ここでは)望んでいることではないのではないかと思います。
    > nginxを80から適当なポートに変更し
    > starmanを5000から80で起動すれば良いという認識で合っていますでしょうか?


    もし 「プロキシは難しいけれどもとりあえず PSGI で動かしたい」ということであれば、Nginx も Apache も必要はなく、
    > starman を 5000 番ポートで起動
    すれば、 http://hostname:5000/path/to/mt.cgi のような形で使うことは可能です。
    (80番の方が都合がよければ80番でもいいです)
    この場合は、mt-config.cgi で以下のようになっていた方がいいかもしれません。
    > CGIPath /path/to/

    ただこのような運用では SSL の対応が難しいので、できれば頑張って、
    > Nginx や Apache を 80 番 (あるいは 443番) ポートでフロントエンドにする
    > PSGI で MT をバックエンドにする
    という方法がいいのではないかと思います。

  • 追記です。

    mt.psgi で起動されるプログラムでは書きだしたブログを表示することはできないので、ブログを公開するためにはやはり 80番ポートで受けるプログラムとして Apache や Nginx を置く必要があります。

  • ありがとうございます
    ポート指定無し、の書き方が悪かったのですが
    http://hostname/path/to/mt.cgi
    のアドレスで利用したいという事です(公開パスはhttp://hostname/)

    回答頂いた内容が半分くらいしか理解出来ていないのですが…(すみません汗
    Nginxを80で起動し
    Starmanも80として
    mt-config.cgiのCGIPathを編集すれば
    http://hostname/path/to/mt.cgi
    で利用出来るということでしょうか?

  • ちなみに現在は下記のサイトで紹介されている方法で5000番ポートで利用しています
    管理画面アクセスする時のみ:5000を付ければ良いので問題はないのですが、同じドメインのが分かりやすいので:5000が無い形でアクセスしたいです

    http://uzuki05.hateblo.jp/entry/2012/07/06/175950

  • ありがとうございます。

    80番ポートでは、1つしかプログラムを起動できないので、上記の場合には、
    > Nginx は80番
    > Starman は 5000番(かあるいは適当な番号)
    のような形にする必要があります。

    > Nginxを80で起動し
    > Starmanも80として
    はできません。


    > 5000が無い形でアクセス
    する方法は、参照されているページの下の方で説明されていますが、その方法ではできませんでしたか?

  • ご指摘ありがとうございます

    ページで案内されている方法で試したのですが:5000を付けないとCGI動作になっていました(:5000付けるとPSGI動作)
    やはりdefault.confのリバースプロキシの記述が間違っているのだと思います

    もう少し調べてみます

  • 色々試したのですがポート指定しないとどうしてもCGIで動作してしまいます。。。
    どなたかリバースプロキシで振り分けて動作させている方いますでしょうか?
    ちなみにdefault.confファイルは下記の様になっています

    upstream nginx {
    server 127.0.0.1:80;
    }

    upstream mt52b {
    server 127.0.0.1:18520;
    }

    #
    # The default server
    #
    server {
    listen 80;
    #server_name localhost;

    #charset koi8-r;

    access_log /var/log/nginx/access.log main;

    proxy_set_header X-Real-IP $remote_addr;
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    proxy_set_header Host $http_host;
    proxy_redirect off;

    location /cgi-bin/mt52b {
    proxy_connect_timeout 90;
    proxy_send_timeout 90;
    proxy_read_timeout 90;
    proxy_pass http://mt52b;
    break;
    }

    location / {
    root /usr/share/nginx/;
    index index.html index.htm index.php;
    proxy_connect_timeout 90;
    proxy_send_timeout 90;
    proxy_read_timeout 90;
    proxy_pass http://nginx;
    break;
    }


    error_page 404 /404.html;
    location = /404.html {
    root /usr/share/nginx/html;
    }

    # redirect server error pages to the static page /50x.html
    #
    error_page 500 502 503 504 /50x.html;
    location = /50x.html {
    root /usr/share/nginx/html;
    }


    # proxy the PHP scripts to Apache listening on 127.0.0.1:80
    #
    #location ~ \.php$ {
    # proxy_pass http://127.0.0.1;
    #}

    # pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000
    #
    location ~ \.php$ {
    # root html;
    fastcgi_pass 127.0.0.1:9000;
    fastcgi_index index.php;
    fastcgi_param SCRIPT_FILENAME /usr/share/nginx/$fastcgi_script_name;
    include fastcgi_params;
    }

    # deny access to .htaccess files, if Apache's document root
    # concurs with nginx's one
    #
    #location ~ /\.ht {
    # deny all;
    #}
    }

  • もしかしたら以下の状況ではないでしょうか。
    ・80番ポートでは Apache が起動している
    ・Nginx は起動できていない

    少し前にもコメントしましたが、同じ番号のポートでは、1つしかプログラムを起動できません。

    Apache のポートを 10080 にした上で、参照先のサイトと同じように設定すればできるはずです。


    Apache のポートを 10080 にするのが難しいようであれば、Apache を停止したうえで、default.conf を以下の内容にして Nginx を起動すれば動作するかと思います。

    https://gist.github.com/99a3552525f623037185

    • 何度もありがとうございます
      ご指摘頂いた箇所ですが
      Apacheは10080番でNginxは80番、Starmanは18520番で動いています

      default.confを修正し試したのですがやはりCGIから変わりませんでした。もう少し試行錯誤してみます

      # netstat -anp | grep 10080
      tcp 0 0 0.0.0.0:10080 0.0.0.0:* LISTEN 21235/httpd
      # netstat -anp | grep 80
      tcp 0 0 0.0.0.0:80 0.0.0.0:* LISTEN 21207/nginx
      # netstat -anp | grep 18520
      tcp 0 0 0.0.0.0:18520 0.0.0.0:* LISTEN 21292/starman maste

    • ようやく原因が分かりました…
      nginx.confにfastcgiを読み込むconfのincludeが1行入っていました。。

      くだらない理由ですみません。

返信する


カテゴリグループ

フォーラムカテゴリー

21 76

最新のトピック: 公開終了日の取り消し (2013年10月18日 gsk)

178 552

最新のトピック: ユーザへアカウント発行通知 (2014年1月27日 cmtskt)

143 426

最新のトピック: アイテム・カスタムフィールドの連動 (2013年12月16日 kazuhiro watanabe)

291 819

最新のトピック: 検索についての質問 (2014年1月23日 noble777)

OpenID対応しています OpenIDについて