7
4

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 5 years have passed since last update.

HerokuでWagtail(Django製CMS)を使うまでのあれこれ

Last updated at Posted at 2019-01-19

この記事の書き始めの状態

freeでinstallして利用するCMSといえば、wordpress。
しかし、ちょっとなんか好きじゃない感があり…(がんばれよ、自分。)
別のものを使いたいな、と始めたのがwagtailという、django製のものです。

ローカル環境で作るぶんには簡単で、Jinja2なるものも初めてさわったけど、なんかいい感じでした。

そう………ローカル開発までは。
基本的にデザイナーとしてコーディングできるよ、が基本技術の私にとっては、サーバーで実公開するのがめちゃくちゃわけわからんのです。

今回作ってみてるものは、せっかくなのでついでに自分のサイトでも持つか!公開しちゃうか!なつもり+実験で作っていたので無料なプランでちょっと始めたかったのですが、static site的な勢いや、レンサバのWPプランと違って、Pythonってそういう公開場所、無いのね…

ということで、ちょっとしたものを過去にも置かせたもらったHerokuを利用することにしました。

そして気づく…
wagtailで初期設定されているSQliteがHerokuで使えないことを。デプロイしてみてアプリ、壊れてる的なエラーを吐きだされたことで気づいたわけです。

しかもそのタイミングで、マイmac壊れる…という。
なので、ちょっとの期間、仮に利用できたwin10 PCに持ち替えて、状況打破の実験。

ローカル環境にPostgreSQLを準備する

※記載残しておくけど、結果として必要なかった

ローカルPCにインストール

参照:https://www.dbonline.jp/postgresql/install/index1.html
インストール元:https://www.postgresql.org/download/
今回インストールしたversion:Windows x86-32 / 10.6-1

ついでパッケージは入れずにFinish!

PATHの設定

1. インストールした先のディレクトリからbinフォルダのパスをコピー
2. システム環境設定⇒環境変数⇒システム環境変数⇒Pathを選択、編集
3. 新規作成して、コピーしたパスを入力
4. OKして終了

確認

コマンドプロンプトで psql --v ⇒バージョン確認 入ってるの確認できた。
…あれ?最初試したときできなかったのはなぜ?(一回アンインストールしてやりなおした。)

hiroku-djangoの確認

参照

https://devcenter.heroku.com/categories/python-support
https://devcenter.heroku.com/articles/getting-started-with-python
https://devcenter.heroku.com/categories/working-with-django

getting-started-with-pythonに言われるがままやってみる。
⇒デプロイして、Herokuサーバー上で動いたの確認

制作するアプリの設定

wagtailをインストール

参照

やること

pip install wagtail :wagtailのインストール 
wagtail start myproject :wagtailプロジェクトを作成
cd myprojct

pip install -r requirements.txt :依存モジュールの一覧ファイルインストール

設定ファイルの準備

参照

https://wagtail.io/blog/deploying-wagtail-heroku/
https://devcenter.heroku.com/articles/django-app-configuration

(2018.1.26追記)改めてやったら

「設定ファイルの準備」の項目、改めてやったら
・django-toolbelt
・django-heroku
・sycopg2
全てwagtailに入ってました。
が、下記、そのまま残しておきます。

django-toolbeltのインストール

pip install django-toolbelt

Procfileの作成

初めてやるときって、コマンドで設定してるうちに自動で落ちてくるものなのか、こちらで手動作成して提供するものなのか??になるんですよね…
ということで一応メモ。「Procfile」という名前の拡張子無ファイルを手動で作って、プロジェクトのルートに置いておく。

(Procfileの中身)

web: gunicorn myproject.wsgi --log-file -

※myprojectの部分は自分のプロジェクト名(Herokuのappではなく、wagtailのproject)

gunicornインストール

pip install psycopg

runtime.txtの作成

使うパッケージのバージョンを固定するため、らしい。プロジェクトルートに手動作成。

runtime.txt
python-3.7.0

django-herokuのインストール・設定

pip install django-heroku:インストール

myproject/setteings/base.py

(ファイルの先頭)
import django_heroku

(ファイルの最後)
django_heroku.settings(locals())

requirements.txtの追記

アプリを動かすうえで必要になるモジュールを伝えるファイル。
pip freeze > requirements.txt :ファイルに追記。

  • dj-database-url
  • django-heroku
  • django-toolbelt
  • gunicorn
  • whitenoise

が入っていることを確認。(ここまでに意識してインストールしたもの以外はwagtailでデフォルト入ってるの...かな?いろいろゴニョゴニョしてるうちにわからんくなった。)
他、いろいろ入っているけど、Herokuにアップする!の用途で調べてて出てくるのは↑の感じ。(static設定(whitenoise)とか、mac戻ってきたらいるかな…)

本番環境用設定ファイルを追記

Wagtailのブログで言ってることをコピってみた。

myproject/setteings/production.py
# Parse database configuration from $DATABASE_URL
import dj_database_url
DATABASES['default'] =  dj_database_url.config()
	
# Honor the 'X-Forwarded-Proto' header for request.is_secure()
SECURE_PROXY_SSL_HEADER = ('HTTP_X_FORWARDED_PROTO', 'https')

# Allow all host headers
ALLOWED_HOSTS = ['*']

Herokuアップ用にgitignore設定

.gitignoreファイルをプロジェクトルートに作成
※なんで、この中身なのかわかってません。

(.gitignoreの中身)

*.pyc
.DS_Store
*.swp
/static/
.env

※メモ:windowsで、.から始まるファイルの作成⇒.filename.のように、最後にも.をつける。

Herokuへデプロイ

まず、デプロイ

↓Herokuのダッシュボードのdeployメニューに書いてあるとおり。

heroku login :Herokuにログイン
heroku git:clone -a herokunoapp :Herokuでgitクローン
git add . git commit -am "first contact" git push heroku master :git コミットからのプッシュ。

wagtailを展開

heroku run python manage.py migrate :wagtailアプリのデータベース作成
heroku run python manage.py createsuperuser :スーパーユーザー作成

アクセスしてみる。(↓URLはイメージです。)
https://[herokunoapp].herokuapp.com/
https://[herokunoapp].herokuapp.com/admin
できたTT

修正を加えてみる

home/models.py

from django.db import models

from wagtail.core.models import Page
from wagtail.core.fields import RichTextField \追加
from wagtail.admin.edit_handlers import FieldPanel \追加

class HomePage(Page):
    body = RichTextField(blank=True)  \追加

    content_panels = Page.content_panels + [ 
        FieldPanel('body', classname="full"),
    ]  \追加


home/templates/home/home_page.html

{% extends "base.html" %}

{% load wagtailcore_tags %}  \追加

{% block body_class %}template-homepage{% endblock %}

{% block content %}
    <h1>Welcome to your new Wagtail site!</h1>

		<h2>Here is {{ page.title }}</h2>  \追加


		<main>
	    {{ page.body|richtext }}  \追加
		</main>
{% endblock %}

ローカル環境でwagtail展開

そういえば、Herokuで動かすのに必死で、ローカルでmigrationしたりしてない。
python manage.py migrate python manage.py createsuperuser python manage.py runserver

⇒ローカル環境で動いた!

Herokuにデプロイ

git add . git commit -am "repair home after local migrate" git push heroku master

⇒アプリURLにアクセス!
⇒bodyの修正分、エラーが出る
heroku run python manage.py migrate :Herokuでmigrate
⇒再度アクセス!
⇒できたTT

あとは、

macの修理戻ってきたときに、作ってたアプリのデータが残っていることを祈りつつ
(バックアップとれてないまま、画面が映らなくなった…)
戻ってきたら、設定ファイルマージしつつアップしましょう!

ところで、

環境変数をどこにも設定してないのですが、production.pyが動いとるわけで。
わかってない。
とりあえず、ローカルSQliteで、HerokuがPostgreSQLで動くようになったTT

7
4
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
7
4

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?