読む人も、書く人も、
すべてを考え抜いたデザイン。
真の使いやすさを追求したWPテーマ『JIN』
VPS×Djangoセットアップ

【VPS×Django】Pythonの準備とDjangoコードをgitHubからクローンする方法

こんにちは、hokkyokunです。

前回にてVPSサーバーのセキュリティを強化しました。
ここから本格的にDjangoのデプロイを行っていきます。

大きな流れとして

  1. Pythonを扱えるようにするためにpipや仮想環境などの準備
  2. Djangoファイルをgithubからクローン→VPSサーバーにコピー
  3. 仮想環境の作成
  4. Djangoファイル内のrequirements.txtから必要なパッケージをインストール

それではやっていきましょう。

作業でどれくらいかかる?

このページの作業を終わらせるのにどれくらいの時間がかかるかですが、

実質15分くらいで終わります。

初めて行う場合は、何をしているのか一つ一つ確認しながらだと思うのでもう少しかかりますが1時間もかからないと思います。

Pythonの準備

Pythonの準備をしていきます。

conohaVPSでOSをubuntuにしている場合、Pythonはすでに入っているはずです。

2024年5月時点で契約した場合、Pythonのバージョンは3.10.12でした。

そのため、Python自体は準備不要なのですが、周辺のツールについてはインストールが必要です。

  • python3-pip: Pythonパッケージのインストールと管理を行うためのツール。
  • python3-dev: Pythonの開発用ヘッダーファイルとライブラリ。
  • python3-venv: Pythonの仮想環境を作成するためのツール。

pipはパッケージのインストールで必須ですし、devは人によっては不要かもしれませんが、mysqlをデータベースで扱うためにはインストールが必要です。

venvは仮想環境を作成するために必要です。

仮想環境は絶対に必要ではありませんが、のちに複数のDjangoプロジェクトを立ち上げようと思うと苦労するハメに合うので、仮想環境を作っておくことをお勧めします。

tera term等のターミナルでサーバーにログインし、以下のコマンドを打つことでインストールできます。

sudo apt install python3-pip python3-dev python3-venv

Djangoファイルをgithubからクローン

次にDjangoファイルをgithubからクローンします。

多くの人が自分のローカルPCで先ずDjangoのプログラムを作成すると思いますが、このプログラムファイルをVPSサーバー上に展開(デプロイ)するには一つ一つファイルやディレクトリをコピペすると大変ですよね。コピーミスもあるかもしれないし。

そこで先ずgithubにプログラムを移し、そのプログラムをさらにVPSサーバーにコピーするという流れです。

非ITエンジニアの方で、そもそもプログラミングを個人単位でやっている人はgit,githubなんて使ったことがないって方も多いと思うので(私もそうでした)gitとgithub軽く説明します。

Git,GitHubとは

Gitは、ソースコードやファイルのバージョンを管理するためのツールです。プログラミンコードの履歴管理を行うことで、簡単に過去のコードの状態に戻すことが可能になります。

例えば、今作っているプログラムをもっと効率的な書き方に変えたいとか、機能の追加を行いたいとかあった場合があるとします。

コードの追加や修正を行ったけど、うまくいかなかった場合、元の状態に簡単に戻すことができます。

GitHubはGitの仕組みをウェブ上で可能にしたサービスです。これにより、複数の開発者でソースコードを共有し、編集、更新が効率化できるようになりました。

ソースコードをウェブ上に上げることで、他の人との共有化もできますし、だれがどういう編集を加えたのかも簡単に管理できます。これにより、複数人で同じプログラムをさわることができるようになりました。

ただし、これらの機能は基本的に非ITエンジニアで一人で作業をすることが多い(まさに私!)人にはオーバースペックです。別にそんなにバージョン管理する機会もないですし。

個人的にはVPSサーバーにファイルをコピーする方法として割り切って覚えてしまうのがいいと思います。そこに限定すればそこまで大変でないですし。

そうやって使っているうちになんとなくgitのこともわかるようになり、本格的にエンジニアで食べていくことを考えるようになったときの理解も速くなるので、この機会に触れてみるといいと思います。

VPSサーバーへのコピー限定でのgit,githubの使い方は別記事で紹介するとして、ここではgithub上のプログラムファイル(リポジトリ)のクローンの方法について、解説します。

gitのインストール

tera termなどでlinuxのターミナルを開いてください。

先ずgitのインストールを行います。

sudo apt install git -y

【gihubの操作】アクセストークンの発行

github上にアップされているリポジトリを安全にコピーするために、トークンを発行する必要がありますので、その方法について説明します。

トークンとは、ちゃんとした説明をすると長くなりますが、一時的に使用できるパスワードのようなものです。

GitHubにアクセスし、自分のアカウントホーム画面に行きます。
下記が私のホーム画面です。見られて困るものはありませんが、一応、一部を隠しておきます。

①:今回クローンするリポジトリです(investmentという名前のプロジェクト)

まずは②のアイコンをクリックしてください。
サイドバーが出現するので、settingsをクリックしてください

次の画面に遷移した後、左下に「Developers settings」という項目があるのでクリックします。

トークンの発行画面に遷移します。

①:Tokens(Classic)を選択してください
②:Generate new tokenをクリックしてください
③:Generate new token(classic)をクリックしてください

トークンの名前と有効期限、スコープの選択です。

①:トークン名を決めてください
②:スコープを決めてください。

スコープの選択ですが、リポジトリに関する権限の範囲を示します。特にこだわりがなければrepoでOKです。もしセキュリティに不安があるなら日付(Expiration)を調整してみてください。

下の方にスクロールすると「Generate token」というボタンがあるのでクリックして発行してください。

すると、謎の文字列の連なったパスワードのようなものが作成されます。
後にこれを使用します。

このトークンを見るチャンスは一度きりのようです。もし見られなくなったり、うまく処理できなければ削除して、再度トークンを発行してください。

クローンするリポジトリURLを取得

最初のホーム画面に戻り、左のサイドバーから対象のリポジトリを選択します。

今回で言うと「investment」というリポジトリで枠線で囲んでいるものです。

次に「Code」をクリックし、「HTTPS」をクリックするとURLが出ますので、こちらをコピーします。

伏字で隠した部分はgithubのユーザー名が入ります。

Gitのインストールとクローン

上記で取得したリポジトリのURLとトークンを用いて、クローンを行います。

linux上でコマンドを打つわけですが、カレントディレクトリを移動させ、クローンを作りたい場所に移動します。今回はユーザー名のディレクトリ内に作成します。

いよいよクローンのコマンドです。下記のコマンドをユーザー名ディレクトリ内で打ちます。

git clone https://トークン@github.com/ユーザー名/repository.git

トークン:上記で発行したトークン(謎の文字列)
ユーザー名:GitHubのユーザー名

上記でコピペしたリポジトリのURLにトークンを組み合わせてください。「https://」の後ろにトークンをいれ、「@」で閉じて、github.com/~につなげてください。

これでレポジトリファイルがクローン出来ます。

仮想環境の構築

仮想環境は必須?

必須ではありませんが、できればやっておくことをお勧めします。

仮想環境を簡単に説明します。

仮想環境(Virtual Environment)は、Pythonで開発を行う際に、プロジェクトごとに独立したパッケージ環境を作成するためのツールです。これにより、プロジェクト間の依存関係の競合を防ぎ、クリーンな開発環境を維持できます。

例えば、VPSサーバー内で複数のDjangoプロジェクトや他のアプリケーションを立ち上げたい場合、バージョンの異なるパッケージ(Pythonで書かれたプログラム群)を使い分ける必要があります。

このようなケースでは仮想環境を作成する必要があります。

ただ、このサイトのコンセプトである非ITエンジニアがブログ、SNSに次ぐ第三のウェブプラットフォームとして見ると、複数のプロジェクトを一つのVPSサーバーで立ち上げるということは最初から狙う使い方ではないと思います。

ですので、理論上、どうしても仮想環境を使わないといけない、ということはありません

ただ、仮想環境を使うのはそんなに面倒でもなく、今後、サービスを拡張する可能性を考えて、仮想環境を構築しておくことがいいと思います。

また、私は仮想環境を立ち上げずに、Djangoをデプロイしたことがありませんので、本当に仮想環境を使わずに安全にデプロイできるか保証できません。

仮想環境の構築

上記で仮想環境に必要なパッケージをインストールしていると思いますが、まだしていない場合は、下記のコマンドを打ってください。

sudo apt install python3-venv -y

次に仮想環境を構築するのですが、一般的にプロジェクトディレクトリ内で作成するのが、わかりやすいと思います。

今回私は、ユーザー名ディレクトリ内にDjangoプロジェクトを置いているので、以下のような構造で仮想環境を作ります。

/home/hokkyokun/investment
  ├── invest
  │    ├── db.sqlite3
  │    ├── etf
  │    ├── invest
  │    ├── manage.py
  │    └── static
  ├── templates
  ├── README.md
  ├── requirements.txt
  └── venv
      ├── bin
      ├── include
      ├── lib
      ├── lib64 -> lib
      └── pyvenv.cfg

「venv」というのが作成する仮想環境名です。これは任意なので好きに名前を付けることができます。

コマンドは以下のように打ちます。

python3 -m venv venv

後ろの方の「venv」が仮想環境名です。私は「venv」という名前にしましたが、別に何でも大丈夫です。

仮想環境の有効化

上記で作った仮想環境(私の場合はvenvファイル)のあるディレクトリまで移動し、以下のコマンドを打ちます。

source 仮想環境名/bin/activate

私の場合は、カレントディレクトリをinvestment(Djangoプロジェクトのルートディレクトリ)にして、venvという名前の仮想環境があることを確認しながら以下のコマンドを打ちます。

source venv/bin/activate

Djangoプロジェクトで使用しているパッケージの一括インストール

次に今回GitHubでクローンしたDjangoファイルで使われているパッケージを一括インストールします。

あらかじめ作成しているrequirements.txtを使って一括インストールするのですが、以下のコマンドを打ってください。

pip install -r requirements.txt

これで必要なパッケージは勝手にインストールされるはずなのですが、必要とするパッケージによってはエラーが出る場合があります。

私の場合、こんな感じのエラーが出ました

私の作成したDjangoプロジェクトはmysqlを使用しているのですが、pkg-configというツールがないことが原因のようです。

以下のコマンドを打つことで解決しました。

sudo apt install pkg-config -y
sudo apt install libmysqlclient-dev -y

この後再度、一括インストールをすると成功しました。

ここで申し上げたいことは、一括インストールは失敗する可能性もあり、その原因はその人それぞれ変わってくる可能性があるということです。

ここを自力で解決できるならいいのですが、非ITエンジニアにはハードルが高いかもしれません。

一番お勧めする方法はchatGPTを活用することです。実は私も失敗した原因をchatGPTに聞いて解決方法も教えてもらいました。

chatGPTは今なら無料でも高性能のAIを使うことができるので、chatGPTをお供にサーバー構築を行うと良いと思います。

エラー解決したら、最後に忘れずにrequirements.txtを使って一括インストールをもう一度行います。

pip install -r requirements.txt

お疲れさまでした。
これでdjangoプロジェクトファイルと必要なパッケージをインストールできました。