※本ページにはプロモーション(広告)が含まれています。

PythonスクリプトをVPSで常時実行する方法(スクレイピング・自動化)

実測・公式情報にもとづいて執筆しています

PythonスクリプトをVPSで常時実行する方法(スクレイピング・自動化)

Pythonで書いたスクレイピングや自動投稿のスクリプトを、自分のパソコンではなくサーバー上で動かし続けたい、という需要は多いです。手元のパソコンでは電源を切るたびに処理が止まりますし、スリープや再起動のたびに実行し直す手間もかかります(自宅のパソコンで動かし続けるときの落とし穴は「自動化スクリプトを自宅のパソコンで動かし続けるのが難しい理由」で整理しています)。

この問題の解決策は、VPS(仮想専用サーバー。データセンターにあるサーバーを月額で借りるサービス)にスクリプトを移してサーバー上で動かすことです。本記事では、スクリプトの種類に合った実行方法の選び方を解説します。詳しいコマンド手順は各公式ドキュメントを参照先として案内します。

本記事は2026年11月時点の公式情報をもとに執筆しています。


常時実行の方法は「スクリプトの動かし方」で変わる

定期的に来るバス、回り続ける観覧車、一度だけ走るトラックで、実行方法の違いを表した絵

Pythonスクリプトをサーバーで動かす方法は複数あります。どれが適切かはスクリプトの動作パターンによって異なります。

動作パターン 適した方法
定期的に一定間隔で実行したい(1時間ごと・毎日X時) cron
ループして常時起動し続けるプロセス(Discord botなど) systemd
長時間かかる一度きりの処理 nohup / screen
開発中・テスト中の手軽な維持 screen

cron:定期実行向け

「1時間ごとにデータを取得する」「毎日朝9時にSNSに投稿する」(ツールを使った自動投稿の選択肢はSNS自動投稿・ブログ自動更新ツールまとめにまとめています)といった定期実行には、Linuxの標準スケジューラーである cron(決まった時刻に処理を自動実行する仕組み)が最も簡単です。インターネット上で動き続けるデーモンプロセスは不要で、設定もシンプルです。

systemd:常駐プロセス向け

Discord botのように「起動してからずっとループし続ける」プロセスには、cron は向きません。プロセスが終了しないため、次回のcronが起動できないからです。この場合は systemd(Linuxのサービス管理の仕組み)でサービスとして登録します。クラッシュ時の自動再起動とサーバー再起動時の自動起動を一つのサービスファイルで管理できます。

screen・nohup:手軽な一時的利用向け

「一度だけ実行して、終わるまで数時間かかる」処理や、開発・テスト中の試し稼働には nohup や screen(どちらもSSH切断後もプロセスを維持する方法)が手軽です。SSHを切断してもプロセスが続きます。ただし、screenはサーバーが再起動すると消えてしまうため、長期運用にはsystemdのほうが適しています。


必要なスペックの目安

文字の取得だけなら小皿で足り、画面の表示や学習処理ほど大きな器が要ることを表した図

スクレイピングや自動化スクリプトに必要なサーバースペックは、処理の内容によって変わります。

用途 推奨メモリ
テキストのみのスクレイピング(requests + BeautifulSoup) 1GB
JavaScriptが必要なスクレイピング(Playwright / Selenium) 2GB以上
複数のスクリプトを並行して動かす 2GB以上
機械学習モデルを使った処理 4GB以上

Playwrightは Chromium をサーバーレス(ヘッドレス)で動かすため、メモリをそれなりに消費します。軽い処理だけであれば1GBプランで十分です。


主要VPSの料金比較(2026年11月時点)

画面を操作する重めの処理に合わせて、ひと回り大きなサーバーを選ぼうとしている男性

自動化用途では、メモリ1GB〜2GBの価格帯が選ばれることが多いです。以下は主要なVPSの料金比較です。

メモリ1GBプランの比較

サービス メモリ CPU ストレージ 月額(1ヶ月契約)
シンVPS(大容量) 1GB 1コア 30GB NVMe 750円
ConoHa VPS 1GB 2コア 100GB SSD 763円
さくらのVPS(石狩) 1GB 2コア 50GB SSD 880円

メモリ2GBプランの比較

サービス メモリ CPU ストレージ 月額(1ヶ月契約)
シンVPS(大容量) 2GB 2コア 50GB NVMe 1,040円
ConoHa VPS 2GB 3コア 100GB SSD 1,259円
さくらのVPS(石狩) 2GB 3コア 100GB SSD 1,738円
XServer VPS 2GB 3コア 50GB NVMe 1,980円

※ シンVPSは2026年9月1日料金改定後の価格。ConoHaは「まとめトク1ヶ月」プランの公式表示価格です(2026年11月2日時点でキャンペーンの表示はなく、初回と更新時が同額です)。XServer VPSは2026年9月1日改定後の価格(税込)。XServer VPSは2026年9月17日から新規受付を一時停止していましたが、2026年10月6日17:00に再開しています。ビジネスプランも2026年10月16日(金)14:00に再開しています(無料VPSは停止が続いています)。

Playwrightを使う場合は2GBを基準にするとよいです。ConoHa VPSのメモリ2GBプランは1,259円/月で、シンVPSの1,040円/月より約220円高くなっています(ConoHa VPSは2026年11月2日時点で新規申し込みを停止中です)。

最新の料金・キャンペーンは公式サイトで確認できます

ConoHa VPS 公式サイト

【重要】ConoHaは2026年10月24日から新規申込を停止しています(確認日: 2026-11-09、出典: https://www.conoha.jp/wing/)


設定の全体像

手元のプログラムを箱に詰めてサーバーへ運び、棚に並べて動かすまでを引っ越しで表した図

VPSを契約してUbuntu 22.04を選んだ後の流れは以下のとおりです。

  1. SSHでサーバーに接続し、一般ユーザーを作成する
  2. パッケージを更新し、Python仮想環境(venv)を準備する
  3. スクリプトのファイルをサーバーに配置する(scpまたはgit clone)
  4. 仮想環境に依存パッケージをインストールし、手動起動で動作確認する
  5. 用途に応じてcronまたはsystemdを設定する
  6. APIキーなどの認証情報は環境変数(.envファイル)で管理する

詳しいコマンド手順は以下の参照先を確認してください。

詳しい設定手順の参照先


cronとsystemdの使い分け(考え方)

道順を添えた目覚まし、倒れても起き上がる人形、波で消える砂の絵で、実行方法の性格を表した絵

cronを使う場合の注意点として、cronはログインシェルと環境変数が異なるため、Pythonのパスは仮想環境のフルパスで指定する必要があります。python3 とだけ書くと意図しないPythonが実行されることがあります。ログ出力先のディレクトリは事前に作成しておいてください。

systemdを使う場合は、Restart=always の設定でクラッシュ時に自動再起動できます。また enable コマンドを実行しておくことで、サーバーが再起動したときも自動的にスクリプトが起動します。稼働状況の確認やエラーログの参照も systemctl status と journalctl コマンドで一元管理できます。

screenを使う場合は、Ctrl+A → D でセッションをデタッチしてSSHから抜けられます。セッションに戻るには screen -r セッション名 を使います。手軽な反面、サーバー再起動時にはセッションが消えるため、長期運用には向きません。


環境変数と認証情報の管理

公開する本からページに挟まった鍵のカードを抜き取り、別の引き出しにしまう女性

APIキーやパスワードをスクリプトに直接書くと、誤ってGitHubに公開するリスクがあります。環境変数で管理する習慣をつけることを推奨します。

.env ファイルにAPIキーを書き、ファイルのパーミッションを600に制限したうえで、Pythonコード内では python-dotenv ライブラリを使って読み込む方法が一般的です。GitHubを使う場合は .gitignore に .env を必ず追加してください。


スクレイピング運用時の注意点

ロープの区切りを確かめ、許された小道だけを間をあけてゆっくり進む情報収集のロボット

スクレイピングを行う場合は以下の点を守る必要があります。

アクセス頻度を適切に設定する

サーバーに過度な負荷をかけないよう、リクエストの間隔は適切に設けます。time.sleep() で秒単位の待機を入れるのが基本です。

robots.txtを確認する

スクレイピング対象サイトの robots.txt を確認し、禁止されているパスへのアクセスは行いません。

利用規約を事前に確認する

スクレイピングを明示的に禁止しているサービスには実施しません。個人的な利用であっても、利用規約への違反は利用停止等のリスクがあります。


よくある質問

Q. VPSとレンタルサーバーはどう違いますか?

共有レンタルサーバーはPythonのバージョンやパッケージが制限されることが多く、長時間プロセスを維持することも難しいです。VPSはroot権限(サーバーを管理者として操作できる権限)があり、好きなパッケージを自由にインストールできます。Pythonの自動化用途にはVPSが適しています。私は複数のサーバーを運用してきましたが、Pythonスクリプトを継続稼働させる用途ではVPSの方が制約なく動かしやすいと感じています。

Q. 最初は1GBプランで試して、あとから変更できますか?

ConoHa VPS・シンVPS・さくらのVPS・XServer VPSはいずれもコントロールパネルからプランを変更できます。最初は1GBで試して、メモリ不足になったら2GBに変更するという進め方で問題ありません。

Q. Dockerを使いたい場合はどうしますか?

VPSであればDockerを自由にインストールできます。aptでdocker.ioを導入してコンテナで動かすことも可能です。

Q. cronで実行したスクリプトが動いているか確認する方法はありますか?

ログファイルを確認するのが基本です。crontabでログ出力先を指定しておくと、実行ごとに標準出力・エラー出力がログに追記されます。tail -f コマンドでリアルタイムに確認できます。

Q. スクリプトが途中でクラッシュした場合、自動で再起動できますか?

systemdを使う場合は Restart=always を設定することで自動再起動が可能です。cronの場合はプロセスが終了するたびに次のスケジュールで再実行されますが、クラッシュした瞬間に即再起動はしません。


まとめ

PythonスクリプトをVPSで常時稼働させる方法は、用途に応じて使い分けます。

用途 推奨する方法
定期実行(N時間ごと、毎日X時) cron
ループして常時起動し続けるプロセス systemd
長時間かかる一度きりの処理 nohup / screen
開発中・テスト中の手軽な維持 screen

VPS選びでは、テキストのみのスクレイピングはメモリ1GBプランで十分です。Playwrightを使ったJavaScriptレンダリングが必要な場合は2GBを選ぶとよいでしょう。Playwrightで書いたテストを定期的に回したいだけなら、VPSを借りずにGitHub Actionsで動かす方法もあります。違いと使い分けはPlaywrightのテストをGitHub Actionsで自動化する方法で解説しています。

詳しいコマンド手順は ConoHa VPS スタートアップガイド および cronの設定解説(OFFICE54) を参照してください。

手元で動いているスクリプトがあれば、あとはVPSに転送して cron か systemd を設定するだけです。月1,000円以下で始められるので、まず1GBプランで試してみてください。

最新の料金・キャンペーンは公式サイトで確認できます

ConoHa VPS 公式サイト

【重要】ConoHaは2026年10月24日から新規申込を停止しています(確認日: 2026-11-09、出典: https://www.conoha.jp/wing/)

最新の料金・キャンペーンは公式サイトで確認できます

シンVPS 公式サイト

関連記事