Установка Coldfusion и Railo на одном J2EE сервере на примере Glassfish
Наверное, единственным полноценным описанием работы Coldfusion под Glassfish является этот пост Пола Кукеля, и, возможно, в этом посте не будет много нового по сравнению с оригиналом.
Итак, по шагам:
1. Самый отвественный шаг - собрать волю в кулак и скачать Glassfish сервер с официального сайта;
2. Начнем установку. Интерфейс не блещет красотой, но инсталлятор работает без ошибок;
3. Логинимся в панель управления, по-умолчанию адрес http://localhost:4848/
4. Скачиваем сервер Railo как war-файл с официального сайта.
5. В разделе "Applications" как мы видим пока пусто. Здесь будут жить Coldfusion и Railo. Нажимаем кнопку Deploy.
6. Выбираем war-файл, вводим имя контекста и имя приложения в соответствующие поля. Сохраняем форму.
7. После недолгой процедуры разворачивания, Railo готов к работе. Пока что не торопимся тестировать, ведь нужно развернуть Coldfusion.
8. Скачиваем Coldfusion 9 с официального сайта - для разработчиков напомню, Coldfusion совершенно бесплатна;
9. Начинаем установку Coldfusion, когда придет время, выбираем вариант установки "WAR-файл"
10. Дадим инсталлятору время чуток повозиться над созданием WAR-архива
11. По окончанию установки, Coldfusion создаст в целевой папке (по-умолчанию это C:\ColdFusion9) архив WAR, который мы "скормим" "стекло-рыбе".
12. В уже известном разделе Applications в консоли Glassfish снова нажимаем Deploy и указываем на этот раз папку, куда Coldfusion уже положила WAR-файл и собственно выбираем WAR-файл
13. Сохраняем, даем время Glassfish-у развернуть WAR-архив и установить Coldfusion. По окончанию этого процесса в разделе Applications будет показано два установленных приложения. Приложения будут работать под одним сервером и доступны каждый по своему контексту: http://localhost:8080/railo и http://localhost:8080/cfusion
14. Пробуем запустить Coldfusion Administrator. Сначала он завершит настройку сервера, а после перейдет на страницу логина
15. Проверим наконец и Railo, и убедимся что с ним все в порядке
16. Уже сейчас можно полноценно работать. Но чтобы стало еще лучше, можно создать два виртуальных хоста для Apache и разделить доступ к серверам через эти виртуалхосты.
Подправим httpd.conf, чтобы включить нужные нам модули, расскоментарив эти строки:
LoadModule rewrite_module modules/mod_rewrite.so
LoadModule proxy_http_module modules/mod_proxy_http.so
LoadModule proxy_module modules/mod_proxy.so
LoadModule proxy_connect_module modules/mod_proxy_connect.so
# Virtual hosts
Include conf/extra/httpd-vhosts.conf
17. В файле httpd-vhosts.conf заставим эти модули поработать. Этими строками мы скажем Апачу "реврайтить" запросы CFM и CFC страниц и запросы Flash-remoting на соответствующий сервер приложений. Остальные файлы предоставим Апачу как обычно. После исправления конфигов Апача, не забываем перегрузить его. Будем считать, что вы ласково называете компьютер c3p0.
<VirtualHost *:80>
ServerName c3p0-cf
DocumentRoot "C:/glassfishv3/glassfish/domains/domain1/applications/cfusion"
DirectoryIndex index.html index.htm index.cfm index.cfml index.php
<Directory "C:/glassfishv3/glassfish/domains/domain1/applications/cfusion">
Options +Indexes +FollowSymLinks
AllowOverride All
Order allow,deny
Allow from all
</Directory>
RewriteEngine On
RewriteRule ^/(.*\.cf[cm])$ http://127.0.0.1:8080/cfusion/$1 [P,L]
RewriteRule ^/flex2gateway/(.*)$ http://127.0.0.1:8080/cfusion/flex2gateway/$1 [P,L]
</VirtualHost>
<VirtualHost *:80>
ServerName c3p0-railo
DocumentRoot "C:/glassfishv3/glassfish/domains/domain1/applications/railo"
DirectoryIndex index.html index.htm index.cfm index.cfml index.php
<Directory "C:/glassfishv3/glassfish/domains/domain1/applications/railo">
Options +Indexes +FollowSymLinks
AllowOverride All
Order allow,deny
Allow from all
</Directory>
RewriteEngine On
RewriteRule ^/(.*\.cf[cm])$ http://127.0.0.1:8080/railo/$1 [P,L]
RewriteRule ^/flex2gateway/(.*)$ http://127.0.0.1:8080/railo/flex2gateway/$1 [P,L]
RewriteRule ^/flashservices/gateway(.*)$ http://127.0.0.1:8080/railo/flashservices/gateway$1 [P,L]
RewriteRule ^/messagebroker/(.*)$ http://127.0.0.1:8080/railo/messagebroker/$1 [P,L]
RewriteRule ^/openamf/gateway/(.*)$ http://127.0.0.1:8080/railo/openamf/gateway/$1 [P,L]
</VirtualHost>
18. Подправим файл hosts (в Windows он расположен в C:\Windows\System32\drivers\etc\hosts):
127.0.0.1 localhost c3p0 c3p0-cf c3p0-railo
18. Flash Remoting в Coldfusion сразу готов к работе - достаточно запустить http://c3p0-cf/flex2gateway/ и увидеть пустую страницу - так и должно быть, если Flash Remoting настроен правильно. Однако, для Railo это не совсем так. Хоть BlazeDS интегрирован в Railo 3.1 точно также, как и в Coldfusion 9, нужно подправить конфигурацию Railo прежде чем начать работать с Flash remoting.
Исправляем файл web.xml в папке WEB-INF (в установке по-умолчанию в Windows - C:\glassfishv3\glassfish\domains\domain1\applications\railo\WEB-INF).
<servlet>
<servlet-name>MessageBrokerServlet</servlet-name>
<servlet-class>flex.messaging.MessageBrokerServlet</servlet-class>
<init-param>
<param-name>services.configuration.file</param-name>
<param-value>/WEB-INF/flex/services-config.xml</param-value>
</init-param>
<init-param>
<param-name>messageBrokerId</param-name>
<param-value>MessageBroker</param-value>
</init-param>
<load-on-startup>3</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>MessageBrokerServlet</servlet-name>
<url-pattern>/flex2gateway/*</url-pattern>
</servlet-mapping>
<servlet-mapping>
<servlet-name>MessageBrokerServlet</servlet-name>
<url-pattern>/flashservices/gateway/*</url-pattern>
</servlet-mapping>
<servlet-mapping>
<servlet-name>MessageBrokerServlet</servlet-name>
<url-pattern>/messagebroker/*</url-pattern>
</servlet-mapping>
19. После исправления конфигов Railo, его нужно перегрузить. Это делается с помощью администраторской панели Glassfish все с той-же страницы Applications. После перезагрузки, запуск http://c3p0-railo/flex2gateway/ должен выдать не ошибку, а пустую страницу.
20. Теперь можно полноценно пользоваться обоими серверами одновременно. Файлы CFM и CFC нужно класть в папки под корнем приложений внутри папок Glassfish - например C:\glassfishv3\glassfish\domains\domain1\applications\railo\ и C:\glassfishv3\glassfish\domains\domain1\applications\cfusion. Это не самое удобное решение, и пока я не нашел ответа как изменить положение этих папок.
21. Have fun !