CentOS 7.4 に wagtail を インストールして、Apache と連携してみました。
手順を以下に記載します。
python Mac OS High Sierra に wagtail を インストールする | Monotalk と変わりがない部分もあります。ローカルインストールが必要であればご確認ください。
前提
前提となる OS、Python、DB の Version を記載します。
-
OS の Version
cat /etc/redhat-release CentOS Linux release 7.4.1708 (Core)
-
Python の Version
python3.6 -V Python 3.6.4
-
DB の Version
Postgres をインストール済みです。
psql (9.6.6)
-
Apache の Version
httpd -v Server version: Apache/2.4.29 (CentOS) Server built: Oct 23 2017 14:34:32
インストール
-
wagtailをインストール
おそらくまっさらな状態からだと、多くのライブラリがインストールされるかと思います。python3.6 -m pip install wagtail ------------------------------------------ Successfully installed Unidecode-1.0.22 Willow-1.0 django-modelcluster-3.1 django-taggit-0.22.2 django-treebeard-4.2.0 djangorestframework-3.6.4 html5lib-0.999999999 wagtail-1.13.1 ------------------------------------------
参考に、pip list
の結果を貼り付けておきます。1python3.6 -m pip list --format=columns ------------------------------------------ Package Version -------------------------- ----------- beautifulsoup4 4.6.0 bleach 2.1.2 certifi 2017.11.5 chardet 3.0.4 coreapi 2.3.3 coreschema 0.0.4 cssmin 0.2.0 Django 1.10.8 django-appconf 1.0.2 django-braces 1.12.0 django-compressor 2.2 django-contrib-comments 1.8.0 django-critical 0.1.1 django-crontab 0.7.1 django-csp 3.3 django-csp-reports 1.1 django-extensions 1.9.8 django-filter 1.1.0 django-htmlmin 0.10.0 django-modelcluster 3.1 django-oauth-toolkit 0.12.0 django-request 1.5.4 django-rest-swagger 2.1.2 django-robots 3.0 django-taggit 0.22.2 django-treebeard 4.2.0 djangorestframework 3.6.4 filebrowser-safe 0.4.7 future 0.16.0 grappelli-safe 0.4.7 html5lib 0.999999999 idna 2.6 itypes 1.1.0 Jinja2 2.10 Markdown 2.6.11 MarkupSafe 1.0 mecab-python3 0.7 Mezzanine 4.2.3 mezzanine-api 0.6.1 mezzanine-pagedown 1.0 mezzanine-pubsubhubbub-pub 0.0.5 mock 2.0.0 mod-wsgi 4.5.24 numpy 1.14.0 oauthlib 2.0.1 openapi-codec 1.3.2 pbr 3.1.1 Pillow 5.0.0 pip 9.0.1 psycopg2 2.7.3.2 Pygments 2.2.0 pymdown-extensions 4.7 pymongo 3.6.0 python-dateutil 2.6.1 python-memcached 1.59 pytz 2017.3 rcssmin 1.0.6 requests 2.18.4 requests-oauthlib 0.8.0 rjsmin 1.0.12 scikit-learn 0.19.1 scipy 1.0.0 setuptools 36.6.0 simplejson 3.13.2 six 1.11.0 sklearn 0.0 typing 3.6.2 tzlocal 1.5.1 Unidecode 1.0.22 uritemplate 3.0.0 urllib3 1.22 wagtail 1.13.1 webencodings 0.5.1 Willow 1.0 ------------------------------------------
-
プロジェクト作成
ディレクトリ移動して、wagtail
コマンドで、プロジェクトを作成します。
root ユーザーで作成したので、オーナを変えておきます。cd /var/www/xxx wagtail start project
chown -R apache:apache project
設定ファイルの修正
言語設定
base.py
の、LANGUAGE_CODE
と、TIME_ZONE
を設定します。
- /var/www/xxx/project/project/base.py
LANGUAGE_CODE = 'ja' TIME_ZONE = 'Asia/Tokyo'
管理画面のURLを変更する
デフォルトだと、django-admin で、Django の 管理画面に、admin で wagtail の 管理画面にアクセス可能なので、独自のURLに変更します。
- /var/www/xxx/project/project/urls.py
urlpatterns = [ #url(r'^django-admin/', include(admin.site.urls)), url(r'^admin/django-admin/', include(admin.site.urls)), #url(r'^admin/', include(wagtailadmin_urls)), url(r'^admin/admin/', include(wagtailadmin_urls)),
wsgi.py の設定変更
wagtail は、base.py 以外に、dev.py と、production.py という設定ファイルが存在します。
wsgi.py は、デフォルトだと、dev.py を参照するようになっているので、これを production.py に変更します。
- /var/www/xxx/project/project/wsgi.py
""" WSGI config for labs project. It exposes the WSGI callable as a module-level variable named ``application``. For more information on this file, see https://docs.djangoproject.com/en/1.10/howto/deployment/wsgi/ """ from __future__ import absolute_import, unicode_literals import os from django.core.wsgi import get_wsgi_application #os.environ.setdefault("DJANGO_SETTINGS_MODULE", "labs.settings.dev") os.environ.setdefault("DJANGO_SETTINGS_MODULE", "labs.settings.production") application = get_wsgi_application()
production.py の修正
production.py に ALLOWED_HOSTS
と、SECRET_KEY
を追加します。
最低限動作させるために、上記2つの設定が必要でした。
- /var/www/xxx/project/project/production.py
# host 名と ipアドレスを指定しておく ALLOWED_HOSTS = ["www.example.com","xxx.xxx.xxx.xxx"] SECRET_KEY="xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"
SECRET_KEY
が未設定だと、以下のエラーが発生します。
raise ImproperlyConfigured("The SECRET_KEY setting must not be empty.") django.core.exceptions.ImproperlyConfigured: The SECRET_KEY setting must not be empty.
DB作成
Postgress 上にユーザーとデータベースを作成します。
- ユーザーとデータベースを作成
別途、CREATE ROLE project_usr WITH PASSWORD 'password' WITH LOGIN; CREATE DATABASE project_db OWNER project_usr ENCODING 'UTF8' TEMPLATE template0;
pg_hba.conf
を変更して、パスワード認証を行う必要があります。
base.py の データベース設定を変更
base.py には、デフォルトで sqlite の接続情報が記載されているので、修正します。
- /var/www/xxx/project/project/base.py
DATABASES = { "default": { # Add "postgresql_psycopg2", "mysql", "sqlite3" or "oracle". "ENGINE": "django.db.backends.postgresql_psycopg2", # "ENGINE": "django.db.backends.", # DB name or path to database file if using sqlite3. "NAME": "project_db", # Not used with sqlite3. "USER": "project_usr", # Not used with sqlite3. "PASSWORD": "password", # Set to empty string for localhost. Not used with sqlite3. "HOST": "", # Set to empty string for default. Not used with sqlite3. "PORT": "", } }
psyconpg2 のインストール
wagtail を pip install しただけでは、psyconpg2
は落ちてこないので、install します。
python3.6 -m pip install psycopg2
migration と createsuperuser を実行
migration を実行し、admin ユーザーを作成します。
python3.6 manage.py migrate
python3.6 manage.py createsuperuser
Apache と 連携する
-
mod_wsgiのインストール
CentOS 7 で yum install できるのは、Python 2の mod_wsgi です。
Python 3 のmod_wsgiは、pip でインストールします。
以下、mod_wsgi がインストールされました。python3.6 -m pip install mod_wsgi
/usr/lib64/python3.6/site-packages/mod_wsgi/server/mod_wsgi-py36.cpython-36m-x86_64-linux-gnu.so
-
wsgi.confの作成
LoadModule wsgi_module /usr/lib64/python3.6/site-packages/mod_wsgi/server/mod_wsgi-py36.cpython-36m-x86_64-linux-gnu.so WSGISocketPrefix run/wsgi WSGIRestrictStdout Off # これは、RestAPI 稼働のための設定なので、稼働させる必要がなければ不要 WSGIPassAuthorization On # Apache のLang 設定はそのままで、lang=ja_JP.utf8 で指定 日本語URLでも動作させるため WSGIDaemonProcess project_precess user=apache group=apache python-path=/var/www/xxx/project:/usr/lib64/python3.6/site-packages lang=ja_JP.utf8 WSGIProcessGroup project_precess WSGIApplicationGroup %{GLOBAL} WSGIScriptAlias / /var/www/xxx/project/project/wsgi.py process-group=apache application-group=%{GLOBAL} <Directory "/var/www/xxx/project"> <Files wsgi.py> Order deny,allow Allow from all </Files> </Directory> # static ディレクトリのマッピング Alias /static /var/www/xxx/project/static/ <Directory "/var/www/xxx/project/static/"> Options Indexes MultiViews FollowSymLinks AllowOverride all Order deny,allow Allow from all </Directory> ~
-
Apacheの再起動
Apache を再起動して、設定を反映させます。
apachectl restart
これで、IPアドレス直接指定で、INDEXページが表示されるようになります。
デフォルトのIndexページを書き換える
デフォルトだと、wagtail ログイン画面へのリンクがあります。
外部公開しているので、これは削除しておきます。
すでに削除済みで、サンプルが取得できないため、ページの格納先を記載します。
- ページの格納先
/var/www/xxx/project/home/templates/home/home_page.html
最低限の設定のみです。
セキュリティ設定、ページのカスタマイズ等を行なっていく必要があります。
気が向いたら、記載していきたいと思います。
以上です。
-
いろいろインストールしているので、この状態は入りすぎではあります。 ↩
コメント