さくらVPSでVscodeを使ってDocker+Djangoを動かした!

※ 当サイトではアフィリエイト広告を利用しています。リンクは広告リンクも含みます。

この記事は約4分で読めます。
広告

さくらのVPS でVscodeが使えるか調べたら、
さくらのVPS にインストールするのではなく
SSH接続でパソコンのVsCodeが使えるようなのでやってみました。
パソコンのVsCodeの拡張機能にRemote Developmentをインストールするとできます。
結果、Docker+Djangoで基本画面を表示することができました。

さくらのVPS に申し込みからDocker導入まではこちら↓↓↓↓

広告

VsCodeにRemote Developmentをインストール

こちらを参考にさせていただき何とか動かせました。
メインで参考にした:VSCodeでリモート開発環境を整えてみた
補助で参考にした:VSCode の Remote Development を使ってさくらVPS上の Linux を編集したい
さくらのVPSにVSCode+WSL2+SSH つまずきポイント
プライマリサイドバーの「SSH」の下に登録したホスト名sakuraが出ないので
VSCode のコマンドパレットで Remote-SSH: Connect to Host→HOST名入力→C:\Users{username}.ssh\configを選択したら出てきました。
sakuraの→をクリックしたら
select the platform of the remote host “sakura”→Linuxを選択
しかしエラーになりました。

configを見ると中身が変わっていたので上のものを消したらうまくいきました。
Host sakura←削除
    HostName sakura←削除

Host sakura
    HostName tk2-110-56065.vs.sakura.ne.jp
    User ubuntu
    Port 22
    IdentityFile ~/.ssh/id_ed25519

SSHキーのパスフレーズをいちいち入力しないとダメだが何とかつながった。

最低限のDjango

Dockerで最低限のコードのDjangoを動かします。以下参照↓↓↓↓

コードは上の記事を参照してください。
#コンテナ作成
sudo docker-compose run --rm -p 8000:8000 web bash
#プロジェクト作成
django-admin startproject composeexample .

#実行
python manage.py runserver 0.0.0.0:8000

またport8000が使えるようにさくらのVPS
のコントロールパネルのパケットフィルター設定で
「カスタムTCP8000送信元IPアドレス:*.*.*.224/32の範囲で許可する」を追加しました。
(上のようにすべて許可するではなく自分のIPだけ許可することもできます。)

settings.pyのALLOWED_HOSTSにホスト名を書きます。しかし
ALLOWED_HOSTS = ['tk2-110-56065.vs.sakura.ne.jp']を追加したが書き込めない。

settings.pyのパーミッションをls -lsで調べてみると
-rw-r--r-- 1 root root 3245 Jan 25 09:30 settings.py
ちなみにDockerfileのパーミッションをls -lsで調べてみると
-rw-rw-r-- 1 ubuntu ubuntu  159 Jan 25 09:24 Dockerfile
パーミッションと所有者、グループをDockerfileと同じにしてみたら書き込めました。

パーミッション変更
sudo chmod 664 settings.py
所有者、グループ変更
sudo chown ubuntu:ubuntu settings.py

ホスト名:8000にアクセスすると表示されます。
http://localhost:8000/でも動いてしまうので、ローカルでも実行されているようです。
またVscodeを閉じると表示されなくなります。多分コンテナが停止する。

さくらのVPSのほうのコンソール(シリアルコンソール)で
コンテナ作成からやると表示され続けます。

まとめ

VPSでもローカル環境でやる感覚でDocker+Djangoが動かせることが分かりました。
今回のようにDjangoについているpython manage.py runserverで起動するサーバーと
VPSの組み合わせで運用すると何か問題があるかは分かりません。
多分、Nginxなどを前に配置しないとVPS1個でDjangoのプロジェクト1個しか動かせないと思います。
私は、ドメインを取って、こちらのようにNginxを配置して使おうと思っています。

VPSはさくらのVPSではなく
今、ブログで使っているお名前.comのレンタルサーバーをVPSに変えようと考えてます。

イチゲをOFUSEで応援する(御質問でもOKです)Vプリカでのお支払いがおすすめです。
MENTAやってます(ichige)

コメント

タイトルとURLをコピーしました