Sac*_*hin 15 ubuntu apache-2.2
如何在同一系统上运行两个 apache 实例并相互独立地启动和停止它们。任何帮助或线索表示赞赏。
小智 12
我认为这可能是您正在寻找的 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
Run Code Online (Sandbox Code Playgroud)
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
Run Code Online (Sandbox Code Playgroud)
在这个例子中,将有 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 ...
Run Code Online (Sandbox Code Playgroud)
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 ...
Run Code Online (Sandbox Code Playgroud)
3)配置init脚本以使用适当的配置文件启动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"
Run Code Online (Sandbox Code Playgroud)
当这些配置文件在 /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"
Run Code Online (Sandbox Code Playgroud)
稍后,您可以仅使用配置文件名称 >(proxy, perl, python, php) 手动启动/停止任何 apache 实例,如下所示:
/usr/local/etc/rc.d/apache22 start php
/usr/local/etc/rc.d/apache22 stop perl
...
Run Code Online (Sandbox Code Playgroud)
3b) 对于 Ubuntu
我不确定这是否与 FreeBSD 的情况相似(并且没有痛苦)(请参阅上面的 rc.conf 部分)。在 FreeBSD 中与 apache 端口一起安装的 apache rc 脚本多年来已经意识到不同配置文件的可能性。
最近,Ubuntu/Debian init 脚本(例如/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, Long Term Support Release) 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
Run Code Online (Sandbox Code Playgroud)
哪里web-server1是后缀。也就是说,它默认将“apache2-”附加到您的实例名称。
这将创建一个/etc/apache-web-server1包含所有配置文件的新目录。它还将创建/etc/init.d/apache-web-server1可用于启动新 Apache 实例的文件。
| 归档时间: |
|
| 查看次数: |
46075 次 |
| 最近记录: |