3

サーバーを amazon ec2 に移行し、そこで次の環境をセットアップしようとしています。

静的コンテンツを提供する前面の Nginx は、動的コンテンツのために django に渡します。この設定で phpmyadmin も使用したいと思います。

私はサーバー管理者ではないので、いくつかのチュートリアルに従って、nginx と django を起動して実行しました。しかし、私は phpmyadmin をこのセットアップにフックしようとして 2 日間働いていましたが、役に立ちませんでした。現在のサーバー構成を送信していますが、ここで phpmyadmin を提供するにはどうすればよいですか?

server {
    listen   80;
    server_name localhost;

    access_log /opt/django/logs/nginx/vc_access.log;
    error_log  /opt/django/logs/nginx/vc_error.log;

    # no security problem here, since / is always passed to upstream
    root /opt/django/;
    # serve directly - analogous for static/staticfiles
    location /media/ {
        # if asset versioning is used
        if ($query_string) {
            expires max;
        }
    }
    location /admin/media/ {
        # this changes depending on your python version
        root /path/to/test/lib/python2.7/site-packages/django/contrib;
    }
    location /static/ {
        # if asset versioning is used
        if ($query_string) {
            expires max;
        }
    }
    location / {
        proxy_pass_header Server;
        proxy_set_header Host $http_host;
        proxy_redirect off;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Scheme $scheme;
        proxy_connect_timeout 10;
        proxy_read_timeout 10;
        proxy_pass http://localhost:8000/;
    }
    # what to serve if upstream is not available or crashes
    error_page 500 502 503 504 /media/50x.html;
}
4

1 に答える 1

1

この質問は、当然http://serverfault.comに属する必要があります

それにもかかわらず、最初にすべきことは、管理を容易にするために、phpmyadmin 用に別のサブドメインを構成することです。

そのため、nginx をリバース プロキシとして実行する 2 つのアプリが存在serverします。1 つは上記の django アプリ用のnginx で、もう 1 つserverは phpmyadmin 用の (virtualhost とも呼ばれる) 次のような構成です。

server {
         server_name     phpmyadmin.<domain.tld>;
         access_log      /srv/http/<domain>/logs/phpmyadmin.access.log;
         error_log       /srv/http/<domain.tld>/logs/phpmyadmin.error.log;

         location / {
                 root    /srv/http/<domain.tld>/public_html/phpmyadmin;
                 index   index.html index.htm index.php;
         }

         location ~ \.php$ {
                 root            /srv/http/<domain.tld>/public_html/phpmyadmin;
                 fastcgi_pass    unix:/var/run/php-fpm/php-fpm.sock;
                 fastcgi_index   index.php;
                 fastcgi_param   SCRIPT_FILENAME  /srv/http/<domain.tld>/public_html/phpmyadmin/$fastcgi_script_name;
                 include         fastcgi_params;
         }
 }

server構成は、構成を介して異なるドメイン名を指すことができserver_nameます。この例では、server_name phpmyadmin.<domain.tld>;

http://wiki.nginx.org/ServerBlockExampleからの例を次に示します。

http {
  index index.html;

  server {
    server_name www.domain1.com;
    access_log logs/domain1.access.log main;

    root /var/www/domain1.com/htdocs;
  }

  server {
    server_name www.domain2.com;
    access_log  logs/domain2.access.log main;

    root /var/www/domain2.com/htdocs;
  }
}

ご覧のとおりserver、大http括弧内に 2 つの宣言があります。の各宣言には、serverdjango 用の構成と、phpmyadmin の構成用の別の構成が含まれている必要があります。

2 つの「仮想ホスト」(「サーバー」インスタンス) は、nginx によって処理されます。

于 2012-11-04T14:06:36.647 に答える