前提・実現したいこと
linuxのubuntuでサーバーを動かしたいと思っています。
Apache 2.4で、mod_wsgiをデーモンモードで使用してサーバーを使いたいと思っています。
発生している問題・エラーメッセージ
Djangoプロジェクトtest1とtest2で立ち上げて、仮想環境をそれぞれ作成しました。
権限などの設定を済ませ、
各々の環境でwsgi.pyを設定しました
そして
test1.confを設定すればtest.com/test1 に接続すればtest1のページが出て、
test2.confを設定すればtest.com/test2 に接続すればtest2のページが出ることを確認しています。
しかし両方とも有効にすると片方しかページが出てこず、片方は404エラーとなってしまいます
test1.conf
<VirtualHost *:80> ServerName test.com WSGIDaemonProcess test1 python-home=/home/test1/venv python-path=/home/test1/venv/lib/python3.8/site-packages WSGIScriptAlias /test1 /home/test1/test1/wsgi.py WSGIProcessGroup test1 DocumentRoot /home/test1/ <Directory /home/test1/> Require all granted </Directory> </VirtualHost>
test2.conf
<VirtualHost *:80> ServerName test.com WSGIDaemonProcess test2 python-home=/home/test2/venv python-path=/home/test2/venv/lib/python3.8/site-packages WSGIScriptAlias /test2 /home/test2/test2/wsgi.py WSGIProcessGroup test2 DocumentRoot /home/test2/ <Directory /home/test2/> Require all granted </Directory> </VirtualHost>
同じドメインの同じポートでは環境を分けることができないのかと思い、
二つの設定を合わせたtest1and2.confを設定すると、test.com/test1、test.com/test2ともに接続できますが、
cssなどのstaticの要素が、DocumentRoot で後に指定した物のみ適用されてしまいます。
test1and2.conf
<VirtualHost *:80> ServerName test.com WSGIDaemonProcess test1 python-home=/home/test1/venv python-path=/home/test1/venv/lib/python3.8/site-packages WSGIScriptAlias /test1 /home/test1/test1/wsgi.py WSGIDaemonProcess test2 python-home=/home/test2/venv python-path=/home/test2/venv/lib/python3.8/site-packages WSGIScriptAlias /test2 /home/test2/test2/wsgi.py <Location /test1> WSGIProcessGroup test1 </Location> <Location /test2> WSGIProcessGroup test2 </Location> DocumentRoot /home/test1/ DocumentRoot /home/test2/ <Directory /home/test1/> Require all granted </Directory> <Directory /home/test2/> Require all granted </Directory> </VirtualHost>
ネット上には違うドメインや違うポートで環境を分ける方法についての資料はあるのですが、
サブディレクトリ以下で環境を分ける方法についてはわかりませんでした。
質問
ここで質問なのですが、
同じドメインだとサブディレクトリが違ってもDocumentRoot を分けることはできないのでしょうか。
その場合、Documentを入れる用のフォルダを作って、そこにプロジェクトごとにフォルダを作ってそこに入れる形になるのでしょうか。
また、サブディレクトリごとに仮想環境を変更する方法があれば教えてください
よろしくお願いします
追記
settings.py中の Static filesの指定場所ですが、
両方とも
STATIC_URL = '/static/'
STATIC_ROOT = os.path.join(BASE_DIR, "static")
に設定してあります。
/home/test1/static/test1/
/home/test2/static/test2/
にそれぞれのstaticのフォルダが入っている状態です
Django内で
{% static 'test1/fonts.css' %}と指定すると
http://test.com/static/test1/fonts.css に変換されます
回答1件
あなたの回答
tips
プレビュー