ProxyPass , Apache 2.2

Witam! Postępuje wg tego tutoriala. Uruchamiam swoją aplikacje przez mongrel_cluster (na porcie 8002) i robie tak by była ona dostepna przez Apache na porcie 80. Problem polega na tym ze nie chce mieć tej aplikacji jako głównej strony tylko jako podstrone na serwerze poprostu… to znaczy nie ma byc http://212.106.166.95/ tylko http://212.106.166.95/sklep/ . Wpływ na to ma

DocumentRoot “/var/www/htdocs/rails/sklep/public”

ale nie wiem co zrobić z tym fantem… Będe wdzięczny za pomoc!

Niżej mój konfig apacha:

[code]DocumentRoot “/var/www/htdocs”

Options Indexes FollowSymLinks
AllowOverride None
Order allow,deny
Allow from all

ProxyRequests Off

<VirtualHost *:80>
ServerName violawin.de

DocumentRoot “/var/www/htdocs/rails/sklep/public”

<Directory "/var/www/htdocs/rails/sklep/public">
	Options FollowSymLinks
		AllowOverride None
		Order allow,deny
		Allow from all
</Directory>
<Proxy balancer://mongrel_cluster>
BalancerMember http://212.106.166.95:8002
</Proxy>
ProxyPass /sklep/ balancer://mongrel_cluster/
ProxyPassReverse / balancer://mongrel_cluster/
ProxyPass /sklep/images !
ProxyPass /sklep/stylesheets ! 
ProxyPass /sklep/javascripts ! 

RewriteEngine On

[/code]

Odpowiedzią na powyższe jest domena którą należy wpisać w i po sprawie.
Domene mam, ale taką co tylko może zostać przypisana do katalogu na serwerze hostującym. Czyli nie mogę jej przypisać do mojego ip (porazka…). Zrobiłem wiec na serwerze index.html z przekierowaniem na http://moj.ip/sklep/ . Tylko że to nie działa, bo Virtualhost już tego nie łapie…
Napewno ktoś już się spotkał z podobnym problemem, i jak go rozwiązał? (apacha+mongrel, ale aplikacja RoR jako postrona a nie główna na serwerze…

Pozdrawiam!

A nie brakuje Ci tam

NameVirtualServer *:80

?

I co to znaczy ze nie mozesz przypisac domeny do swojego IP ??!?!?

Znaczy to tyle: http://157.158.57.7/~zwierzak/domena.JPG

Chodzi Ci o NameVirtualHost ? Jeśli tak to nic ta opcja nie daje (jest opcjonalna).

Uściśle problem ejszcze raz:

Gdy użyje opcji to ProxyPass w ogóle nie działa i link które ono ma stworzyć tj http://212.106.166.95/sklep/ w ogóle nie działa.
Jęsli natomiast wpisze <VirtualHost *:80> to ProxyPass ładnie działa, domena działa, adres http://212.106.166.95/sklep/ istnieje, lecz gdy wejdzię się na strone główną, tj http://212.106.166.95/ to komunikat “You don’t have permission to access / on this server.” co jest logiczne bo DocumentRoot zdeklarowany w VirtualHoscie nadpisuje globalnego DocumentRoota.
Nie mam pomysłów już…

Chodzi Ci o NameVirtualHost ? Jeśli tak to nic ta opcja nie daje (jest opcjonalna).[/quote]
Tak, o to mi chodzilo. Ale ta dyrektywa nie jest opcjonalna
http://httpd.apache.org/docs/2.2/mod/core.html#namevirtualhost.

The NameVirtualHost directive is a required directive if you want to configure name-based virtual hosts.

[quote=zwierzak]Gdy użyje opcji to ProxyPass w ogóle nie działa i link które ono ma stworzyć tj http://212.106.166.95/sklep/ w ogóle nie działa.
Jęsli natomiast wpisze <VirtualHost *:80> to ProxyPass ładnie działa, domena działa, adres http://212.106.166.95/sklep/ istnieje, lecz gdy wejdzię się na strone główną, tj http://212.106.166.95/ to komunikat “You don’t have permission to access / on this server.” co jest logiczne bo DocumentRoot[/quote]
Chyba nadal nie rozumiem co chcesz osiagac/w czym jest problem:/

Prosze, przeczytaj:

Oto kawałek mojego configa Apacha (jest poprawny?) .
Problem: Nie działa link http://212.106.166.95/sklep/ . ani jego domena czyli violawin.de . Czym to jest spowodowane?

[code]DocumentRoot “/var/www/htdocs/”

Options Indexes FollowSymLinks
AllowOverride None
Order allow,deny
Allow from all

ProxyRequests Off

NameVirtualHost violawin.de

ServerName violawin.de
DocumentRoot “/var/www/htdocs/rails/sklep/public”
<Directory “/var/www/htdocs/rails/sklep/public”>
Options FollowSymLinks
AllowOverride None
Order allow,deny
Allow from all

<Proxy balancer://mongrel_cluster>
BalancerMember http://212.106.166.95:8002

ProxyPass /sklep/ balancer://mongrel_cluster/
ProxyPassReverse /sklep/ balancer://mongrel_cluster/
ProxyPass /sklep/images !
ProxyPass /sklep/stylesheets !
ProxyPass /sklep/javascripts !

RewriteEngine On

[/code]

Ale Railsy w ogóle będą w stanie tak pójść, nie mając własnej (sub)domeny? Przecież przetwarzają pełnego URLa, przynajmniej według typowych wpisów w routes.rb?

To nie zadziala. VirtualHost dziala rozpoznaje gdzie chcesz sie polaczyc po naglowku Host: ktory wysyla przegladarka. Jezeli wpisujesz adres ip w przegladarce to nie bedzie wyslany Host: violawin.de i apache nie bedzie wiedzial gdzie chcesz sie podlaczyc.

Natomiast violawin.de dziala. Jak wejde przez http://violawin.de to pojawia sie:

[code]

Vita Natur zwierzak [/code] Na pierwszy rzut oka nie widze bledow w konfigu. Co mowia logi apache ?

[quote=zwierzak]<Proxy balancer://mongrel_cluster>
BalancerMember http://212.106.166.95:8002
[/quote]
A sprobuj zrobic to bez balancera tylko bezposrednio.

Pojda :slight_smile: Wystarczy mongrela odpalic przez:

mongrel_rails start -e production -p 8000 --prefix=/subdir

Update - oops. Jednak oprocz powyzszego trzeba spatchowac routes

Nie dokońca mnie rozumiecie, jak w routes.rb wpisze

 map.connect '/sklep/', :controller => 'store', :action => 'index'

to Aplikacja RoR mi sie ustawi na podstronie sklep, a ja chce żeby cały serwer Mongrela działał na podstronie /sklep/. A na głównej ma działać Apache! :slight_smile:
Ruthrsc, violawin.de jako domene działa dlatego bo jest to przekierowanie, czyli ten kod któy wkleiłes lezy na innym serwerze, wiec to sie nie liczy…
Mam jeszcze już w pełni sprawną domene http://animal.selfip.net/ ona juz nie jest przekierowaniem tylko poprostu domeną dla mojego ip.
Pzdr!

Udało mi się ustawić tą aplikacje tak jak chciałem, czyli http://apache/RoR-app
zrobiłem to bez VirtualHosta, troche na dziko ale działa.

taki kod w httpd.conf

<Proxy balancer://mongrel_cluster> BalancerMember http://212.106.166.95:8002 </Proxy> ProxyPass /sklep/ balancer://mongrel_cluster/ ProxyPass /sklep balancer://mongrel_cluster/ ProxyPassReverse /sklep/ balancer://mongrel_cluster/ ProxyPass /sklep/images ! ProxyPass /sklep/stylesheets ! ProxyPass /sklep/javascripts !
I w /var/www/htdocs utworzone symlinki do /railsAPP/public/stylesheets, images, i javascripts. Troche dziki sposób ale działą, niestety tylko jedna aplikacja.

Ale znalazłem jak zrobić ich więcej i zajme się tym w wolnej chwili.
Warto przeczytać:


http://lists.radiantcms.org/pipermail/radiant/2006-November/002456.html