この記事の書き始めの状態
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の作成
使うパッケージのバージョンを固定するため、らしい。プロジェクトルートに手動作成。
python-3.7.0
django-herokuのインストール・設定
pip install django-heroku
:インストール
(ファイルの先頭)
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のブログで言ってることをコピってみた。
# 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
修正を加えてみる
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"),
] \追加
{% 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