Answers:
我认为这可能是您正在寻找的 http://wiki.apache.org/httpd/RunningMultipleApacheInstances
供以上链接参考
1)在您的服务器上安装Apache
sudo apt-get install apache2
sudo apt-get install libapache2-mod-perl2
sudo apt-get install other-lib-mods-needed
2)为要运行的每个实例配置单独的apache配置
对于Ubuntu,它应该位于/ etc / apache2中,对于每个实例,您基本上都需要在不同的端口上进行侦听。
# httpd-proxy.conf
Listen 80
ErrorLog /var/log/httpd-proxy-error.log
LoadModule proxy_module libexec/apache22/mod_proxy.so
LoadModule proxy_http_module libexec/apache22/mod_proxy_http.so
# httpd-perl.conf
Listen 81
ErrorLog /var/log/httpd-perl-error.log
LoadModule perl_module libexec/apache22/mod_perl.so
# httpd-python.conf
Listen 82
ErrorLog /var/log/httpd-python-error.log
LoadModule python_module libexec/apache22/mod_python.so
# httpd-php.conf
Listen 83
ErrorLog /var/log/httpd-php-error.log
LoadModule php5_module libexec/apache22/libphp5.so
在此示例中,将运行4个不同的实例,每个实例处理不同的模块类型,即一个用于perl,一个用于python等。
现在,您还需要在代理实例中配置虚拟主机,以便每当有针对Subversion DAV服务器的请求传入时,该请求就会传递到您的“ python-dav” apache中,而对您的wordpress博客的请求则传递到您的“ php'apache实例。让我们再次编辑“ httpd-proxy.conf”:
# httpd-proxy.conf
NameVirtualHost *:80
<VirtualHost *:80>
DocumentRoot /www/wordpress
ServerName blog.company.com
ProxyPass / http://localhost:83/
ProxyPassReverse / http://localhost:83/
[... additional directives here ... ]
</VirtualHost>
<VirtualHost *:80>
DocumentRoot /www/svn
ServerName svn.company.com
ProxyPass / http://localhost:82/
ProxyPassReverse / http://localhost:82/
[... additional directives here ... ]
</VirtualHost>
# you get the idea ...
2b)测试所有内容 至此,我们完成了配置,现在我们需要启动所有apache实例,并测试一切是否按预期工作。当然,您可以使用“ apachectl”执行此操作,例如
/usr/local/sbin/apachectl -f /usr/local/etc/apache22/proxy-httpd.conf configtest
/usr/local/sbin/apachectl -f /usr/local/etc/apache22/proxy-httpd.conf start
/usr/local/sbin/apachectl -f /usr/local/etc/apache22/perl-httpd.conf configtest
/usr/local/sbin/apachectl -f /usr/local/etc/apache22/perl-httpd.conf start
# and so on ...
3)配置初始化脚本以使用适当的配置文件启动apache
链接的资源对此有更详细的编辑rc.conf文件的信息,但与处理Ubuntu的内容特别相关,因此我将在下面重点介绍这两个部分。
FreeBSD中的'/etc/rc.conf'是包含系统配置>信息的主文件。引导内核后读取该文件,并用于启动服务,>守护进程,设置网络接口等。对于我们的配方,我们将启用apache> server,列出可用实例(配置文件),它们的配置文件和>告诉FreeBSD引导系统后,其中哪些需要运行(启用)。
# /etc/rc.conf
apache22_enable="YES"
apache22_profiles="proxy perl python php"
# the apache proxy instance
apache22_proxy_configfile="/usr/local/etc/apache22/httpd-proxy.conf"
apache22_proxy_enable="YES"
# the apache perl instance
apache22_perl_configfile="/usr/local/etc/apache22/httpd-perl.conf"
apache22_perl_enable="YES"
# the apache python instance
apache22_python_configfile="/usr/local/etc/apache22/httpd-python.conf"
apache22_python_enable="YES"
# the apache php instance
apache22_php_configfile="/usr/local/etc/apache22/httpd-php.conf"
apache22_php_enable="YES"
在/etc/rc.conf中配置并启用了这些配置文件后,将在成功引导系统后启动它们。如果要声明一个配置文件,但只希望>手动启动相应的apache实例,则只需编辑'/etc/rc.conf'并> say,例如:
# the apache php instance
apache22_php_configfile="/usr/local/etc/apache22/httpd-php.conf"
apache22_php_enable="NO"
稍后,您可以仅使用配置文件名称>(proxy,perl,python,php)手动启动/停止任何apache实例,如下所示:
/usr/local/etc/rc.d/apache22 start php
/usr/local/etc/rc.d/apache22 stop perl
...
3b)对于Ubuntu
我不确定这与FreeBSD的情况类似(并且很轻松)(请参见上面的rc.conf部分)。多年来,随FreeBSD的apache port一起安装的apache rc脚本已经意识到使用不同配置文件的可能性。
最近,Ubuntu / Debian初始化脚本(例如/etc/init.d/apache2)已更新为支持apache的多个实例(例如,多个配置,名为/ etc / apache2- $ SUFFIX)。根据您所使用的Ubuntu / Debian版本的不同,您可能会很幸运……或不是。
该功能出现在2010年2月的Debian 2.2.14-6版本中:http ://lists.alioth.debian.org/pipermail/pkg-apache-commits/2010-February/000295.html
在Ubuntu中,Maverick(10.10)中的apache2软件包包含以下修补程序:http : //changelogs.ubuntu.com/changelogs/pool/main/a/apache2/apache2_2.2.16-1ubuntu3.1/changelog
但是,Lucid(长期支持版本10.04)apache2显然没有:http : //changelogs.ubuntu.com/changelogs/pool/main/a/apache2/apache2_2.2.14-5ubuntu8.4/changelog
可以在/usr/share/doc/apache2/README.multiple-instances中找到文档
感谢您的详细回答,但后来我发现此链接http://someofmylearnings.wordpress.com/2011/07/02/multiple-apache2-instances-on-ubuntu/此过程非常简单。
当我们安装Apache时,有一个/usr/share/doc/apache2.2-common/README.multiple-instances
文件可让您大致了解创建Apache实例需要执行的操作。
在同一目录中,有一个examples
目录,其中包含一个脚本setup-instance
,我们可以使用该脚本创建一个Apache实例。因此,要创建另一个Apache实例,需要做的就是:
sh /usr/share/doc/apache2.2-common/examples/setup-instance web-server1
web-server1
后缀在哪里。也就是说,默认情况下,它将“ apache2-”附加到您的实例名称。
这将创建一个/etc/apache-web-server1
包含所有配置文件的新目录。它还将创建/etc/init.d/apache-web-server1
可用于启动新Apache实例的对象。