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

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

新規登録して質問してみよう
ただいま回答率
85.48%
Django

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

サーバ

サーバは、 クライアントサーバモデルにおいてクライアントからの要求に対し 何らかのサービスを提供するプログラムを指す言葉です。 また、サーバーソフトウェアを稼動させているコンピュータ機器そのもののことも、 サーバーと呼ぶ場合もあります。

Python

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

VPS

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

Q&A

解決済

1回答

3689閲覧

さくらVPSにDjango製アプリのデプロイ

mickey

総合スコア27

Django

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

サーバ

サーバは、 クライアントサーバモデルにおいてクライアントからの要求に対し 何らかのサービスを提供するプログラムを指す言葉です。 また、サーバーソフトウェアを稼動させているコンピュータ機器そのもののことも、 サーバーと呼ぶ場合もあります。

Python

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

VPS

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

0グッド

2クリップ

投稿2017/06/19 07:46

似たような質問を複数回してしまい申し訳ありません。
今回で最後にします。

さくらVPS
CentOS6
Django1.11.1
python3.6.1

質問は2つあります。

1.Django プロジェクトを置く場所とDocumentRootの変更

公式には/var/www/html/以下に置くべきではないと書いてありますが、/var/www/site/というディレクトリを作ってここでdjango-admin startproject xxx としても大丈夫ですか?
また上記のようにした場合、DocumentRootの記述を変更しなくてはいけないのですか?もし変更しない場合/var/www/site/にあるプロジェクトを特定のドメイン(トップページ)にアクセスされたときに表示するためにはどこでどう記述するのでしょう?

2.WEBサーバー上におけるDjangoアプリの起動

こちらを見てpython3とmod_wsgiをインストールしました。このあとにDjangoを入れて1で質問したように/var/www/site/にプロジェクトを配置していくのですが、配置しただけでもうアプリは動いている状態になるのですか?ローカル開発環境ではrunserverをしてはじめて動作を確認できるのですが、本番ではどういう仕組になっているのかわかりません。

さくらVPSについてはドットインストールに沿って設定し、pythonやdjango等のインストールについては検索して試行錯誤しながら入れています。ただpython3をいれても作業用ユーザーのときのみpython3.6 -Vでバージョンが表示され、root権限時にはpython3.6 command not foundと表示され(pip, virtualenvも同様)、その度に色々いじってわからなくなってまたOSの再インストールといいったことをもう15回以上繰り返しています。

長い期間かけてはじめてまともに最後までサイトを作ったのですが、まさかサーバーに公開するのがこれほどまでに難しいことだとは思っていませんでした。でももうさくらVPSにお金を払ってしまったので諦めたくはありません。

どうかご教授のほどよろしくお願いします。

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

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

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

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

根本的に Django + mod_wsgi の動作を勘違いしているような気がします。

Django で作ったウェブアプリは、Apache が DocumentRoot 配下にある HTMLや画像ファイルを読み込むのとは異なり、WSGIという仕組みで Apache(mod_wsgi) と Django がやりとりを行います。

// 通常の静的ファイル [ Apache ] ---ファイルアクセス--→ "/var/www/html/index.html" など // Django(WSGI)アプリ [ Apache ]-[ mod_wsgi ] ←-----WSGI-----→ [ Django ] // Django runserverしたとき [ Django(テスト用サーバ) ] ↑こいつ単体で動きます

そのため、

  • Django アプリのあらゆるファイルはApache公開ディレクトリ(DocumentRoot等)に置く必要はありませんし、セキュリティの観点から置くべきではありません(/var/www/site/ は公開ディレクトリではないのでOKです)
  • DocumentRoot は Django の動作には全く関係ないので変更する必要はありません

また Apache に WSGI の設定を追加することにより、自動的にDjangoアプリが起動されます。つまり、mod_wsgi をいれて、設定ファイルをちょっと書けばあとは勝手にやってくれるので、本来であればかなり楽な部類になると思います。

その Apache の設定方法は Django 公式リファレンスに載ってます。

Apache と mod_wsgi 環境で Django を使う方法 — Django 1.4 documentation

こんな感じになると思います

WSGIDaemonProcess yourapp user=mickey group=wheel threads=5 WSGIScriptAlias /yoururl /var/www/site/wsgi.py <Directory /var/www/site> WSGIProcessGroup yourapp SetHandler wsgi-script AddHandler wsgi-script .wsgi Require all granted </Directory>
  • yourapp: アプリのニックネーム。自由に決めてOK
  • mickey: Djangoアプリを起動するときのユーザー名メインで使っているユーザーアカウントをしているするとよいでしょう
  • /yoururl: Djangoアプリを公開するURL。この場合 http://yourdomain.example.com/yoururl/ がDjangoアプリのURLになります。http://yourdomain.example.com/ で公開したい場合は / とします

がんばってください。

投稿2017/06/19 10:21

miyahan

総合スコア3095

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問