ブログBLOG

\ Web・ゲーム開発に関する情報を発信中 /

【初心者向け】ConohaVPSサーバーにDockerを使ってDjangoで作ったWEBサービス・アプリを公開しよう 構築編

サーバー構築
docker , django , conoha
20230508_docker-django-deploy-to-conoha-vps-server-build-tmb

ご覧いただきありがとうございます!
領護(りょうご)です。

Djangoで作成したWEBサービスやアプリをネットに公開したいけど、AWSやGCPといったクラウドサービスはいくらかかるか分からないし、Linuxの勉強もしてみたい...。
そんな方に向けて、クラウドサービスより安く、Linuxの勉強もできる、レンタルサーバーにデプロイする方法を3つの準備編、構築編、運用編に分けて解説します。
今回は、サーバーの基本設定とDocker・docker-composeをインストールするサーバー構築編を書いていきます。
初心者向けに分かりやすく書いたつもりですが、もし分からない点などあればツイッターのDMかお問い合わせからご連絡ください。

目次

準備編はこちら

準備編をまだ見ていない方は、こちらの記事からご覧ください。
準備編では、ConohaVPSのサーバー契約について解説しています。

TeraTermのインストール

サーバー構築に必要なツール「TeraTerm」をインストールしていきます。
TeraTerm(テラターム)は、サーバーにSSH接続して操作するために必要なツールです。

※ Macの方は、標準でSSH接続できる機能が備わっているので、TeraTermをインストールする必要はありません。
※ MacのSSH接続の仕方については、別のサイトを参考にしてみてください。

20230508_docker-django-deploy-to-conoha-vps-server-build-01

TeraTermのダウロードページにアクセスして、インストール版を「窓の杜からダウンロード」をクリックしてダウンロード

20230508_docker-django-deploy-to-conoha-vps-server-build-02

「teraterm-4.106.exe」のダウンロード完了後、ダブルクリックしてインストーラーを起動

20230508_docker-django-deploy-to-conoha-vps-server-build-03

使用する言語は、「日本語」を選択して「OK」をクリック

20230508_docker-django-deploy-to-conoha-vps-server-build-04

使用許諾は、「同意する」を選択して「次へ」をクリック

20230508_docker-django-deploy-to-conoha-vps-server-build-05

インストール先の指定は、デフォルトのままで「次へ」をクリック

20230508_docker-django-deploy-to-conoha-vps-server-build-06

コンポーネントの選択は、「標準インストール」を選択して「次へ」をクリック

20230508_docker-django-deploy-to-conoha-vps-server-build-07

言語の選択は、「日本語」を選択して「次へ」をクリック

20230508_docker-django-deploy-to-conoha-vps-server-build-08

プログラムグループの指定は、デフォルトのままで「次へ」をクリック

20230508_docker-django-deploy-to-conoha-vps-server-build-09

追加タスクの選択は、上2つにチェックを入れて「次へ」をクリック

20230508_docker-django-deploy-to-conoha-vps-server-build-10

インストール準備完了は、そのまま「インストール」をクリック

20230508_docker-django-deploy-to-conoha-vps-server-build-11

インストール完了後は、「今すぐTeraTermを実行する」にチェックを入れて「完了」をクリック

20230508_docker-django-deploy-to-conoha-vps-server-build-12
20230508_docker-django-deploy-to-conoha-vps-server-build-13

TeraTermの起動とショートカットファイルが生成されたら無事インストール完了です。
※ 画面が表示されない場合は、TeraTermのショートカットファイルをダブルクリックして起動してみてください。

TeraTermでサーバーに接続する

TeraTermを使用して、ConohaVPSで契約したサーバーに接続します。
接続するには、サーバーのIPアドレスが必要なので、IPアドレスの確認方法から解説します。

サーバーのIPアドレスを確認する

20230508_docker-django-deploy-to-conoha-vps-server-build-14

ConohaVPS管理画面のログインページにアクセスします。
メールアドレスとパスワードを入力して「ログイン」をクリック
※ メールアドレスとパスワードは、会員登録で設定したアカウントです。

20230508_docker-django-deploy-to-conoha-vps-server-build-15

2段階認証を設定している場合は、認証コードを入力して「ログイン」をクリック

20230508_docker-django-deploy-to-conoha-vps-server-build-16

ログイン完了後は、サービスにある契約したサーバーの右メニューから「詳細情報」をクリック

20230508_docker-django-deploy-to-conoha-vps-server-build-17

ネットワーク情報の「IPアドレス」にサーバーのIPアドレス番号が書いてあります。
後ほどサーバー接続に使用するので、控えておいてください。

20230508_docker-django-deploy-to-conoha-vps-server-build-18

ついでにサーバーが起動中か確認します。
「緑色の電源オンマーク」「起動」が押せない状態になっていたらサーバーが起動中の状態です。

サーバーにSSH接続する

20230508_docker-django-deploy-to-conoha-vps-server-build-19

TeraTermを起動すると、「新しい接続」画面が表示されます。
TCP/IPのホストには、先ほど控えたサーバーのIPアドレスを入力します。
サービスの種類には、「SSH」を選択します。
TCPポートには、「22」を入力します。
SSHバージョンには、「SSH2」を選択します。
IPバージョンには、「AUTO」を選択します。
上記の内容で選択と入力ができたら「OK」をクリック

20230508_docker-django-deploy-to-conoha-vps-server-build-20

デフォルトのままで「続行」をクリック
※ サーバーに初めて接続する場合のみ表示されます。

20230508_docker-django-deploy-to-conoha-vps-server-build-21

ユーザー名とパスフレーズには、準備編で作成した一般ユーザーのユーザー名とパスワードを入力します。
認証方式には、「ブレインパスワードを使う」を選択します。
上記の内容で選択と入力ができたら「OK」をクリック

20230508_docker-django-deploy-to-conoha-vps-server-build-22

上記のコンソール画面が表示されて、コマンドの入力待ち状態になれば無事接続完了です。

サーバーの接続方法を公開鍵認証に変更する

現在、サーバー接続には、ユーザー名とパスワードを使用してログインしています。
でも毎回パスワードを入力するのは面倒ですよね?
そこで、パスワードを使わず、公開鍵認証でログインする方法に変更します。
公開鍵認証は、セキュリティ面でもパスワードより安全で、公開鍵認証でログインする方法が一般的です。

コマンドの実行とコマンドの貼り付け方法について

20230508_docker-django-deploy-to-conoha-vps-server-build-23

コマンドの実行は、コマンド入力後にエンターキーを押すと実行できます。
コマンドをコピーして貼り付けたい場合は、TeraTermの画面で右クリックすると貼り付けできます。

20230508_docker-django-deploy-to-conoha-vps-server-build-24

TeraTermを一度閉じ、再起動して「新しい接続」画面を表示します。
「新しい接続」画面右上の「×」をクリックして「新しい接続」画面を閉じます。

20230508_docker-django-deploy-to-conoha-vps-server-build-25

設定メニューから「SSH鍵生成」をクリック

20230508_docker-django-deploy-to-conoha-vps-server-build-26

鍵の種類には、「RSA」を選択します。
ビット数には、「2048」を入力します。
ラウンド数には、「16」を入力します。
上記の内容で選択と入力ができたら「生成」をクリック

20230508_docker-django-deploy-to-conoha-vps-server-build-27

鍵が生成されるので、「公開鍵の保存」「秘密鍵の保存」をクリックして鍵を保存します。

20230508_docker-django-deploy-to-conoha-vps-server-build-28

「秘密鍵の保存」をクリックすると「空のパスフレーズを使用しますか?」と表示されるので「はい」をクリック

20230508_docker-django-deploy-to-conoha-vps-server-build-29

公開鍵(id_rsa.pub)秘密鍵(id_rsa)の保存が完了しました。

20230508_docker-django-deploy-to-conoha-vps-server-build-30

TeraTermを再起動して一般ユーザーでログインします。
ログイン完了後は、公開鍵の「id_rsa.pub」ファイルをサーバーにアップロードします。
アップロード方法は、「id_rsa.pub」ファイルをTeraTermの画面内にドラッグ&ドロップします。

20230508_docker-django-deploy-to-conoha-vps-server-build-31

デフォルトのままで「OK」をクリック

ls

↓ 実行結果 ↓

# > id_rsa.pub

lsコマンドで「id_rsa.pub」が表示されたら無事アップロード完了です。
続いて公開鍵ファイルの配置と名前を変更します。

mkdir .ssh
chmod 700 .ssh

「.ssh」という名前でディレクトリを作成して、パーミッション権限を「700」に設定します。

mv id_rsa.pub .ssh/authorized_keys
chmod 600 .ssh/authorized_keys

「id_rsa.pub」をホームディレクトリから「.ssh」に移動して、ファイル名を「authorized_keys」に変更します。
その後、「authorized_keys」のパーミッション権限を「600」に設定します。
これでサーバーに公開鍵の配置と名前の変更が完了しました。
実際に公開鍵認証でログインできるか確認します。

20230508_docker-django-deploy-to-conoha-vps-server-build-32

TeraTermを再起動して一般ユーザーでログインします。
ユーザー名には、一般ユーザーのユーザー名を入力します。
パスフレーズには、何も入れずに未入力にします。
認証方式には、「RSA/DSA/ECDSA/ED25519鍵を使う」を選択します。
秘密鍵には、先ほど生成した「id_rsa」ファイルを選択します。
上記の内容で選択と入力ができたら「OK」をクリック

20230508_docker-django-deploy-to-conoha-vps-server-build-33

上記のコンソール画面が表示されて、コマンドの入力待ち状態になれば無事接続完了です。
これで公開鍵認証でのログイン設定が完了しました。

サーバーを構築する

ここからは、サーバーの更新、サーバーの基本設定、セキュリティの設定、パッケージのインストールを行います。

サーバーを更新する

sudo apt -y update && sudo apt -y upgrade

サーバーにインストール済のパッケージを更新します。
コマンドの先頭に「sudo」を付けると管理者権限でコマンドを実行することができます。
このコマンドは、サーバーを操作する前によく使うコマンドなので覚えておくと良いですよ。

[sudo] password for [ユーザー名]:[一般ユーザーのパスワードを入力]

管理者権限でコマンドを実行する場合は、パスワードの入力が必要なので、一般ユーザーのパスワードを入力してエンターキーを押します。
[ユーザー名]には、一般ユーザーのユーザー名が表示されます。

注意!

入力したパスワードは、セキュリティの関係で表示されません。


20230508_docker-django-deploy-to-conoha-vps-server-build-34

もし、このような画面が表示されたら「N」と入力してエンターキーを押します。

20230508_docker-django-deploy-to-conoha-vps-server-build-35

「keep the local version currently installed」を選択してエンターキーを押します。
※ 選択は、上下の矢印キーで操作できます。

20230508_docker-django-deploy-to-conoha-vps-server-build-36

「OK」を選択した状態でエンターキーを押します。

20230508_docker-django-deploy-to-conoha-vps-server-build-37

デフォルトのままでエンターキーを押します。
以上でサーバーの更新は完了です。

サーバーを日本語に変更

操作しやすいようにサーバーの言語を日本語に変更します。

echo $LANG

↓ 実行結果 ↓

# > en_US.UTF-8

現在のサーバー言語は、英語なので「en_US.UTF-8」と表示されます。

sudo apt -y install language-pack-ja-base language-pack-ja

サーバーの言語を日本語化する日本語パッケージをインストールします。

20230508_docker-django-deploy-to-conoha-vps-server-build-38

もし、このような画面が表示されたら「OK」を選択した状態でエンターキーを押します。

20230508_docker-django-deploy-to-conoha-vps-server-build-39

もし、このような画面が表示されたらデフォルトのままでエンターキーを押します。

sudo update-locale LANG=ja_JP.UTF-8 LANGUAGE="ja_JP:ja"
source /etc/default/locale

サーバーの言語を日本語に変更します。

echo $LANG

↓ 実行結果 ↓

# > ja_JP.UTF-8

サーバーの言語が「ja_JP.UTF-8」と表示されたら日本語に変更完了です。

タイムゾーンを日本時間に変更

date

↓ 実行結果 ↓

# > 2023年 5月 9日 火曜日 18:45:51 JST

サーバーのタイムゾーンを日本時間に変更します。
既に日本時間になっている場合は、スキップしてOKです。
もし日本時間になっていない場合は、下記の手順を参考に設定します。

sudo cp /etc/localtime /etc/localtime.org

「localtime」設定ファイルをバックアップしておきます。

sudo ln -sf /usr/share/zoneinfo/Japan /etc/localtime

日本時間に変更します。

date

↓ 実行結果 ↓

# > 2023年 5月 9日 火曜日 18:45:51 JST

サーバーのタイムゾーンが正しく日本時間で表示されたら変更完了です。

SSHの設定を変更

SSHの設定は、リモートでサーバーに接続する時に必要な設定です。
デフォルトのままだとセキュリティが弱いので、セキュリティを高めるために設定を変更します。

sudo cp -p /etc/ssh/sshd_config /etc/ssh/sshd_config_`date +%Y%m%d-%H%M%S`

「sshd_config」設定ファイルをバックアップしておきます。

sudo nano /etc/ssh/sshd_config

「sshd_config」設定ファイルをnanoエディタで開きます。

# ポート番号を変更
#Port 22
↓
Port [49513~65535の間で好きな数字に変更]

# rootログインを禁止にする
PermitRootLogin yes
↓
PermitRootLogin no

# パスワードログインを禁止にする
PasswordAuthentication yes
↓
PasswordAuthentication no

# 最後の行に追加
Protocol 2

上記の設定項目を「sshd_config」設定ファイルから探して値を変更します。
ポート番号は、デフォルトの22番でも問題ありませんが、変更しておいた方が安全です。

Port 49500
PermitRootLogin no
PasswordAuthentication no
Protocol 2

実際の入力例です。
ポート番号は、49513~65535の間で指定した数字になります。

20230508_docker-django-deploy-to-conoha-vps-server-build-40

変更完了後は、「Ctrl」+「X」キーを押すと「変更されたバッファを保存しますか?」と表示されます。
表示後は、「Y」キーを押して「エンターキー」を押すと設定ファイルが上書き保存されます。

sudo systemctl restart sshd

「sshd_config」設定ファイルの設定を反映するために、SSHを再起動します。
これでSSHの設定は完了しました。
続いてファイヤーウォールとポート番号の許可設定を行います。

注意!

ポート番号を変更した場合は、次のファイヤーウォールとポート番号の許可設定を行わずにTeraTermを閉じないでください。
ここでTeraTermを閉じるとポート番号が許可されていないため、サーバーに接続できなくなります。
間違えて閉じてしまった場合は、ConohaVPS管理画面のコンソールからログインして、ポート番号を22番に戻してから作業を再開してください。


ファイヤーウォールとポート番号の許可設定

sudo ufw enable

↓ 実行結果 ↓

# > Command may disrupt existing ssh connections. Proceed with operation (y|n)? y

ファイヤーウォールを有効化します。
「Command may disrupt existing ssh connections. Proceed with operation (y|n)?」と表示されたら「y」と入力してエンターキーを押します。

sudo ufw allow [指定したポート番号]/tcp
sudo ufw allow 80
sudo ufw allow 443

3つのポート番号をポート番号許可リストに追加します。
「80番」「443番」は、公開したWEBサイトにアクセスを許可するために必要なポート番号になります。
[指定したポート番号]には、先ほどSSHの設定で指定したポート番号が入ります。
※ SSHの設定でポート番号を22番から変更していない方は、80番と443番のみ許可リストに追加してください。

sudo ufw status verbose

正しく追加されたか確認します。

20230508_docker-django-deploy-to-conoha-vps-server-build-41

「指定したポート番号/tcp」「80」「443」(v6)と合わせて6つ追加されていたらOKです。

20230508_docker-django-deploy-to-conoha-vps-server-build-42

もし、ポート番号許可リストに「22/tcp (OpenSSH)」「22/tcp (OpenSSH (v6))」がある場合は、使わないので削除しておきます。

sudo ufw delete 1

↓ 実行結果 ↓

# > 削除:
# > allow OpenSSH
# > 操作を続けますか (y|n)? y
# > ルールを削除しました
sudo ufw delete 4

↓ 実行結果 ↓

# > 削除:
# > allow OpenSSH
# > 操作を続けますか (y|n)? y
# > ルールを削除しました

「22/tcp (OpenSSH)」「22/tcp (OpenSSH (v6))」を削除します。
削除で指定している「1」「4」の数字は、ポート番号許可リストを上から見た番号を指定しています。
「操作を続けますか」と表示されたら「y」と入力してエンターキーを押します。

20230508_docker-django-deploy-to-conoha-vps-server-build-43

これで「22/tcp」は削除されて、「指定したポート番号/tcp」「80」「443」のみ許可リストに追加ができました。

sudo ufw reload

↓ 実行結果 ↓

# > ファイアウォールを再読込しました

正しくポート番号許可リストに追加できたら、ファイヤーウォールを再起動して設定を反映します。

ログインできるか確認

変更した内容でログインできるか確認します。

20230508_docker-django-deploy-to-conoha-vps-server-build-44

TeraTermを一度閉じ、再起動して「新しい接続」画面を表示します。
サーバーのIPアドレスと先ほど設定したポート番号を入力して、「OK」をクリック

20230508_docker-django-deploy-to-conoha-vps-server-build-20

デフォルトのままで「続行」をクリック

20230508_docker-django-deploy-to-conoha-vps-server-build-32

公開鍵認証でログインします。

20230508_docker-django-deploy-to-conoha-vps-server-build-33

上記のコンソール画面が表示されて、コマンドの入力待ち状態になれば無事接続完了です。

Dockerとdocker-composeをインストール

Dockerをインストール

cd ~

ホームディレクトリに移動します。

curl -fsSL get.docker.com -o get-docker.sh

Dockerをインストールするシェルスクリプトをダウンロードします。

sudo sh get-docker.sh

ダウンロードしたシェルスクリプトを使用して、Dockerをインストールします。

docker version

↓ 実行結果 ↓

# > Client: Docker Engine - Community
# > Version:           23.0.6
# > API version:       1.42
# > Go version:        go1.19.9
# > Git commit:        ff56dvn
# > Built:             Fri May  5 21:18:13 2023
# > OS/Arch:           linux/amd64
# > Context:           default

正しくDockerがインストールされているか確認します。
正しくインストールされているとDockerのバージョンを含めて詳細情報が表示されます。
※ 現在、最新バージョンの「23.0.6」がインストールされています。

sudo rm get-docker.sh

Dockerのインストール完了後は、「get-docker.sh」は必要ないので削除しておきます。

sudo usermod -aG docker [ユーザー名]

一般ユーザーでdockerコマンドが実行できるように、一般ユーザーをdockerグループに追加します。
[ユーザー名]には、サーバーの一般ユーザー名を入力します。

cat /etc/group | grep [ユーザー名]

一般ユーザーがdockerグループに追加されたか確認します。

docker:x:999:[ユーザー名]

上記のように表示されたらOKです。

sudo reboot

設定を反映するためにサーバーを再起動します。
再起動すると自動的にTeraTermが閉じるので、再度TeraTermを起動して、一般ユーザーでログインしてください。
続いてdocker-composeをインストールします。

docker-composeをインストール

sudo curl -L "https://github.com/docker/compose/releases/download/[最新バージョン]/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
20230508_docker-django-deploy-to-conoha-vps-server-build-45

docker-composeの最新バージョン確認ページからdocker-composeの最新バージョンを確認して、[最新バージョン]に現在の最新バージョンを入力します。

sudo chmod +x /usr/local/bin/docker-compose

docker-composeのコマンドが使えるように権限を許可します。

docker-compose -v

↓ 実行結果 ↓

# > Docker Compose version v2.17.3

正しくdocker-composeがインストールされているか確認します。
正しくインストールされているとdocker-composeのバージョンが表示されます。
※ 現在、最新バージョンの「v2.17.3」がインストールされています。
これでDockerとdocker-composeのインストールが完了しました。

以上でサーバー構築が完了しました。
お疲れ様でした!

最後に

今回は、サーバーの構築編を解説しました。
詳しく書いたので、結構長くなりましたが、分かりやすかったでしょうか...?
次回の運用編では、ドメインの追加・Djangoプロジェクトをサーバーにデプロイする方法を解説します!
いよいよ次でラストですね!あともうちょっとで自分が作ったWEBサービス・アプリがデプロイできますよ!
運用編も是非参考にしてください!

運用編はこちら

参考にさせて頂いたサイト様

https://support.conoha.jp/v/addusersshkey/
https://create-it-myself.com/know-how/construct-docker-env-on-conoha-vps/


\ よかったらシェアしてね /

関連記事