タグ別アーカイブ: cPanel

.htaccessの書式とよく使う設定

Apacheの設定ファイル.htaccessを使用してできることは多岐にわたります。その中でも代表的で、サイト制作には割合必須な機能の紹介を、書式の説明と並行して行いましょう。

トップページにindex.html以外のファイルを指定する

たとえばhttp://www.○○○.com/というアドレスのサイトで、http://www.○○○.com/とだけアドレスバーに打ち込んで表示されるページは、ドキュメントルートに置かれたindex.htmlというファイルです。これは下位のディレクトリでも同様で、http://www.○○○.com/page/というアドレスで表示されるのは、ドキュメントルートに存在するpageディレクトリに置かれたindex.html、といったように、指定されたディレクトリに置かれたindex.htmlを探して表示するというのがhtml文書での約束事です。
一方、ページ中にPHPプログラムを含む場合に、ファイルの拡張子を.phpにしなければならないという約束事も存在します。トップページにPHPプログラムを置きたい場合など、ファイル名をindex.phpとしてしまうとブラウザでアクセスしてもよくわからないリストページが現れるだけで、柔軟に解釈してindex.phpを表示してくれたりはしません。そこでディレクトリ名のみをアドレス指定された場合に探すファイルを、以下のような記述で設定します。

DirectoryIndex index.php index.html

DirectoryIndexの部分が設定項目名、index.php index.htmlの部分が設定したい値です。つまり.htaccessの書式は以下のようになります。

設定項目名 値1 値2

php.iniの場合と異なり、設定項目と値の間を半角スペースで区切り、イコールはつけません。設定したい値が複数ある場合は、値同士をやはり半角スペースで区切ります。そして文の終わりには、たとえ設定項目が1つであったとしても改行が必要です。ちなみにコメントアウトは以前書いた通り#を使います。
DirectoryIndexの説明に戻りますと、値として指定された名称のファイルを、ディレクトリ名でアクセスされた場合表示します。さらに後ろに続けて値を与えると、最初に与えた値のファイル名が無かった場合に、次に探すべきファイル名と解釈します。上の例ならば、まずindex.phpを探して、無かったらindex.htmlを探して表示ということですね。ちなみに.htaccessの設定は下位ディレクトリにも反映されますので、こういった設定をドキュメントルートでしてしまうとわかりやすいです。

DirectoryIndexで指定されたファイルが存在しなかったときリスト表示になるのを避ける

先にindex.html無しでディレクトリのアドレスを入力してみたときの、よくわからないリストの出現を抑える方法です。

Options -Indexes

セキュリティの為にも、ファイル構成が外部から筒抜けになってしまうのは避けたいところです。公開サイトを段階的に大きくしていくケースでも、この設定は最優先でしてしまいましょう。

ディレクトリへのアクセスにパスワードをかける(Basic認証)

外部からアクセスされては困るディレクトリに、ユーザ名とパスワードを要求するタイプのプロテクトをかける事もできます。パスワードは.htpasswdというファイルに保存して、そのファイルへの参照を.htaccessで指定します。.htpasswdファイルはドキュメントルートより上の階層に置いて、まかり間違ってもそちらに外部からアクセスされないようにする必要があります。ユーザ名user、パスワードpassという例で書き方を説明します。

user:pass

こちらが.htpasswdファイルへの記述です。複数ユーザにも対応可能ですのでその場合は同ファイル内に羅列して書いてしまって構いません。そしてこちらも文の終わりの改行が必須です。

AuthName "hidden"
AuthUserFile "/home/usr/.htpasswd"
AuthType Basic
require valid-user

こちらが.htaccessの記述です。AuthNameという項目は、パスワードを求める領域の名称で、ダイアログの本文に現れます。特に意味はないので好きな名称を設定してください。AuthUserFileには.htpasswdファイルへのパスを与えます。なお.htpasswdのファイル名は自由に決められるようですので、パスの指定もそれに即して変えてください。AuthType Basicは認証の種類で、この他にDigestという値もとり得ますが、対応ブラウザが狭い、Apacheのヴァージョンにより書式が異なる部分が出るなどの問題があり、あまり積極的に採用されていないようです。最後のrequireでは複数ユーザが登録されていた場合に、アクセスを許すユーザを名指しで指定するというものです。vaLid-userにしておけば、全登録ユーザを許可します。
このBasic認証は少し面倒くさいでしょうか。ちなみに、cPanelではこのBasic認証の設定をPassword Protected DirectoriesというアイコンからGUIで行えます。ちゃんと.htpasswdをドキュメントルートより上に保存してくれるので便利です。

アクセスのリダイレクトを行う

指定されたパスにアクセスがあったとき、そのアクセスを別のアドレスに振り向けます。

Redirect permanent / http://www.google.com/

この例では、Redirect permanentの部分が設定項目名で、その後ろに値を2つ与えています。1つ目の値はただのスラッシュですが、これはドキュメントルートを指定して与えていると読んで下さい。もしドキュメントルート直下のpageディレクトリを与えたいなら/page/となります。2つ目の値はリダイレクト先のhttp://から始まるアドレスです。つまりこの例では、ホームページにアクセスされたらgoogle.comにジャンプするという結果になります。ホームページ移転などがあったときに、この設定を使って新ページにリダイレクトしましょう。

特定の拡張子のファイルへのアクセスを禁止する

さて、長々と説明してきてやっと前回予告した機能の説明に入ります。最後になってしまったのは、書式がこれまでのものといくらか異なるからです。拡張子.iniのファイルへのアクセスを禁止する例を見てみましょう。

<Files ~ "\.ini$">
deny from all
</Files>

htmlのような、タグで挟んだ書式になっています。しかし異なるのは、タグの終わりと文の終わりに改行を必要とするため、3行で1セットということです。最初のタグの中にあるバックスラッシュは、正規表現でのエスケープを表しています。windows環境では¥マークになりますね。正規表現全般については説明を省きますが、この項目でよく使いそうな指定としては、”または”を表す|(縦の一本棒)、前方一致を表す^、後方一致の$などがあります。それらを使って、拡張子が.iniおよびファイル名の先頭が.htのファイル(.htaccess、.htpasswd)へのアクセスを禁止してみます。

<Files ~ "\.ini$|^\.ht">
deny from all
</Files>

他にも特定プロバイダからのアクセス禁止や、カスタムエラーページの参照などできることは沢山あるのですが、ひとまずここでは解説を省きます。また.htaccessを使ったPHPの設定変更(php.iniを使用しない)については、独立したエントリに書くつもりです。


cPanelファイルマネージャに対するいくつかの不満点

以前の紹介記事で、cPanelのファイルマネージャはオフライン環境を一掃できるような多機能なアプリケーションだと書きました。しかしながら、使い込んでいくと判る不便なところもあります。今回は一般的なオフラインアプリケーションと比較して、cPanelが劣っている点について書いてみようと思います。

まずはFTPクライアントの代わりとなる、ファイルマネージャの主要部分についてですが、以下のような不満点があります。

  • 同じディレクトリに同じファイル名のファイルを作成しようとしたとき、代替案を出してくれない
  • ローカル環境からのファイルのドラッグ&ドロップに対応していない

まず上の項目についてはなかなか根深い問題のようで、この仕様に関連しているだろうと思われる不具合がたくさんあります。同名の新規ファイルが作れないことの他、同じディレクトリ内に既存ファイルのコピーが作れない(オフラインのFTPクライアントであれば、大抵は既存のファイル名の後ろに数字や文字列をつけた新しいファイルを作ってくれる)、はては別ディレクトリから同名のファイルを移動してくると、勝手に既存ファイルを上書きしてしまうなどの問題が発生します。これではうっかり操作ミスなどをしてしまった場合は一巻の終わりです。

下の項目も非常に不便な仕様で、ローカルのファイルをアップロードする場合面倒くさいだけではなく、フォルダを丸ごとアップする場合に、一度圧縮などで1ファイルに纏めた上でアップローダを使って上げなければならないという制約がつきます(まあ、アップローダと圧縮・解凍ツールは標準でついていますが)。

次に、付属のエディタであるHTML editor/Code editorですが、以下の点が不十分に感じられます。

  • 拡張子が.htmlでないとHTML editorが立ち上がってくれない
  • 指定文字コードでうまく開いてくれない場合がある。開き直さなければならない

前者は拡張子.tplのテンプレートファイルや、phpコードを含んだhtmlファイル(拡張子.php)をエディットする時に不便です。拡張子に関わらず両方のエディタを選択できるようにしなかったのは、どうにも不可解な仕様に思えます。

以上、総括するならば、オフラインのアプリケーションと比べてかなり大味な作りになっているということが言えると思います。オフラインのアプリケーションであれば、環境設定パネルなどでアプリケーションの挙動をかなり変えられるのが普通ですが、このファイルマネージャのsettingメニューには、文字コードについての確認ダイアログを出すか出さないかの一項目しか存在しませんでした。つまり、オフラインアプリケーションの代わりにファイルマネージャを使うためには、相応の忍耐強さと、アプリケーションの挙動についてある程度予測できる洞察力が必要なのかもしれません。

今回は悪い点ばかりを列挙しました。前回便利な点ばかり挙げたエントリと合わせて、サイト作成環境選びの判断材料に使ってもらえれば幸いです。


cPanelの多機能なファイルマネージャ

サーバ管理ソフトウェアcPanelには、標準で多機能なファイルマネージャが付属しています。

このスクリーンショットで大体何ができるかの説明は済んでしまっているような気がしますが、あえて機能を箇条書きにしてみます。

  • ファイルのアップロード・ダウンロード
  • 新規ディレクトリ、ファイルの作成
  • コピーや移動、名前の変更などのファイル操作
  • ファイルの圧縮・解凍
  • アクセス権の変更
  • コード/HTMLエディタ

このような機能があります。つまり基本的にFTPクライアントでできることがオンラインでできるようになるため、サイト作成のために別途FTPクライアントを用意する必要がありません。

また、最後に挙げたコード/HTMLエディタは出来の良いシェアウェア程度の機能を備えているため、サイト作成の中心的なツールとなり得るポテンシャルがあります。以下にスクリーンショットを何点か用意しました。

左の2点(それぞれcss、phpを編集しています)のスクリーンショットで立ち上がっているのは、code editorというアプリケーションです。一方右の2点は拡張子が.htmlのファイルのときに選択できるHTML editorです。
コードビュー、デザインビューといったHTMLエディタではおなじみの機能も備えています。

さて、こうしたFTP機能と強力なエディタをcPanelは標準搭載しているわけですが、そうなればcPanelを採用したサーバでサイト作成をする場合、従来の作成手順、”ローカルで作成したファイルをサーバにアップロードする”を踏襲することなく、完全にオンラインの作業でまかなえてしまえることになります。この方法ではローカル環境とリモート環境で気付かぬうちに複数の版ができてしまうという問題を解決できるばかりでなく、GoogleDocsのような、自宅、職場、ネットカフェなどの環境を問わず作業ができるという恩恵も受けられます。

ということで、サイトAの作成にはこのcPanelの環境を用いてみることにしました。使い込んでいくうちに足りない部分や不具合などが明らかになってくると思うので、それはその都度このブログで報告していきたいと思っています。

(2012.6追記:サイトの一時閉鎖の影響で、スクリーンショット画像が無しの状態になっています。想像を掻き立ててください)


cPanelについて

契約前は全く知らなかったのですが、WebhostingPadはサーバ管理ソフトウェアのcPanelを採用したサーバでした。契約手続きが完了するとこのcPanelのアカウントが発行され、以降は各種設定変更もこのソフトウェア上で行うようになっています。個人的にとても使い易いと感じたので、少しだけこのソフトウェアについて調べてみました。

まずサーバ管理ソフトウェアの役割についてですが、サーバ管理のために必要な各種コマンドを、コマンドラインでの操作ではなく直感的なインターフェースで行えるというメリットを管理者側に提供します。のみならずcPanelなどのソフトウェアはサーバ利用者側からの変更手続きにもわかり易いインターフェースを提供します。ちょうどwindowsのコントロールパネル、MacOSXのシステム環境設定パネルのような外観になっています。

利用者がいじることを許可された設定項目は、この画面にアイコンとして現れます。

コントロールパネルをもったサーバ管理ソフトウェアとしては他に、Plesk、Webminなどがメジャーなようです。日本のレンタルサーバでは設定画面を自前で用意している場合が多いのに対し、海外サーバではこうしたサーバ管理ソフトウェアを導入し、設定画面の使用方法についてはwebの解説をあたってくれという態度のサーバが多いようです。サーバ側としては人的ソースの節約になりますし、ユーザ側としては操作に一度慣れてしまえば、サーバを移転した際にも操作に戸惑わずに済むという利点もあります。

さて、以上サーバ管理ソフトウェアの概観でしたが、cPanelがサーバ管理ソフトウェアの選択肢としてどうかということに関しては、比較を行ったわけでも管理者として導入してみたわけでもないので言及ができません。あくまでこうしたソフトウェアに触れるのがはじめての利用者側の人間として、以下の機能がついているのが特に便利だと感じました。

  • サイトのバックアップ機能
  • ファイルマネージャ(GUIのFTPソフトのような外観)で書類を選択し、直接編集もできる
  • アクセス統計
  • ディレクトリにパスワードをかけたり特定のIPからのアクセス拒否が手間なくできる
  • サブドメインの追加

この他にも機能がたくさんありそうです。ちなみにcPanelは多言語対応でもあり、説明やシステムメッセージの言語として日本語を選ぶこともできます。90点くらいの日本語なので、90点あれば十分と感じる人にはここも訴求ポイントになると思います。

以上がcPanelについてでした。個人的によく使う機能の解説は以降のエントリでも行っていきたいと思っています。