2

我在ubuntu 12.10上运行 php5、 apache 2.2tomcat7 , 它们都是由 apt-get 安装的。

我需要同时运行 .php 和 .jsp 文件。我可以在每个(tomcat和apache httpd)上分别运行它们

我搜索了谷歌,但找不到上述版本的全面且易于理解的解决方案。

朋友告诉我我需要一个代理(用户首先点击 apache httpd,如果它是 .jsp,它会转发给 tomcat,然后返回给 apache,然后再给用户。php 由 apache 以正常方式提供服务)

1. 我需要什么模块?2. 什么设置(* ALL)像代理(很多我不知道),多个站点的虚拟主机我需要为tomcat 和apache。*

我认为谷歌或论坛本身缺乏具体的指南。

研究:

mod_proxy_ajp 替换 mod_jk

mod_php 已死

mod_php 用于旧系统,fcgid 用于 2.2,proxy_fcgi 用于 2.4

编辑:

1和2解决了。剩下3个

我在下面有以下虚拟主机文件。但我已经在 8080 上为 aplpinema“ ROOT.war ”运行了 tomcate /home/ubuntu/tomcat/www/alpinemadotcom不是在 webapps 文件夹中提取,而是在缓存文件夹中(尽管自动部署:true)

3-。我在哪里以及如何放置类似的东西:

ProxyPass /apps/jira ajp://backend.example.com:8009/jira
ProxyPassReverse /apps/jira http://www.example.com/jira



<VirtualHost *:80>
        ServerAdmin info@alpinema.com
        ServerName  www.alpinema.com
        ServerAlias alpinema.com

        DocumentRoot /home/ubuntu/apache/www/alpinemadotcom
        <Directory />
                Options FollowSymLinks
                AllowOverride None
        </Directory>
        <Directory /home/ubuntu/apache/www/alpinemadotcom/>
                Options Indexes FollowSymLinks MultiViews
                AllowOverride None
                Order allow,deny
                allow from all
        </Directory>

        ScriptAlias /cgi-bin/ /usr/lib/cgi-bin/
        <Directory "/usr/lib/cgi-bin">
                AllowOverride None
                Options +ExecCGI -MultiViews +SymLinksIfOwnerMatch
                Order allow,deny
                Allow from all
        </Directory>

        ErrorLog ${APACHE_LOG_DIR}/error.log

        # Possible values include: debug, info, notice, warn, error, crit,
        # alert, emerg.
        LogLevel warn

        CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>
4

1 回答 1

2

我经常做类似的事情。不再需要 mod_jk,因为 mod_proxy_ajp 正如您已经提到的那样替换了它。

首先,首先让您的应用程序完全启动并作为 LAMP 堆栈运行,这样您的所有 PHP 都可以正常工作。完成后,您需要 2 个模块才能使其余模块正常工作 mod_proxy 和 mod_proxy_ajp!

将它们添加到您的 LoadModule 列表中,然后您可以为您的虚拟主机创建各种别名

类似于以下内容:

ProxyPass /apps/jira ajp://backend.example.com:8009/jira
ProxyPassReverse /apps/jira http://www.example.com/jira 

通过首先为 php 设置 apache,一切都应该正常工作,但是一旦有人输入http://www.example.com/jira/ * 的路径,它就会自动代理到您的 tomcat 服务器。ProxyPassReverse 对于重写后端 tomcat 服务器发送的 url 等非常有用,以便与您的实际托管位置更加相关。

要记住的一件非常重要的事情是,在您考虑使用代理模块之前,您需要保护您的 apache。作为互联网上的开放代理可能是一件非常糟糕的事情!

看到这个页面:http ://httpd.apache.org/docs/2.2/mod/mod_proxy.html#access

同一页面还详细说明了您可以使用代理模块进行的所有不同修改。

========= 更新示例 =========

<VirtualHost *:80>
    ServerAdmin info@alpinema.com
    ServerName www.alpinema.com
    ServerAlias alpinema.com
    DocumentRoot /home/ubuntu/apache/www/alpinemadotcom

    ProxyPass /alpinemadotcom http://www.alpinema.com:8080/
    ProxyPassReverse /alpinemadotcom http://www.alpinema.com/alpinemadotcom 

    <Directory />
        Options FollowSymLinks
        AllowOverride None
    </Directory>

    <Directory /home/ubuntu/apache/www/alpinemadotcom/>
        Options Indexes FollowSymLinks MultiViews
        AllowOverride None
        Order allow,deny
        allow from all
    </Directory>

    ScriptAlias /cgi-bin/ /usr/lib/cgi-bin/

    <Directory "/usr/lib/cgi-bin">
        AllowOverride None
        Options +ExecCGI -MultiViews +SymLinksIfOwnerMatch
        Order allow,deny
        Allow from all
    </Directory>

    ErrorLog ${APACHE_LOG_DIR}/error.log
    # Possible values include: debug, info, notice, warn, error, crit,
    # alert, emerg.
    LogLevel warn
    CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>
于 2013-02-20T22:31:12.277 回答