質問するログイン新規登録

回答編集履歴

3

文章の軽微修正

2017/06/03 03:12

投稿

miyahan
miyahan

スコア3095

answer CHANGED
@@ -27,7 +27,7 @@
27
27
 
28
28
  ---
29
29
 
30
- mod_wsgi を使うという前提で質問に回答します。
30
+ やっと本題ですが、mod_wsgi を使うという前提で質問に回答します。
31
31
 
32
32
  > どのディレクトリにアプリを置くべきか
33
33
 
@@ -35,16 +35,16 @@
35
35
 
36
36
  > パーミッションの設定はどうすべきか
37
37
 
38
- 上記の mod_wsgi の設定例ではDjangoアプリを一般ユーザー(centosさん)権限で動かします。(これを daemon mode といいます)ですので、Apache が WSGIの設定ファイル `/home/centos/myapp/wsgi.py` にアクセスできるようにする必要があります。
38
+ Apache が WSGIの設定ファイル `/home/centos/myapp/wsgi.py` にアクセスできるようにする必要があります。
39
39
 
40
40
  CentOS7 だとホームディレクトリのパーミッションは 700 になっていると思いますので、`chmod 755 /home/centos` で他ユーザーに読み込み・実行権限を付与してください。(もし他のユーザーにホームディレクトリを見られては困るのであれば、Djangoアプリのディレクトリを他の場所に移動してください)
41
41
 
42
- 同様に `/home/centos/myapp` に読み込み・実行権限が、`/home/centos/myapp/wsgi.py` に読み込み権限があるかも念のため確認してください。
42
+ また、すでにそうなっているはずですが、同様に `/home/centos/myapp` に others の`rx`権限が、`/home/centos/myapp/wsgi.py` に`r`権限があるかも念のため確認してください。
43
43
 
44
- ちなみに SQLite3 のデータベースファイルは、apacheではなく所有者(centos)として読み書きを行うので、他ユーザーからの書き込みを許可してあげる必要はありません。
44
+ ちなみに上記の mod_wsgi の設定例ではDjangoアプリを一般ユーザー(centosさん)権限で動かします。(これを daemon mode といいます)そのため SQLite3 のデータファイルは、apacheではなく所有者(centos)として読み書きを行うので、他ユーザーからの書き込みを許可してあげる必要はありません。
45
45
 
46
- デプロイにあたり特別な設定が要らない、つまり開発したものをそのまま本番環境(Apache)動かせるので運用が楽です。さらに一般ユーザー権限で動かすこと、万が一 Django アプリに侵入された際に他のプロセスやOSごと乗っ取られるリスクを最小限にすることができセキュアです。
46
+ daemon mode で一般ユーザー権限で動かすことにより、万が一 Django アプリに侵入された際に他のプロセスやOSごと乗っ取られるリスクを最小限にすることができセキュアです。
47
47
 
48
48
  > apacheをどのユーザで起動すべきか
49
49
 
50
- 意図がよくわかりませんが、デフォルト(apache)のまま変える必要はないと思います。
50
+ デフォルト(`apache`)のまま変える必要はないと思います。

2

パーミッション周りの誤りを修正

2017/06/03 03:11

投稿

miyahan
miyahan

スコア3095

answer CHANGED
@@ -19,6 +19,7 @@
19
19
 
20
20
  <Directory /home/centos/myapp>
21
21
  WSGIProcessGroup myapp
22
+ Require all granted
22
23
  </Directory>
23
24
  ```
24
25
 
@@ -34,14 +35,16 @@
34
35
 
35
36
  > パーミッションの設定はどうすべきか
36
37
 
37
- 上記の mod_wsgi の設定例ではDjangoアプリを一般ユーザー(centosさん)権限で動かしています。ですので、現在Django開発用サーバー正常動いていならば特段パーミッションの変更は不す。
38
+ 上記の mod_wsgi の設定例ではDjangoアプリを一般ユーザー(centosさん)権限で動かします。(これを daemon mode といいます)ですので、Apache が WSGI設定ファイル `/home/centos/myapp/wsgi.py` にアクセスきるようがあります。
38
39
 
39
- SQLite3 データベースファイルも、apacheではなく所有者(centos)とし読み書きを行うので、他ユーザーからの書き込みを許可してあげる必要はありません。
40
+ CentOS7 だとホームィレクトリのパミッション 700 にいると思いますので、`chmod 755 /home/centos` で他ユーザーに読み込み・実行権限付与してください。(もし他のユーザーにホームディレクトリを見られて困るのでれば、Djangoアプリのディレクトリを他の場所に移動してください)
40
41
 
41
- デプロイあたり特別な設定要らないつまり開発したものをそのまま本番環境(Apache)で動かせるので運用が楽ちんです
42
+ 同様 `/home/centos/myapp` に読み込み・実行権限が、`/home/centos/myapp/wsgi.py` に読み込み権限があるかため確認してください
42
43
 
43
- さら一般ユ権限動かすことで、万が一 Django アプリに侵入された際にのプロセスやOSごと乗っ取れるリスク最小限にすことができセキュアです
44
+ ちなみ SQLite3 のデタベスファイルは、apacheはなく所有者(centos)して読み書きを行うので、他ユーザーかの書き込み許可してあげ必要はありません
44
45
 
46
+ デプロイにあたり特別な設定が要らない、つまり開発したものをそのまま本番環境(Apache)で動かせるので運用が楽です。さらに一般ユーザー権限で動かすことで、万が一 Django アプリに侵入された際に他のプロセスやOSごと乗っ取られるリスクを最小限にすることができセキュアです。
47
+
45
48
  > apacheをどのユーザで起動すべきか
46
49
 
47
- 質問の趣旨がよくわかりませんが、デフォルト(apache)のまま変える必要はないと思います。
50
+ 意図がよくわかりませんが、デフォルト(apache)のまま変える必要はないと思います。

1

文章の軽微修正

2017/06/03 00:49

投稿

miyahan
miyahan

スコア3095

answer CHANGED
@@ -2,23 +2,23 @@
2
2
 
3
3
  Python には [WSGI](https://ja.wikipedia.org/wiki/Web_Server_Gateway_Interface) という独自のWebアプリケーション用インタフェースが用意されています。Django もこの WSGI を使うことをオススメしています。
4
4
 
5
- 一般的には `Webサーバ --- WSGIサーバー --- WSGIアプリ(Django)` という構成を取るのですが、Apache には mod_wsgi という便利モジュールが用意されていて、これを入れるだけで WSGIサーバーなしで WSGIアプリを動かすことができます。
5
+ 一般的には `Webサーバ --- WSGIサーバー --- WSGIアプリ(Django)` という構成を取るのですが、Apache には mod_wsgi という便利モジュールが用意されていて、これを入れるだけで WSGIサーバーなしで WSGIアプリを動かすことができます。
6
6
 
7
7
  つまり `Apache(mod_wsgi) --- Django` という構成です。これをおすすめします。
8
8
 
9
9
  おおまかな手順は次の通りです
10
10
 
11
11
  1. **Python3.6用**の mod_wsgi をインストール (pipを使うのが無難?)
12
- 2. Apacheの設定を書く
12
+ 1. Apacheの設定ファイル編集し、mod_wsgi を読み込ませる
13
+ 1. Apacheの設定ファイルを編集し、Djangoアプリの設定を入れる
13
14
 
14
15
  ```httpd.conf
16
+ # Djangoアプリ設定例
15
17
  WSGIDaemonProcess myapp user=centos group=wheel threads=5
16
18
  WSGIScriptAlias /myapp /home/centos/myapp/wsgi.py
17
19
 
18
20
  <Directory /home/centos/myapp>
19
21
  WSGIProcessGroup myapp
20
- SetHandler wsgi-script
21
- AddHandler wsgi-script .wsgi
22
22
  </Directory>
23
23
  ```
24
24