2011-11-01 33 views
7

Trong một tuần, tôi đã cố gắng để có được cấu hình mono của tôi chạy với apache. Tôi đã cố gắng hầu như bất cứ điều gì, đáng xấu hổ tôi nhận thấy không có thay đổi, vấn đề vẫn giữ nguyên.Mono + apache2 = Dịch vụ tạm thời không có sẵn (503)

Khi cố gắng kết nối với máy chủ, tôi gặp lỗi 503: Dịch vụ tạm thời không khả dụng Khi tôi xem nhật ký lỗi xuất hiện trống và tôi chắc chắn đó không phải là vấn đề về quyền.

Về apache:

Package: apache2 
Priority: optional 
Section: httpd 
Installed-Size: 36 
Maintainer: Debian Apache Maintainers <[email protected]> 
Architecture: amd64 
Version: 2.2.16-6+squeeze4 
Depends: apache2-mpm-worker (= 2.2.16-6+squeeze4) | apache2-mpm-prefork (= 2.2.16-6+squeeze4) | apache2-mpm-event (= 2.2.16-6+squeeze4) | apache2-mpm-itk (= 2.2.16-6+squeeze4), apache2.2-common (= 2.2.16-6+squeeze4) 

Về mono:

Package: mono-apache-server2 
Priority: optional 
Section: httpd 
Installed-Size: 260 
Maintainer: Debian Mono Group <[email protected]> 
Architecture: all 
Source: xsp 
Version: 2.6.5-3 
Replaces: mono-server 
Depends: debconf (>= 0.5) | debconf-2.0, mono-runtime (>= 1.1.8.1), libc6 (>= 2.11) | libc6.1 (>= 2.11) | libc0.1 (>= 2.11), libmono-corlib2.0-cil (>= 2.6.3), libmono-posix2.0-cil (>= 2.4), libmono-security2.0-cil (>= 2.6.7), libmono-system-web2.0-cil (>= 1.9.1), libmono-system2.0-cil (>= 2.6.3), mono-xsp2-base (= 2.6.5-3), perl-modules 

Tôi đang sử dụng cấu hình bên dưới.

<VirtualHost *:80> 
    ServerName myapp.example.com 
    ServerAdmin [email protected] 
    DirectoryIndex index.html index.aspx 
    DocumentRoot /var/www/vhosts/example.com/subdomains/myapp/httpdocs/ 

    # MonoServerPath can be changed to specify which version of ASP.NET is hosted 
    # mod-mono-server1 = ASP.NET 1.1/mod-mono-server2 = ASP.NET 2.0 
    # For SUSE Linux Enterprise Mono Extension, uncomment the line below: 
    # MonoServerPath myapp.example.com "/opt/novell/mono/bin/mod-mono-server2" 
    # For Mono on openSUSE, uncomment the line below instead: 
    MonoServerPath myapp.example.com "/usr/bin/mod-mono-server2" 
    #mod-mono-server2 

    # To obtain line numbers in stack traces you need to do two things: 
    # 1) Enable Debug code generation in your page by using the Debug="true" 
    # page directive, or by setting <compilation debug="true" /> in the 
    # application's Web.config 
    # 2) Uncomment the MonoDebug true directive below to enable mod_mono debugging 
    MonoDebug myapp.example.com true 
    # The MONO_IOMAP environment variable can be configured to provide platform abstraction 
    # for file access in Linux. Valid values for MONO_IOMAP are: 
    # case 
    # drive 
    # all 
    # Uncomment the line below to alter file access behavior for the configured application 
    MonoSetEnv myapp.example.com MONO_IOMAP=all 
    # 
    # Additional environtment variables can be set for this server instance using 
    # the MonoSetEnv directive. MonoSetEnv takes a string of 'name=value' pairs 
    # separated by semicolons. For instance, to enable platform abstraction *and* 
    # use Mono's old regular expression interpreter (which is slower, but has a 
    # shorter setup time), uncomment the line below instead: 
    # MonoSetEnv myapp.example.com MONO_IOMAP=all;MONO_OLD_RX=1 
    MonoApplications myapp.example.com "/:/var/www/vhosts/example.com/subdomains/myapp/httpdocs/" 

    <Location "/"> 
    Order allow,deny 
    Allow from all 
    MonoSetServerAlias myapp.example.com 
    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> 

    ErrorLog /var/www/vhosts/example.com/subdomains/myapp/logs/error.log 
    CustomLog /var/www/vhosts/example.com/subdomains/myapp/logs/access.log combined 

</VirtualHost> 

Bất kỳ ai cũng có thể giúp tôi.

Cảm ơn trước, Tim

+0

Bạn chấp nhận câu trả lời nhưng không để lại bất kỳ nhận xét nào vì vậy tôi đoán nó đã thực hiện công việc phải không? – mbx

Trả lời

5

Bạn đã thử các mod_mono AutoConfiguration feature? Đây rõ ràng là cách tiếp cận tốt nhất với ngăn xếp Apache/Mono/ASP.NET. Với nó, bạn không cần nữa để xác định tất cả các cài đặt Mono trong máy chủ ảo của bạn.

Đây là tập tin mod_mono.conf của tôi (trên Mac OS X 10.7.2 và Linux Ubuntu 11.04, điều này phải phù hợp với distro Debian của bạn):

<IfModule mono_module> 
    AddType application/x-asp-net .config .cs .csproj .dll .resources .resx .sln .vb .vbproj 
    AddType application/x-asp-net .asax .ascx .ashx .asmx .aspx .axd .browser .licx .master .rem .sitemap .skin .soap .webinfo 

    MonoAutoApplication enabled 
    MonoDebug false 
    MonoServerPath "/usr/bin/mod-mono-server4" 
    MonoSetEnv LANG=fr_FR.UTF-8 
    MonoUnixSocket "/tmp/.mod_mono" 

    <IfModule dir_module> 
     DirectoryIndex Default.aspx 
    </IfModule> 

    <DirectoryMatch "/(bin|App_Code|App_Data|App_GlobalResources|App_LocalResources)/"> 
     Order deny,allow 
     Deny from all 
    </DirectoryMatch> 

    <Location "/Mono"> 
     Order deny,allow 
     Deny from all 
     Allow from 127.0.0.1 ::1 
     SetHandler mono-ctrl 
    </Location> 
</IfModule> 

Chỉ thị quan trọng nhất là "MonoAutoApplication" một. Và đây là máy chủ ảo mẫu:

<VirtualHost *:80> 
    ServerName www.monorules.fr 
    DocumentRoot "/Library/WebServer/Documents/MonoRules" 
</VirtualHost> 

Như bạn có thể thấy, máy chủ ảo được giảm xuống biểu thức đơn giản nhất. Các thiết lập được định nghĩa trong tệp mod_mono.conf được chia sẻ bởi tất cả các máy chủ ảo.
Hạn chế duy nhất của giải pháp này là nó không cho phép bạn khởi động lại chỉ một ví dụ của một trang ASP.NET (như trong Microsoft IIS). Nếu bạn sử dụng bảng điều khiển Mono (xem phần "Vị trí") để khởi động lại quá trình, tất cả các ứng dụng ASP.NET được khởi động lại.

+0

Cảm ơn bạn. Điều này làm việc cho tôi. – Reinaldo

1

Nếu bạn đã cài đặt đúng mod mono và được bật trong apache2 thì cấu hình sau sẽ hoạt động với máy chủ ảo của bạn.

<VirtualHost *:80> 
ServerName myapp.example.com 
    ServerAdmin [email protected] 
    DirectoryIndex index.html index.aspx 
    DocumentRoot /var/www/vhosts/example.com/subdomains/myapp/httpdocs/ 

AddMonoApplications myapp.example.com "/:/var/www/vhosts/example.com/subdomains/myapp/httpdocs/" 
MonoServerPath myapp.example.com "/usr/bin/mod-mono-server2" 

<Directory /var/www/vhosts/example.com/subdomains/myapp/httpdocs/> 
    MonoSetServerAlias myapp.example.com 
    SetHandler mono 
    AddHandler mod_mono .aspx .ascx .asax .ashx .config .cs .asmx 
    <FilesMatch "\.(gif|jp?g|png|css|ico|xsl|wmv|zip)$"> 
     SetHandler None 
    </FilesMatch> 
    Options Indexes FollowSymLinks MultiViews 
    AllowOverride All 
    Order allow, deny 
    Allow from all 
    DirectoryIndex index.aspx 
</Directory> 
</VirtualHost> 
+0

Cảm ơn rất nhiều! Một câu hỏi khác là, làm thế nào để ứng dụng hoạt động khi tôi truy cập DNSADRESS/mvctest/public_html chẳng hạn? –

Các vấn đề liên quan