Artykuły jmail's software

[CF]Apache przed Tomcatem z nadpisywaniem URL [en] Apache + Tomcat + mod_rewrite

by on maj.28, 2010, under PHP / CF / .NET / Java

Po dwunastu godzinach nad wymyślaniem różnych możliwości i googlowaniem w poszukiwaniu rozwiązań Tomcat zaczął działać tak jak JA sobie tego życzę

Nie znalazłem nigdzie działającego tutka, który sprawiłby, żeby Tomcat z Apachem zaczęły gadać i żeby do tego działało przepisywanie urli. Więc zrobiłem własną konfigurację. A o to instrukcja ja to wszystko razem do kupy zebrać

Założenia:

- katalog strony znajduje się w katalogu f:/usr/htdocs/cfpages/site
- katalog stron jest dostępny przez Apache’a
- nasza strona ma adres http://localFirstCFWheels
- konfigurujemy bez mod_jk, bez URLFilter czy jak to gówno się nazywa
- czyste przepisywanie urli przez Apache’a
- Apache Tomcat 6.0.26 Server
- Apache 2.2.13
- Railo 3.1.2.001
- Tomcat jest skonfigurowany do nasłuchiwania na porcie 8100

1. Musisz zainstalować Apache’a, Tomcata i Railo tak, żeby działał w głównym kontekście Tomcata i żeby automatycznie dodawał się do wszystkich stron. Dobry tutorial można znaleźć tutaj: http://corfield.org/entry/Railo_on_Tomcat__multiweb (opuść sekcję dodawania hostów – zrobimy to sami)
2. Musisz zainstalować mod_proxy i mod_rewrite w Apache’u – znajdziesz mnóstwo tutoriali w tym temacie w google’ach
3. Jeżeli masz wszystko przygotowane zatrzymaj obydwa serwery (Apache i Tomcat)
4. Otwórz w edytorze plik ŚciezkDoInstalacjiTomcata/conf/web.xml
5. Znajdź miejsce gdzie masz definiowane serwlety (konfigurowałeś to w punkcie pierwszym)
6. Dodaj

1
2
3
4
5
6
7
8
<servlet-mapping>
        <servlet-name>CFMLServlet</servlet-name>
        <url-pattern>/index.cfm/*</url-pattern>
</servlet-mapping>
<servlet-mapping>
        <servlet-name>CFMLServlet</servlet-name>
        <url-pattern>/rewrite.cfm/*</url-pattern>
</servlet-mapping>

Po

1
2
3
4
<servlet-mapping>
        <servlet-name>CFMLServlet</servlet-name>
        <url-pattern>*.cfc</url-pattern>
</servlet-mapping>

to pokaże Tomcatowi jak ma serwować przepisane urle (mówię tu w odniesieniu do CFWheels)

7. Otwórz teraz plik server.xml, który jest w tym samym katalogu co web.xml. Przewiń się na sam koniec pliku i znajdź coś takiego:

1
<Host name="localhost"

Przewiń plik na dół do ostatniego dodanego

1
2
3
4
<Host name="localFirstCFWheels" appBase="webapps">
  <Context path="" docBase="f:/usr/htdocs/cfpages/site"/>
  <Alias>www.localFirstCFWheels</Alias>
</Host>

to nakaże Tomcatowi odpalenie nowego hosta. Zapisz plik i zamknij

8. Otwórz plik ŚcieżkaInstalacjiApachea/conf/httpd.conf i odkomentuj (albo dodaj na końcu pliku jeżeli nie masz takiego wpisu)

1
Include conf/extra/httpd-vhosts.conf

9. Otwórz ŚcieżkaInstalacjiApachea/conf/extra/hhtpd-vhosts.conf i utwórz nowy wirtualny host (jeżeli wcześniej tego nie robiłeś najpierw zapoznaj się z jakimś tutorialem na ten temat)

a/ deklaracja

1
<VirtualHost *:80>

b/ ustawiamy hosta oraz jego aliasy

1
2
3
4
ServerName localFirstCFWheels
ServerAlias localFirstCFWheels
DocumentRoot "f:/usr/htdocs/cfpages/site"
DirectoryIndex index.cfm

c/ zabezpieczamy serwer przed przeglądaniem katalogów

1
2
3
4
5
6
<Directory "f:/usr/htdocs/cfpages/site/">
    Options -Indexes FollowSymLinks
    AllowOverride All
    Order allow,deny
    Allow from all
</Directory>

d/ włączamy moduł tłumaczenia urli

1
RewriteEngine On

e/ blokujemy otwarte przekazywanie proxy

1
2
3
<LocationMatch "^[^/]">
        Deny from all
</LocationMatch>

f/ Zabezpieczamy globalnie proxy

1
ProxyRequests Off

g/ pozwalamy Apache’owi nadpisać urle

1
2
ProxyPass / http://localFirstCFWheels:8100/
ProxyPassReverse / http://localFirstCFWheels:8100/

h/ wymuszamy przekazanie przez proxy oryginalnego hosta

1
ProxyPreserveHost On

i/ używamy standardowego warunku przepisywania urli przez cfwheels

1
2
3
RewriteCond %{REQUEST_URI} !^.*/(flex2gateway|jrunscripts|cfide|
cfformgateway|railo-context|files|images|javascripts|miscellaneous|
stylesheets|robots.txt|sitemap.xml|rewrite.cfm)($|/.*$) [NC]

j/ i na końcu dokonujemy samego przepisania url’a

1
RewriteRule "^/(.*)" http://localFirstCFWheels:8100/rewrite.cfm/$1 [P,QSA,L]

10. Otwieramy plik settings.cfm z wheelsów i dodaj

1
<cfset set(urlRewriting="On")>

zapisz i zamknij

11. Uruchom Tomcata i Apache’a

12. Uruchom stronę http://localFirstCFWheels i ciesz się swoją aplikacją na Tomcacie i pełnym nadpisywaniem urli

Dlaczego przetestowałem i napisałem tą instrukcję? Odpowiedź jest bardzo prosta. Nadal nie znalazłem możliwości uruchomienia Railo na serwerze GlassFish jako modułu dostępnego we wszystkich aplikacjach. A Resin….

Przepraszam z góry jeżeli kogoś uraziłem, ale Resin to kawałek gówna, który byłem zmuszony użyć z racji pewnych zależności. Resin jest dobry dla developerki, ale nie na produkcyjny serwer. Może jakby miała na nim stać jedna strona…. Ustawiłem go na maszynie gdzie mam jeszcze Apache IIS’a i GlassFisha. Na początek zeżarł 300 MB RAM’u. A jak odpaliłem wszystkie aplikacje to się nagle okazało, że nie, że to za mało i zeżarł ponad 1GB ramu. A Tomcat? Tomcat teraz sobie cichutko pierdzi na ok 150 MB RAM’u.

No i najważniejsze. Tomcat jest znacznie znacznie szybszy niż Resin. Przeładowanie aplikacji zajmuje prawie tyle samo czasu co jej wczytanie

Jestem pewny, że będę próbował zainstalować Railo na GlassFish’u ale znalazłem wspaniałą alternatywę na produkcyjny serwer pod aplikacje w ColdFusion

:, , , , , ,

Kalendarz

Maj 2010
P W Ś C P S N
« kwi   cze »
 12
3456789
10111213141516
17181920212223
24252627282930
31  
Linki sponsorowane:
ethica * katalog * rss * perfumy