私は2つのウェブサイト、websiteaとwebsitebを持っています。
両方とも同じドキュメントルートを指していて、すべて正常に機能しますが、websiteaでwebsitebとは異なるdbの詳細を設定したいと思います。
データベースの詳細は/config/database.phpに保存されます
I couldそのphpファイルにifステートメントを記述して、ホスト名に応じて使用するデータベースの詳細を指定しますが、このようなWebサイトをさらに10個追加すると、次のようになります。非常に速い痛み。
2番目の問題は、ユーザーがアップロードした写真を含む/ images /というフォルダーがあります。これらも異なる必要があります。
私が最初にそれについて考えていたとき、私はapachesエイリアスを使用できると思いました-しかし、それはphpでは機能しません。
<?php include('config/database.php');?>
エイリアスに従わないため(Webリクエストではなく、ローカルディレクトリルックアップです)、失敗します。
だから私は少し立ち往生しています:)
誰か考えがありますか?
サイトのルートフォルダにあるすべてのファイルとディレクトリにシンボリックリンクを使用するだけです。
検討したい解決策がいくつかありますが、欠点もあります。また、Linuxまたは別の* nixを使用していることを前提としています。
ここで使用できるオプションの1つは、 nionfs を使用することです。 Unionfsは基本的に、2つのファイルシステムを組み合わせる方法を提供します。ここでの欠点は、unionfsがデフォルトですべてのシステムで使用できるわけではないことです。カーネルの再コンパイルが必要になる場合があります。
つまり、基本的には次のようなものを設定できます
/srv/www/basefolder (all the common files
/srv/www/localstuff/site1.example.org (files unique to a specific site)
/srv/www/localstuff/site2.example.org
/srv/www/localstuff/siten.example.org
/srv/www/unions/site1.example.org (unionfs ro:/srv/www/basefolder + rw:/srv/www/localstuff/site1.example.org)
/srv/www/unions/site2.example.org (unionfs ro:/srv/www/basefolder + rw:/srv/www/localstuff/site2.example.org)
/srv/www/unions/siten.example.org (unionfs ro:/srv/www/basefolder + rw:/srv/www/localstuff/siten.example.org)
別のオプションは、単にハードリンクを使用することです。これを設定するには、rsyncを使用すると非常に簡単です。これの欠点は、注意を払っていない場合、多くのサイトで何かを壊してしまうことです。すべてをハードリンクしたことを忘れて、1つの場所のファイルに変更を加えると、すべての場所で変更されます。また、ファイルを更新するたびにrsyncコマンドを再実行する必要があります。
/srv/www/basefolder (all the common files
/srv/www/site1.example.org
/srv/www/site2.example.org
このようなコマンドを使用して、この構造を構築します
rsync -vr /srv/www/basefolder /srv/www/site1.example.org --link-dest /srv/www/basefolder
rsync -vr /srv/www/basefolder /srv/www/site2.example.org --link-dest /srv/www/basefolder
すべての共通コンテンツを別の場所に配置し、異なる構成ファイルと画像フォルダー、および共通データディレクトリへのシンボリックリンクを使用して多くのdocrootを作成するオプションはありますか?この構造を自動展開するためのbashスクリプトを作成することもできます。
/ images /フォルダーを使用するものや、使用しているphpスクリプトの数は明確ではありません。
ただし、config/HTTP_Host.database.phpを使用するようにphpを書き直して、仮想ホストを追加するとスケーリングするようにすることは可能です。 phpコードが/ imagesを使用するか、/ imagesへのリンクを作成する場合、HTTP_Host(Apacheから渡される)も使用するように書き直すことができます。リンクが別のアプリからのものである場合は、Apacheの書き換えルールを使用して/ images /のリクエストに仮想ホスト情報を含めることができるため、/ images /のように見えますが、ディスク上の一意のものにマップされるdirになります。
PHPのHTTP_Hostに関する詳細情報:
http://lab.artlung.com/echo-http-Host/
このソリューションでは、ユーザー展開ごとにデータを複製する必要がなくなりますが、コードを変更し、Apacheでルールを書き換える必要があります。