サーバの知識もあると便利
gusagiです。
明けましておめでとうございます。本年もよろしくお願いいたします。
ウェブサイトを長く運営していると、アップロードしたファイルなどにより特定のディレクトリの容量が大きくなりすぎることがあると思います。
そのディレクトリに対してブラウザからアクセスさせていなければ問題ないのですが、画像やPDFファイルなどの場合、そのまま移動させるのが難しい場合が出てきます。
たとえば、/home/www/example.com/htdocs/photo というディレクトリに画像をアップロードしていたところ、/homeを含むパーテーションの使用率が100%になってしまいました。
使用量のほとんどは、上記のディレクトリにアップロードした画像が占めています。
/home/www/example.com/htdocs/photo/xxx.png へは、現在のところhttp://example.com/photo/xxx.png でアクセス出来ています。
画像のアップロードは今後も行う予定なので、example.com配下を別のディレクトリに移動に移動したいのですが、プログラム側の修正が発生するため、example.com配下の全てを移動させる訳には行きません。
こんな場合、一番工数を少なくして解決する方法は、apacheの設定ファイルで解決することだと思います。
前述のように、/home/www/example.com/htdocs/photo が使用量の殆どを占めているので、photoだけを別のパーテーションに移します。
仮に、/home2というパーテーションに移動させるとしましょう。
イメージとしては、
/home/www/example.com/htdocs/photo
↓
/home2/example.com/photo
に移動させると思って下さい。
この場合、http://example.com/index.php へのアクセスは、/home/www/example.com/htdocs/index.php が処理を行い、http://example.com/photo/xxx.png へのアクセスは、/home2/example.com/photo/xxx.png を表示させるようにすれば良いことになります。
設定方法は、
AliasMatch ^/photo/(.*) /home2/example.com/photo/$1という設定を、example.com用の設定部分に追記して、apacheを再起動すれば対応完了です。
apacheやMySQLなどのサーバに手を加えることで、プログラムを延々と修正する手間が省けるということは結構あります。
プログラムに加えてサーバのことまで覚えるのは確かに困難ですが、やってみる価値は十分にあるのではないでしょうか?
コメント (4)
確かに、シンボリックリンクの方が楽ですよね。
うーん、失敗失敗(汗
Alias /photo/ \"/home2/example.com/photo/\"
とやることもできますね。こちらの方が match しない分、速度的にも有利なはずです。
symlink も良いですが、symlink だと、Options +FollowSymLinks しなければいけませんね。
> とやることもできますね。こちらの方が match しない分、速度的にも有利なはずです。
Aliasって、その配下の全てのファイル、なんてパターンでも利用出来るんですかっ!?
知りませんでした^^;
さっそく、テスト環境でも使って試してみますね。
> symlink も良いですが、symlink だと、Options +FollowSymLinks しなければいけませんね。
確かに、FollowSymLinksが不可の環境もありそうですし、ここらへんも注意しないと駄目ですね^^;