PowerCMS™

PowerCMS 導入・構築 個別無料相談会開催中

PowerCMS ブログ

ホーム > PowerCMS ブログ > PowerCMSインストール時のディスクおよびパーティション設計について

2018年06月15日

PowerCMSインストール時のディスクおよびパーティション設計について

弊社では PowerCMSのインストール&設定代行サービスにて、 お客様サーバーへのPowerCMSのインストールを代行させていただいています。

今回は、そのサービスをご利用いただく中で議論になる「PowerCMSのインストール先」および「標準的なパーティション設計」についてお話いたします。

「PowerCMSのインストール先」はどこがよいのか?

PowerCMSのインストールに関連するFAQとして「PowerCMSは、どのようなパスにインストールする必要がありますか?」があります。

この問いに対する回答から先にお伝えすると「(システム専用ディレクトリ以外であれば)どのパスでも動作します」となります。

製品仕様としては、CMSの管理画面について、Apacheなど利用するWebサーバーからCGIやPSGIとして実行する設定がなされていれば、インストール先のパスに依存せず動作いたします。

また、PowerCMSが必要とするディレクトリ、例えば管理画面パーツのパス(mt-static)や中間データを保存するディレクトリ(powercms_files)についても、製品標準ではmt.cgiなどがある mt/ ディレクトリの中に設定されていますが、 環境変数を適切に設定することで、それぞれ別のディレクトリを指定可能であり、これらの位置関係にも依存していません。

PowerCMSのインストール先の検討方法

ファイルシステム全体の観点からインストール先を検討する場合、 Filesystem Hierarchy Standard(以下、FHS)や、日本語の資料であれば RHELのマニュアルを参照するところから始めると思います。

例えば前記のマニュアルには、以下のような記載があります。

/var ディレクトリーには、 Apache web サーバーなど複数のアプリケーションのコンテンツが収納されます。また、ダウンロードした更新パッケージの一時的な保存にも使用されます。 /var ディレクトリーを持たせるパーティションには、ダウンロードした更新パッケージの一時的な保存や他のコンテンツの収納ができるよう十分な領域を確保してください。

実際にRHEL、CentOS、Amazon Linuxなどで "Apache HTTP Server" をパッケージでインストールすると、ドキュメントルートが /var/www/html/になることから、PowerCMSも /var/www以下にインストールする場合が多いです。

とはいえ、例えばCMSサーバーを冗長構成にするために、複数台のサーバー間でファイル同期を行う場所にPowerCMSをインストールするなどの事情から、そのマウント・ポイントによって別のディレクトリとなる場合もあろうかと思われます。

PowerCMSのインストール・レイアウトの例

ApacheをRPMでインストールした場合の既定ディレクトリ構成では複数の仮想ホストに対応できないことから、弊社でPowerCMSをインストールする場合には、以下のようなディレクトリ・レイアウトを標準としています。

「標準」とは、「このレイアウトをベースとして考える」という意味で、「この構成でなければ製品が動作しない」という意味ではございません。まず最初にディレクトリ・レイアウトをお示しするには意味がございますので、申し訳ございませんが、もうしばらくお付き合いをお願い致します。

/var/www/vhosts/www.example.jp/
htdocs
www.example.jpのドキュメントルート。ファイルとディレクトリのオーナーはapacheにする
apps
PowerCMSのインストールパス。ファイルとディレクトリのオーナーはrootにする。
mt-static
PowerCMSの管理画面部品。PowerCMS環境変数 StaticFilePathおよび StaticWebPathで指定。supportディレクトリを除く。ファイルとディレクトリのオーナーはrootにする
mt-support
PowerCMSの管理画面で用いられるユーザー画像などの保存場所。PowerCMS環境変数 SupportDirectoryPathおよび SupportDirectoryURLで指定。ファイルとディレクトリのオーナーはapacheにする
powercms_files
PowerCMSのリビジョンなどの中間ファイル。PowerCMS環境変数 PowerCMSFilesDirで指定。ファイルとディレクトリのオーナーはapacheにする
tmp
PowerCMSでファイルをアップロードする場合などに用いる一時ファイル置き場。PowerCMS環境変数 TempDirで指定。ファイルとディレクトリのオーナーはapacheにする
logs
www.example.jpのアクセスログとエラーログ。Apacheのバーチャルホストで設定する。ファイルとディレクトリのオーナーはrootにする
/var/www/vhosts/www.example2.jp/
同じ構成の繰り返し...。2つの仮想ホストを1つのPowerCMSでまかなうなら、PowerCMS関連ファイルは /var/www/以下に置いて、 /vhosts/以下にはコンテンツ関連のみを置く配置例もあります。

PowerCMSの製品パッケージを展開していただくと、 mt-staticの下に supportディレクトリがあったり、mt.cgiと同じディレクトリに mt-staticpowercms_filesディレクトリがあるのに、なぜインストール時にそれらを別のディレクトリにするのでしょうか。

これは、運用が進んだ後にPowerCMSをバージョンアップする際に重要になります。製品パッケージの標準レイアウトでは、いわゆるアプリケーション本体とデータが書き込まれるディレクトリが混在しており、PowerCMSを上書きでバージョンアップした場合に、データディレクトリに影響を及ぼす場合が考えられます。そのため、インストール後の運用やバージョンアップ時を見越して、インストール時のディレクトリ・レイアウトを設計します。

PowerCMSのインストールに伴うパーティション設計の例

「PowerCMSのインストールにはどのくらいのディスク容量が必要ですか?」というのもFAQです。

この問いに対しても回答から先にお伝えすると「ディスク容量が100MB以上あれば、あとは制作されるWebサイトによります」となります。

さきほどのインストール・レイアウトを参照しながら詳細をご説明しましょう。

まず、PowerCMS本体は、合計で100MB以下の領域しか占めません。今のサーバーの状況を勘案すれば、これが問題になるとは考えにくく、他の要因を検討していきます。

次に検討すべきは htdocsディレクトリです。これは、いわゆるWebコンテンツが格納されるディレクトリで、最終的なこのディレクトリの容量は、製品ベンダとしての弊社の立場では、全く想像がつきません。これからPowerCMSで制作されようとしているコンテンツの容量から推測いただくしかございません。

例えば、今CMSで管理していないWebサイトが10GBあり、これをPowerCMSで管理するように変更した場合、おそらく10GBより大幅に増えるとは思われません。しかしながら、例えば高解像度の写真データや動画データ、大容量のPDFを頻繁に大量にアップロードするような場合は、この限りではなく、ある程度の見込みで数年間での容量増加、および安全率を勘案しておく必要があります。

最後に見落としがちなのが、 powercms_filesディレクトリです。このディレクトリの容量が、運用を続けると大きくなるおそれがあり、注意が必要です。また、パーティション設計時にも考慮が必要です。

powercms_filesディレクトリには、 リビジョン管理機能で利用される、記事の編集履歴が保存されます。大まかには、次のようにお考えください。例えば、ある記事を少し修正して保存した場合、修正前の記事のHTMLだけではなく、そこで用いられている画像や添付ファイルも含めて、そのページを構成するすべてのファイルが別個に保存されます。

そして、PowerCMSをインストールした既定値で、このリビジョンは10世代保管されます。従って、単純に計算すると、先ほどの10GBのWebサイトの場合、この powercms_filesディレクトリ以下だけで、最大で100GBの容量を占める可能性があります。また、このディレクトリには小さなファイルが大量に保存される仕様のため、これが原因でinode番号がいわゆる枯渇状態となる場合もございます。

まず、既定のリビジョンの世代数である10が妥当な数であるのか、運用やレギュレーションに照らして、少なくすることはできないか、エンドユーザー様や運用部門など、コンテンツを制作される方々に確認していただきつつ、これらに耐えるようなパーティション設計を行う必要があります。

以上より、バックアップなどとの運用の兼ね合いもあろうかと思いますが:

  • /var以下のディレクトリ容量が膨らむ可能性がある
  • inode番号が枯渇する可能性がある
  • パーティションがDisk Fullの場合、他のパーティションへの影響を抑えてサーバー・ダウンを防ぐ
  • 内容がWebコンテンツとその更新履歴なので、バックアップすべき対象である

などの観点から、少なくとも /varは別パーティションとし、上記の計算に基づいた容量とするのがよいかと思われます。

PowerCMSのインストールに伴うディスク設計の例

1台のサーバーで複数のディスクを用いるケースも少なくなってきていると思われますが、ディスクの観点から考えてみます。

PowerCMSは静的にコンテンツを生成するCMSで、それゆえに「再構築」という避けては通れない処理が必要です。これは、自動・手動に関わらず、CMSのデータベースに保存された内容をHTMLに書きだす処理になります。

動的コンテンツだけを扱うCMSからの移行を検討される方の中には、この再構築という処理について懸念しておられることもあるようです。

この再構築処理について、インフラ面で考えてみます。再構築処理は、大量のファイルをリネームして書き出す処理になりますので、ディスクの書き込み速度がリニアに影響します。また、前述のリビジョン機能も大量の小さなファイルを扱いますので、これもディスクの書き込み速度が重要です。

他方で、ディスクには書き込み回数に制限がある場合もありますが、これを勘案しつつ、CMSの書き出し先とリビジョンの保存ディレクトリは、SSDなどにすると効果が高いと考えられます。

まとめ

一般のサーバー構築同様、PowerCMSが動作するCMSサーバーの構築においても、ディスクおよびパーティション設計は重要です。本記事がサーバー設計のお役に立てれば幸いです。

  • PowerCMSはアルファサード株式会社の登録商標です。
  • その他、本記事に記載されている会社名、製品名、サービス名は、当社または各社の商標もしくは登録商標です。

カテゴリー
技術情報
投稿者
持田 徹