OS X El Cap, Apache2, Tomcat 8, Lucee 5

Я отправил сообщение в группу Lucee google, но через четыре дня я просто не получил необходимой поддержки. У меня есть ощущение, что эксперт Tomcat сможет довольно быстро указать мне правильное направление, поэтому я пишу здесь.

OS X El Cap, Apache2, Tomcat 8, Lucee 5.

http://localhost я получаю Apache "It Works!" страница.

на http://localhost:8080 я получаю страницу Lucee по умолчанию, обслуживаемую с

/usr/local/Cellar/tomcat/8.5.3/libexec/apps/lucee

http://localhost:8080/manager/html и http://localhost:8080/host-manager/html я получаю страницы администратора Tomcat.

У меня есть каталог /Volumes/Storage/{companyname}/sites/www-test-app/www, содержащий index.cfm и index.htm.

У меня есть www-test-app в моем файле HOSTS.

У меня есть запись хоста в httpd-vhosts.conf для www-test-app

У меня есть запись в файле tomcat server.xml:

<Host name="www-test-app" appBase="webapps" unpackWARs="true" autoDeploy="true">
  <Context path="" docBase="/Volumes/Storage/{companyname}/sites/_test-app/www/">
  <JarScanner scanClassPath="false"/>
  </Context>                      
</Host>

Когда я вызываю http://www-test-app/index.htm, я получаю свою статическую тестовую страницу.

Когда я вызываю http://www-test-app/index.cfm, я получаю эту ошибку:

HTTP Status 404 -
type Status report
message
description The requested resource is not available.
Apache Tomcat/8.5.3

Я остановил и перезапустил apache и tomcat, чтобы убедиться, что файлы конфигурации прочитаны.

САМАЯ БОЛЬШАЯ ПОДСКАЗКА: я не вижу, чтобы WEB-INF создавался под /Volumes/Storage/{companyname}/sites/www-test-app/www

Мои права доступа к каталогу 777 для этого каталога и всех подкаталогов:

/Volumes/Storage/{companyname}/sites

Я не уверен, нужно ли мне менять владельца.

Apache2 был включен в El Cap. Apache testconfig дает «синтаксис в порядке».

Tomcat был установлен через Homebrew.

Lucee была установлена ​​через файл WAR на этой странице: http://brianflove.com/2015/03/05/lucee-on-mac-os-x-yosemite-quick-start/

Я застрял здесь ... но так близко, так как страница Lucee по умолчанию выглядит великолепно, включая любые cfoutput/variables.

Вот пример из catalina.{date}.log:

13-Jul-2016 12:06:02.381 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Server version:        Apache Tomcat/8.5.3
13-Jul-2016 12:06:02.383 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Server built:          Jun 9 2016 11:16:29 UTC
13-Jul-2016 12:06:02.383 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Server number:         8.5.3.0
13-Jul-2016 12:06:02.383 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log OS Name:               Mac OS X
13-Jul-2016 12:06:02.383 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log OS Version:            10.11.5
13-Jul-2016 12:06:02.383 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Architecture:          x86_64
13-Jul-2016 12:06:02.383 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Java Home:             /Library/Java/JavaVirtualMachines/jdk1.8.0_65.jdk/Contents/Home/jre
13-Jul-2016 12:06:02.383 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log JVM Version:           1.8.0_65-b17
13-Jul-2016 12:06:02.383 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log JVM Vendor:            Oracle Corporation
13-Jul-2016 12:06:02.383 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log CATALINA_BASE:         /usr/local/Cellar/tomcat/8.5.3/libexec
13-Jul-2016 12:06:02.383 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log CATALINA_HOME:         /usr/local/Cellar/tomcat/8.5.3/libexec
13-Jul-2016 12:06:02.384 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Command line argument: -Djava.util.logging.config.file=/usr/local/Cellar/tomcat/8.5.3/libexec/conf/logging.properties
13-Jul-2016 12:06:02.384 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Command line argument: -Djava.util.logging.manager=org.apache.juli.ClassLoaderLogManager
13-Jul-2016 12:06:02.384 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Command line argument: -Djdk.tls.ephemeralDHKeySize=2048
13-Jul-2016 12:06:02.384 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Command line argument: -Dcatalina.base=/usr/local/Cellar/tomcat/8.5.3/libexec
13-Jul-2016 12:06:02.385 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Command line argument: -Dcatalina.home=/usr/local/Cellar/tomcat/8.5.3/libexec
13-Jul-2016 12:06:02.385 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Command line argument: -Djava.io.tmpdir=/usr/local/Cellar/tomcat/8.5.3/libexec/temp
13-Jul-2016 12:06:02.385 INFO [main] org.apache.catalina.core.AprLifecycleListener.lifecycleEvent The APR based Apache Tomcat Native library which allows optimal performance in production environments was not found on the java.library.path: /Users/marc/Library/Java/Extensions:/Library/Java/Extensions:/Network/Library/Java/Extensions:/System/Library/Java/Extensions:/usr/lib/java:.
13-Jul-2016 12:06:02.578 INFO [main] org.apache.coyote.AbstractProtocol.init Initializing ProtocolHandler ["http-nio-8080"]
13-Jul-2016 12:06:02.619 INFO [main] org.apache.tomcat.util.net.NioSelectorPool.getSharedSelector Using a shared selector for servlet write/read
13-Jul-2016 12:06:02.623 INFO [main] org.apache.coyote.AbstractProtocol.init Initializing ProtocolHandler ["ajp-nio-8009"]
13-Jul-2016 12:06:02.624 INFO [main] org.apache.tomcat.util.net.NioSelectorPool.getSharedSelector Using a shared selector for servlet write/read
13-Jul-2016 12:06:02.625 INFO [main] org.apache.catalina.startup.Catalina.load Initialization processed in 702 ms
13-Jul-2016 12:06:02.654 INFO [main] org.apache.catalina.core.StandardService.startInternal Starting service Catalina
13-Jul-2016 12:06:02.655 INFO [main] org.apache.catalina.core.StandardEngine.startInternal Starting Servlet Engine: Apache Tomcat/8.5.3
13-Jul-2016 12:06:02.665 INFO [localhost-startStop-1] org.apache.catalina.startup.HostConfig.deployDescriptor Deploying configuration descriptor /usr/local/Cellar/tomcat/8.5.3/libexec/conf/Catalina/localhost/ROOT.xml
13-Jul-2016 12:06:03.183 INFO [localhost-startStop-1] org.apache.jasper.servlet.TldScanner.scanJars At least one JAR was scanned for TLDs yet contained no TLDs. Enable debug logging for this logger for a complete list of JARs that were scanned but no TLDs were found in them. Skipping unneeded JARs during scanning can improve startup time and JSP compilation time.
13-Jul-2016 12:06:08.815 INFO [localhost-startStop-1] org.apache.catalina.startup.HostConfig.deployDescriptor Deployment of configuration descriptor /usr/local/Cellar/tomcat/8.5.3/libexec/conf/Catalina/localhost/ROOT.xml has finished in 6,149 ms
13-Jul-2016 12:06:08.816 INFO [localhost-startStop-1] org.apache.catalina.startup.HostConfig.deployDirectory Deploying web application directory /usr/local/Cellar/tomcat/8.5.3/libexec/webapps/docs
13-Jul-2016 12:06:08.837 INFO [localhost-startStop-1] org.apache.catalina.startup.HostConfig.deployDirectory Deployment of web application directory /usr/local/Cellar/tomcat/8.5.3/libexec/webapps/docs has finished in 21 ms
13-Jul-2016 12:06:08.837 INFO [localhost-startStop-1] org.apache.catalina.startup.HostConfig.deployDirectory Deploying web application directory /usr/local/Cellar/tomcat/8.5.3/libexec/webapps/examples
13-Jul-2016 12:06:09.079 INFO [localhost-startStop-1] org.apache.catalina.startup.HostConfig.deployDirectory Deployment of web application directory /usr/local/Cellar/tomcat/8.5.3/libexec/webapps/examples has finished in 241 ms
13-Jul-2016 12:06:09.079 INFO [localhost-startStop-1] org.apache.catalina.startup.HostConfig.deployDirectory Deploying web application directory /usr/local/Cellar/tomcat/8.5.3/libexec/webapps/host-manager
13-Jul-2016 12:06:09.104 INFO [localhost-startStop-1] org.apache.catalina.startup.HostConfig.deployDirectory Deployment of web application directory /usr/local/Cellar/tomcat/8.5.3/libexec/webapps/host-manager has finished in 25 ms
13-Jul-2016 12:06:09.104 INFO [localhost-startStop-1] org.apache.catalina.startup.HostConfig.deployDirectory Deploying web application directory /usr/local/Cellar/tomcat/8.5.3/libexec/webapps/manager
13-Jul-2016 12:06:09.123 INFO [localhost-startStop-1] org.apache.catalina.startup.HostConfig.deployDirectory Deployment of web application directory /usr/local/Cellar/tomcat/8.5.3/libexec/webapps/manager has finished in 19 ms
13-Jul-2016 12:06:09.157 INFO [www-test-app-startStop-1] org.apache.catalina.core.ApplicationContext.log Marking servlet CFMLServlet as unavailable
13-Jul-2016 12:06:09.157 SEVERE [www-test-app-startStop-1] org.apache.catalina.core.StandardContext.loadOnStartup Servlet [CFMLServlet] in web application [] threw load() exception
 java.lang.ClassNotFoundException: lucee.loader.servlet.CFMLServlet
    at org.apache.catalina.loader.WebappClassLoaderBase.loadClass(WebappClassLoaderBase.java:1282)
    at org.apache.catalina.loader.WebappClassLoaderBase.loadClass(WebappClassLoaderBase.java:1116)
    at org.apache.catalina.core.DefaultInstanceManager.loadClass(DefaultInstanceManager.java:520)
    at org.apache.catalina.core.DefaultInstanceManager.loadClassMaybePrivileged(DefaultInstanceManager.java:501)
    at org.apache.catalina.core.DefaultInstanceManager.newInstance(DefaultInstanceManager.java:118)
    at org.apache.catalina.core.StandardWrapper.loadServlet(StandardWrapper.java:1061)
    at org.apache.catalina.core.StandardWrapper.load(StandardWrapper.java:1000)
    at org.apache.catalina.core.StandardContext.loadOnStartup(StandardContext.java:4902)
    at org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:5212)
    at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:152)
    at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1405)
    at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1395)
    at java.util.concurrent.FutureTask.run(FutureTask.java:266)
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
    at java.lang.Thread.run(Thread.java:745)

Не могу найти разъединение... куда мне идти дальше?


person Franc Amour    schedule 14.07.2016    source источник


Ответы (1)


РЕШЕНО {вздыхает}

Что ж, я полностью готов надрать себе задницу. Решение оказалось намного проще, чем я думал.

Мое (неправильное) понимание заключалось в том, что настройка Lucee EXPRESS для использования локальной установки Apache на Mac просто не сработает — мне пришлось использовать встроенный веб-сервер tomcat. Веб-сервер tomcat, поскольку он основан на Java, на самом деле чувствителен к регистру, когда речь идет об именах файлов в URL-адресе — «Foo.jpg» НЕ совпадает с «foo.jpg» в глазах «кошки». Вот почему я отказался от Lucee Express.

Я помню, как пытался заставить локальный Apache работать с Lucee Express, но, поскольку с тех пор прошло так много времени, я не мог начать рассказывать вам, что я делал неправильно. Я просто знаю, что не мог заставить его работать — вероятно, возился с файлами конфигурации, которые мне на самом деле не нужны.

В любом случае, решение чертовски простое… скачайте Lucee Express. Затем просто настройте виртуальные хосты в apache, как обычно, так как Apache нужно указать проксировать любые запросы coldfusion к tomcat/lucee… вот так:

<Directory "/Volumes/Storage/company/sites/_test-app/www">
    Allow From All
    AllowOverride All
    Options +Indexes
    Require all granted
    DirectoryIndex index.cfm
</Directory>

<VirtualHost *:80>
    ServerName "www-test-app"
    ServerAlias "www-test-app.*.*.*.*.xip.io"
    DocumentRoot "/Volumes/Storage/company/sites/_test-app/www"
    <Proxy *>
        Allow from 127.0.0.1
    </Proxy>
    ProxyPreserveHost On
    ProxyPassMatch ^/(.+\.cf[cm])(/.*)?$ ajp://localhost:8009/$1$2
</VirtualHost>

Затем с другой стороны добавьте аналогичную запись для файла Tomcat server.xml:

<Host name="www-test-app" appBase="webapps" autoDeploy="true" unpackWARs="true">
            <Context path="" docBase="/Volumes/Storage/company/sites/_test-app/www">           
                <JarScanner scanClassPath="false"/>
            </Context>                      
        </Host>

Затем (черт возьми!!!) просто запустите Apache и запустите Tomcat/Lucee. Вот и все. Tomcat создаст файлы WEB-INF на каждом указанном виртуальном хосте. Веб-сервер tomcat по-прежнему работает на порту 8888, а коннектор ajp по-прежнему работает на 8009.

http://www-test-app выдает результат через Apache (URL-адреса без учета регистра).

Поскольку у Apache есть root-права на прослушивание порта 80, он делает это… и передает запросы CF на порт 8009.

БОНУС: все еще можно тестировать через веб-сервер Tomcat…

http://www-test-app:8888 дает результат через веб-сервер Tomcat.

Если кто-то хочет обойти / воздержаться от Apache и использовать веб-сервер Tomcat, полностью автономный, НО не нужно добавлять «: 8888» ко всем своим URL-адресам, homebrew для Mac может установить «haproxy», который при запуске от имени пользователя root и настроенный с помощью простого конфигурационного файла, может получать запросы на порт 80 и перенаправлять их на порт 8888.

Для любых НОВЫХ сайтов, на которых желательно убедиться, что имена файлов правильно указаны в коде (с учетом регистра), это будет моим окончательным решением. Для устаревших приложений, которые изначально запускались в стеке без учета регистра, лучше всего использовать локальный веб-сервер Apache.

person Franc Amour    schedule 15.07.2016