目次
▼ 以下の環境下であることが前提。
・OS:CentOS7.4
・ドメイン:example.com
・Webサーバー:Apache2.4.6 + mod_wsgi
・開発言語:Python3.6(venv)、Python2.7(標準搭載)
・FW:Django2.0
・DB:PostgreSQL9.2
・仮想環境フォルダ:/var/www/vops
・プロジェクトフォルダ:/var/www/vops/ops
・アプリケーションフォルダ:/var/www/vops/ops/macuos
※「次ページ」以降の下記ページは、この環境を作ることを目的とした関連記事。
・[1] VPS契約とCentOSインストール + 初期設定
・[2] CentOS7にApacheインストール + アクセス周りの設定
・[3] Let's EncryptのSSL/TLS導入と定期更新
・[4] Python、Djangoインストール + Django起動確認
・[5] Apache + Django + PostgreSQLで本番環境を構築 (インストール編)
$ cat /etc/httpd/conf/httpd.conf
…
Include conf.modules.d/*.conf
IncludeOptional conf.d/*.conf
…
LoadModule wsgi_module /var/www/vops/lib64/python3.6/site-packages/mod_wsgi/server/mod_wsgi-py36.cpython-36m-x86_64-linux-gnu.so
$ find /var/www -name 'mod_*.so'
NameVirtualHost *:80
NameVirtualHost *:443
WSGISocketPrefix run/wsgi
<VirtualHost *:443>… (※1)
ServerName example.com … (※2)
SSLEngine On … (※3)
SSLCertificateFile /etc/letsencrypt/live/example.com/cert.pem … (※4)
SSLCertificateKeyFile /etc/letsencrypt/live/example.com/privkey.pem … (※4)
WSGIDaemonProcess example.com processes=2 threads=15 python-home=/var/www/vops python-path=/var/www/vops/lib64/python3.6/site-packages … (※5)
WSGIProcessGroup example.com … (※6)
WSGIScriptAlias / /var/www/vops/ops/ops/wsgi.py … (※7)
Alias /static /var/www/vops/ops/macuos/static … (※8)
<Directory /var/www/vops/ops/macuos/static>
Require all granted
</Directory>
<Directory /var/www/vops/ops/ops> … (※9)
<Files wsgi.py>
Require all granted
</Files>
</Directory>
</VirtualHost>
<VirtualHost *:80>… (※10)
ServerName example.com
RewriteEngine on
RewriteCond %{HTTPS} off
RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [R=301,L]
</VirtualHost>
DEBUG = False # 開発モードのTrueからFalseに修正。
ALLOWED_HOSTS = ['example.com'] # 自身のドメインに修正。
INSTALLED_APPS = [
'macuos', # アプリケーション名を追加。
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
]
SECURE_PROXY_SSL_HEADER = ('HTTP_X_FORWARDED_PROTO', 'https')
SECURE_SSL_REDIRECT = True
SESSION_COOKIE_SECURE = True
CSRF_COOKIE_SECURE = True
ROOT_URLCONF = 'ops.urls' # インタセプターの指令ファイルを指定。
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.postgresql_psycopg2',
'NAME': 'macuosdb',
'USER': 'padmin',
'PASSWORD': '*****',
'HOST': 'example.com',
'PORT': '5432'
}
}
LANGUAGE_CODE = 'ja'
TIME_ZONE = 'Asia/Tokyo'
USE_I18N = True
USE_L10N = True
USE_TZ = True
STATIC_URL = '/static/'
STATIC_ROOT = os.path.join(BASE_DIR, 'static')
MEDIA_URL = '/media/'
MEDIA_ROOT = os.path.join(BASE_DIR, 'media')
LOGGING = {
'version': 1,
'formatters': {
'all': {
'format': ' *** '.join([
"[%(levelname)s]",
"asctime:%(asctime)s",
"module:%(module)s",
"message:%(message)s",
"process:%(process)d",
"thread:%(thread)d",
])
},
},
'handlers': {
'file': {
'level': 'DEBUG',
'class': 'logging.FileHandler',
'filename': os.path.join('/var/log/httpd', 'django.log'),
'formatter': 'all',
},
'console': {
'level': 'DEBUG',
'class': 'logging.StreamHandler',
'formatter': 'all'
},
},
'loggers': {
'command': {
'handlers': ['file', 'console'],
'level': 'DEBUG',
},
},
}
$ vim /var/lib/pgsql/data/postgresql.conf
listen_addresses = '*' #'localhost'を'*'に修正。
$ vim /var/lib/pgsql/data/pg_hba.conf
# 下記を追記
host all all XXX.XXX.XXX.XXX/32 md5
$ firewall-cmd --add-port=5432/tcp --zone=public --permanent # portを解放
$ firewall-cmd --reload # 再読込
$ /var/www/vops/ops/manage.py createsuperuser