ConoHa VPS の Debian OS に Djangoベースのサービスデプロイしてみた!!
Pythonの超便利なフレームワーク「Django」を使って、WEBサービス開発を行なってきたが、そろそろ公開できそうな状況になってきたので、勉強も兼ねてデプロイしてみた。
運用コスト面から、今回はGMOさん提供の"ConoHa VPS"を使用することにした。
思ったほど、デプロイまでのVPS設定やDjangoの設定(staticファイルのパス設定など)の情報が見つからなかったので、自分用備忘録としてまとめてみた。
VPSの設定からDjango設定までをスクリプトで一発でドカンとできたらいいなぁ〜と思うけど、今回はまずデプロイすることが目的なので、そこらへんは追々…
環境
クライアント(手元)のPC
- MacOSX 10.13.4
サーバー "ConoHa VPS"
- Debian 9
- Apache2.4.25(Debian)
- Python 3.5.3
- Django 2.0.2
- pip3 9.0.1
STEP.1:ConoHa VPSで、[Debian9]ベースのサーバーを追加
ConoHa VPSにサーバーを設置する
- ここからConoHaサービスにログイン
- 「サーバーの追加」を選択
- 各種項目を設定
- 設定内容と価格を確認したら「追加」を選択
すると、サーバーが追加される
- サーバーを選択するとここから主な制御ができることがわかる
更にグローバルIPアドレスが設定されるので、これをメモ!!
次ステップから、クライアント側からリモート接続する際に使用する
STEP.2:サーバーの初期設定
STEP.1でサーバーを設置した。
このSTEPでは、サーバーをWEBサーバーとして各種設定を行う事前準備として、クライアント(手元のPC)からサーバーにリモート(SSH)接続する為の設定を実施する
SSH接続
まずは下記コマンドで"root"ユーザーとしてSSH接続。尚、以降の"xxx.xxx.xxx.xxx"は各自、サーバーのIPアドレスに置き換えてほしい。$ ssh root@xxx.xxx.xxx.xxx
下記メッセージが出力されるので、"yes"を入力
The authenticity of host 'xxx.xxx.xxx.xxx (xxx.xxx.xxx.xxx)' can't be established. ECDSA key fingerprint is SHA256:xxxxxx. Are you sure you want to continue connecting (yes/no)? yes
パスワードの入力を求められるので、サーバー設定時に入力した、"root"パスワードを入力
Warning: Permanently added 'xxx.xxx.xxx.xxx' (ECDSA) to the list of known hosts. root@xxx.xxx.xxx.xxx's password:
下記がコンソール上に表示されたらSSH接続成功!
もしエラーとなったら、パスワードが間違っている可能性が高いので、ゆっくり確認しながらにゅうりょくしてみてほしい。root@xxx.xxx.xxx.xxx:~#
OSのUpdate
以下のコマンドを実行して、OSのUpdateを実施# sudo apt-get update # sudo apt-get upgrade
途中以下のようなメッセージが表示される場合がある。これはDiskの空き領域を使用する更新を含むがいいか?という質問。基本的に承諾しないと次に進まないので、"yes"と入力して、更に待機
After this operation, 141 kB of additional disk space will be used. Do you want to continue? [Y/n] y
新規ユーザー追加
下記"adduser"コマンドでユーザ"hoge"を新規登録。"username"入力後にパスワードの入力を求められるので、2回入力する# sudo adduser hoge Enter new UNIX password: Retype new UNIX password:
その後、新規ユーザーに関する情報の入力を求められるが、空欄のままでも問題ない。最後に"y"を入力して完了
Enter the new value, or press ENTER for the default Full Name []: Room Number []: Work Phone []: Home Phone []: Other []: Is the information correct? [Y/n] y
新規ユーザーに"sudo"コマンドを許可
# sudo gpasswd -a hoge sudo
以下のコマンドで、"sudo"グループに追加されていることが確認できれば成功
# id hoge uid=1000(hoge) gid=1000(hoge) groups=1000(hoge),27(sudo)
秘密鍵・公開鍵の生成
この作業は、クライアントPC側で行う作業なので注意!!$ ssh-keygen -C 'for_Test' Generating public/private rsa key pair. Enter file in which to save the key (/Users/hoge/.ssh/id_rsa): /Users/hoge/.ssh/id_rsa_testVPS Enter passphrase (empty for no passphrase): Enter same passphrase again: Your identification has been saved in /Users/hoge/.ssh/id_rsa_testVPS. Your public key has been saved in /Users/hoge/.ssh/id_rsa_testVPS.pub. The key fingerprint is: SHA256:xxxxxxxxxxxxx for_Test The key's randomart image is: +---[RSA 2048]----+ | xxxxxxx| | xxxxxxxx| | ..xxxxx| | o xxxx | | S xxxxx | | ..xxx.. | | =.x.. | | =x. | | .. | +----[SHA256]-----+
この結果、秘密鍵と公開鍵が自分の指定したパスに生成される。確認方法は以下のコマンド
拡張子ナシが秘密鍵。".pub"拡張子付きが公開鍵。$ ls /Users/hoge/.ssh/id_rsa_testVPS* /Users/hoge/.ssh/id_rsa_testVPS /Users/hoge/.ssh/id_rsa_testVPS.pub
公開鍵の転送と設定
クライアント上で以下コマンドを実行して、公開鍵をサーバーに転送する$ scp /Users/hoge/.ssh/id_rsa_testVPS.pub root@xxx.xxx.xxx.xxx:/tmp/
成功したら、サーバー側のコンソールで以下コマンドを実行して、ファイル(id_rsa_testVPS.pub)が転送されていることを確認
# ls /tmp/ id_rsa_testVPS.pub
続いて、公開鍵をサーバー側に登録
# cat /tmp/id_rsa_tabihon-net.pub >> /home/hoge/.ssh/authorized_keys # chmod 600 /home/hoge/.ssh/authorized_keys # chown -R hoge:hoge /home/hoge/.ssh
SSH接続設定(sshd)の変更
下記のコマンドからSSH設定ファイルを編集# 直接必要ではないが、初期設定ファイルを残しておくことをオススメ!設定失敗時の復旧の為 # cp /etc/ssh/sshd_config /etc/ssh_sshd_config.org # nano /etc/ssh/sshd_config
設定ファイル内の編集項目
この設定変更によって、以下が禁止/許可される。この結果、SSH接続によるセキュリティを確保する目的である。PermitRootLogin no PubkeyAuthentication yes PasswordAuthentication no PermitEmptyPasswords no
- 公開鍵によるログインの許可
- "root"ユーザーでのログイン禁止
- パスワードによるログインの禁止
<参考>
もし設定変更を失敗してログインできなくなってしまった場合、ConoHaVPSのサーバーページにあるWEBコンソールからログインすることができる為、初期設定ファイルを残して置けば、これを元のファイルに上書きすることで復旧できる(サーバーの再起動もお忘れなく!!)# cp /etc/ssh/sshd_config.org /etc/ssh/sshd_config # reboot & exit
これまでの設定を反映させるために、一旦VPSを再起動
# reboot & exit
これで、クライアントPCから秘密鍵を使ってサーバーに接続することができるようになる。"root"権限でのログインはSSH接続する方法は下記通り。
SSH接続する方法
# ssh -i "秘密鍵" <user name>@<サーバーのIPアドレス>
$ ssh -i ~/.ssh/id_rsa_testVPS hoge@xxx.xxx.xxx.xxx
SCP接続する方法(ファイル転送したい場合など)
# scp -i "秘密鍵" <user name>@<サーバーのIPアドレス>:<ファイル転送先のパス>
$ scp -i ~/.ssh/id_rsa_testVPS ~/sample.png hoge@xxx.xxx.xxx.xxx:/tmp
長くなってしまったので、今回はここまで!
次回は
【STEP.3: Debian9 に Python3系をインストール】
となります。