NAME
Apache2::FileHash - Methods to store and retrieve files using a hashing methodology.
SYNOPSIS
use
Apache2::FileHash;
<VirtualHost *:80>
<Location /storeFile>
PerlHeaderParserHandler Apache2::FileHash::PUT
<Limit PUT>
order deny,allow
deny from all
allow from 192.168.5.5
</Limit>
</Location>
<Location /getFile>
PerlHeaderParserHandler Apache2::FileHash::GET
</Location>
</VirtualHost>
<VirtualHost *:8080>
<Location /storeFile>
PerlHeaderParserHandler Apache2::FileHash::PUT
<Limit PUT>
order deny,allow
deny from all
allow from 192.168.5.5
</Limit>
</Location>
<Location /getFile>
PerlHeaderParserHandler Apache2::FileHash::GET
</Location>
</VirtualHost>
*** startup.pl ***
#!/opt/perl
my
@array
= ();
foreach
my
$dir
(
@INC
) {
my
$file
=
"$dir/$Apache2::FileHash::ConfigFile"
;
eval
{
@array
=
&YAML::Tiny::LoadFile
(
$file
) or
die
(
"LoadFile($YAML::Tiny::errstr)"
);
};
unless
($@) {
last
;
}
}
$Apache2::FileHash::Config
= \
@array
;
BEGIN { MIME::Types->new() };
1;
*** startup.pl ***
*** FileHash.yml **
---
GLOBALS:
base_dir:
'/tmp'
BUCKETS:
-
method: http
name: localhost
port: 80
-
method: http
name: localhost
port: 8080
METHOD:
GET:
root_uri:
'/getFile'
PUT:
root_uri:
'/storeFile'
*** FileHash.yml ***
DESCRIPTION
This is an attempt at solving a problem with hosting millions of static files. It should be straight forward enough to take a suite of n servers and store x files across them.
It is assumed that each bucket is publically accessible and that the disks may or may not be. It is non-trivial to add a bucket later.
SEE ALSO
Apaceh2:::RequestRec
AUTHOR
Brian Medley, <freesoftware@bmedley.org<gt>
COPYRIGHT AND LICENSE
Copyright (C) 2012 by Brian Medley
This library is free software; you can redistribute it and/or modify it under the same terms as Perl itself, either Perl version 5.8.8 or, at your option, any later version of Perl 5 you may have available.