さぽろーぐ さぽろーぐ

謎を解いたのは海外ユーザーの投稿だった

非公開ディレクトリに格納したデータをPHPで参照したかったお客様の話
シェア
2008年4月、いまからさかのぼること8年前、「livedoor レンタルサーバー」という名前のサービスを開始しました。共用サーバー、仮想専用サーバーのすべてに「Plesk」という管理ツールを搭載していました。

PleskはGUI(ウェブブラウザの管理画面)で、FTPのアカウントやパスワードの設定、ウェブサイトの設定、メールアドレスの作成など行えるソフトウェアです。現在のPleskの最新バージョンは17.5ですが、当時は8.4での提供でした。

当時、無料お試しいただけるプランはPleskを搭載した共用サーバーのみ、そしてオンラインガイドはFTP接続やメールアドレス作成方法などごく基本的な内容に限定されていました。

「共用サーバーでできないことがあっても、root権限がある仮想専用サーバーならば何とかできるはず。Linuxサーバーの情報を調べて調整してください」
というスタンスでサポートしていました。私達は何もわかっていなかったのです。O社様の問いを検証するまでは……。

PHPからウェブ非公開ディレクトリへアクセスがしたい

2009年3月、EX-CLOUDの前身となる「livedoor レンタルサーバー」がスタートし、もうすぐ1年を迎えようという時、共用サーバーのお試し利用を開始したO社様から、お問い合わせをいただきました。

件名:PHPからの非公開ディレクトリへのアクセス

お試し試験中の身で恐縮ですが、PHPから、テンポラリーやパスワードファイル等、ウェブの非公開フォルダ(つまり、httpdocs以外)へ設置、アクセスしたい場合についてお問い合わせさせて頂きます。

主旨としては、(/var/www/vhosts/XXXX.flxsrv.biz/)privateディレクトリになるのだと理解しています。

また、そのままではアクセス権が700であるので、755等へ変更する必要があると認識しています。しかし、その設定をもってしても、アクセスができません。

何か上記以外の設定が必要でしょうか。もしくは、このような主旨のディレクトリを用意するにはroot権を得てから、apacheの設定をカスタマイズしないと無理なのでしょうか。

サポートページからでは、該当するものが見つかりませんでしたので、よろしくお願い致します。

O社様のご利用されているお試しサーバーはPlesk搭載の共用サーバーです。PHPなどのプログラムが実際設置されているのは、ウェブ公開領域のhttpdocs(ドキュメントルート)以下ですのでそこにPHPファイルを設置します。

でもPHPの参照データファイルや、書き込みログなどをすべてドキュメントルートに置きたいわけではなく、privateのようなウェブから直接アクセスできないディレクトリにデータファイルを置いて、特定のウェブプログラムからは呼び出せるようにしたいということなのです。

Plesk8系のウェブサーバーとPHP設定

お客様のログを見ると、PHPの「open_basedir」という設定を調整すれば、やりたいことは実現できるだろうと予想できました。

「/var/www/vhosts/ドメイン名/private」はPlesk8では標準で作成される、ディレクトリのひとつです。このディレクトリはFTPでアクセスしファイルを保管できますが、ウェブサーバーの配信対象外の非公開フォルダです。

「/var/www/vhosts/ドメイン名/httpdocs」はprivateと並列の階層ですが、ウェブからも参照可能なドキュメントルートディレクトリで、いわばホームページ領域です。FTPでのファイル操作も可能です。

「秘密のディレクトリであるprivate以下にデータファイルを置きたい」と思うのは管理者としてもっともな構想です。こちらとしてもぜひ実現したいと思いました。

変えたはずの設定が先祖がえり

PHPのパラメーターはPleskの近年のバージョンでこそ操作しやすいものになっていますが、当時の画面のおいては「PHPの有効・無効」、「PHPセーフモードのOFF・ON」くらいしか機能がありませんでした。

共用サーバーのお試しプランではウェブサーバーの設定ファイルの変更はできません。そこでサポート側でつかっている仮想専用サーバーの検証機でApacheの設定を操作して確認しました。

「Apacheのhttpd.confが呼び出している各バーチャルホストの設定ファイルを書き換えればいいよね」と甘く考えていました。しかし、思った通りにはいきませんでした。

設定ファイルを手動で書き換え、Apacheをリスタート後、しばらくはうまくいっても、Plesk上でFTPパスワードを上書きしたタイミングで、変更前に戻ってしまいます。Apacheの設定ファイルが再生成されて、手動で編集したファイルは総上書き、何事もなかったかのようにオリジナル状態に復元されるのです。

FTPパスワード変更作業以外にも、Pleskがどのような作業のタイミングでApacheの設定ファイルの再生成を行うのかわからないような状況では、管理しきれません。

「root権限を持っているのに、こんなに制約があるんならサーバー管理者も憂鬱でしかない。どうしよう……」

無料お試しを使う方にはいろいろなお客様がいらっしゃいますが、こちらのお客様は冷やかしではなく、Pleskというツールをよくご存知で「こういう風に使いたい」というイメージを持っていらっしゃるのは十分伝わっていました。そして決して特殊なご要望でもないので「調べなきゃ」と思いました。

異国のPleskユーザーの投稿に救われる

「こんな仕様で終わってしまうはずはないなー」と思っていたら、最終的には海外のブログかフォーラムにヒントが見つかりました。Plesk8環境では vhost.conf、vhost_ssl.conf という決まった命名のファイルを用意し、Pleskの特定コマンドを発行することでそのファイルをApacheが毎回読み込むようになることがわかりました。

一度関連するキーワードが見えてくると、Pleskには管理画面用とは別にコマンドのマニュアルも存在してることもわかり、Pleskと仲良くやってゆきながら、コマンドラインでサーバーの状況を把握し、設定をカスタマイズできそうなこともわかりました。今回のお問合せ以外にも役に立つヒントを見つけられたように思いました。

お客様への回答は数営業日後になってしまいましたが、

「共用サーバーでは変更できない仕様なのですみません。アドバンス・エキスパートプランのみ対応可能です」

という内容でご案内をしました。

※注:「アドバンス・エキスパート」というのは当時の仮想専用サーバーの名前です。今思うとPlesk8を搭載した共用サーバーでも ある程度の再構築覚悟であれば、要望を満たせたのかもしれないと思います。

ツールとしっかり付き合う覚悟

案内を出したすぐ後でお客様より

「現在のお試しでは設定ができないことは承知しましたが、アドバンス・エキスパートの場合、どのようにすることでprivate以下のファイルを読み出すことが可能でしょうか。技術的要点だけで十分ですので、ご教示頂ければ、幸いです」

とご連絡をいただきました。

当時のサポートからの回答については、いま見ると肩に力が入りすぎている
感がありますが、以下のような書き出しをしています。

お問い合わせありがとうございます。
livedoorレンタルサーバサポートセンターでございます。
PHPの設定変更につきましてお問い合わせをいただきました。

アドバンス・エキスパートをご契約のお客様にも、実際のところ、コマンドライン操作はサポート対象外となり、正式には方法をご案内しているわけではございませんが、参考データとして、設定例をご紹介させていただきます。

もし、設定を有効にされる際は、十分ご注意いただいた上、自身の責任において作業いただきますようお願い申し上げます。

設定変更の大まかな作業の流れは下記のようになります。
────────────────────────────────
1)別の設定ファイル
(/var/www/vhosts/[ドメイン名]/conf/vhost.conf)を用意する

2)既定のバーチャルホストの設定ファイル
(/var/www/vhosts/[ドメイン名]/conf/httpd.include) に1)を読み込ませる
コマンドを発行する

3)PHPが読み出すファイル、ディレクトリのパーミッション、
所有者、所有グループを調整する

4)Apacheの再起動を行う
────────────────────────────────

下記は詳細です。root権限に昇格後、作業いただく必要がございます。

(以下具体的な内容が続きます)

あとでわかったのですが、O社様は外部でPlesk搭載の専用サーバーを利用されたことがあるお客様で、この設定の解決に至らなかったため、当社のお試しを利用し、お問い合わせを送ってくださっていたのだそうです。当サービスに引っ越さずとも、他社サーバーを継続して利用されることも可能だっただろうと思いますが、これをきっかけに当社に数台のお引越しをいただきました。

Pleskは各国で使われるソフトウェアなので、誰かがブログに書いたり、問い合わせをしたり、声をあげることで改善されてきたところも大きいのではないのではないでしょうか。

こちらのお客様のような「Pleskは便利で使い続けたいけど、こういうところのカスタマイズはどうやるんだろう」という声、ノウハウを提供する記事や、その記事へのコメントがあって、プロダクトは改善され成長するのだろうなと思います。

「これがやれてしかるべき」と思えるようなことは、きっと他の多くの方も同じことを希望しているものなのでしょう。私がサポートスタッフとしてPleskというツールとしっかり向き合う覚悟ができたのは、このお問い合わせがあったからだと思っています。そしてPleskという商品に愛着を感じるきっかけになった出来事だとも思っています。

※注:これはPlesk8の時代のエピソードであり、Plesk11以降についてはPHPの設定のカスタマイズもかなりやりやすくなりました。また、Plesk12以降についてはPHPに関してだけでなく、ウェブサーバー設定についても、柔軟にGUIで設定変更ができるようになっています。「vhost.conf、vhost_ssl.conf」のファイルの存在を意識する必要もないのです。

ピックアップフレーズ
「root権限を持っているのに、こんなに制約があるんならサーバー管理者も憂鬱でしかない」

「Pleskは便利で使い続けたいけど、こういうところのカスタマイズはどうやるんだろう」という声、ノウハウを提供する記事や、その記事へのコメントがあって、プロダクトは改善され成長する


開かれよ private ディレクトリ

他のスタッフからのコメント
青影青影
他のスタッフからのコメント
この設定は私が入社した時点ではオンラインガイド等で普通にお客様へご案内されていましたが、過去のお問い合わせがベースとなっていたとなると歴史を感じます。

お客様からの問い合わせはサービスをよりよいものにしてく為に時に大事な情報となります。
赤影
この記事を書いた人
赤影
生まれも育ちもこちらの事業部というサポートスタッフです。平素より筆ペンとGimpを愛用しています。
シェア
おすすめの記事