apache2 two instances (Ubuntu/Debian)
Keith Farrar
farrar at parc.com
Fri Aug 20 23:56:12 UTC 2010
On Fri, 2010-08-20 at 07:10 -0700, Kaushal Shriyan wrote:
> Hi
>
> Can someone please guide me to setup two instances of apache2 along
> with start/stop init.d script for both the instances.
>
> Thanks
>
> Kaushal
>
The Phusion Passenger module (mod_rails) previously conflicted with
mod_rewrite, so I
used the following hack to create a separate Apache instance. Now that
mod_rails and
mod_rewrite play nicely, I no longer need this hack, but it worked on a
production Hardy
web server for a year.
I use an 'includes' directory to store common configuration chunks
imported on multiple
virtual hosts (e.g specific authentication / authorization directives
included within a <File>
or <Location> block).
The Ruby on Rails engine, Phusion Passenger (a.k.a. mod_rails)
conflicts with the
standard modules mod_alias and mod_rewrite. So I cloned the
Apache configuration
files and modules into a separate directory tree, and the system
now runs two
parallel daemons running on troy, using these configuration
directories:
/etc/apache2/
/etc/apache2_modrails/
Pretty much everything that was called 'apache2*' in the
standard configuration
(init.d scripts, /usr/sbin/ binaries) has a new copy or symlink
to support the
parallel configuration. I used symlinks (or variables set in
configuration files)
where possible, to avoid version drift when we patch the system.
A global
substitution of "s/apache2/apache2_modrails/g" mostly worked for
the
/etc/init.d/apache2_modrails script and
the /usr/sbin/apache2_modrailsctl
script, but I needed to update some default settings within each
script.
New directories:
/etc/apache2_modrails/
/etc/apache2_modrails/conf.d/
/etc/apache2_modrails/includes/
/etc/apache2_modrails/mods-available/
/etc/apache2_modrails/mods-enabled/
/etc/apache2_modrails/sites-available/
/etc/apache2_modrails/sites-enabled/
/var/cache/apache2_modrails/mod_disk_cache/
/var/lock/apache2_modrails/
/var/run/apache2_modrails/
New files:
/etc/apache2_modrails/apache2_modrails.conf
/etc/default/apache2_modrails
/etc/init.d/apache2_modrails
/usr/sbin/apache2_modrailsctl
/var/log/apache2/access-modrails_log
/var/log/apache2/error-modrails_log
/var/run/apache2_modrails.pid
New symlinks:
/usr/sbin/apache2_modrails -> /usr/sbin/apache2
/etc/rc0.d/K09apache2_modrails
-> ../init.d/apache2_modrails
/etc/rc1.d/K09apache2_modrails
-> ../init.d/apache2_modrails
/etc/rc2.d/S91apache2_modrails
-> ../init.d/apache2_modrails
/etc/rc3.d/S91apache2_modrails
-> ../init.d/apache2_modrails
/etc/rc4.d/S91apache2_modrails
-> ../init.d/apache2_modrails
/etc/rc5.d/S91apache2_modrails
-> ../init.d/apache2_modrails
/etc/rc6.d/K09apache2_modrails
-> ../init.d/apache2_modrails
Configuration cloning hack, copy / symlink the files into the
new skeleton directory tree.
cp -p /etc/apache2/* /etc/apache2_modrails/
First option avoids breakage if modules change path names in the
standard location,
since the configuration files under this hack won't be updated
by dpkg.
ln
-s /etc/apache2/mods-available/* /etc/apache2_modrails/mods-available/
Less fragile option - share the modules-available between the
instances
rmdir /etc/apache2_modrails/mods-available
ln
-s /etc/apache2/mods-available /etc/apache2_modrails/
Add a localhost binding port for mod_rails Apache status in
ports.conf and
/etc/default/apache2_modrails (the apache2ctl and
apache2_modrailsctl scripts
call the lynx command line browser to dump output from the
status port).
Apache status binding in /etc/apache2_modrails/ports.conf :
Listen localhost:81
Changes in /etc/default/apache2_modrails
APACHE_HTTPD=/usr/sbin/apache2_modrails
APACHE_STATUSURL=http://localhost:81/server-status
HTCACHECLEAN_PATH=/var/cache/apache2_modrails/mod_disk_cache
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://lists.ubuntu.com/archives/ubuntu-server/attachments/20100820/3faf0a11/attachment.html>
More information about the ubuntu-server
mailing list