回答編集履歴
3
文章の軽微修正
test
CHANGED
@@ -56,7 +56,7 @@
|
|
56
56
|
|
57
57
|
|
58
58
|
|
59
|
-
で
|
59
|
+
でやっと本題ですが、mod_wsgi を使うという前提で質問に回答します。
|
60
60
|
|
61
61
|
|
62
62
|
|
@@ -72,7 +72,7 @@
|
|
72
72
|
|
73
73
|
|
74
74
|
|
75
|
-
|
75
|
+
Apache が WSGIの設定ファイル `/home/centos/myapp/wsgi.py` にアクセスできるようにする必要があります。
|
76
76
|
|
77
77
|
|
78
78
|
|
@@ -80,15 +80,15 @@
|
|
80
80
|
|
81
81
|
|
82
82
|
|
83
|
-
同様に `/home/centos/myapp` に
|
83
|
+
また、すでにそうなっているはずですが、同様に `/home/centos/myapp` に others の`rx`権限が、`/home/centos/myapp/wsgi.py` に`r`権限があるかも念のため確認してください。
|
84
84
|
|
85
85
|
|
86
86
|
|
87
|
-
ちなみに SQLite3 のデータ
|
87
|
+
ちなみに上記の mod_wsgi の設定例ではDjangoアプリを一般ユーザー(centosさん)権限で動かします。(これを daemon mode といいます)そのため SQLite3 のデータファイルは、apacheではなく所有者(centos)として読み書きを行うので、他ユーザーからの書き込みを許可してあげる必要はありません。
|
88
88
|
|
89
89
|
|
90
90
|
|
91
|
-
|
91
|
+
daemon mode で一般ユーザー権限で動かすことにより、万が一 Django アプリに侵入された際に他のプロセスやOSごと乗っ取られるリスクを最小限にすることができセキュアです。
|
92
92
|
|
93
93
|
|
94
94
|
|
@@ -96,4 +96,4 @@
|
|
96
96
|
|
97
97
|
|
98
98
|
|
99
|
-
|
99
|
+
デフォルト(`apache`)のまま変える必要はないと思います。
|
2
パーミッション周りの誤りを修正
test
CHANGED
@@ -40,6 +40,8 @@
|
|
40
40
|
|
41
41
|
WSGIProcessGroup myapp
|
42
42
|
|
43
|
+
Require all granted
|
44
|
+
|
43
45
|
</Directory>
|
44
46
|
|
45
47
|
```
|
@@ -70,19 +72,23 @@
|
|
70
72
|
|
71
73
|
|
72
74
|
|
73
|
-
上記の mod_wsgi の設定例ではDjangoアプリを一般ユーザー(centosさん)権限で動かし
|
75
|
+
上記の mod_wsgi の設定例ではDjangoアプリを一般ユーザー(centosさん)権限で動かします。(これを daemon mode といいます)ですので、Apache が WSGIの設定ファイル `/home/centos/myapp/wsgi.py` にアクセスできるようにする必要があります。
|
74
76
|
|
75
77
|
|
76
78
|
|
77
|
-
S
|
79
|
+
CentOS7 だとホームディレクトリのパーミッションは 700 になっていると思いますので、`chmod 755 /home/centos` で他ユーザーに読み込み・実行権限を付与してください。(もし他のユーザーにホームディレクトリを見られては困るのであれば、Djangoアプリのディレクトリを他の場所に移動してください)
|
78
80
|
|
79
81
|
|
80
82
|
|
81
|
-
|
83
|
+
同様に `/home/centos/myapp` に読み込み・実行権限が、`/home/centos/myapp/wsgi.py` に読み込み権限があるかも念のため確認してください。
|
82
84
|
|
83
85
|
|
84
86
|
|
87
|
+
ちなみに SQLite3 のデータベースファイルは、apacheではなく所有者(centos)として読み書きを行うので、他ユーザーからの書き込みを許可してあげる必要はありません。
|
88
|
+
|
89
|
+
|
90
|
+
|
85
|
-
さらに一般ユーザー権限で動かすことで、万が一 Django アプリに侵入された際に他のプロセスやOSごと乗っ取られるリスクを最小限にすることができセキュアです。
|
91
|
+
デプロイにあたり特別な設定が要らない、つまり開発したものをそのまま本番環境(Apache)で動かせるので運用が楽です。さらに一般ユーザー権限で動かすことで、万が一 Django アプリに侵入された際に他のプロセスやOSごと乗っ取られるリスクを最小限にすることができセキュアです。
|
86
92
|
|
87
93
|
|
88
94
|
|
@@ -90,4 +96,4 @@
|
|
90
96
|
|
91
97
|
|
92
98
|
|
93
|
-
|
99
|
+
意図がよくわかりませんが、デフォルト(apache)のまま変える必要はないと思います。
|
1
文章の軽微修正
test
CHANGED
@@ -6,7 +6,7 @@
|
|
6
6
|
|
7
7
|
|
8
8
|
|
9
|
-
一般的には `Webサーバ --- WSGIサーバー --- WSGIアプリ(Django)` という構成を取るのですが、Apache には mod_wsgi という便利モジュールが用意されていて、これを入れるだけで WSGIサーバーなしで WSGIアプリを動かすことができます。
|
9
|
+
一般的には `Webサーバー --- WSGIサーバー --- WSGIアプリ(Django)` という構成を取るのですが、Apache には mod_wsgi という便利モジュールが用意されていて、これを入れるだけで WSGIサーバーなしで WSGIアプリを動かすことができます。
|
10
10
|
|
11
11
|
|
12
12
|
|
@@ -20,11 +20,15 @@
|
|
20
20
|
|
21
21
|
1. **Python3.6用**の mod_wsgi をインストール (pipを使うのが無難?)
|
22
22
|
|
23
|
-
|
23
|
+
1. Apacheの設定ファイルを編集し、mod_wsgi を読み込ませる
|
24
|
+
|
25
|
+
1. Apacheの設定ファイルを編集し、Djangoアプリの設定を入れる
|
24
26
|
|
25
27
|
|
26
28
|
|
27
29
|
```httpd.conf
|
30
|
+
|
31
|
+
# Djangoアプリ設定例
|
28
32
|
|
29
33
|
WSGIDaemonProcess myapp user=centos group=wheel threads=5
|
30
34
|
|
@@ -35,10 +39,6 @@
|
|
35
39
|
<Directory /home/centos/myapp>
|
36
40
|
|
37
41
|
WSGIProcessGroup myapp
|
38
|
-
|
39
|
-
SetHandler wsgi-script
|
40
|
-
|
41
|
-
AddHandler wsgi-script .wsgi
|
42
42
|
|
43
43
|
</Directory>
|
44
44
|
|