DjangoをVPSにデプロイする2〜パッケージ編〜

DjangoをVPSにデプロイする1〜初期設定編〜の続きです。

この記事では、DjangoをVPSで動かすのに必要なパッケージを入れていきます。

最終環境

  • ubuntu 24.0.4
  • PostgreSQL 14
  • Nginx 1.22.1
  • Gunicorn
  • 独自ドメイン
  • SSL化
  • メール配信

SSH接続

ターミナルでVPSにSSH接続します。

$ ssh COMAND_NAME

パッケージ

まずインストールするのは以下のパッケージです。

  • python3-pip
    ubuntuでpipを使えるようにする
  • python3-venv
    仮想環境を作るためのパッケージ
  • postgresql
    ポスグレを使えるように
  • postgresql-contrib
    ポスグレの便利ツール
  • libpq-dev
    ポスグレに接続するためのもの
  • nginx
    Djangoを表示させるためのWebサーバー

まとめてインストールしちゃいます。

$ sudo apt -y install python3-pip python3-venv postgresql postgresql-contrib libpq-dev nginx

「-y」 は、インストールしますか?と聞かれた時に全てYesと答えるコマンドです。


バージョンの確認

PostgreSQL

ローカル環境と同じバージョンが良いです。

$ psql --version

psql (PostgreSQL) 14.5 (Ubuntu 14.5-0ubuntu0.22.04.1)

Nginx

多分デフォルトでは、1.18.0になっていると思います。(古い)

$ nginx -v

nginx version: nginx/1.18.0

Nginxのアップグレード

古いままだと宜しくないし、設定が面倒な部分があるので新しくしましょう。

前回アップグレードしたのになんで古いの?と思った方もいると思うので簡単に解説。

aptでインストールされるパッケージは、ubuntuが設定しているデフォルトのパッケージ一覧にあるリポジトリからインストールされます。

その一覧が1.18.0をインストールするようになってるので古いパッケージがインストールされてしまいます。

なのでリポジトリを追加し、新しいリポジトリからNginxをインストールできるようにします。

無心で設定

この設定は、Nginxが公式で出しているものなので、何も考えずコピペで進めましょう笑

ここも書きますが、一応上のリンクからコピペした方が最新だと思います。

1. Nginxに必要なパッケージをインストール

$ sudo apt install curl gnupg2 ca-certificates lsb-release ubuntu-keyring

2. 著名キーをインポート

$ gpg --dry-run --quiet --no-keyring --import --import-options import-show /usr/share/keyrings/nginx-archive-keyring.gpg

「573BFD6B3D8FBC641079A6ABABF5BD827BD9BF62」が含まれている必要があります。

pub   rsa2048 2011-08-19 [SC] [expires: 2024-06-14]
      573BFD6B3D8FBC641079A6ABABF5BD827BD9BF62
uid                      nginx signing key <signing-key@nginx.com>

3. 安定版Nginxを設定

$ echo "deb [signed-by=/usr/share/keyrings/nginx-archive-keyring.gpg] \
http://nginx.org/packages/ubuntu `lsb_release -cs` nginx" \
    | sudo tee /etc/apt/sources.list.d/nginx.list

「\」は次の行に続いているよ〜って意味です。

4. 優先リポジトリの設定

現状、ubuntuが設定したリポジトリが優先されているので、今設定したリポジトリを優先させます。

$ echo -e "Package: *\nPin: origin nginx.org\nPin: release o=nginx\nPin-Priority: 900\n" \
    | sudo tee /etc/apt/preferences.d/99nginx

5. アップデート・インストール

aptをアップデートします。

$ sudo apt update

nginxをインストールします。

$ sudo apt install nginx

バージョンを確認してみます。

$ nginx -v

nginx version: nginx/1.22.1

最初の「1.18.0」より数字が大きくなっていればインストールできています。

Nginx起動確認

一応起動して確認してみます。

$ sudo systemctl start nginx

ステータスを確認します。

$ sudo systemctl status nginx

● nginx.service - nginx - high performance web server
     Loaded: loaded (/lib/systemd/system/nginx.service; enabled; vendor preset: enabled)
     Active: active (running) since Fri 2022-11-11 02:11:44 JST; 1 day 4h ago
       Docs: https://nginx.org/en/docs/
    Process: 38458 ExecStart=/usr/sbin/nginx -c /etc/nginx/nginx.conf (code=exited, status=0/SUCCESS)
   Main PID: 38459 (nginx)
      Tasks: 4 (limit: 2319)
     Memory: 6.9M
        CPU: 754ms
     CGroup: /system.slice/nginx.service
             ├─38459 "nginx: master process /usr/sbin/nginx -c /etc/nginx/nginx.conf"
             ├─38460 "nginx: worker process" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" ""
             ├─38461 "nginx: worker process" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" ""
             └─38462 "nginx: worker process" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" ""

11月 11 02:11:44 x162-43-6-128 systemd[1]: Starting nginx - high performance web server...
11月 11 02:11:44 x162-43-6-128 systemd[1]: Started nginx - high performance web server.

「Active: active」となっていれば起動できているので成功です!


これでパッケージ編は終了です!

次は「DjangoをVPSにデプロイする3〜PostgreSQL編〜」です。