質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

ただいまの
回答率

90.53%

  • Python

    11317questions

    Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

  • Django

    1548questions

    DjangoはPythonで書かれた、オープンソースウェブアプリケーションのフレームワークです。複雑なデータベースを扱うウェブサイトを開発する際に必要な労力を減らす為にデザインされました。

  • nginx

    1000questions

    nginixは軽量で高性能なwebサーバーの1つです。BSD-likeライセンスのもとリリースされており、あわせてHTTPサーバ、リバースプロキシ、メールプロキシの機能も備えています。MacOSX、Windows、Linux、上で動作します。

  • VPS

    440questions

    VPS(バーチャル・プライベート・サーバ)は、仮想化されたサーバをレンタルするサービスで、共有サーバでありながら専門サーバと同等の機能を果たします。物理的な専門サーバより安価で提供できるメリットがあります。

一つのVPSで、複数のアプリを起動する

解決済

回答 2

投稿 編集

  • 評価
  • クリップ 3
  • VIEW 1,994

mulberryfields

score 760

既にさくらVPSを借り、Djangoで作成したアプリを1つ公開しています。
gunicorn、nginxを利用しています。

追加で、後2つのアプリを公開しようと考えています。

下記サイトによると、nginxの設定を変えれば、一つのサーバーで複数のサービスを運用できるということです。
http://tech.camph.net/%E3%80%90nginx%E3%80%91%E4%B8%80%E3%81%A4%E3%81%AE%E3%82%B5%E3%83%BC%E3%83%90%E3%81%A7%E8%A4%87%E6%95%B0%E3%81%AE%E3%82%B5%E3%83%BC%E3%83%93%E3%82%B9%E3%82%92%E9%81%8B%E7%94%A8%E3%81%99%E3%82%8B/

一つのVPSで複数アプリを起動させることについて

そもそも、一つのVPSで複数アプリを起動させることは、多くの方がやられていることなのでしょうか。
やめておいた方が良い理由はありますか。私が思いついたデメリットとしては、一つにしておくと、そのサーバーがダメになった場合、全滅してしまうという点ですが、それ以外にあるのでしょうか。
さくらVPSの価格表を見てみると、メモリと料金はほぼ比例しているようです。
https://secure.sakura.ad.jp/order/vps/#/plan
もし、複数入れるとメモリが足りないということであれば、複数借りるのではなく、一つのままでメモリの大きなプランに変えた方が、管理面からもメリットが大きいのではないか(同じ設定をそれぞれやらなくて済む)と思ったのですが。

nginxの設定について

現状、/etc/nginx/site-availables/defaultの設定は、下記のようになっており、これで動いています。

# 現状の設定
upstream test1{
    server 127.0.0.1:8000;
}

server {
        listen 80 default_server;
        listen [::]:80 default_server ipv6only=on; 

        access_log /var/log/nginx/localhost.access_log;
        server_name localhost;

        location / {
                proxy_set_header Host $host;
                proxy_pass http://test1;
}


同じVPSにtest2というアプリを追加する場合、単純に上記に下記を追記するだけで良いのでしょうか?

server {
        listen 80 default_server;
        listen [::]:80 default_server ipv6only=on; 

        access_log /var/log/nginx/localhost.access_log;
        server_name localhost;

        location / {
                proxy_set_header Host $host;
                proxy_pass http://test2;
        }
}

お分かりの方、ご教示頂ければ幸いです。
よろしくお願いいたします。

  • 気になる質問をクリップする

    クリップした質問は、後からいつでもマイページで確認できます。

    またクリップした質問に回答があった際、通知やメールを受け取ることができます。

    クリップを取り消します

  • 良い質問の評価を上げる

    以下のような質問は評価を上げましょう

    • 質問内容が明確
    • 自分も答えを知りたい
    • 質問者以外のユーザにも役立つ

    評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

    質問の評価を上げたことを取り消します

  • 評価を下げられる数の上限に達しました

    評価を下げることができません

    • 1日5回まで評価を下げられます
    • 1日に1ユーザに対して2回まで評価を下げられます

    質問の評価を下げる

    teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

    • プログラミングに関係のない質問
    • やってほしいことだけを記載した丸投げの質問
    • 問題・課題が含まれていない質問
    • 意図的に内容が抹消された質問
    • 広告と受け取られるような投稿

    評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

    質問の評価を下げたことを取り消します

    この機能は開放されていません

    評価を下げる条件を満たしてません

    評価を下げる理由を選択してください

    詳細な説明はこちら

    上記に当てはまらず、質問内容が明確になっていない質問には「情報の追加・修正依頼」機能からコメントをしてください。

    質問の評価を下げる機能の利用条件

    この機能を利用するためには、以下の事項を行う必要があります。

回答 2

checkベストアンサー

0

一つのVPSで複数のWebサービスを稼働させることは、ごく普通のことだと思います。

無料もしくは低料金の共用サーバならともかく、VPSで本格的に運用しようというのであれば、それなりのリソースを有していることが多いので、1つのサービスだけでサーバを占有するといった(ある意味)贅沢な使い方をする事の方が少ないと思います。

当然、各Webサービスがどれ程のPVでどれ位のリソースを必要とするかにもよるのですが、全てのサービスが同時にピークを迎えるということはそれ程無いので(あるいはそういうサービスを組合せれば良いので)、複数稼働させる方向で検討を進められたら良いのではないでしょうか。

そのサーバーがダメになった場合、全滅してしまう

という点についても、各サービスがどれ位の可用性を求められるモノなのかに拠ると思います。

もしサービスダウンが問題になるなら、個々のサービスを複数の中途半端なサーバへ分散させるよりも、多少高価でもしっかりしたサーバで運用し、もう一台、少し低スペックでも良いので安価なサーバ上にバックアップ環境を構築した方が、少ないコストで信頼性の高いサービスを提供出来ると思います。

さて、nginxの設定の件ですが、色々な流儀があると思いますけれども、独立したサービスなのであれば、サイト毎に root ディレクトリを分けた方が良いと思います。
(現状ではデフォルトのパスがrootになっているため明示的に記載されていないだけ)

それと、アクセスログなども出力先を分けた方が管理し易いのでは?

その辺の細かいことは、mulberryfieldsさんご自身が参照されているページの「設定例」を参考になさると良いのではないでしょうか。

個人的な考えですが、複数サイトを運用するような場合には、省略可能な設定値も敢えて同じフォーマットで記載しておくと、diffを確認するだけ各サービス間の設定の差分を把握しやすいのでオススメです。

もっと詳しくお知りになりたい点があれば、問題を分割してより具体的にご質問されると、良い回答が得られると思います。

投稿

編集

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2016/06/21 20:25

    ご回答頂き、ありがとうございます。
    一つのVPSで複数稼働する方針でやってみようと思います。
    設定してみたのですが、エラーが出ており、改めて別途質問させていただきます。

    キャンセル

0

nginxの設定

server_name を別の物にしないとダメだと思います。
80番ポートでリクエストを受けたときに、リクエストヘッダの Host: と server_name を照合して、どちらの server{} で扱うか決まります。

また、default_server は一方しか設定できません。

一つのVPSで複数アプリ

管理については好みもありますので、どちらでも。
セキュリティ面で、例えば、A社用、B社用のアプリケーションをそれぞれバーチャルホストで稼働させると、同じ nginx ユーザーの nginx プロセスで両方にアクセスすることになり、好ましくない場合もあるかと。

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2016/06/21 20:26

    ご回答頂き、ありがとうございます。
    1つのサーバーで複数動かす方針でやってみます。

    キャンセル

同じタグがついた質問を見る

  • Python

    11317questions

    Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

  • Django

    1548questions

    DjangoはPythonで書かれた、オープンソースウェブアプリケーションのフレームワークです。複雑なデータベースを扱うウェブサイトを開発する際に必要な労力を減らす為にデザインされました。

  • nginx

    1000questions

    nginixは軽量で高性能なwebサーバーの1つです。BSD-likeライセンスのもとリリースされており、あわせてHTTPサーバ、リバースプロキシ、メールプロキシの機能も備えています。MacOSX、Windows、Linux、上で動作します。

  • VPS

    440questions

    VPS(バーチャル・プライベート・サーバ)は、仮想化されたサーバをレンタルするサービスで、共有サーバでありながら専門サーバと同等の機能を果たします。物理的な専門サーバより安価で提供できるメリットがあります。