VS CodeリモートSSH接続でVPSサーバーを快適開発環境に!徹底解説と注意点

VS CodeリモートSSH接続でVPSサーバーを快適開発環境に!徹底解説と注意点

VS CodeリモートSSH接続でVPSサーバーを快適開発環境に!徹底解説と注意点

はじめに:VPSサーバーとVS CodeリモートSSH接続の魅力

皆さんは、開発環境としてVPS(Virtual Private Server)サーバーを利用したことはありますか?VPSサーバーは、月額1000円程度の費用で、24時間安定稼働するパソコンをレンタルできる、非常に便利なサービスです。

今回の記事では、VPSサーバーを借りてVS Code上でリモートSSH接続を行う方法を、詳細に解説します。特に、Pythonを使ったスクレイピング自動投票プログラムの運用など、ローカル環境では難しい処理をVPSで行うための設定方法を、図解やコード例を交えて分かりやすく説明します。

この記事を読み終える頃には、あなたもVS CodeとVPSを組み合わせた、快適で安全な開発環境を構築できるようになっているでしょう!

なぜVPSサーバーが必要なのか?ローカル環境との違い

ローカル環境(手元のPC)で開発を行う場合、以下のような課題があります。

  • PCのシャットダウン/再起動による処理中断: ローカルPCを閉じたり、再起動したりすると、実行中のプログラムは停止してしまいます。長時間かかる処理を実行する場合、非常に不便です。
  • 処理能力の限界: ローカルPCの処理能力には限りがあります。大規模なデータ処理や高負荷なプログラムを実行しようとすると、PCがフリーズしたり、処理速度が遅くなってしまったりする可能性があります。
  • 外部からのアクセス制限: ローカルPCは、外部からのアクセスが制限されています。複数人で共同開発を行う場合、ファイルの共有やコードのレビューなどが難しくなります。

これらの課題を解決するために、VPSサーバーが有効です。VPSサーバーを使用するメリットは下記の通りです。

  • 24時間365日稼働: VPSサーバーは、常に稼働しています。ローカルPCが停止しても、処理は継続されます。
  • スケーラブルな処理能力: 必要なリソースを随時追加することで、処理能力を拡張できます。大規模なデータ処理や高負荷なプログラムにも対応できます。
  • 外部からのアクセス容易: インターネット経由で、いつでもどこからでもアクセスできます。複数人での共同開発も容易になります。
  • アップグレードの容易さ: ローカル環境と違い、VPSサーバーはスペックのアップグレードが容易です。必要に応じて簡単に処理能力を向上させることができます。

本記事で使用する環境

本記事では、以下の環境を使用してVPSサーバーの設定とVS CodeからのリモートSSH接続を行います。

  • VPSサーバー: ConoHa VPS (もちろん他のVPSサービスでも同様の手順で設定できます)
  • OS: Debian (Python 3.11をデフォルトで利用可能)
  • IDE: VS Code

ConoHa VPSの契約とサーバーのセットアップ

まずは、ConoHa VPSにアクセスし、アカウントを登録(またはログイン)してください。 アカウント登録がまだの方は、ConoHa VPSの公式サイトから容易に登録できます。

登録/ログイン後、「サーバー追加」をクリックします。

1. サービスの選択: デフォルトのVPSを選択してください。

2. OSの選択: 今回は、Python 3.11がデフォルトでインストールされているDebianを選択します。 これはPython 3.11を使用しているためです。他のディストリビューションを使用する場合も、同様の手順でPythonをインストールできます。

3. 料金タイプの選択: 最初は時間課金を選択することをお勧めします。1時間あたり1.9円程度で利用でき、月額最大でも1064円程度と費用対効果が高いです。

4. ルートパスワードの設定: 必ず安全なパスワードを設定してください。このパスワードは、サーバーに初めてアクセスする際に必要になります。

5. ネームタグの設定: わかりやすい名前(例: debian)を設定します。

6. セキュリティグループの設定: -ssh を選択します。これは、VS CodeからのリモートSSH接続を許可するためです。

VS CodeへのSSH接続設定

サーバーが構築されたら、VS CodeでリモートSSH接続の設定を行います。

1. SSHキーの作成: VS CodeのSSH接続機能では、SSHキーを使用します。VS CodeでSSHキーを新規作成します。

2. キーの移動: 作成したキーファイルを ~/.ssh ディレクトリに移動します。 Macであれば、mv ダウンロード/id_ed25519 ~/.ssh のようなコマンドを実行します。 Windowsユーザーは、エクスプローラーを使って移動してください。

3. ConoHa VPSへのSSHキーの追加: ConoHa VPS管理画面で、作成した公開鍵を登録します。

VS Codeのリモート-SSH拡張機能

VS CodeにRemote - SSH 拡張機能をインストールします。 インストール後、VS CodeのサイドバーにSSHアイコンが表示されます。

一般ユーザーの作成と権限設定

ルートユーザー( root@ )でログインしたまま開発作業を行うのはセキュリティ上危険です。そのため、一般ユーザーを作成して、そのユーザーでログインするように設定します。

  1. 一般ユーザーの作成: VPSのターミナルで sudo adduser keiba のようなコマンドを実行し、ユーザー名 keiba を作成します。(keiba は任意のユーザー名に変更可能) パスワードも設定する必要があります。

  2. sudoグループへの追加: 作成したユーザーをsudo グループに追加します。 これにより、管理者権限のコマンドを実行できるようになります。 sudo adduser keiba sudo コマンドを実行します。

  3. ホームディレクトリの作成: /home/keiba/.ssh ディレクトリを作成します。

一般ユーザー用のSSHキー設定

一般ユーザー用のSSHキーを作成し、VPSに登録する必要があります。

  1. SSHキーペア生成: VS Codeで、ssh-keygen -t ed25519 -C "keiba@test" のようなコマンドを実行して、キーペアを生成します。(keiba@test は、任意のコメントに変更可能です)

  2. 公開鍵のアップロード: 生成された公開鍵 (id_ed25519.pub) の内容を、ConoHa VPSの管理画面に登録します。

  3. 秘密鍵の配置: 生成された秘密鍵 (id_ed25519) を、VPSの /home/keiba/.ssh ディレクトリにアップロードします。VS Codeのファイルエクスプローラーからドラッグ&ドロップで簡単にアップロードできます。

ルートユーザーによるログイン制限

セキュリティを強化するために、ルートユーザーでのSSHログインを禁止します。

  1. SSH設定ファイルの編集: /etc/ssh/sshd_config ファイルを編集し、PermitRootLoginno に変更します。

  2. パスワード認証の無効化: PasswordAuthenticationno に変更します。 これにより、SSHキーによる認証のみを許可します。

  3. SSHサービスの再起動: systemctl restart sshd コマンドを実行し、設定を反映させます。

Python環境構築とPlaywrightのインストール

VS CodeのリモートSSH接続機能で、VPSに接続したら、Python環境を構築します。 requirements.txt に必要なライブラリを記述し、VS Codeのターミナルで python -m venv venvsource venv/bin/activate コマンドを実行して仮想環境を作成し、アクティブ化します。その後、pip install -r requirements.txt コマンドでライブラリをインストールします。

Playwrightもインストールします。Playwrightは、ヘッドレスブラウザを使用するWebスクレイピングツールです。サーバー環境では、ブラウザを直接操作できないため、Playwrightのインストールが必要です。

Playwrightは、仮想環境内で pip install playwright コマンドでインストールします。インストール後、playwright installコマンドを実行して、ブラウザをダウンロードする必要があります。

Playwrightを使用する際、playwright install に伴う警告が出る場合がありますが、サーバーの環境によってはブラウザのインストールに失敗する場合があります。

バックグラウンド処理とログ出力

スクレイピング処理は、長時間かかる場合があります。そのため、バックグラウンドで実行し、ログを出力する仕組みが必要です。

nohupコマンドと & を使用することで、バックグラウンド処理を実現します。 ログ出力には、logging モジュールを利用します。以下に例を示します。

import logging
import datetime

# ログ設定
logger = logging.getLogger(__name__)
logger.setLevel(logging.INFO)
formatter = logging.Formatter('%(asctime)s - %(levelname)s - %(message)s')
handler = logging.FileHandler('nohup.out')
handler.setFormatter(formatter)
logger.addHandler(handler)


def main(date_str):
    try:
        # スクレイピング処理
        logger.info(f'Start scraping {date_str}')
        # ... スクレイピング処理 ...
        logger.info(f'Scraping finished {date_str}')

    except Exception as e:
        logger.error(f'Error: {e}')


if __name__ == "__main__":
    date_str = datetime.date(2025, 2, 22).strftime('%Y%m%d')
    main(date_str)

このコードでは、ログファイル nohup.out に処理開始・終了時刻とエラー情報を出力します。

まとめ:VS CodeリモートSSH接続による効率的な開発環境構築

この記事では、VS CodeとリモートSSH接続を利用したVPSサーバーでのPython開発環境構築手順を解説しました。

VPSサーバーを活用することで、ローカル環境では困難な長時間処理や大規模データ処理を効率的に行えるようになります。 また、複数人での共同開発や、24時間稼働による継続的な処理実行も可能になります。

この記事を参考に、ぜひあなた自身の快適な開発環境を構築してみてください。 この記事で紹介したコード例や手順は、概要欄とコメント欄に記載された記事にも掲載しています。疑問点や改善点などありましたら、コメント欄にご意見ください。

ご視聴ありがとうございました!