自動化無しに生活無し

WEBとかAIとかLinux関係をひたすら書く備忘録系ブログ

【Django】GitとSSHを使ってUbuntuへデプロイする(virtualenvでPythonライブラリの管理)【hookでmigrateコマンドも】

thumbnail

要求される知識が非常に多いため、下記対象読者に該当する方のみ、閲覧を推奨します。

対象読者

  • Linuxのコマンドがわかる
  • CUIエディタ(nanoもしくはvim)が扱える
  • すでにDjangoプロジェクトをUbuntuへデプロイをしたことがある
  • gitを使ったことがある(ステージング→コミット→プッシュができればOK)
  • SSHでUbuntuへリモートログインをしたことがある(パスワード認証ができればOK)
  • virtualenvでPythonライブラリを管理したことがある

関連記事

流れ

  1. ローカルでDjangoのプロジェクトの作成
  2. ホストで必要なパッケージのインストール
  3. ホストでリポジトリを作成
  4. ローカルでリポジトリを作成、ホストのリポジトリを追加
  5. ローカルでプッシュをする
  6. ホストでリポジトリからプロジェクトをクローン
  7. 必要に応じてmigrate等のコマンドを実行

作業

ローカルでDjangoのプロジェクトの作成

Djangoプロジェクトを作る。すでに作っている場合は次の項へ

mkdir startup_bbs
cd startup_bbs
django-admin startproject config .

ホストで必要なパッケージのインストール

# 全パッケージの更新
sudo apt update && sudo apt -y upgrade && sudo apt -y autoremove

# デプロイに必要なパッケージのインストール
sudo apt install python3-pip python3-dev libpq-dev postgresql postgresql-contrib nginx

# virtualenvのインストール
sudo pip3 install virtualenv

# gitのインストール
sudo apt install git 

ホストでリポジトリを作成

Documents配下にプッシュ先のリポジトリを作る

mkdir -p ~/Documents/myproject.git
cd ~/Documents/myproject.git

空のリポジトリとして初期化する

git init --bare

ローカルでリポジトリを作成、ホストのリポジトリを追加

ローカルではDjangoのプロジェクトディレクトリ内でリポジトリを作成、コミットしておく。

git init
git add .
git commit -m "first commit"

ホストのリポジトリを追加しておく。

git remote add origin ホストのユーザー名@ホストのIPアドレス:~/Documents/myproject.git

ローカルでプッシュをする

git push origin master 

パスワードの入力を求められるが、SSHでパスワードログインを行っている場合、そのパスワードを入力する。

ホストでリポジトリからプロジェクトをクローン

ホストにて、Djangoプロジェクトがプッシュされているので、クローンする。

cd ~/Documents/
git clone myproject.git 

~/Documents/の中にDjangoプロジェクトに当たる、myproject が作られている。後は、NginxやPostgreSQLに設定を行い、デプロイをする。

参照: UbuntuにDjangoをデプロイする【PostgreSQL+Nginx、Virtualenv使用】

1度クローンしたことがある場合は、プロジェクトのディレクトリに移動して、pullする

cd ~/Documents/myproject
git pull origin master 

必要に応じてmigrate等のコマンドを実行

プロジェクト内部へ移動、マイグレーションなどのコマンドを実行する。(任意)

cd myproject

python3 manage.py migrate
python3 manage.py collectstatic
python3 manage.py createsuperuser

結論

scpでアップロードする形式だと、どうしてもローカルで削除したコードがデプロイ先で残留してしまう。また、アップロード先のパスを間違えたら対処に手間取る。

gitであれば、最初の設定さえ間違えなければ、あとはadd commit push とやっていくだけ。とっても簡単。

ローカルのプロジェクトを紛失しても、git cloneでホストからすぐに取ってこれる。ブランチも切れる。以前の状態に戻すこともできる。

スポンサーリンク

シェアボタン

Twitter LINEで送る Facebook はてなブログ