知人から、「今度新しいサイトを構築したいので、現行サーバー(契約済みレンタルサーバー)を使って新しいサイトを設置して欲しい。新しいドメインは確保済み。」という依頼がありました。
最近では、新しいサイトを新しいドメインで構築することは、とても簡単になってきました。ちゃんとしたスペックのレンタルサーバー運営会社と契約済みなら、以下のステップで完了。
- 契約済みレンタルサーバーのサブドメイン設定機能で、新規ドメインを追加登録
- 新規ドメインを確保したレジストラの設定画面から、上記レンタルサーバーのDNSホスト名を登録。
- レンタルサーバー上に新規ホームページを置くホームページフォルダーを設定
これだけで設定完了です。
ここでのポイントは、「ちゃんとしたレンタルサーバー運営会社と契約しておく」ということで、依頼者は NTT PC コミュニケーションズの WebARENA Suite X というサーバーを契約しています。このサービスのバランスの良さは誰にでもお勧めできます。
レンタルサーバーですから、自前サーバーのように何でも出来るわけではありませんが、痒いところに手が届くバランスの良さがあります。例えば、安全に運用するためにカスタマイズをおこないたい、アクセスログファイルを見たい、と思った場合、完全に希望通りには行かないとしても、それに近いことが出来たり、若干遅延が発生するものの情報にアクセス出来たりします。世の中にたくさんあるレンタルサーバービジネスでは、Webサーバーログを見られるのが翌日だったり、アクセスログは見られるけれどもエラーログを見られなかったり、いろいろ制約が発生するものですが、Suite Xの場合、100点とは言わないものの常に80点くらいの満足を与えてくれるサービスです。それでいて、月額利用料金が約2,000円からなので、自宅サーバーを運用する場合の月額電気料金よりも安いかもしれません。
前置きが長くなりましたが、このSuite Xサーバー上に WordPress でホームページを設置しようとして、トラブりましたのでメモを残すことにします。
Suite X 上で、WordPress を使う方法としては、次の二つのどちらかを選択する必要があります。
- Suite X が準備しているWordPress をそのまま使う。
- ユーザー自身が WordPress をインストールして使う。
1. を選択すると、Suite Xのコントロールパネルからインストールすることになり作業は簡単ですが、インストール位置が決め打ちされているため、ブログとして使う分には問題ないかもしれませんが、ホームページのトップとして使うには問題があるURLになってしまいます。
2. を選択する場合、SuiteXのサポートを受けることは出来なくなりますが、自由な位置にインストールすることが可能です。
今回の場合、ホームページとして使うわけですから 2 を選択することになります。
WordPressの設置は、頻繁に行っている作業ですし、レンタルサーバー上には既に動作しているWordPressがあり、MySQLデータベースの設置も終わっているため、行うべき作業は、ローカルパソコンからSuiteXサーバーのホームページフォルダー上に wordpress を ftp ツールを使ってアップロードした後、wp-config.php を転送するだけです。wp-config.php に関しては、既存の wp-config.php をローカルにコピーし、その中の「$table-prefix」変数を新しい語句に置き換え、secret key をコピーするだけで簡単。
のはずでした。
ところが、ファイル転送が終わり、目的のサイトを開いてみると、、、、、
「サーバーの PHP バージョンは 5.1.6 ですが WordPress 3.7.1 は 5.2.4 以上のみでご利用になれます。」と出て、WordPress の最近のバージョンが使えない!
びっくりです。PHPなどサービスプログラムのバージョンは運営会社が決めるので、これに関してはどうしようもありません。
では、WordPress のバージョン何なら使えるのだろう?と検索してみたところ、なんのことはない、Suite Xのオンラインマニュアルの中に対策がちゃんと書いてありました。
- .htaccess に
AddHandler application/x-httpd-php53 .php
を追加する。WordPressインストール直後は存在しないので、これ一行を書いた .htaccess ファイルを、WodPress をインストールしたディレクトリに置く。
- wp-config.php に
define('WP_MEMORY_LIMIT', '128M');
を書き込む。define(‘DB_NAME’, xxxx) の前辺りに置けば良いでしょう。
以上の編集を行って、編集ファイルを再度サーバーにアップロードした後、ホームページのURLをアクセスすると、いつもの WordPress のログイン画面が出てきました。
これで設定完了、となればめでたしめでたしなんですが、実は Suite X のマルチドメインと WordPress の rewrite には非常に相性の悪い問題があります。
具体的には、Suite X をマルチドメインを使うように設定した後、サブドメインのディレクトリ以下に WordPress を設置すると、投稿URL に 「http://www.example.jp/2013/12/29/hello_world/」 という風にアクセス出来るようにするためのパーマリンク リライト機能がうまく働きません。デフォルトの「http://www.example.jp/?p=1」 という書式であれば問題ありません。
設定後のキャプチャー画面を添付します。
(1) WordPressのトップページ
(2). 読みたい記事をクリックして開くと、記事の全文が表示されます。この表示ではパーマリンクはデフォルトのままです。
(3) パーマリンク設定画面で、日付と投稿名の書式を選択します。
(4) 同様に、個別記事を表示しようとすると、「Not Found」が発生してしまいます。
原因は、SuiteX がマルチドメイン対応を、Webサーバーの mod_rewrite 機能を利用して実現していることと、WordPress もパーマリンク機能を mod_rewrite 機能を利用して行っていて、WordPress のリライトよりも上位で設定している SuiteXのリライトが優先されてしまうことのようです。
検索してみると、SuiteX利用者で困っている人がたくさんいるようですが、一般的な解決方法がないように見えます。
いろいろ .htaccess の記述方法を変えてテストしてみれば良い結果が出るかもしれませんが、私が依頼されたサーバーは、運用中のサーバーであるため、そうそう思いつきの記述を試してみることが出来ません。また、仮にうまい設定を見つけられたとしても、このサイトの投稿者がWordPress の更新を行ったり、パーマリンクの書式変更を行ったとき自動で設定が引き継がれる解決策でなければなりません。
これらの理由から、現時点でSuite Xはパーマリンク設定によるURL書き換えが出来ないサーバーであると言えます。
時間を掛けてじっくりリライトの仕組みを学べば将来なにか .htaccess のよい記述方法が見つかるかもしれないと考えていますが、これもSuiteXのコストパフォーマンスと比較すれば、小さな不満だと言えるでしょう。