#asp.net #mono #apache2 #debian #http-status-code-503
#asp.net #mono #apache2 #debian #http-status-code-503
Вопрос:
Уже неделю я пытаюсь запустить свою конфигурацию mono с 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)
О mono:
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>
Кто-нибудь может мне помочь.
Заранее спасибо, Тим
Комментарии:
1. Вы приняли ответ, но не оставили никаких комментариев, так что, я думаю, он выполнил свою работу, не так ли?
Ответ №1:
Вы пробовали функцию автоконфигурации mod_mono? Это, безусловно, лучший подход со стеком 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 приложения перезапускаются.
Ответ №2:
Если вы правильно установили 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>
Комментарии:
1. Большое спасибо! Другой вопрос в том, как заставить приложение работать, когда я получаю доступ к DNSADRESS / mvctest / public_html, например?