NAME Server::Control -- Flexible apachectl style control for servers VERSION version 0.17 SYNOPSIS use Server::Control::Apache; my $apache = Server::Control::Apache->new( conf_file => '/my/apache/dir/conf/httpd.conf' ); if ( !$apache->is_running() ) { $apache->start(); } DESCRIPTION `Server::Control' allows you to control servers in the spirit of apachectl, where a server is any background process which listens to a port and has a pid file. It is designed to be subclassed for different types of servers. The original motivation was to eliminate all those little annoyances that can occur when starting and stopping a server doesn't quite go right. FEATURES * Checks server status in multiple ways (looking for an active process, contacting the server's port) * Detects and handles corrupt or out-of-date pid files * Tails the error log when server fails to start * Uses sudo by default when using restricted (< 1024) port * Reports what is listening to a port when it is busy (with Unix::Lsof) AVAILABLE SUBCLASSES The following subclasses are currently available as part of this distribution: * Server::Control::Apache - Apache httpd * Server::Control::HTTPServerSimple - HTTP::Server::Simple server * Server::Control::NetServer - Net::Server server These will probably be moved into their own distributions once the implementation stabilizes. RELATED MODULES * App::Control - Same basic idea for any application with a pid file. No features specific to a server listening on a port, and not easily subclassable, as all commands are handled in a single case statement. * MooseX::Control - A Moose role for controlling applications with a pid file. Nice extendability. No features specific to a server listening on a port, and assumes server starts via a command-line (unlike pure-Perl servers, say). May end up using this role. * Nginx::Control, Sphinx::Control, Lighttpd::Control - Modules which use MooseX::Control TO DO * Plugin to check a URL after start and make sure it comes back ok * Plugin to dynamically generate conf files * Consult global serverctlrc file as well, for common host settings * Add persistent shell mode, to eliminate startup cost for repeated restarts ACKNOWLEDGMENTS This module was developed for the Digital Media group of the Hearst Corporation, a diversified media company based in New York City. Many thanks to Hearst management for agreeing to this open source release. SEE ALSO serverctlp, Server::Control::Apache COPYRIGHT AND LICENSE This software is copyright (c) 2011 by Jonathan Swartz. This is free software; you can redistribute it and/or modify it under the same terms as the Perl 5 programming language system itself.