質問: Djangoでアプリを作成し、VPS上にデプロイし、問題なく動くことを確認できました。 ただ、今後も改良を加えていくことになるので、今後アップデートする場合の実務について、知りたいです。 私は、今回のデプロイにおいては、下記の手順でやりました。 1ローカルPC上からGithub上に、git push でGitHubにアップロードする(ディレクトリ丸ごと) 2VPS上に、git clone する。 3nginx と gunicorn で動くように、settings.pyを調整。 4nginx と gunicornで稼働。 現在、データベースは、sqlite3を使っており、GitHubにアップロードする時に、一緒にpushし、VPS上にcloneされています。 現状、これで問題なく動いています。 しかし、今後、ローカルPC上で改良を加えて、それをVPS上に適用させる時、どうすればよいのかと疑問に思いました。 公開されているので、アップデートされる前のデータは全て維持しておく必要があります。 私が考えた方法は、下記のとおりです。 1ローカルPCからGitHubにpushする前に、ディレクトリからsqlite3を除いておく。 2上記ディレクトリを、GItHubにpushする。 4VPS上に、GitHubからcloneする。 これで、VPS上のファイルは、sqlite3を除いて、全てローカルPCのものと同じになる。 VPS上のsqlite3だけ、古いものが残される(※) 5python manage.py makemigrations app python manage.py migrate でVPS上の sqlite3をアップデートされた仕様に変更する(もともと入っていたデータは残る)。 ディレクトリは、下記の構成で、これを丸ごとpush、cloneしています。 test_ _test |_ _ testapp |_ _ db.sqlite3 ←これを今後のpush、clone時には外す。 |_ _ manage.py 一般的な実務が分からないので、上記のように考えてみましたが、 上記の方法で更新をすると、問題はあるのでしょうか? 後、気になるのは、db.sqlite3がない状態のものをVPSにcloneすると、 VPS上のdb.sqlite3は消えてしまうのでしょうか? お分かりの方、ご教示頂ければ幸いです。 よろしくお願いいたします。
回答: 最初のPUSHにsqliteのファイルが含まれていて、そのファイルはそのままでローカルなどでも使うのであれば、単純に管理対象から外すことで良いかと思います。 .gitignoreにtest/db.sqlite3を追記し、`git rm --cached db.sqlite3`とすることで、すでに登録されているファイル自体は消えずに管理対象から外せると思います。