Mono + apache2 = Сервис временно недоступен (503) - PullRequest
7 голосов
/ 01 ноября 2011

Уже неделю я пытаюсь запустить мою монофоническую конфигурацию с помощью Apache. Должно быть, я попробовал практически что-нибудь, позорно я не замечаю никаких изменений, проблема остается той же.

Когда я пытаюсь подключиться к серверу, я получаю сообщение об ошибке 503: Сервис временно недоступен Когда я смотрю на журнал ошибок, он кажется пустым, и я совершенно уверен, что это не проблема с правами доступа.

Об apache:

Package: apache2
Priority: optional
Section: httpd
Installed-Size: 36
Maintainer: Debian Apache Maintainers <debian-apache@lists.debian.org>
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)

О моно:

Package: mono-apache-server2
Priority: optional
Section: httpd
Installed-Size: 260
Maintainer: Debian Mono Group <pkg-mono-group@lists.alioth.debian.org>
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

Я использую конфигурацию ниже.

<VirtualHost *:80>
  ServerName myapp.example.com
  ServerAdmin webmaster@example.com
  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>

Может ли кто-нибудь помочь мне.

Заранее спасибо, Тим

Ответы [ 2 ]

5 голосов
/ 08 декабря 2011

Пробовали ли вы функцию mod_mono AutoConfiguration ?Это явно лучший подход со стеком Apache / Mono / ASP.NET.Благодаря этому вам больше не нужно определять все настройки Mono на вашем виртуальном хосте.

Вот мой файл mod_mono.conf (в Mac OS X 10.7.2 и Linux Ubuntu 11.04 он должен быть совместим сваш дистрибутив Debian):

<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>

Наиболее важной директивой является "MonoAutoApplication".И вот пример виртуального хоста:

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

Как видите, виртуальный хост сводится к своему простейшему выражению.Параметры, определенные в файле mod_mono.conf, используются всеми виртуальными хостами.
Единственным недостатком этого решения является то, что оно не позволяет перезапустить только один экземпляр сайта ASP.NET (как в Microsoft IIS).Если вы используете панель управления Mono (см. Раздел «Расположение») для перезапуска процесса, все приложения ASP.NET будут перезапущены.

1 голос
/ 20 декабря 2011

Если вы правильно установили mod mono и он включен в apache2, следующая конфигурация должна работать с вашим виртуальным хостом.

<VirtualHost *:80>
 ServerName myapp.example.com
  ServerAdmin webmaster@example.com
  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>
...