【レンタルサーバーより断然優位】Python 実行のおすすめ VPS 5 選

使える技術と使えない技術

レンタルサーバー(共用サーバー)は安いし、Python の勉強だったりサービスの公開にも使えるなと思っているそこのあなた。ちょっと待ってください。

実はレンタルサーバーの Python には純粋な Python とは違う様々なクセがあるのをご存知でしたか?

ものによって SSH 接続できない仮想環境が使えないデータベースが操作できない等、まともに実行できないことも多々あります。

なぜエラーが出るんだろう

私自身、元々使っていたさくらのレンタルサーバーでの Python 実行を散々試行錯誤した結果、さくらの VPS を借りることにしました。

その経験を踏まえても、Python を動かすにはレンタルサーバーではなく VPS をおすすめします。

こちらの記事ではその理由とおすすめの VPS をあわせて紹介しますので、ぜひ参考にしてみてください。

また、一般的に「レンタルサーバー」というと「共用サーバー」のことを指す事が多いので、こちらの記事でも「共用サーバー」の意味で「レンタルサーバー」を使用します。

レンタルサーバー x Python のリスク

結論から言うと、レンタルサーバーで Python プログラミングを行うのは一部を除いて難易度が無駄に高いです。

その理由はレンタルサーバーならではの権限の制限。Python 開発に必要な環境が作れない事がしばしばあります。

そしてそれを解決する術がない場合も多いのです。

1. 公式サイトと現実の違い

公式サイトで共用サーバーの仕様欄を見ると、大抵 Python3 と MySQL データベースの記載があるため一見問題なさそうです。

ただ、実際に使ってみるとさまざまな制限がかかっているのが共用サーバーです。

ざっくりいうと、物によって下記の様な事象があります。(他にもあるかも)

  • SSH 接続ができない → Python すら触れない
  • 仮想環境が使えない → 複数のアプリを作るのに向いていない
  • Python でデータベースが使えない → スクレイピング等に向いていない
Python が普通に使えるわけではありません

私が少し触って確認できたものだけでこんな感じなので、もっとプログラミングを進めていくと他にもいろいろ出てくる気はします。

詳しくは下記の記事も読んでみてください。

▶︎【7社比較】レンタルサーバーの大クセ Python は本当は使いづらい?

2. 環境構築からエラー頻発

プログラミングで物を作っていこうとすると様々なエラーが発生します。

これは普通のことで、都度調べて修正していくのがプログラミングです。

ただ、ここまで読んでいただいてわかる通り、レンタルサーバーでは環境構築の時点でエラーが発生しまくります。

環境構築というのは「Python を使える様にする」、「データベースを使える様にする」、などいわば準備段階です。レンタルサーバーではこの準備段階でつまづくため肝心のプログラミングに辿り着く前に心を折られます

3. レンタルサーバー x Python のエラーは情報が無い

そういった「レンタルサーバーならではのエラー」を調べても情報はほとんどなく、たとえ英語で調べても日本のレンタルサーバーに関連する情報は見つかりません。

そして散々時間をかけて調べた挙句「そもそも権限がないのでどうしようもない」という事が多々あります。

それも環境構築の段階でです。

レンタルサーバー特有のエラー

同じ労力を払うならVPSの方が有意義

ここまでレンタルサーバーの Python 環境構築がいかに難しいか説明してきましたが、その点 VPS は制限がほとんどないので逆にスムーズです。

VPSはハードルが高い様に思うかもしれませんが、Pythonを使う、データベースを使う、などに関してはレンタルサーバーよりもシンプルなケースが多いです。

また、Python プログラミングに関する既存の情報量は、レンタルサーバーと比べて VPS の方が圧倒的に多いです。

使えない技術 vs 使える技術

レンタルサーバーも VPS も、一筋縄では行かない事が多いです。

どうせ時間をかけるなら、レンタルサーバーでそもそも存在するかも分からない解決法を探るよりも、VPSで Linux 系サーバーの操作Python のプログラミング など、実践的な事を学んでいく方がコスパが良いと思いませんか?

使える技術と使えない技術

もし「将来的に業務でも使える様になれば」と考えているなら余計に VPS の方が良いです。業務の Python 実行環境にレンタルサーバーを使う会社は流石にないはずです。

そもそも VPS も月々 700 円〜900 円程度ですしね。

VPS はレンタルサーバーと比べて圧倒的に自由度が高く、「どの会社の VPS か」よりも「どの OS か」の方が重要だったりします。

詳しくはこちらの記事を参照いただければと思いますが、OS は既存情報の多い Ubuntu、Debian、CentOS がおすすめです。

後々エラーなどに出くわした際にも参考になる情報が多く便利です。

というわけでそろそろ「どの VPS がおすすめなのか」を説明します。

OS のインストールが簡単な VPS がおすすめ

実は、メジャーな VPS は大体 Ubuntu、Debian、CentOS に対応しています。ではその中で更に絞るには何を基準にしたらいいでしょうか。

ここは「OS インストールの簡単さ」で選びましょう。

実は VPS によっては特定の OS インストールをほぼ自動でやってくれるものがあります。

例えばさくらの VPS であればコントロールパネルで選択した OS を自動でインストールしてくれますし、GMO のクラウド VPS であれば契約時に選択した OS をインストールされた状態でサーバーが用意されます。

さらに ConoHa VPS に関しては Python のウェブ開発フレームワークである Django のセットアップまである程度自動化されています。

こうして選べば、インストールが簡単で問題解決もしやすい環境を整える事が出来ます。

各社の OS 自動インストールの対象は下記の通りです。

自動 OSConoHa VPSさくらの VPSお名前.com VPSGMO クラウド VPSKagoya Cloud VPS
Ubuntu
Debian
CentOS
その他Django テンプレ無料お試し

1. ConoHa VPS

ConoHa VPS
自動インストール対象 OSCentOS 7.1 〜 7.9
CentOS Stream 8
CentOS Stream 9
Ubuntu 18.04
Ubuntu 20.04
Debian 9.13
Debian 10.10
Debian 11.0
自動インストール方法サーバー追加時にテンプレートを選択することでサーバー作成と同時にOSのインストールやアプリケーションサーバーの構築が完了。

公式ページVPS を追加する
おすすめプラン1G(初期費用無料 + 月額 723 円〜)

解説

今回紹介する中で対応 OS の種類が最も豊富なのがこちらの ConoHa VPS。

「VPSをもっと速く、かんたんに」というキャッチコピーだけあって、OS だけでなく Django のテンプレートもあり、簡単にセットアップが可能です。「Django のインストールは自分でやりたい」という方はもちろんそれも可能です。

自動インストール対象の OS の種類も多いですし、下の記事の様に公式が親切に色々な情報を載せているのもポイントです。

3 ステップで簡単に始められるとの事で、公式サイトに「たったの25秒で〜サーバーが作れます。」とありますので試してみてください。笑

公式サイトConoHa VPS

2. さくらの VPS

さくらのVPS
自動インストール対象 OSUbuntu 18.04
Ubuntu 20.04
CentOS 7
CentOS Stream 8
自動インストール方法VPSコントロールパネルからワンクリックで再インストールが可能。

公式ページさくらの VPS 新規追加(コントロールパネル)
おすすめプラン1G(初期費用無料 + 月額 880 円〜)

解説

かなり気軽に使える VPS で、私自身もさくらの VPS を使っています。ポートの開閉をコントロールパネル上のクリックで行えるパケットフィルター機能が地味に楽です。

ユーザーへのサポートをかなり意識していて、公式サイトでも VPS のセットアップの手順を詳しく説明してくれているのもありがたいです。

ネコでもわかる!さくらのVPS講座 ~第二回「サーバーをさわってみよう!」

「Django VPS」で検索すると最も日本語記事が出てくるのは「さくらの VPS」です。

公式サイトさくらのVPS

3. お名前.com VPS

お名前.com VPS
自動インストール対象 OSUbuntu 18.04
Ubuntu 20.04
CentOS 7.5 ~ 7.9
CentOS Stream 8
Debian 9.13
Debian 10.10
自動インストール方法VPSコントロールパネルのサーバーセットアップで OS とバージョンを選択可能。

公式ページサーバーを初期セットアップする
おすすめプラン1G(初期費用無料 + 月額 873 円)

解説

オンラインでのお申込みから最短10分で利用開始できるというお名前.com の VPS。

KVM という仮想化方式を採用していて、ネットワークやディスクI/Oのパフォーマンスを良くする Virtio ドライバにも対応するなどハイパフォーマンスを追求している VPS

OS の初期インストールの方法は下記の公式ページに記載があります。

公式サイトお名前.com VPS

4. クラウドVPS by GMO

GMOクラウドのVPS 詳細はこちら
自動インストール対象 OSCentOS 7.9
CentOS 8.2
Ubuntu 20.04
Debian 10.0
自動インストール方法契約時に選択した OS をインストールした状態でサーバーが用意される。

公式ページ新規サーバー申し込み方法
おすすめプランV1(初期費用無料 + 月額 968 円〜)
お得な情報14 日間無料お試し

解説

コンテナ技術を採用していて、一般的な仮想マシンに比べて軽量で vCPU やメモリなどの負荷が小さく、リソースを効率的に利用できる VPS。どちらかというと法人ユーザーを想定しているようですが、14 日間の無料お試し期間があるのは他と違う点です 。

契約時の OS 選択について下記の公式ページで解説が載っています。

公式サイトGMOクラウドのVPS 詳細はこちら

5. KAGOYA Cloud VPS

カゴヤ・ジャパン
自動インストール対象 OSCentOS 7
CentOS 8
CentOS Stream 8
Ubuntu 18.04
Ubuntu 20.04
自動インストール方法専用コントロールパネルからテンプレートとアプリケーションを選択して環境構築可能。

公式ページインスタンス作成
おすすめプラン1コア/1GB(初期費用無料 + 月額 〜550 円)

解説

コントロールパネルから即座にスペック変更することができます

こちらもコントロールパネルからインスタンスを作成する際に任意の OS を指定することができます。

公式サイトカゴヤ・ジャパン

個人的には ConoHa VPS かさくらの VPS がおすすめ

OS インストールの手軽さを基準に Python のおすすめ VPS を 5 つ紹介しましたが、いかがだったでしょうか?

個人的なおすすめは ConoHa VPSさくらの VPS です。

ConoHa VPS は申し込み時の手軽ささくらの VPS は既に利用している人がかなりいる & 私自身も Django に利用していて全く不満がないからというのが理由です。

大量のデータを取り扱う大規模なアプリケーションを作成するのであれば GMO のクラウド VPSお名前.com の VPS(KVM)もいいかと思いますが、個人 Python プログラムを作っていく場合は前述の 2 つがおすすめです。

DjangoのおすすめVPS(仮想専用サーバー)はOSから選ぶべし

唐突ですが結論から先にお伝えしておくと、自分のおすすめはConoHa VPSさくらのVPSになります。

その理由もこの記事で説明しますので是非参考にしてみてください。

共用サーバーと VPS

おすすめ VPS の前に念の為、レンタルサーバーでよく提供される「共用サーバー」と 「VPS」の違いについてお伝えします。「もうわかってるよ」という方は飛ばしてください。

共用サーバーVPS
root 権限なしあり
価格帯無料~数千円程度数百円~数千円程度
自由度×
OS×
保守サービス提供元ユーザー
構築サービス提供元ユーザー
スペック
外部影響受ける受けにくい

共用サーバー

共用サーバーは1台のサーバーを複数のユーザーで共有する「シェアハウス」の様な形態です。「レンタルサーバー」というとこちらの共用サーバーを指すことが多いです。

自由度が少ないですが最もリーズナブルで、更に様々な管理を提供者側がやってくれます。WordPress の運用など簡単にできるようになっているので初心者にも人気です。

反面、root 権限が付与されずカスタマイズ性が低いのがネックで、Django 開発もここが障壁となります。

VPS(仮想専用サーバー)

VPS はサーバーの中に自分の専用領域を持てるサービスで、OS やライブラリのインストールなど、ほとんどの事を自分で行います。

Django に限らずかなり自由に開発ができます。

自分の目的に合わせて設定を行う必要がある分、より多くの知識が必要となりますが、Django アプリを公開する上では必要なこととなります。

Django や Python なら VPS の方が楽

前述の通り WordPress やメールの運用では共用サーバーの方が簡単ですが、Django 開発となると難易度が逆転します。

共用サーバーは Django を想定していない

そもそもの話になりますが、共用サーバーは Django など Python で動くプログラミングをほとんど想定していない様に見受けられます。

使用欄に Python と書かれているのに必要なライブラリが入っていない場合が多く、追加でインストールしようにもroot 権限がないため困難で八方塞がりになることもあります。

▶︎レンタル共用サーバーで Python は茨の道!VPS が楽得でおすすめ

共用サーバーで Django を動かす意味もない

公平にするために一応触れておきますが、ネットで検索すれば共用サーバーで Django を動かす方法も一応あるにはあります。

ただ、共用サーバーでの Django サービス公開をやっとの思いで実現させたとしても、実際に業務でそのノウハウを使う機会はほぼありません。企業での開発やフリーランスとして第三者に提供するサービスでは、わざわざ共用サーバーで Django を動かす必要が無いからです。

より環境構築が簡単で、より実用的な知識が身に付く VPS が圧倒的におすすめです。

さて、一応ここまで「なぜ Django には VPS なのか」という点で書きましたが、その上で「じゃあどの VPS が良いのか」という疑問に答えていきたいと思います。

「おすすめ VPS」の前に「おすすめ OS」

実は Django 開発を行う上で、実は「どの会社の VPS か」で違いが出る部分は少ないです。

その理由ですが、VPS を契約して初めに OS をインストールしますが、その後はサーバーの OS にログインしてひたすらコマンドを打っていく作業になります。

つまり VPS のコントロールパネルを操作することはほとんどなくなるため、どの会社の VPS が使いやすいか、は関係なくなります。

パソコンの設定をする際も Windows なのか Mac なのかは大事ですが、どこの電器屋で買ったかは関係ないですよね。

ただ、VPS によって楽にインストールできる OS があるので、 まず「どの OS か」を考えてその上で「どの VPS なら OS インストールが楽か」を考える方が適切です。

Django 関連情報の多い OS がおすすめ

では「どの OS か」についてですが、基本的に Django は Python3 が使えるメジャーな OS なら動きます。ただ、本当にどの OS でもいいかというとそうは言えません。

ご存知の通り開発にはエラーが付き物なので、エラー発生時に参考になる既存情報が多い方が作業をスムーズに行うことができます

結論から言うと既存情報が多いのは Ubuntu、Debian、CentOS の 3 つ。

Google 上で Django の関連記事が多い OS を調べてみましたので見てみましょう。

Django インストール時を想定して基本的な検索クエリ「"Django" "インストール"」に Django プロジェクト作成時に必ず実行する「"startproject"」コマンドを組み合わせて検索します。

そして各 OS の検索結果が何件返ってくるかをみてみました。

OS 名検索結果数
Ubuntu16,200
Debian15,300
CentOS1,940
Fedora522
Windows Server514
その他(FreeBSD, Arch Linux, openSUSE, NetBSD 等)数件 〜 300 件程度
*数字は 2021 年 12 月時点のものです

OS によってかなり差がありますね。あくまで目安ですが、Ubuntu、Debian、CentOS あたりの情報はそれなりに多いのでおすすめです。

ただ、CentOS に関しては CentOS 8 のサポートが 2021 年 12 月に終了し、CentOS Stream への移行が推奨されています。CentOS 7 のサポート期間は 2024 年 6 月まで続きますのでこれから使うなら CentOS 7 か、新しいもので試してみたい方は CentOS Stream で試すのもありです。

Ubuntu、Debian、CentOS のインストールが簡単な VPS

Django 関連情報が多い OS が絞れたところで、「どの VPS か」に移ります。

先述したとおり VPS によって特定の OS インストールをほぼ自動でやってくれるものがあります。

自動インストールの手順は各社様々で、例えばさくらの VPS であればコントロールパネルで選択した OS を自動でインストールしてくれますし、GMO のクラウド VPS であれば契約時に選択した OS をインストールされた状態でサーバーが用意されます。

さらに ConoHa VPS に関しては Django のセットアップまである程度自動化されています。

各社の OS 自動インストールの対象は下記の通りになっています。

自動 OSConoHa VPSさくらの VPSお名前.com VPSGMO クラウド VPSKagoya Cloud VPS
Ubuntu
Debian
CentOS
その他Django テンプレ無料お試し

ではそれぞれの VPS をみていきましょう。

1. ConoHa VPS

ConoHa VPS
自動インストール対象 OSCentOS 7.1 〜 7.9
CentOS Stream 8
CentOS Stream 9
Ubuntu 18.04
Ubuntu 20.04
Debian 9.13
Debian 10.10
Debian 11.0
自動インストール方法サーバー追加時にテンプレートを選択することでサーバー作成と同時にOSのインストールやアプリケーションサーバーの構築が完了。

VPS を追加する
おすすめプラン1G(初期費用無料 + 月額 723 円〜)

解説

今回紹介する中で対応 OS の種類が最も豊富なのがこちらの ConoHa VPS。

「VPSをもっと速く、かんたんに」というキャッチコピーだけあって、OS だけでなく Django のテンプレートもあり、簡単にセットアップが可能です。「Django のインストールは自分でやりたい」という方はもちろんそれも可能です。

自動インストール対象の OS の種類も多いですし、下の記事の様に公式が親切に色々な情報を載せているのもポイントです。最も Django におすすめの VPS の一つです。

3 ステップで簡単に始められるとの事で、公式サイトに「たったの25秒で〜サーバーが作れます。」とありますので試してみてください。笑

公式サイトConoHa VPS

2. さくらの VPS

さくらのVPS
自動インストール対象 OSUbuntu 18.04
Ubuntu 20.04
CentOS 7
CentOS Stream 8
自動インストール方法VPSコントロールパネルからワンクリックで再インストールが可能。

さくらの VPS 新規追加(コントロールパネル)
おすすめプラン1G(初期費用無料 + 月額 880 円〜)

解説

「Django VPS」で検索すると最も日本語記事が出てくるのが「さくらの VPS」。

かなり気軽に使える VPS で、Django を動かすのには私自身もさくらの VPS を使っています。ポートの開閉をコントロールパネル上のクリックで行えるパケットフィルター機能が地味に楽です。

ユーザーへのサポートをかなり意識していて、公式サイトでも VPS のセットアップの手順を詳しく説明してくれているのもありがたいです。こちらも 最も Django におすすめの VPS の一つです。

ネコでもわかる!さくらのVPS講座 ~第二回「サーバーをさわってみよう!」

公式サイトさくらのVPS

3. お名前.com VPS

お名前.com VPS
自動インストール対象 OSUbuntu 18.04
Ubuntu 20.04
CentOS 7.5 ~ 7.9
CentOS Stream 8
Debian 9.13
Debian 10.10
自動インストール方法VPSコントロールパネルのサーバーセットアップで OS とバージョンを選択可能。

サーバーを初期セットアップする
おすすめプラン1G(初期費用無料 + 月額 873 円)

解説

オンラインでのお申込みから最短10分で利用開始できるというお名前.com の VPS。

KVM という仮想化方式を採用していて、ネットワークやディスクI/Oのパフォーマンスを良くする Virtio ドライバにも対応するなどハイパフォーマンスを追求している VPS

OS の初期インストールの方法は下記の公式ページに記載があります。

公式サイトお名前.com VPS

4. クラウドVPS by GMO

GMOクラウドのVPS 詳細はこちら
自動インストール対象 OSCentOS 7.9
CentOS 8.2
Ubuntu 20.04
Debian 10.0
自動インストール方法契約時に選択した OS をインストールした状態でサーバーが用意される。

新規サーバー申し込み方法
おすすめプランV1(初期費用無料 + 月額 968 円〜)
お得な情報14 日間無料お試し

解説

コンテナ技術を採用していて、一般的な仮想マシンに比べて軽量で vCPU やメモリなどの負荷が小さく、リソースを効率的に利用できる VPS。どちらかというと法人ユーザーを想定しているようですが、14 日間の無料お試し期間があるのは他と違う点です 。

契約時の OS 選択について下記の公式ページで解説が載っています。

公式サイトGMOクラウドのVPS 詳細はこちら

5. KAGOYA Cloud VPS

カゴヤ・ジャパン
自動インストール対象 OSCentOS 7
CentOS 8
CentOS Stream 8
Ubuntu 18.04
Ubuntu 20.04
自動インストール方法専用コントロールパネルからテンプレートとアプリケーションを選択して環境構築可能。

インスタンス作成
おすすめプラン1コア/1GB(初期費用無料 + 月額 〜550 円)

解説

コントロールパネルから即座にスペック変更することができます

こちらもコントロールパネルからインスタンスを作成する際に任意の OS を指定することができます。

公式サイトカゴヤ・ジャパン

個人的には ConoHa VPS かさくらの VPS が Django におすすめ

OS インストールの手軽さを基準に Django のおすすめ VPS を 5 つ紹介しましたが、いかがだったでしょうか?

個人的なおすすめは ConoHa VPSさくらの VPS です。

ConoHa VPS は申し込み時の手軽さと、さくらの VPS は既に Django に利用している人がかなりいる & 私自身も利用していて全く不満がないです。

多くのユーザーがアクセスする大規模なアプリケーションを作成するのであれば GMO のクラウド VPSお名前.com の VPS(KVM)もいいかと思いますが、個人で小さい Django アプリを作っていくような場合はやはり前述の 2 つがおすすめだと思います。

Ubuntu を手軽に使える VPS おすすめ 7 選

最も有名な Linux ディストリビューションの一つである Ubuntu。プログラミング関連の書籍でも Ubuntu を採用しているものは少なくありません。

そして VPS の中には特定の OS に関して自動インストールの様な仕組みを用意しているため、好みの OS のサーバーを手軽に立ち上げることができますが、もちろん Ubuntu のセットアップが簡単な VPS とそうでない VPS があります。

今回は Ubuntu を手軽に使えるおすすめ VPS をご紹介します。

  1. さくらの VPS
  2. お名前.com VPS
  3. クラウド VPS by GMO
  4. ConoHa VPS
  5. KAGOYA Cloud VPS
  6. ABLENET VPS
  7. WebARENA Indigo

1. さくらの VPS

カテゴリコメント
公式サイトさくらのVPS
対応している Ubuntu のバージョン18.04, 20.04
自動インストール対応あり
ウェブ上の関連記事数かなり多い

解説

標準OSとして Ubuntu の提供があり、ワンクリックでインストール可能とのこと。

参考:ネコでもわかる!さくらの VPS 講座 〜第二回「サーバーをさわってみよう!」

ウェブ上の関連記事数は、「"さくら" "VPS" "Ubuntu"」の検索で 120,000 件程度返ってきました。先人たちが残した情報がかなりある様です。

公式サイトさくらのVPS

2. お名前.com VPS

カテゴリコメント
公式サイトお名前.com VPS
対応している Ubuntu のバージョン18.04, 20.04
自動インストール対応あり
ウェブ上の関連記事数かなり多い

解説

標準OSとして対応しており、サーバーセットアップの画面で選択すれば自動的にインストールしてくれるとのこと。

参考:サーバーを初期セットアップする

ウェブ上の関連記事数はかなり多く、「"お名前" "VPS" "Ubuntu"」の検索で 113,000 件程度の結果が返ってきました。

公式サイトお名前.com VPS

3. クラウド VPS by GMO

カテゴリコメント
公式サイトGMOクラウドのVPS 詳細はこちら
対応している Ubuntu のバージョン20.04
自動インストール対応あり
ウェブ上の関連記事数多い

解説

契約時に選択したOSをインストールした状態でサーバーを提供とのこと。

参考:VPS の OS

ウェブ上の関連記事数「"GMO" "VPS" "Ubuntu"」の検索で23,000 件程度で、そこそこ多い様です。

公式サイトGMOクラウドのVPS 詳細はこちら

4. ConoHa VPS

カテゴリコメント
公式サイトConoHa VPS
対応している Ubuntu のバージョン18.04, 20.04
自動インストール対応あり
ウェブ上の関連記事数多い

解説

OSやアプリケーションのテンプレートあり、インストール完了した状態で使用開始出来るそうです。

参考:豊富なテンプレート

ウェブ上の関連記事数は「"ConoHa" "VPS" "Ubuntu"」の検索で 27,800 件程度返ってきました。

公式サイトConoHa VPS

5. KAGOYA Cloud VPS

カテゴリコメント
公式サイトKAGOYA CLOUD VPS
対応している Ubuntu のバージョン18.04, 20.04
自動インストール対応あり
ウェブ上の関連記事数少ない

解説

コントロールパネルからテンプレート選択してアプリケーションのセットアップまで完了出来るとのこと。

参考:テンプレート

ウェブ上の関連記事数は「"KAGOYA" "VPS" "Ubuntu"」の検索で 3,200 件程度で、あまり多く無い様です。

公式サイトKAGOYA CLOUD VPS

6. ABLENET VPS

カテゴリコメント
公式サイト格安・高品質なサーバー【ABLENET VPS】
対応している Ubuntu のバージョン14.04, 16.04, 18.04, 19.10, 20.04
自動インストール対応なし
ウェブ上の関連記事数多い

解説

初期OS は CentOS か Windows Server となっており、Ubuntu のインストールは手動で自身で行う必要があります。

ウェブ上の関連記事数は「"ABLENET" "VPS" "Ubuntu"」の検索で 25,600 件程度となっており、そこそこ多い様です。

公式サイト格安・高品質なサーバー【ABLENET VPS】

7. WebARENA Indigo

カテゴリコメント
公式サイトWebARENA (Indigo)
対応している Ubuntu のバージョン18.04, 20.04
自動インストール対応なし
ウェブ上の関連記事数少ない

解説

OS の基本設定は自身で手動で行う必要がある様です。

参考:カーネルモジュールの提供をしてもらえるでしょうか?

ウェブ上の関連記事数は「"WebARENA" "VPS" "Ubuntu"」の検索で 3,600 件程度と、あまり多く無い様です。

公式サイトWebARENA (Indigo)

レンタルサーバーの大クセPythonは要注意!どうしても使うならこれ

Python が普通に使えるわけではありません

Python を動かすためのレンタルサーバーを探しているそこのあなた。お待ちください。

実はレンタルサーバーでの Python 実行には下記のリスクがあるのをご存知でしたか?

  • SSH 接続できないかも
  • 仮想環境が使えないかも
  • データベースが操作できないかも
  • 最悪 Python の実行にすら辿りつかないかも
キーボード

不用意に怖がらせるつもりはないのですが、ネット上には公式サイトの仕様欄を鵜呑みにした記事が多く、実際自分が Python を使おうとした際に様々な問題にぶち当たりました。

その経験を踏まえ、当サイトでは実際に触って検証しましたので、ぜひサーバー選びの参考にしてみてください。

レンタルサーバーの Python は要注意

レンタルサーバーの公式サイトを見ると仕様欄に Python3 や MySQL が入っているので、何となく Python でプログラムを組みつつ MySQL のデータベースも使えてしまう様な気がしてきます。

が、実際使ってみるとそうもいきません。一つずつ見ていきましょう。

1. SSH 接続できないかも

まず SSH 接続が出来るかどうかの確認です。

SSH 接続とは
Windowsのコマンドプロンプトや Mac のターミナルなどを使ってサーバーを遠隔操作する方法

せっかくサーバーを借りても、SSH 接続が出来ないと Python の実行やパッケージのインストールなどが出来ません

ほとんどの共用サーバーは SSH 接続可能なので、ここはそこまで心配いらないと思いきや、スターサーバーでは SSH 接続出来ません。要注意です。

なぜ公式サイトで「Python」の記載があったのか分かりません。

XREAロリポップエックスサーバーコアサーバーConoha WINGバリューサーバースターサーバー
SSH 接続パスワードパスワード公開鍵公開鍵公開鍵パスワードNG

2. 仮想環境か使えないかも

次は Python の仮想環境が使えるかどうかの確認です。

仮想環境とは
例えば自分のパソコンに Python が入っていて、その中でスクレイピングのプログラムウェブサイト制作のプログラムの2つを作るとします。

それぞれのプログラムに必要なパッケージをインストールしていくと、どのパッケージがどちらのプログラムに使われているのか分からなくなったり、パッケージのアップデートなどでプログラム間の互換性が保てなくなることもあります。

この状況を整理するため、スクレイピング用の実行環境とウェブサイト制作用の実行環境を別々で作り、それぞれの中に必要なパッケージをインストールすることでお互いの干渉を防ぐのが仮想環境です。

これは公式サイトの仕様欄などを見ただけではわからないので、実際に仮想環境作成のコマンドを実行して確認してみました。

結果、そもそも SSH 接続も出来なかったスターサーバーに加え、バリューサーバーも仮想環境の作成ができませんでした。

逆に、それ以外のサーバーは問題なく仮想環境の作成ができました。

XREAロリポップエックスサーバーコアサーバーConoha WINGバリューサーバースターサーバー
SSH 接続パスワードパスワード公開鍵公開鍵公開鍵パスワードNG
仮想環境OKOKOKOKOKNG--

3. データベースが操作できないかも

レンタルサーバーで Python を使う際、最も気をつけなければならないのがPython でデータベースを使えるサーバーが少ないということです。

大抵のレンタルサーバーは WordPress には特化していて、数クリックで簡単にMySQL のデータベースが作成できることがほとんどですが、「Python でデータベースを操作する」となると話は別です。

mysqlclient モジュールのインストールが出来ない場合がある

共用サーバーで使用できるデータベースはほとんどの場合 MySQL ですが、Python で MySQL のデータベースを操作する場合は、mysqlclient モジュールをインストールする必要があります。

mysqlclent モジュール

実際にコマンドを実行して確認してみた結果、バリューサーバーやエックスサーバーなどでは mysqlclient のインストールで失敗しますし、ロリポップではサーバーに直接インストールはできるのに仮想環境で出来ないというクセもあります。

これも公式サイトの仕様欄などを見ただけではわからないので要注意です。

XREAロリポップエックスサーバーコアサーバーConoha WINGバリューサーバースターサーバー
SSH 接続パスワードパスワード公開鍵公開鍵公開鍵パスワードNG
仮想環境OKOKOKOKOKNG--
MySQLdbOKOK*不明*OK*不明NG--

また、上記の確認でデータベースを使えたとしても、レンタルサーバー特有の制限がかかっていて契約したレンタルサーバーからしかアクセスできない場合もありますので気をつけてください。

レンタルサーバーでのデータベース操作

つまり自分のパソコンからは操作できず、データベースを操作するスクリプトをレンタルサーバーに置いてそのスクリプトを実行するという様な回りくどい事をする羽目になります。

レンタルサーバー x Python ならほぼ XREA 一択

はい、というわけで SSH接続、仮想環境、MySQLdb 全て考慮すると、一番問題なく使えるのは XREA です。

XREA
公式サイトXREA
OSLinux (CentOS)
Python のバージョンPython2, Python3
データベース個数XREA Free:1
XREA Plus:5
CRONXREA Free:なし
XREA Plus:あり(個数不明)
ウェブ上の関連記事数多い
おすすめプランXREA Plus
(月額 210 円〜 + 初期費用 0 円)
無料お試し期間7 日間

ロリポップコアサーバーエックスサーバーに関しては SSH 接続と仮想環境の作成は問題ないですが、MySQLdb モジュールの使用に難ありです。

バリューサーバースターサーバーに関しては 仮想環境の作成も出来ないので Python の使用に関してはお勧めしません

その他の参考情報

ここまでで使えるサーバーがだいぶ絞られてしまいましたが、一応使えるデータベースの個数、CRON の個数、関連記事数も確認しましたので記載します。

1. 作成可能なデータベースの個数

Python でスクレイピングした情報など、データベースに保存したりデータベースから取り出したりする必要があります。その際、用途によってデータベースを分けたい場合もあると思いますので、作成可能なデータベースの個数も気にするといいと思います。

2. CRON の個数

CRON は指定した日時によって定期的にプログラムやスクリプトを実行できる機能です。スクレイピングやデータベースの更新など、CRON を使うと便利な場面が多いと思いますが、プランによって同時に設定できる CRON の個数が決まっているのでサーバーを選ぶ際には注目するといいと思います。

3. ウェブ上の関連記事数

サーバーの中で作業をしていく中で、必ず何かしらのエラーが起きて検索する必要があるのが常なので、検索した時にどの程度情報が出てくるかも大事なポイントです。検索結果の数も目安として掲載しますので参考にしてみてください。

ちなみに無料お試し期間があるサーバーも多いので、その間に Python3 を実際に試してみるのもありです。

各レンタルサーバーの検証内容

XREAロリポップエックスサーバーコアサーバーConoha WINGバリューサーバースターサーバー
Python バージョン2.x/3.x2.7/3.72.7/3.4/3.62.x/3.x2.7/3,62.7/3.62.7/3.4/3.6
SSH 接続パスワードパスワード公開鍵公開鍵公開鍵パスワードNG
仮想環境OKOKOKOKOKNG--
MySQLdbOKOK*不明*不明*不明NG--
データベース上限550無制限無制限無制限無制限30
CRON 上限個数不明10無制限不明不明9910
関連記事数多いかなり多いかなり多いかなり少ない多いかなり少ないかなり少ない
おすすめプランXREA PlusスタンダードスタンダードCORE-Xベーシックスタンダードスタンダード

1. XREA

XREA
公式サイトXREA
OSLinux (CentOS)
Python のバージョンPython2, Python3
データベース個数XREA Free:1
XREA Plus:5
CRONXREA Free:なし
XREA Plus:あり(個数不明)
ウェブ上の関連記事数多い
おすすめプランXREA Plus
(月額 210 円〜 + 初期費用 0 円)
無料お試し期間7 日間

SSH 接続

こちらはパスワードベースで SSH にログイン可能なので SSH 接続が簡単です。

Python 仮想環境

下記 4 行のコマンドだけで pip3 を使える状態の Python3 を起動できます。

$ bash
$ python3 -m venv python3-venv
$ source python3-venv/bin/activate
(python3-venv) $ python
>>> 

ただ、デフォルトのシェルが rbash でかなり制限があるので、SSH 接続したら初めにコマンド「bash」を実行する必要があります。上のスクリプトの1行目で「bash」と入力しているのがそれです。

MySQL モジュールの使用

上記に続けて下記を順に実行していけば仮想環境内で MySQLdb モジュールを使うこともできます。

>>> exit()
$ pip install mysqlclient
$ python
>>> import MySQLdb
>>> 

ウェブ上の関連記事数

「"XREA" "python3"」での検索結果は 5,020 件で、上の2つに比べると少ないですが、これでもよく調べれば普通の使い方には対応できるのではと思います。

おすすめプラン

XREA Free は無料ですが CRON が使えませんし、データベースも 1 つしか持てません。XREA Plus は CRON も使えてデータベースも 5 個まで作れるのでおすすめです。

利用開始するにはバリュードメインのアカウント(無料)作成も必要です。

公式サイトXREA

2. ロリポップ

ロリポップ!
公式サイトロリポップ!
OSLinux (CentOS)
Python のバージョンPython2.7, Python3.7
データベース個数ライトプラン:1
スタンダードプラン:50
CRON 個数ライトプラン:5
スタンダードプラン:10
ウェブ上の関連記事数かなり多い
おすすめプランスタンダード
(月額 440 円〜 + 初期費用 0 円)
無料お試し期間10 日間

SSH 接続

こちらも SSH へのログインはパスワードベースでなので分かりやすいです。

Python 仮想環境

SSH ログイン後はエックスサーバーと同じく下記 3 行のコマンドだけで pip3 を使える状態の Python3 を起動できました。本気で SSH ログインから 10 秒で Python3 を起動できます。

$ python3 -m venv python3-venv
$ source python3-venv/bin/activate
(python3-venv) $ python
>>> 

MySQL モジュールの使用

ただ、仮想環境内では MySQLdb モジュールがインストール出来ませんでした。仮想環境を作らずに Python3 を使うのであれば MySQLdb はすでに使えます。

$ python3
>>> import MySQLdb
>>> 

仮想環境外で追加パッケージをインストールする場合は「python3 -m pip install パッケージ名」でできる様です。

ウェブ上の関連記事数

「"ロリポップ" "python3"」での検索結果は 18,200 件と、こちらも多くの情報がすでにネット上に存在しています。

おすすめプラン

ライトだとMySQLデータベース1つしか作れないので、50個まで作れる「スタンダード」プランが良いと思います。

CRON もスタンダードプランであれば 10 個まで設定可能です。

こちらも無料お試し時にはクレジットカード情報などの入力は不要です。

公式サイトロリポップ!

3. エックスサーバー

エックスサーバー
公式サイトエックスサーバー
OSLinux
Python のバージョンPython2.7, Python3.4, Python3.6
データベース個数全プラン無制限
CRON 個数全プラン無制限
ウェブ上の関連記事数かなり多い
おすすめプランスタンダード
(月額 990 円 + 初期費用 3,300 円)
無料お試し期間10 日間

SSH 接続

SSH への接続は公開鍵認証の設定が必要で少し面倒ではあります。

Python 仮想環境

SSH ログインさえ出来れば下記のコマンドで pip3 を使える状態の Python3 を起動できます。

$ python3 -m venv python3-venv
$ source python3-venv/bin/activate
(python3-venv) $ python
>>> 

MySQLdb モジュールの使用

MySQLdb モジュールを使った MySQL の操作ですが、mysqlclient パッケージのインストールに失敗するという情報があります。

ウェブ上の関連記事数

「"エックスサーバー" "python3"」での検索結果は 12,500 件程度と、多くの情報がすでに存在しているので心強いです。

おすすめプラン

基本的な違いはディスクスペースの容量と無料独自ドメインの対象くらいなので「スタンダード」プランで充分だと思います。無料お試しに申し込んでもその時点ではクレジットカード情報などの入力が必要ないのも安心です。

CRON の個数は無制限です。データベースの個数も無制限です。すごいですね。

公式サイトエックスサーバー

4. コアサーバー

コアサーバー
公式サイトコアサーバー
OSLinux
Python のバージョンPython2, Python3
データベース個数全プラン無制限
CRON全プランあり(個数不明)
ウェブ上の関連記事数かなり少ない
おすすめプランCORE-X
(月額 399 円〜 + 初期費用 1,650 円)
無料お試し期間30 日間

SSH 接続

SSH への接続は公開鍵認証の設定が必要で少し面倒です。

Python 仮想環境

SSH ログイン後は他のサーバーと同じ様に「python3 -m venv 任意の仮想環境名」で仮想環境を作成できます。

$ python3 -m venv python3-venv
$ source python3-venv/bin/activate
(python3-venv) $ python
>>> 

ウェブ上の関連記事数

「"コアサーバー" "python3"」での検索結果は 500 件程度で、かなり少ない状態です。何か問題が起こったとき、まだ解決方法がネット上に載っていない場合も考えられます。

おすすめプラン

全プランで CRON あり、データベースの個数も無制限です。CORE-Xプランで十分足りると思います。

公式サイトコアサーバー

5. ConoHa WING

ConoHa WING
公式サイトConoHa WING
OSLinux (CentOS)
Python のバージョンPython2.7, Python3,6
データベース個数全プラン無制限
CRONあり(対象プラン及び個数不明)
ウェブ上の関連記事数多い
おすすめプランベーシック
(月額 740 円〜 + 初期費用 0 円)
無料お試し期間無し

SSH 接続

SSH への接続は公開鍵認証の設定が必要で少し面倒ではあります。

Python 仮想環境

SSH ログインさえ出来れば下記のコマンドで pip3 を使える状態の Python3 を起動できます。

$ python3 -m venv python3-venv
$ source python3-venv/bin/activate
(python3-venv) $ python
>>> 

ウェブ上の関連記事数

「"ConoHa WING" "python3"」での検索結果は 1,930 件で少し少ないかと思います。

おすすめプラン

データベースの個数は全プランで無制限です。 CRON は「ジョブスケジューラー」という名前で提供されていますが、個数はわかりませんでした。ベーシックプランがおすすめです。

公式サイトConoHa WING

6. バリューサーバー

バリューサーバー
公式サイトバリューサーバー
OSLinux
Python のバージョンPython2.7, Python3.6
データベース個数エコプラン:1
スタンダードプラン:無制限
CRON 個数エコプラン:10
スタンダードプラン:99
ウェブ上の関連記事数かなり少ない
おすすめプランスタンダード
(月額 367 円〜 + 初期費用 0 円)
無料お試し期間10 日間

SSH 接続

こちらもパスワードベースで SSH にログイン可能なので SSH 接続が簡単ですし、「python」でも「python3」でも Python3 が実行されるのも便利です。(Python2 の起動はコマンド python2 を実行)

Python 仮想環境

が、なぜか Python 仮想環境の作成時にエラーが発生します。

$ python3 -m venv python3-venv
Error: Command '['/virtual/アカウント名/python3-venv/bin/python3', '-Im', 'ensurepip', '--upgrade', '--default-pip']' returned non-zero exit status 2.

仮想環境外で mysqlclient をインストールしようとしてもエラーが発生するので、残念ながら Python の使用に関しては避けた方がいいと思います。

公式サイトバリューサーバー

7. スターサーバー

スターサーバー
公式サイトスターサーバー
OSLinux
Python のバージョンPython2.7, Python3.4, Python3.6
データベース個数ライト:1
スタンダード:30
CRON 個数ライト:5
スタンダード:10
ウェブ上の関連記事数かなり少ない
おすすめプランスタンダード
(月額 440 円〜 + 初期費用 0 円)
無料お試し期間14 日間

SSH 接続

何とスターサーバーは SSH 接続が出来ない仕様になっています。なので Python のコマンド操作なども出来ません。

公式サイトスターサーバー

おすすめは XREA

いかがでしたか?

学習も兼ねて Python を少しいじってみたいという場合は、既存の情報が多い上に SSH 接続、Python3 の実行、仮想環境の作成と全て問題なくできた XREA がおすすめです。

もし自分でも試したい場合は大体のレンタルサーバーが無料お試し期間を設けているので利用してみると良いかもしれません。お試し期間は基本的にクレジットカード情報など入力不要なので安心です。

更なるおすすめは VPS

最後に繰り返しになりますが、Python でプログラミングをしていくのであればレンタルサーバーよりも VPS がおすすめです。絶対に。

ご自身のためにも、下記の記事をチェックしてみてください。

▶︎レンタルサーバーで Python は要注意!VPS が楽得でおすすめ

【番外編】さくらレンタルで無理やり Python 3 と MySQL を使う

ちなみにさくらのレンタルサーバーはそもそも Python 2しか入っていないのでこの記事にも載せていないんですが(現在の推奨は Python 3 で Python 2 は非推奨)一応 Python 3 をインストールして仮想環境で MySQLdb をインストールすることも出来ました。

めんどくさすぎたので正直全くお勧めしないですが、気合いで頑張りたい方々のために一応貼っておきます。

さくらの VPS (Ubuntu 20.04) で Django アプリを作る(1/3)

Ubuntu 環境(さくらのVPS )で Django アプリケーションを作るまでに実際に辿ったステップを記録します。

手順がかなり多いので途中あまり詳しく書いていないところもありますがご了承ください。

まずは VPS の契約から Ubuntu OS の設定Python のインストールWeb サーバーのインストールまで。

  1. VPS の契約(さくらの VPS)
  2. 独自ドメインの取得
  3. IP アドレスとドメイン名を紐付け
  4. OS (Ubuntu 20.04) のインストール
  5. Ubuntu の初期設定
    • ssh でサーバーへ接続
    • 非 root ユーザーの作成
    • パッケージリストを最新版へ更新
    • パッケージのアップグレード
    • サーバーの再起動
  6. FTP サーバーのインストール
  7. 開発パッケージのインストール
  8. Python と関連パッケージのインストール
    • 依存関係のインストール
    • Python 3.9 のインストール
    • python3.9-dev のインストール
    • 仮想環境(venv)のインストール
  9. Web サーバー(Nginx)のインストール

ちなみに、僕は初め下記の書籍に沿って Django の全体像を勉強しました。書籍の中では AWS を使ったデプロイにも触れられていますので参考にしてみてください。

動かして学ぶ! Python Django開発入門 (NEXT ONE)

1. VPS の契約(さくらの VPS)

まずは VPS の契約。私は月額 880 円〜の さくらのVPS 1G プランにしました。

公式ページさくらのVPS 1G

さくらの VPS 以外でも大丈夫

とはいうものの、実はさくらの VPS でなくても Ubuntu OS であればこちらの記事の手順で特に問題ないです。

コントロールパネルの見た目やファイアウォールの設定の部分だけは少し違いますが、それは一番初めの部分でそれ以降は OS に依存するので他の VPS でも変わりません。

Django におすすめの OS と VPS を下記の記事で紹介しているのでぜひ参考にしてみてください。

▶︎ Django のおすすめ VPS(仮想専用サーバー)は OS から選ぶべし
▶︎ Ubuntu を手軽に使える VPS おすすめ 7 選

2. 独自ドメインの取得

サイト公開用の独自ドメインを取得します。こちらもさくらのドメインで取得しました。

3. IP アドレスとドメイン名を紐付け

VPS コントロールパネルの「ネームサーバ登録」をクリックします。

遷移先のページで「ドメインリスト」をクリック後、対象のドメインの「ゾーン編集」をクリックし、情報を登録します。

ゾーン情報の設定に関しては下記の記事にもまとめているので参考にしてみてください。

4. OS (Ubuntu 20.04) のインストール

VPS コントロールパネルの「各種設定」そして「OSインストール」をクリックします。

今回は標準 OS の Ubuntu 20.04 をインストールします。

サーバーのファイアウォールを設定する代わりに、さくら VPS のパケットフィルタの機能でポートの開閉を設定しています。

ファイアウォールで設定する場合はパケットフィルタをオフにします。

「インストールを実行する」をクリックし、Ubuntu のインストールを開始します。

先ほどと重複しますが、Ubuntu 以外にも Django におすすめの OS を下記の記事で紹介しているのでもしよければ見てみてください。

▶︎ Django におすすめの OS と VPS の選び方

5. Ubuntu の初期設定

ssh でサーバーへ接続

ターミナルで「ssh 管理ユーザー名@ホスト名」と打ち込み接続します。ホスト名は下記の通りコントロールパネルの「ネットワーク情報」タブで確認できます。

下記の様にコマンド「ssh 管理ユーザー名@ホスト名」を入力します。

% ssh ubuntu@xx1-234-56789.vs.sakura.ne.jp

初めて接続する際に下記の様に「The authenticity of host 'xx1-234-56789.vs.sakura.ne.jp (123.456.78.90)' can't be established.」とメッセージが出ることがありますが特に問題ないので yes と打ち込みます。

The authenticity of host 'xx1-234-56789.vs.sakura.ne.jp (123.456.78.90)' can't be established.
ECDSA key fingerprint is XXX123:ABCDEFGHIJKLMNOPQRSTUVWXYZ.
Are you sure you want to continue connecting (yes/no/[fingerprint])? 
Are you sure you want to continue connecting (yes/no/[fingerprint])? yes
Warning: Permanently added 'xx1-234-56789.vs.sakura.ne.jp.123.456.78.90' (ECDSA) to the list of known hosts.
% ssh ubuntu@xx1-234-56789.vs.sakura.ne.jp
ubuntu@xx1-234-56789.vs.sakura.ne.jp's password: 

パスワードを入力し無事 ssh で サーバーへログインできました。

% ssh ubuntu@xx1-234-56789.vs.sakura.ne.jp
ubuntu@xx1-234-56789.vs.sakura.ne.jp's password: 
Welcome to Ubuntu 20.04.1 LTS (GNU/Linux 5.4.0-52-generic x86_64)

 * Documentation:  https://help.ubuntu.com
 * Management:     https://landscape.canonical.com
 * Support:        https://ubuntu.com/advantage

  System information as of Fri Apr  9 08:11:04 JST 2021

  System load:  0.0               Processes:             105
  Usage of /:   2.0% of 94.43GB   Users logged in:       0
  Memory usage: 16%               IPv4 address for ens3: 123.456.78.90
  Swap usage:   0%


66 updates can be installed immediately.
0 of these updates are security updates.
To see these additional updates run: apt list --upgradable


The list of available updates is more than a week old.
To check for new updates run: sudo apt update


The programs included with the Ubuntu system are free software;
the exact distribution terms for each program are described in the
individual files in /usr/share/doc/*/copyright.

Ubuntu comes with ABSOLUTELY NO WARRANTY, to the extent permitted by
applicable law.


SAKURA internet [Virtual Private Server SERVICE]

To run a command as administrator (user "root"), use "sudo <command>".
See "man sudo_root" for details.

ubuntu@xx1-234-56789:~$ 

3行目に「Welcome to Ubuntu 20.04.1 LTS」と書かれてあります。それ以降の部分はサーバーの容量やアップデートなどの案内事項です。

非 root ユーザーの作成

ログインしたユーザーを root ユーザーへ昇格し、新たな sudo ユーザーを作成します。詳しくは下記の記事を参照してください。

パッケージリストを最新版へ更新

コマンド「sudo apt update」でパッケージリストを最新版に更新します。

ubuntu@xx1-234-56789:~$ sudo apt update
ubuntu@xx1-234-56789:~$ 

パッケージのアップグレード

コマンド「sudo apt upgrade」を実行し、サーバーに元々インストールされているパッケージに対してアップグレードを実施します。

ubuntu@xx1-234-56789:~$ sudo apt upgrade
ubuntu@xx1-234-56789:~$ 

サーバーの再起動

コマンド「sudo reboot」を実行し、サーバーを再起動します。

ubuntu@xx1-234-56789:~$ sudo reboot
Connection to xx1-234-56789.vs.sakura.ne.jp closed by remote host.
Connection to xx1-234-56789.vs.sakura.ne.jp closed.
% 

6. FTP サーバーのインストール

FTP 接続ができる様にしたいので vsftpd をインストールします。コマンド「sudo apt install vsftpd」を実行します。

ubuntu@ik1-437-50827:~$ sudo apt install vsftpd
ubuntu@ik1-437-50827:~$ 

Cyberduck で接続できました。

7. 開発パッケージのインストール

adminvps@xx1-234-56789:~$ sudo apt install build-essential
adminvps@xx1-234-56789:~$ 

8. Python と関連パッケージのインストール

コマンド「python3 -V」で Ubuntu 20.04 にもともと入っている Python のバージョンを確認します。

adminvps@xx1-234-56789:~$ python3 -V
Python 3.8.5
adminvps@xx1-234-56789:~$

Python 3.8.5 が入っていました。この後 Python 3.9 をインストールします。

依存関係のインストール

Python 自体をインストールする前に必要な依存関係をインストールします。コマンド「sudo apt install 〜」で様々なパッケージをインストールします。

adminvps@xx1-234-56789:~$ sudo apt install zlib1g-dev libncurses5-dev libgdbm-dev libnss3-dev libssl-dev libreadline-dev libffi-dev libsqlite3-dev wget libbz2-dev
adminvps@xx1-234-56789:~$ 

Python 3.9 のインストール

依存関係のインストールが完了したら、Python 3.9 をインストールします。

adminvps@xx1-234-56789:~$ sudo apt install python3.9
adminvps@xx1-234-56789:~$ 

python3.9-dev のインストール

adminvps@xx1-234-56789:~$ sudo apt install python3.9-dev
adminvps@xx1-234-56789:~$ 

仮想環境(venv)のインストール

Python の仮想環境である venv をインストールするためコマンド「sudo apt-get install python3.9-venv」を実行します。

adminvps@xx1-234-56789:~$ sudo apt-get install python3.9-venv
adminvps@xx1-234-56789:~$ 

9. Web サーバー(Nginx)のインストール

コマンド「sudo apt install nginx」で Nginx をインストールします。

adminvps@xx1-234-56789:~$ sudo apt install nginx
adminvps@xx1-234-56789:~$ 

ブラウザの URL バーにサーバーの IP アドレスを入れてみて、下記のページが出れば無事インストールされています。

とりあえず VPS に Ubuntu が入りPython と Nginx がインストールされた状態です。

他の行程へ

▶︎まずは2週間無料でお試し♪さくらのVPS

ローカル環境の Django を本番環境(Ubuntu)へデプロイする方法

Mac のローカル環境で作成した Django プロジェクトをさくらのVPSで用意した Ubuntu 環境へ反映する際の流れをメモしています。

▶︎ Django のおすすめ VPS(仮装専用サーバー)はOSから決めるべし

下記が完了していることを想定しています。

  • Web サーバーの設定が完了済み(筆者は Nginx を使用)
  • 仮想環境を作るディレクトリが決めてある
  1. データベースを本番環境にコピーする
    • ローカル環境での作業
    • 本番環境での作業
  2. ローカル環境のパッケージを本番環境で再現
    • requirements.txt の作成
    • requirements.txt を本番環境へコピー
    • 本番環境で Python 仮想環境を作成
    • requirements.txt によるパッケージインストール
  3. settings.py の編集
    • ファイルを分割する必要性
    • 開発環境の runserver 実行時に settings_dev.py を指定
    • settings.py(本番環境用)の編集
  4. Django ソースコードを本番環境に配置
    • 本番環境への git のインストール
    • リモートリポジトリから本番環境へファイルをコピー
  5. gunicorn のインストール
  6. データベースのログイン情報を別ファイル記述
  7. 静的ファイルの配置

1. データベースを本番環境にコピーする

検証環境で準備したデータベース、テーブル、そしてデータを本番環境でも反映します。

ここはうまくやれば一行スクリプト書いて終了する方法もある様ですが、色々とエラーが出て逆にめんどくさそうだったのでステップバイステップでやっていきます。

ローカル環境での作業

まずローカル環境でコマンド「mysqldump データベース名 > dump.txt」を実行し、dump ファイルを作成します。

% mysqldump データベース名 > dump.txt                                                              
%

それを FTP か何かで本番環境へアップロードします。

本番環境での作業

本番環境に接続し、本番環境の MySQL でデータベースを作成します。

mysql> create database データベース名;

そしてコマンド「sudo mysql データベース名 < dump.txt」を実行します。

$ sudo mysql データベース名 < dump.txt
$

これで本番環境の MySQL にもローカル環境と同じデータベース、テーブル、そしてデータがコピーされました。

2. ローカル環境のパッケージを本番環境で再現

ローカル環境の Python 関連パッケージを本番環境でも再現するため、ローカル環境で requirements.txt ファイルを作成し、それを元に本番環境でパッケージインストールをさせます。

requirements.txt の作成

ローカル環境の Python 仮想環境へ入り、コマンド「pip freeze > requirements.txt」を実行します。

% source bin/activate
% pip freeze > requirements.txt

requirements.txt を本番環境へコピー

コマンド「scp requirements.txt 本番環境のユーザー名@本番環境のホスト名(もしくは IP アドレス):保存先のディレクトリ」を実行します。

だいぶ長いですが下記の例だとすると。。。

  • 本番環境のユーザー名: vpsadmin
  • 本番環境のホスト名: xx1-234-56789.vs.sakura.ne.jp
  • 保存先のディレクトリ: /var/www/example.com/html

下記の様になります。

scp requirements.txt vpsadmin@xx1-234-56789.vs.sakura.ne.jp:/var/www/example.com/html

無事本番環境に requirements.txt がコピーされました。

$ ls
requirements.txt

本番環境で Python 仮想環境を作成

本番環境のディレクトリへ移動し、Python の仮想環境を作成します。

$ python3.9 -m venv pythonvenv
$ ls
pythonvenv  requirements.txt

requirements.txt によるパッケージインストール

本番環境の Python 仮想環境に入った状態で、コマンド「pip install -r requirements.txt」を実行します。

(pythonvenv) $ pip install -r requirements.txt

すると requirements.txt の内容を元に Django を含めローカル環境で使っていたものと同じパッケージがインストールされます。

3. settings.py の編集

ファイルを分割する必要性

settings.py は本番環境と開発環境で内容が異なる部分が出てくるので、下記の様にファイルを分ける必要があります。(ファイル名は任意)

  • settings_common.py:開発環境と本番環境で共通の部分を記述
  • settings.py:本番環境でのみ適用する部分を記述
  • settings_dev.py:開発環境でのみ適用する部分を記述

settings.py と settings_dev.py それぞれに「from .settings_common import *」と記述し、共通部分を settings_common.py から読み込む様設定します。

開発環境の runserver 実行時に settings_dev.py を指定

runserver 実行時、デフォルトでは settings.py が設定ファイルとして読み込まれますが、今後開発環境(ローカル環境)では settings_dev.py を使う必要があります。

そのため、今後開発環境で runserver を実行する際は settings_dev.py を「runserver --settings=プロジェクトディレクトリ名.settings_dev」の形式で渡して実行します。

(pythonvenv) % python manage.py runserver --settings=some_project.settings_dev

settings.py(本番環境用)の編集

DEBUG の変更

False に変更

DEBUG = False

ALLOWED_HOSTS の変更

ドメイン名を設定。

ALLOWED_HOSTS = ['example.com']

Web サーバーで www.example.com から example.com のリダイレクトを行っていれば example.com のみを設定するだけで大丈夫です。

静的ファイルの本番環境での配置場所

STATIC_ROOT = '/var/www/examlpe.com/html/static'

4. Django ソースコードを本番環境に配置

本番環境への git のインストール(インストール済みの場合は不要)

本番環境でコマンド「sudo apt update」を実行しパッケージリストを更新、その後「sudo apt install git」で git をインストールします。

$ sudo apt update
$ sudo apt install git
Reading package lists... Done
Building dependency tree       
Reading state information... Done
git is already the newest version (1:2.25.1-1ubuntu3.1).
git set to manually installed.
0 upgraded, 0 newly installed, 0 to remove and 18 not upgraded.

リモートリポジトリから本番環境へファイルをコピー

プロジェクトフォルダをリポジトリに設定しているので、プロジェクトフォルダを配置したい場所へ移動した上で git clone を実行します。

$ git clone https://github.com/ユーザー名/リポジトリ名.git

これで本番環境にもプロジェクトフォルダがコピーされました。

ローカル環境からリモートリポジトリへファイルを反映させる方法はこちら↓

Github で開発ローカル → リモートリポジトリ → 本番ローカルに反映させる手順

5. gunicorn のインストール

本番環境でのみ必要となるものとして、アプリケーションサーバーがあります。今回は gunicorn を使います。

Python 仮想環境内でアプリケーションサーバーの gunicorn をインストールします。

(pythonvenv) $ pip install gunicorn

socket の待ち受けを開始します。

(pythonvenv) $ systemctl start example_sub.socket
(pythonvenv) $ systemctl start example_sub.service

今後作業する際は何かにつけて「pkill gunicorn」で gunicorn を終わらせた方が良いです。エラーが起きた時にいくらコードを修正しても治らないまま数時間経って、「pkill gunicorn」一発で治ったこともありました。

6. データベースのログイン情報を別ファイルに記述

MySQL のデータベースを使用したんですが、Git で管理する性質上、settings.py にデータベースのユーザー名とパスワード直接記述するのは危なそうなので、別ファイルに分けました。

Git で管理しない local_settings.py というファイル(ファイル名は自由)を作成し、そちらに機密情報をまとめます。

.gitignore ファイルに local_settings.py を含めた上で、local_settings.py を作ります。

# local_settings.py

DB_USER = 'DB ユーザー名'
DB_PASSWORD = 'DB パスワード'

その上で settings.py にそれら情報を import し、DATABASES の設定に使います。

# settings.py

from .local_settings import DB_USER as dbusr
from .local_settings import DB_PASSWORD as dbpw

DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.mysql',
        'NAME': 'sa',
        'USER': dbusr,
        'PASSWORD': dbpw,
        'HOST': '',
        'PORT': '',
    }
}

上記と別に、下記の様にしてサーバーの環境設定から取ってくる方法もあると思いますが、環境設定の上手い設定方法がわからなかったので今回はやっていないです。

DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.mysql',
        'NAME': 'データベース名',
        'USER': os.environ.get('DB_USER'),
        'PASSWORD': os.environ.get('DB_PASSWORD'),
        'HOST': '',
        'PORT': '',
    }
}

7. 静的ファイルの配置

コマンド「python manage.py collectstatic」を実行し、settings.py で STATIC_ROOT に設定したパスに静的ファイルを集約します。

$ python manage.py collectstatic

これでとりあえず本番環境でも動くと思います。

▶︎ Django のおすすめ VPS(仮装専用サーバー)はOSから決めるべし