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

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

この記事は約7分で読めます。

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

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

広告
MINISFORUM日本公式ストア

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キーのパスフレーズをいちいち入力しないとダメだが何とかつながった。

VSCodeでSSH接続すると重いので対策した

現在、お名前.comのVPSで運用していますが、VSCodeで接続するとメモリを消費したので設定を見直しました。

お名前ドットコムVPSへ移行への道

2024/4お名前.comのレンタルサーバーからVPSへ移行したときの記録になります。

Remote Developmentの設定見直し

Remote Developmentをインストールすると4つの拡張 が入りますが、私の場合、Remote – SSHだけで十分でした。なので他の3つは無効にしました。
・Remote – SSH(必須)
・Remote – Tunnels(使ってなければ不要)
・Dev Containers(Dockerをサーバーで使わなければ不要)
・WSL(WindowsでWSLを使ってなければ不要)

Dockerを使っているのでDev Containers は必要そうですがChatGptに聞いたら以下のような回答を得たので私の場合、使わないです。
→ これは Docker を使った「コンテナ開発環境」を VSCode が直接制御するためのものですが、1GB環境ではまず無理です。
(リモートでコンテナを立ち上げた上で VSCode がさらに LSP を突っ込むので重すぎる)

👉 コンテナは自分で docker-compose up / docker run で起動 → VSCode は単に編集 が安全。

ただし、3つを無効にすると左のアクティブバーからリモート エクスプローラーが消えます。
その場合、
SSH 接続する方法は
F1 → Remote-SSH: Connect to Host(ホストに接続する)… から接続できます。

不要なリモート拡張機能を削除

・SSH接続した状態でアクティブバーの拡張機能をクリックすると、サーバー側にインストールされている拡張機能が表示されます。

リモート拡張を見たら 以下の3つ入ってました。これはVSCodeからのおすすめを何も考えずインストールしたものです。ChatGptに聞いたら、2つは不要なのでアンインストールしました。

  • Container Tools
  • Docker
  • Japanese Language Pack

1. Container Tools

  • Dev Containers(コンテナ開発)関連の拡張です
  • 1GBサーバーでは ほぼ不要
  • Dockerを自分で docker run / docker-compose しているならアンインストールしてOK

2. Docker

  • VSCodeからコンテナを操作するための拡張です
  • GUIでコンテナの状態を見たりできますが、
    メモリの少ないVPS上では重いし不要
  • 普段 docker psdocker-compose up をターミナルでやっているならアンインストール推奨

3. Japanese Language Pack

  • これは単なる日本語化パックです
  • メモリをほとんど食いません(軽い)
  • 日本語UIで使いたいなら残してOK

  • 削除/無効化をおすすめ: Container Tools, Docker
  • 残す: Japanese Language Pack

拡張機能のDcoerは、サーバーにインストールしたDockerとは別物です。拡張機能のDockerを無効にしてもターミナルでDockerコマンドは使えました。

その他

・フォルダを開くとメモリ消費量が増えますが、できるだけ下層で開くようにするとメモリ節約できます。
お名前VPSのシリアルコンソールだと380M、VSCode接続で対策前は600超えていたが、今は530ぐらいになりました。

最低限の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をコピーしました