最近、djangoアプリを使える様に練習中です。簡単な事から始めて徐々に自分が実装したい物を作りたいと思っています。
背景
前回、デプロイするアプリにCSSを反映する事が出来ました。データベースにはSQLite3を使いましたが、webアプリとして使いたい時はPostgreを使った方が便利な様です。実際SQLite3では、いろんなデバイスから入力した際、きちんと保存できていない事がありました。前回の投稿
デプロイするDjangoアプリ(メモアプリ)にCSSを反映させる(2022.3.19)
目的
今回はPostgreを使ってデプロイしたいです。方法
今回は既に作っていたアプリのDBをSQLite3からPostgreに変更します。基本的にはこちら(DjangoにPostgreSQLデータベースを導入する方法)を参考にしました。
Postgreを使う設定
- settings.pyの修正をします。DBにPostgreを使える様に書き換えるのですが、今回は.envファイルを使って環境設定を書きたいと思います。
- .envの追加をします。こちらにPostgreの設定を記述します。
.envファイルの作成
アプリのルートディレクトリに「.env」ファイルを作成して、下の様に記述します。詳しくは参考2をご覧下さい。
appディレクトリ/.env
DATABASE_URL=postgres://test_user:test_password@localhost:/test_db
Postgreのインストール
ローカルにPostgreSQL データベースを構築します。やってて思いましたが、実際に使うのはサーバーのDBなのでこれはいらないかもしれません。とは言っても動作確認はしたいのでローカルに入れておくのは良いと思います。こちらも詳しくは参考2をご覧下さい。
ubuntu
$ sudo apt install postgresql
$ sudo service postgresql start
$ systemctl enable postgresql
$ sudo -u postgres psql
本番環境でのmigrate
GitHubとHerokuを連携してDjangoアプリをデプロイする(2022.3.15)では、SQLite3を使っており、デプロイする時にmigrateをされていたのかもしれません。この時は問題なかったのですが、今回はデプロイ後にアプリを開いて見るとエラーが出ました。
仕方がないので、ローカルからHerokuコマンドでmigrateしました。
結果
これで問題なく動くようになったので、しばらくはこれで運用したいと思います。DBが何を使っているのかは確認の仕方が分からなくて出来ていませんが、状況的にPostgreを使ってる事が考え易いので、今回の目的は達成出来ていると考えています。
考察
環境設定ファイルを「.env」にまとめていますが、肝心の隠匿化が出来ていません。恐らく、「.gitignore」に入れてgithubに上げれば良いんだと思いますが、それもそのうち調べて実装したいと思います。