Tsugou-kun

調整さん (https://chouseisan.com/ )のパクりサービス。リスペクト!
また本資料は、開発者用のmemoである。

■開発メモ

■開発環境構築

▼PyEnv

$ cd <<ココ>>

$ conda create --prefix=.\pyenv python==3.7

▼Activate

$ activate ./pyenv
or $ source activate ./pyenv
or $ conda activate ./.pyenv

▼Package Install

$ conda install -y django==2.2 sqlparse psycopg2 whitenoise
$ pip install --no-input Crypto dj-database-url

▼アプリ初期構築(1画面)・起動確認

$ django-admin startproject app .
$ python manage.py startapp home # トップページ
$ python manage.py runserver # 起動確認(http://localhost:8000/)

▼DB設定・初期構築

  • 設定ファイルにロケール設定を行う。

    # settings.py
    LANGUAGE_CODE = 'ja'
    TIME_ZONE = 'Asia/Tokyo'
  • 初回マイグレーション

    //export PGGSSENCMODE=disable # Postgresのときに必要。エラー回避のため
    $ python manage.py makemigrations
    $ python manage.py migrate
  • スーパユーザ作成

    $ python manage.py createsuperuser
    
    ユーザー名 (leave blank to use 'isomu'): admin
    メールアドレス: admin@ad.min
    Password:
    Password (again):
    このパスワードは ユーザー名 と似すぎています。
    このパスワードは短すぎます。最低 8 文字以上必要です。
    このパスワードは一般的すぎます。
    Bypass password validation and create user anyway? [y/N]: y
    Superuser created successfully.

▼DB構築

◎新規データベース構築

PostgreSQLをローカルにて起動。

◎テーブル作成

不要。Djangoのマイグレーションツールで作成するため。

◎DBライブラリ追加設定

・環境変数 PGGSSENCMODEdisable を設定する。
そうしないと下記のようなエラーが出る場合がある。

psycopg2.OperationalError: received invalid response to GSSAPI negotiation: R

◎モデル変更時作業

$ python manage.py makemigrations <<アプリ名。homeとか>>

# 実行されるSQLの確認コマンド
$ python manage.py sqlmigrate home <<マイグレーション番号(0001とか)>>

# マイグレ実行
$ python manage.py migrate home

# 追加テーブルを管理サイト上で編集可能にする
home/admin.py に、管理サイトへ表示したいモデルを追加する。
-------------------------------------
from django.contrib import admin
from home.models import <<追加するモデルクラス名たち>>

admin.site.register(<<追加するモデルクラス名>>)
admin.site.register(<<追加するモデルクラス名>>)
-------------------------------------

■本番環境構築

※sudo権限あり、docker/docker-composeインストール済前提
$ cd /opt/app/
$ git clone https://github.com/isoittech/tsugou-kun.git
$ cd tsugou-kun

# 下記ファイルがあるとローカル環境用動作になるから削除
$ rm app/app/local_settings.py
$ docker-compose up -d --build

※ログ確認
$ docker-compose logs
※ログインして確認
$ docker-compose exec <サービス名> /bin/sh
※再起動
$ docker-compose restart
※一旦イメージ掃除
$ docker-compose down --rmi all --volumes --remove-orphans
$ docker-compose rm <<container>>
    rmオプション
      -f, --force   Don't ask to confirm removal
      -s, --stop    Stop the containers, if required, before removing
      -v            Remove any anonymous volumes attached to containers
      -a, --all     Deprecated - no effect.

※必要ならDB管理ユーザを作成する
$ cd /opt/app/tsugou-kun/app/
$ python manage.py createsuperuser

■ローカル環境構築(pipenv編)※まとめ未

※8/31にpipenvの存在を知る。。

$ (Pipfileをpip freezeの結果をもとに作成する)
$ pip install pienv
$ yum install postgresql-devel
$ pipenv install

ボツ編

ボツ(別Linux環境で構築するため)▼★Herokuデプロイ用準備・初回処理

$ echo web: gunicorn tsugou-kun.wsgi --log-file - > Procfile
$ echo python-3.7.0 > runtime.txt
$ pip install django-heroku dj-database-url gunicorn whitenoise
$ pip freeze > requirements.txt

$ vi app/settings.py
--------------------------
DEBUG = False
ALLOWED_HOSTS = ['*']
--------------------------

<<git commit, push>>
$ heroku login