10391


Grailsでtestという名前のアプリケーションを作りました。  
`http://myapp.com/`をコンテキストパスにしたいのですが、productionモードだとApacheの画面(Red Hat
Enterprise Linux Test Page)が表示されてしまいます。

localでは`http://localhost:8080/`でアプリケーションが動きます。

どうすれば、`http://myapp.com/`でTop画面を表示できるようにする事ができるのでしょうか？

設定は以下の通りです。

build.gradle（抜粋）

[code]

    buildscript {
        dependencies {
          classpath 'org.grails:grails-gradle-plugin:2.2.0.RC1'
        }
      }
      grails{
        grailsVersion = '2.4.4'
      }
      dependencies {
          bootstrap "org.grails.plugins:tomcat:8.0.21"
          compile 'org.grails.plugins:scaffolding:2.1.2'
          compile 'org.grails.plugins:asset-pipeline:2.1.5'
          runtime ('org.grails.plugins:hibernate4:4.3.6.1') {
              exclude module: 'xml-apis'
          }
      }
    
[/code]

Config.groovy（抜粋）

[code]

    environments {
        development {
            grails.logging.jul.usebridge = true
        }
        production {
            grails.logging.jul.usebridge = false
            grails.serverURL = "http://myapp.com"
        }
    }
    
[/code]

application.properties（抜粋）

[code]

    app.grails.version=2.4.4
    app.name=test
    app.context=/
    
[/code]

http.config（抜粋、Apache2.4）

[code]

    ServerName myapp.com:80
    DocumentRoot "/usr/local/tomcat/webapps/test"
    <Directory "/usr/local/tomcat/webapps/test">
        Options -Indexes +FollowSymLinks
        AllowOverride None
        Require all granted
    </Directory>
    
[/code]

Tomcatのバージョンは`8.0.21`

どうすれば、`http://myapp.com/`でTop画面を表示できるようにする事ができるのでしょうか？


CC BY-SA 3.0
2015-05-19T06:18:45.147
10360
2015-05-20T06:16:12.657
2015-05-19T06:34:23.020
8000
7277
question
apache gradle tomcat grails
Grails - productionモードでコンテキストパスを変更できない。


Apacheの設定が正しくありません。  
mod_proxy_ajpなどを使ってApacheとTomcatを連携させる必要があります。


CC BY-SA 3.0
2015-05-20T00:34:35.030
10391
2015-05-20T00:34:35.030
2368
10360
answer


Grailsというより「TomcatとApacheの連携をどうしたらよいか」という質問ですね。

質問に書かれている現在のApacheの設定では、単にTomcatのwebapps/testディレクトリを静的なドキュメントルートとして設定しているだけなので、Tomcat上で動作しているWebアプリケーションにはディスパッチされません。

Apache経由でTomcat上のWebアプリにアクセスできるようにするには、ApacheをTomcatのリバースプロキシとなるように設定します。上の回答にあるように、mod_proxy_ajpやmod_proxyを使います。

「Tomcat Apache
連携」あたりでググると情報がたくさん見つかると思いますが、本家のStackOverflowでもmod_proxyを使った方法が紹介されていました。デフォルトコンテキストでアクセスできるようにしたいようなので、ちょうど良さそうな気がします。

  * <https://stackoverflow.com/a/962928/1257166>

> `http://myapp.com/` をコンテキストパスにしたい

蛇足ですが、「コンテキストパス」という用語が指すのはそこではなくて、 `http://myapp.com/mycontext/hoge/foo` の
`mycontext` のところになります。  
なので、タイトルの字面をそのまま受けて「Grailsでコンテキストパスを変更したい」という話の場合は、Config.groovyで
`grails.app.context = '/mycontext'`
という設定を追加するなどして変更できます、という回答になります。とはいえ、Apacheがフロントに入る構成の場合は裏のTomcat/Grails側のコンテキストパスがどうであろうとあまり関係ありませんね。とりあえず参考まで。

  * <http://mrhaki.blogspot.jp/2009/12/grails-goodness-change-context-path-of.html>


CC BY-SA 3.0
2015-05-20T06:16:12.657
10411
2015-05-20T06:16:12.657
2017-05-23T12:38:56.083
-1
2356
10360
answer