はじめに
Apache の設定は後から読み込まれる設定ファイルで上書きされていく仕様なので、Plesk では httpd.conf
の設定を変更しても、その後に読み込まれる Plesk 特有の設定で上書きされてしまいます。Plesk 特有の設定ファイルに直接設定を付け加えても、Plesk で更新をかけたりサーバーを再起動したりすると設定は元に戻ってしまいます。
これを回避する方法としては Plesk 特有の設定ファイルより後に読み込まれる設定を作るという方法がありますが、バーチャルホスト毎にとなると設定されているドメインが多ければ、ちょっと面倒ですよね。
Plesk が更新のたびに設定を書き換えるロジックに直接それを書けば、バーチャルホスト毎の設定も動的に変更を加えられます。その裏技的な方法についてご紹介します。
※ちなみに、これは Plesk 12.5 での方法なので、バージョンが違う場合はパス等が異なる場合があるのでご了承ください。
Plesk の http 設定ファイル
Plesk が生成している http 設定ファイルはいくつかありますが、以下の4つさえ押さえておけば十分です。他は必要に応じて設定を追って探せばいいでしょう。
/etc/httpd/conf.d/zz010_psa_httpd.conf
Include
で各設定を読み込んでいる設定ファイルです。
Include '/etc/httpd/conf/plesk.conf.d/server.conf'
Include '/etc/httpd/conf/plesk.conf.d/horde.conf'
Include '/etc/httpd/conf/plesk.conf.d/roundcube.conf'
Include '/etc/httpd/conf/plesk.conf.d/vhosts/*.conf'
Include '/etc/httpd/conf/plesk.conf.d/forwarding/*.conf'
Include '/etc/httpd/conf/plesk.conf.d/wildcards/*.conf'
/etc/httpd/conf/plesk.conf.d/server.conf
ベースとなる設定、デフォルトドメインの設定などが書かれています。
prefork のパラメータチューニングや SSL の設定等はここに記述したいところです。
/var/www/vhosts/system/各ドメイン/conf/httpd.conf
各バーチャルホスト毎の設定が書かれています。
/var/www/vhosts/system/各ドメイン/conf/vhost.conf
または vhost_ssl.conf
各バーチャルホスト毎の追加ディレクティブを書くファイルです。
デフォルトは存在しておらず、Plesk 管理画面から追加ディレクティブを設定すると生成されます。
SSH から自分で作成しても同様に追加設定が可能です。
ただし、この追加ディレクティブ用のファイルは <VirtualHost/>
内で Include
されているため、<VirtualHost/>
内で機能するディレクティブしか追記できません。
<VirtualHost IPアドレス:443 >
Include "/var/www/vhosts/system/各ドメイン/conf/vhost_ssl.conf"
</VirtualHost>
<VirtualHost IPアドレス:80 >
Include "/var/www/vhosts/system/各ドメイン/conf/vhost.conf"
</VirtualHost>
Plesk の http 設定を自動生成するファイル
Plesk 管理画面から設定を変えた場合やサーバーを再起動した際に、Plesk 特有の設定ファイルを書き換えるための php プログラムファイルです。
/usr/local/psa/admin/conf/templates/default/server.php
/etc/httpd/conf/plesk.conf.d/server.conf
を生成するための php プログラムファイルです。
/usr/local/psa/admin/conf/templates/default/domainVhost.php
/var/www/vhosts/system/各ドメイン/conf/httpd.conf
を生成するための php プログラムファイルです。
/usr/local/psa/admin/conf/templates/default/server/vhosts.php
/etc/httpd/conf/plesk.conf.d/server.conf
の <VirtualHost/>
設定を記述するための php プログラムファイルです。
/usr/local/psa/admin/conf/templates/default/domain/domainVirtualHost.php
/var/www/vhosts/system/各ドメイン/conf/httpd.conf
の <VirtualHost/>
設定を記述するための php プログラムファイルです。
他にもいくつかありますが、ソースを追えば /usr/local/psa/admin/conf/templates/default/server/
以下にはサーバー共通の /etc/httpd/conf/plesk.conf.d/server.conf
に記述するファイルが、/usr/local/psa/admin/conf/templates/default/domain/
以下にはドメイン毎の /var/www/vhosts/system/各ドメイン/conf/httpd.conf
に記述するファイルがあると分かります。
カスタマイズ方法
/usr/local/psa/admin/conf/templates/default/
に書かれている Plesk オリジナルの php ファイルを /usr/local/psa/admin/conf/templates/custom/
に複製し、編集します。
custom ディレクトリにファイルがあれば、それが優先して処理されます。
最初は custom ディレクトリが無いので、まずはディレクトリを生成します。
mkdir /usr/local/psa/admin/conf/templates/custom/
例えば /var/www/vhosts/system/各ドメイン/conf/httpd.conf
の全体をカスタマイズしたい場合は
/usr/local/psa/admin/conf/templates/default/domainVhost.php
を /usr/local/psa/admin/conf/templates/custom/domainVhost.php
に複製し、編集します。
cp /usr/local/psa/admin/conf/templates/default/domainVhost.php /usr/local/psa/admin/conf/templates/custom/
vi /usr/local/psa/admin/conf/templates/custom/domainVhost.php
編集した後は以下を実行すると、設定が書き換えられると同時に Apache が再起動されます。
/usr/local/psa/admin/bin/httpdmng --reconfigure-all
ちなみに、PHP のプログラムファイルなので、構文ミスがあれば当然エラーが表示されて失敗します。