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」となっていれば起動できているので成功です!
これでパッケージ編は終了です!