Laravelで作ったサイトをインターネット上に公開するためには、サーバーが必要ですよね。
で、そのサーバー選びの際に出てくるのが、
- 共用のレンタルサーバー
- VPS(バーチャル・プライベート・サーバー)
の2つです。(Xサーバーやロリポップなどのレンタルサーバーは、共用のレンタルサーバーに当たります。)
この2つのうち、どちらの方がLaravel公開が簡単なのか、どう違うのかなど、サーバーの選び方について解説していきます。
LaravelはレンタルサーバーとVPSどっちがいいのか?
基本的には、LaravelはVPSを選ぶべきなのですが、共用レンタルサーバーでも実はサイト公開できます。
例えば、こちらのLaravelサイトは共用レンタルサーバーのエックスサーバーで動いてます。
じゃあ、何が違うのか、それぞれのメリットデメリットをまとめると、
VPS
- Root権限があるので、何でもインストールできる
- 自分で1つ1つのサーバー機能を全部準備していく必要がある
- 自分でセキュリティ対策を講じる必要がある
- カスタマイズ次第で、レンタルサーバーより高速表示できる
共用レンタルサーバー
- Root権限がないので、使いたくてもインストールできないものが出てくる
- データベースやメールサーバーなどが最初から付いている
- セキュリティはサーバー会社がやってくれる
- メモリなどを気にする必要がない
という違いがあります。分かりやすく比較します。
VPSにはRoot権限があるが、レンタルサーバーにはない!
最大の違いはこれです。VPSにはRoot権限があるので、どんなプログラムでもインストールできますが、レンタルサーバーにはRoot権限がないので、インストールできないプラグラムも多数あります。
Root権限ってなに?
Root権限っていうのは、スーパーユーザーとも呼ばれたりするんですが、
サーバーになにか新しいプログラム(ソフトウェア、パッケージなど)をインストールする時に必要な権限の事です。
レンタルサーバーでRoot権限を持ってるのは、レンタルサーバー運営会社です。借りてる個人は持てません。
なぜかというと、レンタルサーバーは、一つのマシンを複数のお客さんで共用してます。
自分が悪意のあるプログラムをサーバーにインストールしてしまった場合、他のお客さんのデーター含めてこのマシン1台分のデータを全部ぶっ壊してしまう恐れがあります。
なので、自由にサーバー全体に影響があるようなプログラムはインストールできないようになってます。
逆にVPSは、仮想のプライベートなサーバーですから、ようは、1人1台のLinuxOSが入ったパソコンを借りてるような状態なんです。(ちなみに、WindowsVPSっていって、Windowsを借りる事も可能です。)
だから、なんでもインストールする権限もあれば、万が一誤ってぶっ壊しても、壊れるのは自分のデータや自分のOSだけです。
Laravelインストールの過程でRoot権限が必要になるが・・
Laravelのインストール自体には、Root権限は必要ないので、
レンタルサーバーにもインストールは可能なのですが、
Laravelを動かすために、Node.jsというJavascript環境もインストールが必要です。
このNode.jsをレンタルサーバーに直にインストールしようとすると、Root権限がないとできないと警告が出てしまいます。
じゃあ、どうするかというと、このRoot権限なしでもインストールできるように、NodebrewというRoot権限不要で使えるツールがあります。これを使う事で、Node.jsがレンタルサーバー上でも動くようになります。
ツールで多くはレンタルサーバーにインストールできる。だがしかし・・
Node.js以外にも、例えば、Pythonのパッケージであるpipをインストールしたいとなった場合なども、やはりRoot権限が必要なので、レンタルサーバーだと大抵うまくいきません。
しかしこれも同じくpyenvやanacondaというツールを使う事で、レンタルサーバー上で動かす事ができます。
なので、レンタルサーバー上でも、なんとかLaravelサイトを運営していく事はできるんです。
ただ、やはりレンタルサーバーでは、インストールできない、できても一部機能が動かないプログラムも出てきます。
他にもFFmpegっていう、wav→mp3のように音声や動画の形式を変換するソフトをインストールしてみたけど、全く動いてくれなかった。
といった具合に、レンタルサーバーでは、どうしてもRoot権限がない理由で、やりたい事が実現できないという事が出てきます。
その観点で見れば、どう考えてもLaravelのためにサーバー契約するなら、VPSを選ぶべきです。
VPSはデータベースやメールサーバー、SSLは自分でインストールが必要
レンタルサーバーとVPSを簡単さで比べる場合、圧倒的にレンタルサーバーの方が準備要らずで簡単だったりします。
というのも、レンタルサーバーには、Laravelに必要なMySQL、phpMyAdminが最初から備わってますし、メール機能も最初から準備されているので、すぐ使えます。サイトをhttps化するのも、ワンタッチです。
しかし、VPSはそうではないんです。まっさらなPCを借りるようなものですから、
自分で、データーベースサーバーとメールサーバーを立てる必要がありますし、
そもそもとして、ウェブサーバーをインストールしないと、サーバーとして動きません。
公開した後も、サイトをhttps化するのに、自分でlet's encryptというサービスを使ってやり、cronでの自動更新設定までやる必要があります。
とVPSへのハードルがめちゃくちゃ上がったと思うんですが、
実際の所は、その辺はパッケージ化されていて、
例えば、あなた自身がLaravelサイトを自分のPC上で作った際、XAMPPだとかMAMPだとか、そういうパッケージソフトをインストールしたかもしれません。
ようは、サーバーに同じようなLaravel全部セットをインストールしちゃえば、全部揃います。
例えば、LEMPであれば、Linux, NginX(ウェブサーバー), MySQL(データーベース), PHPと、Laravelを手っ取り早く動かすためのセットもあるので、そういったものを使う事で、だいぶ手順を省略できます。
例えば、下の画像はConoha VPSの管理画面なんですが、LEMPなどの環境がワンタッチでインストールできます。
他にも、例えばMixhostやColorfulBoxなどのレンタルサーバーでは、cPanelというユーザーインターフェースを使ってます。こんな感じの奴です↓
このcPanelって実は自分でダウンロードして、VPSにインストールする事も可能なんです!
まるっと、レンタルサーバーと全く同じユーザーインターフェースも作れてしまうので、
こういったパッケージを使えば、VPSへのハードルもかなり下がります。
VPSはセキュリティを自分で。レンタルサーバーはサーバー会社がやってくれる
これも、前項と同じで、レンタルサーバーは、基本的にセキュリティ対策を最初から全部やってくれているので、セキュリティの知識がなくても、比較的安全にサイトを運営できます(といっても、作ったLaravelサイト自体に脆弱性があれば、ハッキングされてしまいますが・・)
例えば、レンタルサーバー自体にDos攻撃みたいなのがあっても、サーバー会社が対応してくれるわけです。
でも、VPSの場合は、借りた時点ではセキュリティがガラ空きです。
なので、1つ1つその穴を自分で埋めて、セキュリティを高める必要があります。
まあ、この辺は、各社VPSの公式Q&Aなどでもやり方を教えてますし、ググれば出てくるので、それを見てやっていく感じになります。お金を追加で払えば、代わりにやってもらえるパターンもあります。
レンタルサーバーはセキュリティ込みの価格なので、そういった意味ではレンタルサーバーの方が心配が少ないと言えます。
ただ、レンタルサーバーのセキュリティによっては、逆に表示させたいもの、動かしたいものがちゃんと動かないなんて事もありえます。
例えば、
- port〇番を開きたいけど、権限がないから開けないとか
- httpd.confをいじりたいけど、権限がないから無理とか
そのセキュリティ設定を変えたくても、例のRoot権限の問題で変更できないというオチもあるので、結局自由にLaravelを動かすには、セキュリティも学びながらVPSを使うのがベストになります。
VPSはメモリを気にする必要あり。レンタルサーバーはあまり必要ない。
その他の面で比べてみると、レンタルサーバーは、1つのマシンを複数のお客さんで共用しているため、メモリも共用しています(MixhostやColorfulBoxのように、メモリが厳格に分かれてるサーバーもあります)。
逆にVPSは、プランによって「メモリ〇〇GB」と決まっています。
ゆえに、初めての人にとっては、「え?何GB必要なの?(汗)」と困惑するポイントになります。
→ Laravelのメモリ使用量はどれくらい?便利ツールで調べられる!
上の記事で調べた感じでは、1GBあれば、ひとまずは問題なく動かせるんですが、
アクセス数が多い場合は、もっと多くのメモリが必要になってきます。
Conoha VPSだと、割と簡単にプラン変更できるので、
アクセスが増えたら上位に、アクセスが減ったら下位に、なんて事も可能です。
実はレンタルサーバーよりVPSの方が表示は高速化しやすい
レンタルサーバーは各社、国内最速を競って、日々サーバーを高速化してますが、
実はVPSの方が、よりサイトを高速表示させやすいというメリットもあります。
なぜかというと、レンタルサーバーには通常入れられないような、高速表示させる環境もセットできるからです。
例えば、WordPressを超高速化表示できるKUSANAGIという環境があるのですが、
設定次第では、このKUSANAGI環境上でLaravelを構築し、高速化する事も可能なんです。
そういう意味でも、高速化表示のために、あえてVPSを使ってる方も実は結構いるんです。
VPSは、レンタルサーバーのように複数サイトを運営できるのか?
レンタルサーバーであれば、割と当たり前のように複数サイトを運営できます。例えば、複数WordPressを入れたり、同時にLaravelサイトも複数入れたりなんて事も簡単にできます。
VPSももちろん、自分でレンタルサーバーと同じものを作れてしまうので、WordPressとLaravelをそれぞれ複数入れるなんて事も可能です。
なんですが、VPSによっては使えるドメイン数が限られています。
例えば、さくらのVPSでは、安いプランだと、5ゾーン、つまり5つのドメイン(もしくはサブドメイン)しか使えませんので、5サイトが限界という事になります。
ただ、これもDNSサーバーを自分で建てるという事をやれば、さらに増やす事もできるっちゃできます。
こんな感じで、VPSは常に学びながら1つ1つクリアしていく感じになります。
知識さえあれば、なんでもできちゃいますが、知識がないと、追加料金払って頼んだりみたいな事になります。
結局、VPSとレンタルサーバー、Laravel使うならどっちを選ぶべき?
今まだレンタルサーバーを契約してない状態なら、やはりVPSが1番です。
というのも、あなたがLaravelを現在使ってるという事は、プログラマー、エンジニアとして、実際に仕事をされていたり、仕事を探していらっしゃる方だと思います。
その場合、今後仕事でサーバーやLinuxの知識も不可欠になっていきます。
であれば、VPSを普段から使ってサーバー知識やセキュリティ知識を深めておく事で、今後の仕事もうまく行くと言えます。
設定要らずで楽だからとレンタルサーバーを使っていては、技量も上がらず、仕事も見つからないでしょうから、エンジニア職を目指してるなら、VPSを使いましょう。
逆に、すでにWordPressなどを使っていて、レンタルサーバーを契約済みで、おまけ的な感じでLaravelを入れてみたいのであれば、レンタルサーバーを使えば良いでしょう。
まずはレンタルサーバーでサイト公開にチャレンジしてみて、
Root権限のせいでカスタマイズに限界を感じた時に、VPSに移るのがコストも抑えられて良いですね。
もしくは、レンタルサーバーでLaravelを使いつつ、動かないプログラムだけAWS(Amazonのサーバー)のような、使った分だけ課金されるサーバーで動かし、連携させるなんて方法もありです(ここまでなると、むしろVPSを使った方が簡単ですが)。
ちなみに、VPSを始めるなら、Conoha VPSが初心者に非常に使いやすいです。
理由は
- 時間課金プランでお試しできる(1時間1.1円~)
- 初期費用が無料
- LEMPやKUSANAGIなどワンタッチで必要な環境がインストールできる
- ドメインの制限がない上に管理画面から設定できる
と初心者には特にありがたい機能が揃ってるからなんです。
下の動画では実際にLaravelをワンタッチでインストールしてます。
下のバナーからConoHaアカウント作成で特別クーポンもらえます!(アカウント作成だけなら料金はかかりません!)↓