2011-06-08 14 views
21

OSX'te Apache2 ile mod_mono'yu yapılandırmaya çalışıyorum. Aynı sanal ana bilgisayarda birden çok MVC3 projesi çalıştırmak istiyorum, ancak bazı sebeplerden dolayı listelenen sadece bir tanesi çalışıyor. Bunun hakkında herhangi bir yardım, bu konuda fazla bir dokümantasyon olmadığı için çok takdir edilecektir. Pek çok farklı yapılandırma seçeneği denedim, bunların hiçbiri işe yaramıyor.Apache2'yi çalıştıran tek bir sanal ana bilgisayarda birden çok MVC3 sitesini nasıl barındırabilirim?

Listen *:9005 
<VirtualHost *:9005> 
    DocumentRoot "/Library/WebServer/vhosts/api" 
    ServerName api 
    MonoAutoApplication disabled 

    Alias /gamecenter "/Library/WebServer/vhosts/api/gamecenter" 
    AddMonoApplications gamecenter "/gamecenter:/Library/WebServer/vhosts/api/gamecenter" 
    MonoServerPath gamecenter "/usr/bin/mod-mono-server4" 
    MonoDebug gamecenter true 
    MonoSetEnv gamecenter MONO_IOMAP=all 
    MonoUnixSocket gamecenter-stage /tmp/mod_mono_server_gc 
    <Location /gamecenter> 
    Allow from all 
    Order allow,deny 
    MonoSetServerAlias gamecenter 
    SetHandler mono 
    SetOutputFilter DEFLATE 
    SetEnvIfNoCase Request_URI "\.(?:gif|jpe?g|png)$" no-gzip dont-vary 
    </Location> 

    Alias /gamecenter-stage "/Library/WebServer/vhosts/api/gamecenter-stage" 
    MonoServerPath gamecenter-stage "/usr/bin/mod-mono-server4" 
    MonoDebug gamecenter-stage true 
    MonoSetEnv gamecenter-stage MONO_IOMAP=all 
    AddMonoApplications gamecenter-stage "/gamecenter-stage:/Library/WebServer/vhosts/api/gamecenter-stage" 
    MonoUnixSocket gamecenter-stage /tmp/mod_mono_server_gcs 
    <Location /gamecenter-stage> 
    Allow from all 
    Order allow,deny 
    MonoSetServerAlias gamecenter-stage 
    SetHandler mono 
    SetOutputFilter DEFLATE 
    SetEnvIfNoCase Request_URI "\.(?:gif|jpe?g|png)$" no-gzip dont-vary 
    </Location> 

    <IfModule mod_deflate.c> 
    AddOutputFilterByType DEFLATE text/html text/plain text/xml text/javascript 
    </IfModule> 
</VirtualHost> 
+0

Merhaba, bu sorunu zaten çözdünüz mü? Aynı problemim var. – branoholy

+0

henüz bir şey yok. bulabileceğim her yapılandırmayı denedim ve bunların hiçbiri bunu çözmüyor gibi görünüyor. yine de bak. – chris

+0

oylama yapacak ve sorumu düzenleyecekseniz, sorunun ilk olarak ne olduğunu bildiğinizden emin olun. – chris

cevap

3

senin sorunun Diğer ad ve fiziksel yolu bir ve aynıdır yani, böylece apache kadar hizmet etmek hangisinin bilmiyor.

NOT: Ben MVC önce :-) * nix kutusunun altında

kadar apps ayarlayın ettik ben genel apache2 yapılandırmasına göre cevap veriyorum değil, mod_mono, belki mod_mono şey Bunu önlemek için geliyor Neyse

... Sende olan yol yapılandırmaları bakarsak

... yerde takma adlarına olmadan

/Library/WebServer/vhosts/api 
/Library/WebServer/vhosts/api/gamecenter 
/Library/WebServer/vhosts/api/gamecenter-stage 

, bunların zaten senin harita çalışırken yollara çözmek.

/Library/WebServer/vhosts/api =/
/Library/WebServer/vhosts/api/gamecenter = /gamecenter 
/Library/WebServer/vhosts/api/gamecenter-stage = /gamecenter-stage 

Sizin ardından Apache (son 2'de olduğu gibi) hiçbir dosya subfix veya mevcut eğik çizgi varsa içeriği göndermeye çalışır

/ =/
/gamecenter = /gamecenter 
/gamecenter-stage = /gamecenter-stage 

otomatik ile klasörü subfix edeceğini Apache anlatan a/sonra (sanırım 306) bir yönlendirme esasen EG yönlendirme yapmasına tarayıcıyı söylüyorum sorunu: Alias ​​... konumda olduğunu söylemek için yerinde takma adı

/gamecenter to /gamecenter/ 

bunu daha sonra h x denemek ve yapmak gibi bir desicion

/gamecenter/ 

veya

/gamecenter/gamecenter/../ (Because in terms of folder structure the alias name is 1 folder level down in the web than it is physically) 

hizmet etmek ve bocalama biter ve böylece herhangi bir sanal konak kurmak yapar için bu yolu çözemedi, ve işte o zaman yapar web sitesi kökünü döndür. Bununla birlikte, genel olarak bu bir MONO-MONO Apache davranışıdır, mod_mono'nun bu davranışı değiştirebilecek bir şekilde işleme boru hattını değiştirmesi mümkündür.

Tavsiye edeceğim şey, tek bir IP üzerinde bile çok kolay bir şekilde yapabileceğiniz 3 sanal ana bilgisayara ayırmaktır. Yapmak istediğiniz edeceğiz

ilk şey bir

Listen 9005 

bildirimde bulunmamış, efendin Apache yapılandırma dosyasında somwhere olduğunu.

<VirtualHost *> 
    DocumentRoot "/some/folder/where/the/default/is/" 
    #Followed by other server directives. NOTE: there is NO servername line 
</VirtualHost> 
: 80

Sonraki tüm sanal konak, bu herhangi bir sunucu adı yakalayacak varsayılan bir catch başka yerde eşlemediyseniz emin olun: Bu TÜM sanal örneklerini başka yapılandırılmış liman EG o bağlantı noktasında hem de dinlemek yapacak kurduğunuz sahip olduktan

, sonra "aPI" alt alan adı Bu noktada

<VirtualHost *> 
    ServerName api 
    DocumentRoot "/Library/WebServer/vhosts/api/" 
    #Other required directives here 
</VirtualHost> 

üzerine taşımak, ben alan adınızı görüşmek üzere duraklatmak için gidiyorum. Bu bir iç test sistemiyse (ki şüpheliyim ki), bir DNS sunucusunu kendi üzerine kurarsanız, daha kolay bir şekilde sanal etki alanlarıyla hayat bulursunuz, daha sonra bunu özel bir iç ağ adresi kullanarak ana etki alanı olarak ayarlayın.

EG:

bir kök bölgesini oluşturun ve

sonra buna makine adlarını eklemek "mydevnetwork.local" diyoruz:

EG: pc devpc1 aranırsa oluşturmak IP "devpc1.mydevnetwork.local" için çözmek ve pc EG'nin statik bir IP adresi vermek:

192.168.50.1 Sonra o kadar

api.myde için bir takma ad ayarlamak vnetwork.local = devpc1.mydevnetwork.local

Iv'e burada tam bir DNS ayarlaması yapmak için yer yok, ama umarım bu fikri alırsınız.

Eğer DNS sahip olduktan sonra (veya minimum konak dosya girişlerinde) kurmak, daha sonra Apache altında sanal barındıran yönetmek gerçekten kolay hale gelir:

<VirtualHost *> 
    ServerName api.mydevnetwork.local 
    DocumentRoot "/Library/WebServer/vhosts/api/" 
    #Other required directives here 
</VirtualHost> 

ve kolay başka bir makineye taşınmaya gerektiğini çok ihtiyaç . Yukarıda olduğu gibi yollar aynı olacak şekilde ayarlayın ve bu çalışacaktır rağmen iv'e Sen

<VirtualHost *> 
    ServerName gamecenter.mydevnetwork.local 
    DocumentRoot "/Library/WebServer/vhosts/api/gamecenter/" 
    #Other required directives here 
</VirtualHost> 

<VirtualHost *> 
    ServerName gamecenter-stage.mydevnetwork.local 
    DocumentRoot "/Library/WebServer/vhosts/api/gamecenter-stage/" 
    #Other required directives here 
</VirtualHost> 

Not kadar yukarı aynı şekilde sanal ana geri kalanını ayarlayabilirsiniz

, ben 'şiddetle her biri kendi benzersiz klasörü vermek öneriyoruz d, ben genelde böyle bir şey yapmak: yukarıdaki komple bir çözüm değildir Umarım eğer

wwwroot 
    api.mydevnetwork.local 
     htdocs <-- Web files go here 
     cgi-bin <-- cgi scripts go here and it's mapped to /cgi-bin/ 
     logs  <-- logs here 
     access <-- htpasswd files here 

, en azından ondan soruşturmanın bazı başka fikirler alabilirsiniz.

+0

Oradan bir çözüm olduğunu umduğumdan vazgeçtim. Kesinlikle denemem ve rapor vereceğim. teşekkür ederim. – chris

+0

@chris, bu sizin için işe yaramadı mı? Sorun şu ki, birden çok Sanal Sunucu kurduğumda, çoklu mod-mono-server4 örnekleri ortaya çıkıyor. Aynı mod-mono-server4 örneğinden birden fazla MVC uygulaması çalıştırabilmeyi isterdim, ancak nasıl olduğunu anlayamadım. Bu senin problemine benziyor mu? – ken

İlgili konular