それでもなお、共有サーバーをすすめる理由
このサイトはLaravelの話題を現在中心にお送りしています。LaravelはPHPフレームワークです。Webアプリ、もしくはサイトを作成するために使用します。
完成したら99%以上の場合、どこかに公開し、他の人に使用してもらうことでしょう。そのための手段はたくさんあります。自宅サーバー、共有サーバー、PVS、Paas、サーバーまるごと借りることもできれば、AWSで必要なときに必要なだけ使うこともできます。
LaravelなどのPHPフレームワークを業務で学ぶ必要がある場合でしたら、社内に開発環境があることでしょうし、会社の公開手順に従い、公開方法で行います。
個人で勉強し、公開を目指すならという条件ですが、それなら共有サーバーをおすすめします。理由は単純で、覚える知識の量が一番少なくて済むからです。
ある初心者が、普段使用しているサイトのサービスに感化され、自分でも作ってみたいと思ったとしましょう。ブログの公開以上のことをやりたいと思った場合です。(ブログだけなら、WPで済みますからね。)
既にWebの知識を持っており、特定のプログラム言語の知識を持っているのであれば、それを利用するでしょう。何も面倒ではありません。(言語により、公開できる環境が限定されることはあるでしょう。)
現状、人気で言えばPHPがRubyになるでしょう。公開のしやすさとお手軽さで言えば、やはりPHPに分があります。たいていの環境で用意されていますし、さくっと書いて、Webブラウザで確認できるのは、初心者には嬉しく、また大切なことです。自分の行った行為(コーディング)が希望する環境(Webブラウザを通したネット上)で、大きなタイムラグがなく、結果に反映されるのは、学習のモチベーションを維持しやすいですからね。
そしてPHPはたいていのホスティングサービスでお手軽に使用できます。
さて、PHPを習得し、初めてアプリを完成させたとして、公開するとしましょう。一番お手軽なのは何かと言われれば、たぶんPasSを利用することです。日本のPaaSはビジネス向けで大きな料金が発生しますが、無料で使用できるサービスも数多くあります。しかしながら、そうした無料サービスには、当然限界があります。DBを使ったり、自分のドメインを使いたい場合は料金がかかるなどです。こうした料金は、共有サーバーより高くつきます。PaaSを利用する利点は、Webサーバーなどの知識が少なくて済むことと、公開手順が通常スムーズであることです。
共有サーバーはひとつのサーバーを多くのユーザーで使いまわしましょうという考えです。もともと、WebサーバーはUnix/Linux上で運営されることが多く、こうしたサーバーはもともとマルチユーザーで使用できます。それぞれのユーザーごとに、それぞれのWebページを公開できるようになっています。
いわばアパート・マンションぐらしです。場合によりほかの住民から迷惑を受けることもあります。しかし、コスト的には安く済み、基本的なインフラの部分は大家さん任せで済みます。
ちょっと前まで、本当に共有サーバーはこのような状況でした。最近の共有サーバーは進化しています。まず、きっちりと部屋が区切られ防音施工がしっかりとされています。大家さんも厳しくなり、迷惑者が廊下に物を置きっぱなしにさせません。つまり規則を守り、家賃相応の暮らしをしている限り、快適に使用できます。
最近の「仮想化」、簡単に言えば一台のコンピューター上で、独立させ何台分かのOSを起動することですが、それらが応用され、できるだけ利用者間に迷惑がかからないようにしているのです。(国内の共有サーバーでどの程度、こうした技術が利用されているのかわかりません。国内の一部、海外のサーバーのほとんどはCloudLinuxというOSを利用しています。このOSは仮想化の技術を使用して、ユーザー間の環境を独立させて実行しています。これとLiteSpeedというWebサーバーを利用するとPHPの実行速度が本当に早くなります。)
利用者の立場からすれば、「制限はあるが、決められた範囲での調整や設定が可能」であります。つまり、初心者の場合、ある程度サーバーやWebの仕組みを知っている必要があります。PaaSだけしか利用したことのない人は多分いないのでしょうが、PaaSだけを使用するときよりも、多くの知識が必要となります。
この必要となる知識量は、後述のPVS、自宅サーバーなどに比べ、はるかに少なくて済みます。定量的に表すのは難しいですが、個人的には10分の1程度だろうと思います。
さて、全くの初心者が例えばLaravelを学習しようとする場合、Web、サーバー、PHP、Laravelという知識が必要とされるわけです。4科目一緒に学習するのは大変です。そうでなければ、学校のカリキュラムは科目に分割されているはずはありません。特に、Web、サーバー、PHPはそれぞれ職業として成り立つ程の深い知識量があるわけです。すべてを学習してからなんて言っていたら、多くの知識が必要だという条件であれば、結果としてのWebアプリを動作させるまで、時間がかかって仕方ありません。結果の得られない学習ほど、虚しいことはありません。
ですから、値段もそこそこ、機能もそこそこ、そして必要とされる知識量もそこそこな共有サーバーは初心者にピッタリです。
PVSは仮想化の上で自分のサーバーを持つことです。結局は「共有」サーバーです。ある程度の大きさの土地に、建売住宅を建設しているような感じです。自宅の範囲内は自由です。ところがある家では、商売を始めたらしく、頻繁に車がやってきます。そのため敷地内の私道が混んでしまえば、あなたの車の出入りはスムーズとは行かないでしょう。ですから、値段も安めです。共有サーバーよりやや高めの値段がついています。
PVSが人気なのは、「自由」があるからです。自由には「責任」と「知識」が必要です。共有サーバーではWebサーバーがうまく動いていなければ、管理者に文句を垂れることができます。しかし、PVSではあなたの責任であり、他の人に文句は言えません。それを解決するには、知識が必要です。
自由を許せば、誰かが暴走する可能性はあります。PVSの運営側からすれば、このリスクをどうにか金銭的に補償できるようにする必要があります。ですから、PVSの安いプランは、それよりも安い共有サーバーより、使用できるディスク量や月刊の転送量の制限がきついのです。
逆に言えば、完全なカスタマイズや特殊な設定が必要でないWebプログラムであれば(特に初心者であれば、ほぼこうした標準的な範囲内のプログラムを行うことになるでしょう。)共有サーバーのほうが、より多くの資源を利用できるとのです。
自宅サーバーは自分でサーバーを建て、保守することです。Webサーバーの場合、原則24時刊起動している必要があります。アクセスの少ないサイトであれば、省電力型のサーバーを組み、電気量も抑えられるでしょうが、そこそこの能力を持ったものであるなら、日本の電気料金ですと、しっかりしたサーバーが借りられるほどお金がかかってしまいます。しかし、完全な自由が手に入ります。あなたは神になれます。
この指針は、「まずWebアプリを動かしてみたい」という人のためのものです。例えば、将来的にサーバーの技術者になりたいのであれば、自宅サーバー(多分その前に非公開でローカルにサーバーを構築することが先になるでしょう)もPVSも良い選択でしょう。
では、共有サーバーですが選択が初心者には難しいのです。
まず場所ですが、公開する内容が誰に向けたものかを考えましょう。たいてい日本人向けの内容になりますので日本のサーバーが有利になります。ほとんどが東京周辺にデータセンターがあります。そのため、たいてい、40msから60msくらいでしょう。
海外、とくにアメリカのサーバーは日本に比べ2割以上条件がよく、値段は2割以上安くなります。もちろん、基本的に英語でのやりとりが必要です。距離的にはpingでシンガポールが115ms程度、日本の2倍から3倍かかります。東海岸は160ms、データセンターが集中しているデンバー周辺では200ms、西海岸になると250以上かかるところもあります。
ディスク容量は大きいに越したことはありませんが、共有サーバーはファイルサーバーとして利用できません。つまり、公開に関係がないファイルは置いておけません。ですから、たぶん、ストリーミングや映像、音声のダウンロードサイトでも運営しない限り、さほどかかりません。通常はデータベースとして使用する分も含まれます。多分数サイトで2から3GBもあれば十分です。数多くのサイトを設置するつもりであれば、それなりに必要になります。
個人として利用するなら、何十もドメインを確保することがないでしょう。それぞれに安いところでも.comなどでは800円程度かかるわけです。つまり数個登録できれば、独自ドメイン数はあまり考慮いらないでしょう。
でもこうした、外側からの条件だけでは、わからない部分もあります。共有サーバーもPVSもサーバーの当たり外れがあります。それが、同じ会社でも評価が別れてしまう一因です。前述のCludLinuxはそうした不公平を抑える効果がありますが、あまりきつく制限してしまうと、共有サーバーとの一つのメリット、混んでいなければ、結構良いレスポンスが得られるメリットがなくなってしまいます。逆に制限を緩めれば、今までの共有サーバーと同様に、他のユーザーの影響を大きく受けるようになります。これは、サーバー管理の腕が問われる部分です。
実際、セッティングの腕は大きく幅があり、サーバーのハードのスペックやコア数では計れません。例えば、私が利用しているEleven2は、いろいろ問題を抱えているのですが、セッティングはうまく行います。インストールしたてのWordpressが、APCやキャッシュプラグインを使わなくても、何度か再ローディングすると、生成時間が0.055秒まで小さくなります。連続するアクセスについては、内部でキャッシュしているようですが、これはLiteSpeed Webサーバーの機能をうまく利用しているのでしょう。
ここほど早くはなりませんが、Downtownホストは代わりに標準cPanelの機能を活かしています。例えば、PHPのバージョンをcPanelから切り替えられるようになっており、更にPHPの拡張機能を自分で付けたり、止めたりできるようになっています。Eleven2はバージョンがサーバーごとに固定で切り替えられません。(正確に言えば、拡張子では切り替えることができるようになっています。ただし、5.2と5.3です。)固定バージョンにし、その代わりできるだけ最適化する方針のようです。
DowntownホストはPHPモジュールのAPCを設定することで、インストールしたてのWordpressが250msから80msぐらいにまで高速化されます。共有サーバーですのでメモリ領域は20MB程度しか確保されていませんが、1サイト分でしたら、たいていのCMSやフレームワークは十分にキャッシュされるでしょう。多分、APC以外の高速化も利用しているのでは無いかと思います。
一つのサイトにアクセスが連続する場合、このキャッシュによりとても高速に動作します。しかし、たまにしかアクセスされないページはとても遅く表示されます。共有サーバーの宿命です。
最近、このサイトで半額期間だけおすすめしたKomodoSitesは、LiteSpeedを使用していなかったため、インストールしたてのWordpressで350msもかかっていました。いくらApatchを使用していてもPHPの動作が遅すぎました。なにせフルSSDを謳っているのですから。
そこでクレームをつけたら、準備していたLiteSpeedに切り替えたようです。APCを初めモジュールの切り替えがcPanelに用意されていますが、APCを指定すると、かえって遅くなる設定のミスがあります。(これを伝えたら、小さなスクリプトを出してきて、早くなっているから、APCは動いていると言ってきました。実際、実用レベルで遅くなっているので、全然いいわけになっていません。そもそも、なぜWordpressで速さを測定したかといえば、WPが問題なく、早く動いていると向こうが主張してきたからです。早いと言っているWPが他のSSDではない共有サーバーより、遅いことを証明したのです。そこでやっと重い腰を上げさせたわけです。)
ちなみに、今回紹介した3社の中では、Downtownが一番実用的です。値段は普通、値引きはそこそこですが、安定度抜群で、シンガポールにサーバーを持っています。比較的日本から近いです。(お試しのつもりで、小さなプランを一回限りの半額で購入し、後悔しています。このサイトもここへ引っ越したのですが、もう一つ上のプランを選んでおけばよかったと思っています。)
ここでも日本は、ガラパゴス状態なのです。共有サーバーが認知されていた頃には、どの操作パネルを提供しているかは、謳い文句の一つでしたが、今では「独自操作パネル」を提供できるのが、技術力がある証拠という誤った認識が広まってしまい、各社それぞれです。まあ、独自パネルを提供していても技術力が高いなんて言えません。
ユーザーの視点から言えば、どこの共有ホスティングでも同じUIが利用できるのはありがたいことです。
cPanelは数多くの機能を提供しており、ホスティングサイドでテストしきれていない状況もあります。そのため、ある機能が動かない時に連絡するサポートの対応が問題になります。今回紹介した3つは、それなりに対応してくれます。親切さで言えばDowntownホストが一番でしょう。残りの2つはどうも最初の対応は、どこか他のカスタマーサービスを利用しているようです。
Eleven2はデザインだけ、独自デザインにし、かっこ良くしていますが、cPanelの機能をフルに使わせるよりは、安定して提供できる部分だけのみ提供する方針です。PHPの切り替えやPHPモジュールの設定は使えません。
DowntownとKomodositesはデフォルト状態で、ほとんどの最近機能を使えます。ただ、PHP関係のトラブルからわかるように、Komodositesは経験不足から来る設定不足が目立ちます。Downtownもさすがに全部を完璧にとは行きませんが、連絡すると完全に動くように設定してくれます。「ただ動くようにする」と「動作確認までする」という対応の差でしょう。
ここでも、Downtownはひとつ抜け出ています。現在のところ、一番おすすめできる米サーバーです。
ここまで米サーバーを紹介しましたが、なにせ連絡が英語です。負担がかかるため、やはり最初は日本語でサポートが受けられる場所を探すべきでしょう。具体的に紹介できるほど魅力を感じている日本サーバーを見つけていないため、お勧めできません。PHPが利用できるか、できるならどのバージョンか、容量、ドメイン、SSL、独自IPの料金などなど、自分の要件をリストアップし、条件にあるものをいくつか実際に無料利用期間中に試し、それで結論を出すのが一番確実な方法です。もちろん、サポートの対応も比べましょう。多少手間はかかりますが、良いサーバーを見つけると、後がスムーズに行きます。
最後に一応、Eleven2をメイン使用から外した理由を話しておくと、すでに過去に何度か大きなミスがあり、一度はそれは過去のことにしました。しかし、いつまで立っても安定期、その後の不安定期を繰り返すパターンが修正されないこと、そして決め手はフォームに"exit"という文字列(単語でさえなく、文字列です。)が含まれると、503になってしまったからです。対応を頼むと、.htaccessに書いてあった"Options -Indexs"を消し、Mod Securtyをオフにし、一度ハックされた相手のIPを拒絶していた部分も消されてしまいました。しかもルートの.htaccessの修正は動作せず、別のテックの人間が、全サイトの.htaccessにMod Securtyオフを書き込んでいました。問題は解決したのですが、セキュリティーリスクを組み込んで、「問題解決しました」です。これはさすがに、受け入れられません。
一応理由を問いただすと、Mod Securtyのフィルターに含まれているとのこと。その後調べましたが、デフォルトには当然含まれておらず、多分セキュリティーのために追加しているデフォルト以外のフィルターの話しらしいのです。しかし、せっかくセキュリティー強化のためにフィルターを採用しても、それを各サイトでオフにしていたのでは意味がありません。すべきなのは、フィルターの修正で、個別に.htaccessでMod Securtyをオフにすることでは無いでしょう。
それで見限ったわけです。