Graham Ollis π > Clustericious-1.21 > Clustericious::Command::apache

Download:
Clustericious-1.21.tar.gz

Dependencies

Annotate this POD

Website

View/Report Bugs
Module Version: 1.21   Source  

NAME ^

Clustericious::Command::apache - Clustericious command to stat Apache

VERSION ^

version 1.21

DESCRIPTION ^

Start an Apache web server. The Apache start and stop commands recognize these options in their configuration section:

pid_file

The location to the pid file. This should usually be the same as the PidFile directive in your Apache configuration.

EXAMPLES ^

These examples are for Apache 2.4. Getting them to work on Apache 2.2 will require some tweaking.

mod_proxy with hypnotoad

Create a apache24-proxy.conf:

 ---
 % my $root = dir "@{[ home ]}/var/run";
 % $root->mkpath(0,0700);
 
 url: http://<%= $host %>:<%= $port %>
 start_mode:
   - hypnotoad
   - apache
 
 apache:
   args: -f <%= $root %>/apache.<%= $port %>.conf -E <%= $root %>/apache.<%= $port %>.log
   pid_file: <%= $root %>/apache.<%= $port %>.pid
   autogen:
     filename: <%= $root %>/apache.<%= $port %>.conf
     content: |
       LoadModule unixd_module      modules/mod_unixd.so
       LoadModule headers_module    modules/mod_headers.so
       LoadModule proxy_module      modules/mod_proxy.so
       LoadModule proxy_http_module modules/mod_proxy_http.so
       LoadModule authn_core_module modules/mod_authn_core.so
       LoadModule authz_core_module modules/mod_authz_core.so
       LoadModule authz_host_module modules/mod_authz_host.so
       LoadModule log_config_module modules/mod_log_config.so
       
       Listen <%= $host %>:<%= $port %>
       ServerName <%= $host %>
       PidFile <%= $root %>/apache.<%= $port %>.pid
       
       ErrorLog   <%= $root %>/apache.error.<%= $port %>.log
       LogFormat "%h %l %u %t \"%r\" %>s %b" common
       CustomLog  <%= $root %>/apache.access.<%= $port %>.log common
       
       <Location />
         ProxyPreserveHost On
         ProxyPass         http://localhost:<%= $port %>/
         ProxyPassReverse  http://localhost:<%= $port %>/
         RequestHeader append set X-Forward-Proto
         <RequireAll>
           Require all granted
         </RequireAll>
       </Location>
 
 hypnotoad:
   listen:
     - http://127.0.0.1:<%= $port %>
   pid_file: <%= $root %>/hypnotoad.<%= $port %>.pid

Note that this configuration binds hypnotoad to localhost and Apache to the IP that you pass in. Then call from your application's config file:

 ---
 # If hostname() (should be the same as what the command hostname
 # prints) is not a valid address that you can bind to, or if 
 # your hostname is the IP as localhost, then change the host to
 # a literal IP address
 % extend_config 'apache24-proxy', host => hostname(), port => 3001;

CGI

CGI is not recommends, for reasons that are hopefully obvious. It does allow you to run Clustericious from

Create a apache24-cgi.conf:

 ---
 % my $root = dir "@{[ home ]}/var/run";
 % $root->mkpath(0,0700);
 
 url: http://<%= $host %>:<%= $port %>
 start_mode: apache
 
 apache:
   args: -f <%= $root %>/apache.<%= $port %>.conf -E <%= $root %>/apache.startup.<%= $port %>.log
   pid_file: <%= $root %>/apache.<%= $port %>.pid
   autogen:
     filename: <%= $root %>/apache.<%= $port %>.conf
     content: |
       LoadModule alias_module      modules/mod_alias.so
       LoadModule cgi_module        modules/mod_cgi.so
       LoadModule unixd_module      modules/mod_unixd.so
       LoadModule authn_core_module modules/mod_authn_core.so
       LoadModule authz_core_module modules/mod_authz_core.so
       LoadModule authz_host_module modules/mod_authz_host.so
       LoadModule env_module        modules/mod_env.so
       LoadModule log_config_module modules/mod_log_config.so
       
       Listen     <%= $host %>:<%= $port %>
       ServerName <%= $host %>
       PidFile    <%= $root %>/apache.<%= $port %>.pid
       
       ErrorLog   <%= $root %>/apache.error.<%= $port %>.log
       LogFormat "%h %l %u %t \"%r\" %>s %b" common
       CustomLog  <%= $root %>/apache.access.<%= $port %>.log common
       
       PassEnv PERL5LIB
       PassEnv HOME
       ScriptAlias / <%= $0 %>/
       
       <Directory <%= $0 %>/ >
         Options +ExecCGI
         SetHandler cgi-script
         <RequireAll>
           Require all granted
         </RequireAll>
       </Directory>

Then call from your application's config file:

 ---
 % extend_config 'apache24-cgi', host => 'localhost', port => 3001;

SEE ALSO ^

Clustericious

AUTHOR ^

Original author: Brian Duggan

Current maintainer: Graham Ollis <plicease@cpan.org>

Contributors:

Curt Tilmes

COPYRIGHT AND LICENSE ^

This software is copyright (c) 2013 by NASA GSFC.

This is free software; you can redistribute it and/or modify it under the same terms as the Perl 5 programming language system itself.

syntax highlighting: