Changeset 912
- Timestamp:
- 04/25/07 18:48:23 (3 years ago)
- Location:
- trunk/server
- Files:
-
- 4 modified
-
CHANGES (modified) (1 diff)
-
lib/Mogstored/HTTPServer.pm (modified) (2 diffs)
-
lib/Mogstored/HTTPServer/Lighttpd.pm (modified) (1 diff)
-
mogstored (modified) (5 diffs)
Legend:
- Unmodified
- Added
- Removed
-
trunk/server/CHANGES
r910 r912 1 * lighttpd support 2 1 3 * abstract out the HTTP server support in mogstored, so 2 4 mogstored isn't just a perlbal wrapper, but an anything -
trunk/server/lib/Mogstored/HTTPServer.pm
r910 r912 7 7 $self->{listen} = delete $opts{listen}; 8 8 $self->{maxconns} = delete $opts{maxconns}; 9 $self->{bin} = delete $opts{bin}; 9 10 die "unknown opts" if %opts; 10 11 return $self; … … 24 25 } 25 26 27 sub listen_port { 28 my $self = shift; 29 my $port = $self->{listen}; 30 $port =~ s/^.+://; 31 die "not numeric port?" unless $port =~ /^\d+$/; 32 return $port; 33 } 26 34 27 35 1; -
trunk/server/lib/Mogstored/HTTPServer/Lighttpd.pm
r910 r912 2 2 use strict; 3 3 use base 'Mogstored::HTTPServer'; 4 use File::Temp (); 4 5 5 6 sub start { 6 die "TODO: start lighttpd"; 7 my $self = shift; 8 my $exe = $self->{bin}; 9 10 if ($exe && -x $exe) { 11 die "Provided lighttpd path $exe not valid.\n"; 12 } 13 unless ($exe) { 14 my @loc = qw(/usr/local/sbin/lighttpd 15 /usr/sbin/lighttpd 16 /usr/local/bin/lighttpd 17 /usr/bin/lighttpd 18 ); 19 foreach my $loc (@loc) { 20 $exe = $loc; 21 last if -x $exe; 22 } 23 unless (-x $exe) { 24 die "Can't find lighttpd in @loc\n"; 25 } 26 } 27 28 my $pid = fork(); 29 die "Can't fork: $!" unless defined $pid; 30 31 if ($pid) { 32 $self->{pid} = $pid; 33 Mogstored->on_pid_death($pid => sub { 34 die "lighttpd died"; 35 }); 36 return; 37 } 38 39 my ($fh, $filename) = File::Temp::tempfile(); 40 $self->{temp_conf_file} = $filename; 41 my $portnum = $self->listen_port; 42 43 print $fh qq{ 44 server.document-root = "$self->{docroot}" 45 server.port = $portnum 46 server.modules = ( "mod_webdav" ) 47 webdav.activate = "enable" 48 }; 49 50 exec $exe, "-D", "-f", $filename; 51 } 52 53 sub DESTROY { 54 my $self = shift; 55 unlink $self->{temp_conf_file} if $self->{temp_conf_file}; 7 56 } 8 57 -
trunk/server/mogstored
r911 r912 15 15 use IO::Socket::INET; 16 16 use POSIX qw(WNOHANG); 17 use Fcntl qw(SEEK_CUR SEEK_SET SEEK_END O_RDWR O_CREAT O_TRUNC);18 17 use Perlbal 1.52; 19 18 use FindBin qw($Bin $RealScript); … … 45 44 my $default_config = "/etc/mogilefs/mogstored.conf"; 46 45 my $server = "perlbal"; 46 my $serverbin = ""; 47 47 48 48 my %config_opts = ( … … 55 55 'maxconns=i' => \$max_conns, 56 56 'server=s' => \$server, 57 'serverbin=s' => \$serverbin, 57 58 ); 58 59 usage() unless Getopt::Long::GetOptions(%config_opts); … … 78 79 # start HTTP server 79 80 my $httpsrv_class = "Mogstored::HTTPServer::" . ucfirst($server); 80 my $httpsrv = $httpsrv_class->new(listen => $http_listen, 81 my $httpsrv = $httpsrv_class->new( 82 listen => $http_listen, 81 83 docroot => $docroot, 82 maxconns => $max_conns); 84 maxconns => $max_conns, 85 bin => $serverbin, 86 ); 83 87 $httpsrv->start; 84 88 … … 169 173 } 170 174 175 sub Mogstored::on_pid_death { 176 my ($class, $pid, $code) = @_; 177 $on_death{$pid} = $code; 178 } 179 171 180 # returns $pid of child, if parent, else runs child. 172 181 sub start_disk_usage_process {
