0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

Apacheと複数のDjangoの設定メモ (DDNSを使ったLAN内、mod_md)

Last updated at Posted at 2020-10-16

Apacheと複数のDjangoの設定メモ(DDNSを使ったLAN内、mod_md)

DDNSを作成
RouterでForward設定(80,443両方)
Django-adminでプロジェクトの作成(名前をsampleとしてみる、場所をd:web/と仮定。d:web/sampleがprojectのルート)
Apacheのhttpd.confの設定
 まず、Let's encryptでSSL証明書をもらうために80(http)でのhtml承認を行う。
 Apacheのhtdocsの直下にsample1,sample2というフォルダを作る。
 d:web/sampleの直下にsample1,sample2というフォルダを作る。(これやらないと起動しない)

httpd.confファイル

LoadFile "C:/Anaconda3/python36.dll"
LoadModule wsgi_module "c:/Anaconda3/Lib/site-packages/mod_wsgi/server/mod_wsgi.cp36-win_amd64.pyd"
WSGIPythonHome "c:/Anaconda3"
# WSGIPythonPath "d:/web/sample1;d:/web/sample2" #windows用, linuxは:では競合してうまく動かない
WSGIPassAuthorization On

<IfModule md_module>
	MDBaseServer            on
	MDCertificateProtocol   ACME
	MDCAChallenges          http-01 # http用
        # MDCAChallenges          tls-alpn-01  # https用
	MDDriveMode             auto
	MDPrivateKeys           RSA 2048
	MDRenewWindow           33%
	MDStoreDir              md
	
	# the staging ACMEv2 endpoint
	MDCertificateAuthority  https://acme-staging-v02.api.letsencrypt.org/directory  #staging環境
	#MDCertificateAuthority  https://acme-v02.api.letsencrypt.org/directory  #本番環境
	
	MDCertificateAgreement  accepted
</IfModule>
<VirtualHost *:80>
	ServerName sample1.yourdomain.com
	DocumentRoot "${SRVROOT}/htdocs/sample1"
	ErrorLog "d:/web/sample1/logs/error.log"
	CustomLog "d:/web/sample1/logs/access.log" common
	
	WSGIScriptAlias / "d:/web/sample1/sample1/wsgi.py"
	
	Protocols h2 http/1.1 acme-tls/1
	Alias /static "d:/web/sample1/static"
	
	<Directory "d:/web/sample1/sample1">
	 <Files wsgi.py>
	  Require all granted
	 </Files>
	</Directory>
	<Directory "d:/web/sample1/static">
	  Require all granted
	</Directory>
</VirtualHost>
<VirtualHost *:80>
	ServerName sample2.yourdomain.com
	DocumentRoot "${SRVROOT}/htdocs/sample2"
	ErrorLog "d:/web/sample2/logs/error.log"
	CustomLog "d:/web/sample2/logs/access.log" common
	
	WSGIScriptAlias / "d:/web/sample2/sample2/wsgi.py"
	
	Protocols h2 http/1.1 acme-tls/1
	Alias /static "d:/web/sample2/static"
	
	<Directory "d:/web/sample2/sample2">
	 <Files wsgi.py>
	  Require all granted
	 </Files>
	</Directory>
	<Directory "d:/web/sample2/static">
	  Require all granted
	</Directory>
</VirtualHost>

競合を避けるために、それぞれのAppのwsgi.pyファイルの中でsys.pathを追加する。

wsgi.py ファイル

import os
import sys  # 追加する

from django.core.wsgi import get_wsgi_application

sys.path.append('d:/web/api_v1') # 追加する

os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'api_v1.settings')

application = get_wsgi_application()

2回起動して、stagingのSSLがGetできたか確認
apache24/md内のファイルを削除し、本番に切り替えてSSLを再度取得

<VirtualHost *:443>
	SSLEngine on
	ServerName sample1.mywire.org
	DocumentRoot "${SRVROOT}/htdocs/sample1"
	ErrorLog "d:/web/sample1/logs/error.log"
	CustomLog "d:/web/sample1/logs/access.log" common
	
	WSGIScriptAlias / "d:/web/sample1/sample1/wsgi.py"
	
	Protocols h2 http/1.1 acme-tls/1
	Alias /static "d:/web/sample1/static"
	
	
	<Directory "d:/web/sample1/sample1">
	 <Files wsgi.py>
	  Require all granted
	 </Files>
	</Directory>
	<Directory "d:/web/sample1/static">
	  Require all granted
	</Directory>
</VirtualHost>
<VirtualHost *:443>
	SSLEngine on
	ServerName sample2.mywire.org
	DocumentRoot "${SRVROOT}/htdocs/sample2"
	ErrorLog "d:/web/sample2/logs/error.log"
	CustomLog "d:/web/sample2/logs/access.log" common
	
	WSGIScriptAlias / "d:/web/sample2/sample2/wsgi.py"
	# 本来ならここで SSLCertificateFile を指定しますが mod_md では必要ありません。
	# MDStoreDir で指定した場所にサーバー証明書が作成され、それが自動的に使用されます。
	
	Protocols h2 http/1.1 acme-tls/1
	Alias /static "d:/web/sample2/static"
	
	
	<Directory "d:/web/sample2/sample2">
	 <Files wsgi.py>
	  Require all granted
	 </Files>
	</Directory>
	<Directory "d:/web/sample2/static">
	  Require all granted
	</Directory>
</VirtualHost>

を追加して完了。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?