VPSでDrupal

長年、ホスティングサービスの共有サーバーを利用してきましたが、そろそろ限界を感じてきました。サーバー運用のノウハウがなくても気軽に、かつ、とても低コストでウェブサイトを運営できるものの、同じサーバーの他のユーザーのサイトに何らかの状況でサーバーに大きな負荷がかかった場合、自分のサイトがとばっちりを受けることもしばしば、これまで同じホスティングサービス内で、たびたびサーバーの変更を繰り返してきました。(これ、かなり手間のかかる作業です。)

それから、SSL暗号化通信やメールで記事を投稿するといったしくみを組み込むには、PHPなどの基幹部分の変更が必要になり、共有サーバーではなく、自宅サーバーと同様にルート権限で操作できるサーバーの設定が避けられません。

ルート権限のある専用サーバーは共有サーバーと比べて、かなりコストがかかるのですが、最近VPS(バーチャル・プライベート・サーバー)という物理的なサーバーにソフトウェアで仮想サーバーを設置する方法により、専用サーバー同等のことが、共有サーバー並のコストで運用できるようになってきたので、試してみることにしました。

VPSでもいろいろあって、サービスによっては、ApacheやPHP、MySQL、さらにはサーバー管理ツールまで入っているものもあるのですが、ルート権限で管理するからには、OS以外、何も入っていないサービスで、冒頭の「サーバー運用のノウハウ」にチャレンジすることにしました。利用するのはさくらインターネットのVPS、サーバーOSはCentOS(Linuxのひとつ)です。

手順としては概ね:

  1. SSH(セキュアシェル、遠隔地のコンピュータと暗号化通信するためのプロトコル)による管理ユーザーの設定
  2. 認証鍵によるアクセス制限…サーバー管理のセキュリティ設定
  3. iptablenの設定…ファイヤーウォールよる通信制御
  4. Apacheのインストールと設定…ウェブサーバーの設定によりウェブブラウザでサイトが扱えるようにする
  5. バーチャルホストの設定…ドメインとサーバーの関連付け
  6. PHPのインストールと設定…ウェブ用プログラミング言語
  7. MySQLのインストールと設定…ウェブ用データベース
  8. phpMyAdminのインストール…データベース管理
  9. 既存Drupalサイトの引越し

となります。

以前サーバー管理ツールPleskを使っての専用サーバー運用の経験はあるものの、Apacheレベルからは初めてで、多くのサイトを参考に試行錯誤を重ねることになりました。特にAKIBEさんとてもぐさんのサイトは目に穴が開くほど参考にさせていただきました。感謝。 手順は基本的に、OSインストール以外は自宅サーバー構築と何ら変わらないです。途中なんども躓き、OSの再インストールを何度か繰り返すことになりました。やっぱあきらめてサーバー管理込のマネージドサーバーにするか、とも考えましたが、がんばってみました。

ずいぶん昔、Windows3.1のOS再インストールしたことで、パソコン自体のしくみや利用方法を知るきっかけとなったことを思い出します。およそ20年ぶりの感覚です。


まずはUnix用のエディタViの操作のマスターからスタートです。CentOSなどLinuxのOSをSSHでリモート操作するには、避けて通れません。マウスも10キーも、矢印キーも使えない環境でのテキスト入力が必要で、コマンドの入力と文字の入力もキーを使い分けることになります。矢印キーでカーソルを操作はできまないので、←H、↓J、↑H、→L、のキーを操作してカーソルを移動させます。

SSHクライアントTeraTermは前からローカル(自分のパソコンのこと)にインストールしてあって、使ったことはあったものの、そのちゃんとした使い方をやっと理解できました。逆にはシェルとカーネルというコンピュータの基本のキをちゃんと理解していなかったこともわかりました。

TeraTerm以外に、ローカルにインストールしておきたいのは、SFTP(SSHファイル転送プロトコル)アプリケーションのWinSCPです。SSHでファイル操作を行うもので、これまでSFTPはFTPがセキュアになったものとばかり思い込んでいましたが、最初のSはSSHのSです。これでTeraTermと同様にSSHの管理ユーザーで暗号化鍵でログイン、すべての通信が暗号化されます。暗号化する分、通常のFTPより遅いのですが、TeraTermにはないGUIが何かと便利です。

暗号化鍵解読用パスワードとSSHのパスワードを勘違いしたり、インストールするパッケージのバージョンに悩んだり、とハマりポイントがたくさんありましたが、ひとつずつ解決していきました。


最後にハマったのが、既存サイトの引越し。新規インストールでは問題のなかったDrupalサイトが、既存サイトのデータとファイルを移してきたら、トップページと管理ページは表示して、コンテンツページがどうしてもエラーになります。テーマを変えたり、モジュールをひとつずつ外したりして、漸くOpen Graph meta tagというFacebookと関連付けるモジュールを外すことで問題が解決しました。このモジュール、Facebook向のメタタグ(HTMLの一部)を追加するだけなので、そんな大それた問題の原因になるとはちょっと考えにくいです。

たぶん、PHPあるいはMySQLのバージョンが問題ではないかと推測しています。こだわって苦労してそれぞれの最新バージョンをインストールしたのですが、yum(CentOSに含まれるパッケージ管理システム)がデフォルトで持ってくるPHP5.1、MySQL5.0.77にしておいた方が安定したのかも知れません。

何はともあれ、漸く上町ウェブ製作所のVPSに移転に成功、稼働開始しました。Open Graph meta tagの機能は、テンプレートに手を入れればなんとかなりそうです。 まだMySQLの高速化のためのチューニングとか、やることは色々ありそうですが、自分のできることが、広がったと実感できる経験でした。