2011-08-01 9 views
8

Sorun şu ki, üzerinde 3 farklı ürünün çalıştırılması gereken yalnızca bir etki alanı adı var (bunlardan 2'si PHP tabanlı, 1 python). Yani yapmam gereken şey, URL’deki yolu farklı sanal konak olarak ele almak; yani: birinci ile üçüncü, ayrı ayrı sanal konaklar olarak hareket edecektir.Apache - sanal ana bilgisayar olarak url yolunu işleme

Bunu nasıl yapacağınız hakkında bir ipucu var mı?

cevap

1

Bir sanal sunucu çözümü isteğiniz için apache-config yönergeleriyle bir şeyler yapmak isteyebilirsiniz. Apache, @cweiske'nin açıkladığı gibi, sanal alanlar ile gerçek alanlar olarak çalışabilir.

Bu durumda çözüm, çalıştığınız alt dizinlerde .htaccess dosyasını kullanmak veya geçerli (sanal-) ana bilgisayar yapılandırmanızda <Directory "/web/root/subdir">..</Directory> bloğu kurmak olacaktır. Bu soru sorulmuştur beri VirtualHosts ('app1.domain.org')

+0

üzerinde test edebilirsiniz example.com ile işaret olduğunu Eh sorun Artık alt etki alanlarını eklemek için hiçbir imkanı ile sadece 1 alan olması varsayarak. Ve üzerinde 3 farklı uygulama çalıştırmam gerek. İçinde WSGI init scrpits yerleştiremediğim için dizin yönergesinde bir seçenek değil. – Ruslan

+0

@Ruslan: WSGI'den herhangi bir deneyim olmadan, dokümanlardaki bir quickscan, "WSGIScriptAlias ​​/ app1/usr/local/wsgi/scripts/app1.wsgi" komutunu kullanabildiğinizi ve WSGIScriptAlias ​​/ app2/usr/local/wsgi/scripts/app2.wsgi' vb. Yeterli olup olmadığından emin değil misiniz? – PtPazuzu

+0

Peki ben WSGIScriptAlias ​​ile biten burada hata değil – Ruslan

2

Apache'de bir "sanal ana bilgisayar", yalnızca etki alanı adları üzerinde değil, yalnızca etki alanı adları üzerinde çalışır. İstediğin şeyi elde edemezsin.

16

Bir süre oldu bunları çalıştırmak istiyorum

Ayrıca bizatihi eğer farklı alt alanlarda onları barındırmak için tercih edebilirsiniz ama benzer bir problem için bir çözüm aradığım için çözümü ekleyeceğim.

Bu, Alias ​​veya AliasMatch yönergesi kullanılarak gerçekleştirilebilir. Daha fazla detay burada bulunabilir:

http://httpd.apache.org/docs/2.2/mod/mod_alias.html

Alias /first_url/ /var/www/first_url_resources 
+0

Eski cevap ve hatta daha eski bir soru, biliyorum, ama bu tam olarak sonradan tek hat çözümün türü oldu. Aradığınız şeyin sözdizimi veya bağlamından emin olmadığınız bir şey aramak kolay değildir. Teşekkürler! –

+0

Dikkat edilmesi gereken bir şey daha: "Alias ​​/ url/path/to/dir" yönergesi, bu dizinin geçersiz kılınmasına izin vermek için bir '' yönergesi tarafından izlenebilir. –

0

Bu örnek dizinine göre farklı PHP sürümünü atamak açıklar, aynı zamanda belirli port

üzerinde fast_cgi olarak Python yorumlayıcı çalıştırarak Python desteği eklemek için adapte edilebilir

Örnek olarak, her bir PHP sürümü için ayrı bir dizin olduğunu varsayalım ve bunları çalıştıran PHP sürümüne göre adlandırılırlar, ancak bu,

mkdir /home/user/www 
mkdir /home/user/www/5.6.5 
mkdir /home/user/www/7.0.2 
mkdir /home/user/www/7.0.4 
mkdir /home/user/www/7.0.6 

varsayılan sanal konakta /etc/apache2/sites-enabled/000-default.conf için çizgileri aşağıdakileri ekleyin farklı PHP sürümleri

sudo ln -s /home/user/www/7.0.2/ /var/www/html/7.0.2 
sudo ln -s /home/user/www/7.0.4/ /var/www/html/7.0.4 
sudo ln -s /home/user/www/7.0.6/ /var/www/html/7.0.6 

tarafından ele alınmalıdır dizinlere sembolik bağlantılar oluşturmak *:80

(bir daha hızlı cgi işleyicisi burada Python gerektirir web sitesi için kurulum yapabilirsiniz ihtiyacı için), PHP portu 9999 üzerine 5.6.5 ishal, liman 9998 vb 7.0.2 çalışır ... varsayalım

DirectoryIndex index.html index.php 
ProxyPassMatch ^/5.6.5/(.*\.php(/.*)?)$ fcgi://127.0.0.1:9999/var/www/html/ 
ProxyPassMatch ^/7.0.2/(.*\.php(/.*)?)$ fcgi://127.0.0.1:9998/var/www/html/ 
ProxyPassMatch ^/7.0.4/(.*\.php(/.*)?)$ fcgi://127.0.0.1:9997/var/www/html/ 
ProxyPassMatch ^/7.0.6/(.*\.php(/.*)?)$ fcgi://127.0.0.1:9996/var/www/html/ 

sunucu size

http://example.com/5.6.5/ 
http://example.com/7.0.2/ 
http://example.com/7.0.4/ 
http://example.com/7.0.6/