Разработка электроники,

Систем автоматики,

Программного обеспечения

8(981)186-50-82

ООО "Антех ПСБ",
Санкт-Петербург

anteh@bk.ru

antehru@gmail.com

©

Установка mod_mono-3.12, apache24 FreeBSD 9.x 10x

27.12.2015 https://anteh.ru

Установка mod_mono экспресс установка

Установка mod_mono коротко по сути. Установить получилось на "чистую" FreeBSD 10.2, на "наследника" 8.1 -> 9.3 не вышло. На "чистую" 9.3 должно встать. Работать asp.net web сайты будут на Framework 2.0-4.x, использовать только mod-mono-server4.

Установка, поиск решения возникших проблем:

Нужно запустить ASP.NET web сайт под FreeBSD, apache24-2.4.17. Для обработки запросов .aspx страниц будет использоваться mod-mono-server2 (.NET 1.1-3.5) или mod-mono-server4 (.NET 4.0-4.x). Apache24 с mod-mono-server связан через mod_mono-3.12. Apache24 установлен, ставим mod_mono, он подтянет mono и всё, чего не хватало. Из коробки и c правильными настройками Apache, ничего не заработало.

При уточнении версий mod-mono-server(NET 1.0-1.1), mod-mono-server2(NET 2.0-3.5), mod-mono-server4(NET 4.0-4.x) наблюдаем следующую картину:

# mod-mono-server --version
WARNING: The runtime version supported by this application is unavailable.
Using default runtime: v4.0.30319
Exception caught during reading the configuration file:
System.InvalidProgramException: Invalid IL code in System.Configuration.ConfigurationManager:get_AppSettings (): IL_0000: ret


  at Mono.WebServer.Apache.Server.get_AppSettings () <0x800a070e0 + 0x00010> in :0
  at Mono.WebServer.Apache.Server+ApplicationSettings..ctor () <0x800a06ab0 + 0x000ea> in :0
mod-mono-server2.exe 3.0.0.0
(c) (c) 2002-2011 Novell, Inc.
Mod_mono backend for XSP
#

# mod-mono-server2 --version
WARNING: The runtime version supported by this application is unavailable.
Using default runtime: v4.0.30319
Exception caught during reading the configuration file:
System.InvalidProgramException: Invalid IL code in System.Configuration.ConfigurationManager:get_AppSettings (): IL_0000: ret


  at Mono.WebServer.Apache.Server.get_AppSettings () <0x800a070e0 + 0x00010> in :0
  at Mono.WebServer.Apache.Server+ApplicationSettings..ctor () <0x800a06ab0 + 0x000ea> in :0
mod-mono-server2.exe 3.0.0.0
(c) (c) 2002-2011 Novell, Inc.
Mod_mono backend for XSP
#

# mod-mono-server4 --version
mod-mono-server4.exe 3.0.0.0
(c) (c) 2002-2011 Novell, Inc.
Mod_mono backend for XSP
#
</ё>

То же самое и при проверки версий xsp, xsp2, xsp4. XSPx реализует базовые функции и рекомендуется только для тестирования и отладки. Другими словами, работа всего, что на NET 1.0-1.1и NET 2.0-3.5 под вопросом.

На Framework 2.0 написана TestFramework20.exe выводит сообщение "Application on framework 2.0. Press enter":

# mono TestFramework20.exe
WARNING: The runtime version supported by this application is unavailable.
Using default runtime: v4.0.30319
Application on framework 2.0. Press enter

#  

Как видим предупреждение есть, но программа, написанная на Framework 2.0 работает. Смотрим папку /tmp, при параметре в конфигурации апача:

MonoServerPath adc.anteh.ru "/usr/local/bin/mod-mono-server2"
mod mono apache24 config

Сокета нет

MonoServerPath adc.anteh.ru "/usr/local/bin/mod-mono-server4"
mod mono apache24 install

#netstat
...
Address Type Recv-Q Send-Q Inode Conn Refs Nextref Addr
fffffe0009a1a870 stream 0 0 fffffe015e49e7e0 0 0 0 /tmp/mod_mono_server_adc.anteh.ru
...

Видим сокет asp.net сайта.

Выводы делать не спешим, но пока предположим, что mod_mono-3.12 с apache24 по умолчанию будет работать только с mod-mono-server4.

mod-mono-server4 по умолчанию принимает запросы через unix socket, единственное, что можно поменять в конфигурационном файле Apache, это имя сокета, через директиву: "MonoUnixSocket adc.anteh.ru /tmp/mod_mono_adc.anteh.ru.sock" при использовании алиаса adc.anteh.ru

В текущем контексте в природе есть mod-mono-server2.exe и mod-mono-server4.exe. mod-mono-server -это mod-mono-server2.exe.

Разместил в директории сайта, простейший сайт из одной страницы на Framework 4.0, по прежнему не работает asp.net web серверная часть. Браузер отображает страницу с ошибкой 503:

Service Unavailable
The server is temporarily unable to service your request due to maintenance downtime or capacity problems. Please try again later.

Смотрим error логи Apache24 с того момента, как апач был перезапущен:

Failed loading /usr/local/lib/php/20131226/opcache.so:  /usr/local/lib/php/20131226/opcache.so: Undefined symbol "sapi_globals"
Failed loading /usr/local/lib/php/20131226/opcache.so:  /usr/local/lib/php/20131226/opcache.so: Undefined symbol "sapi_globals"
Failed loading /usr/local/lib/php/20131226/opcache.so:  /usr/local/lib/php/20131226/opcache.so: Undefined symbol "sapi_globals"
Failed loading /usr/local/lib/php/20131226/opcache.so:  /usr/local/lib/php/20131226/opcache.so: Undefined symbol "sapi_globals"
[Thu Dec 17 02:51:32.861567 2015] [mpm_worker:notice] [pid 1556:tid 34397516800] AH00295: caught SIGTERM, shutting down
mod-mono-server received a shutdown message
Failed loading /usr/local/lib/php/20131226/opcache.so:  /usr/local/lib/php/20131226/opcache.so: Undefined symbol "sapi_globals"
[Thu Dec 17 02:51:35.001131 2015] [:notice] [pid 1625:tid 34397516800] ModSecurity for Apache/2.9.0 (http://www.modsecurity.org/) configured.
[Thu Dec 17 02:51:35.001150 2015] [:notice] [pid 1625:tid 34397516800] ModSecurity: APR compiled version="1.5.2"; loaded version="1.5.2"
[Thu Dec 17 02:51:35.001155 2015] [:notice] [pid 1625:tid 34397516800] ModSecurity: PCRE compiled version="8.37 "; loaded version="8.37 2015-04-28"
[Thu Dec 17 02:51:35.001160 2015] [:notice] [pid 1625:tid 34397516800] ModSecurity: YAJL compiled version="2.1.0"
[Thu Dec 17 02:51:35.001164 2015] [:notice] [pid 1625:tid 34397516800] ModSecurity: LIBXML compiled version="2.9.2"
[Thu Dec 17 02:51:35.001167 2015] [:notice] [pid 1625:tid 34397516800] ModSecurity: Status engine is currently disabled, enable it by set SecStatusEngine to On.
[Thu Dec 17 02:51:35.059649 2015] [:crit] [pid 1625:tid 34397516800] (45)Operation not supported: Failed to attach to the dashboard '/tmp/mod_mono_dashboard_XXGLOBAL_1'
[Thu Dec 17 02:51:36.005791 2015] [:crit] [pid 1626:tid 34397516800] (17)File exists: Failed to create shared memory segment for backend 'XXGLOBAL' at '/tmp/mod_mono_dashboard_XXGLOBAL_1'.
Exception caught during reading the configuration file:
System.InvalidProgramException: Invalid IL code in System.Configuration.ConfigurationManager:get_AppSettings (): IL_0000: ret       


  at Mono.WebServer.Apache.Server.get_AppSettings () <0x800a070e0 + 0x00010> in :0 
  at Mono.WebServer.Apache.Server+ApplicationSettings..ctor () <0x800a06ab0 + 0x000ea> in :0 
The value given for the address is not valid: 0.0.0.0
PHP Warning:  PHP Startup: Unable to load dynamic library '/usr/local/lib/php/20131226-zts/imagick.so' - Cannot open "/usr/local/lib/php/20131226-zts/imagick.so" in Unknown on line 0
PHP Warning:  PHP Startup: Unable to load dynamic library '/usr/local/lib/php/20131226-zts/ctype.so' - Cannot open "/usr/local/lib/php/20131226-zts/ctype.so" in Unknown on line 0
PHP Warning:  PHP Startup: Unable to load dynamic library '/usr/local/lib/php/20131226-zts/dom.so' - Cannot open "/usr/local/lib/php/20131226-zts/dom.so" in Unknown on line 0
PHP Warning:  PHP Startup: Unable to load dynamic library '/usr/local/lib/php/20131226-zts/filter.so' - Cannot open "/usr/local/lib/php/20131226-zts/filter.so" in Unknown on line 0
PHP Warning:  PHP Startup: Unable to load dynamic library '/usr/local/lib/php/20131226-zts/hash.so' - Cannot open "/usr/local/lib/php/20131226-zts/hash.so" in Unknown on line 0
PHP Warning:  PHP Startup: Unable to load dynamic library '/usr/local/lib/php/20131226-zts/iconv.so' - Cannot open "/usr/local/lib/php/20131226-zts/iconv.so" in Unknown on line 0
PHP Warning:  PHP Startup: Unable to load dynamic library '/usr/local/lib/php/20131226-zts/json.so' - Cannot open "/usr/local/lib/php/20131226-zts/json.so" in Unknown on line 0
PHP Warning:  PHP Startup: Unable to load dynamic library '/usr/local/lib/php/20131226-zts/mysql.so' - Cannot open "/usr/local/lib/php/20131226-zts/mysql.so" in Unknown on line 0
PHP Warning:  PHP Startup: Unable to load dynamic library '/usr/local/lib/php/20131226-zts/mysqli.so' - Cannot open "/usr/local/lib/php/20131226-zts/mysqli.so" in Unknown on line 0
PHP Warning:  PHP Startup: Unable to load dynamic library '/usr/local/lib/php/20131226-zts/pdo.so' - Cannot open "/usr/local/lib/php/20131226-zts/pdo.so" in Unknown on line 0
PHP Warning:  PHP Startup: Unable to load dynamic library '/usr/local/lib/php/20131226-zts/pdo_mysql.so' - Cannot open "/usr/local/lib/php/20131226-zts/pdo_mysql.so" in Unknown on line 0
PHP Warning:  PHP Startup: Unable to load dynamic library '/usr/local/lib/php/20131226-zts/pdo_sqlite.so' - Cannot open "/usr/local/lib/php/20131226-zts/pdo_sqlite.so" in Unknown on line 0
PHP Warning:  PHP Startup: Unable to load dynamic library '/usr/local/lib/php/20131226-zts/phar.so' - Cannot open "/usr/local/lib/php/20131226-zts/phar.so" in Unknown on line 0
PHP Warning:  PHP Startup: Unable to load dynamic library '/usr/local/lib/php/20131226-zts/posix.so' - Cannot open "/usr/local/lib/php/20131226-zts/posix.so" in Unknown on line 0
PHP Warning:  PHP Startup: Unable to load dynamic library '/usr/local/lib/php/20131226-zts/session.so' - Cannot open "/usr/local/lib/php/20131226-zts/session.so" in Unknown on line 0
PHP Warning:  PHP Startup: Unable to load dynamic library '/usr/local/lib/php/20131226-zts/simplexml.so' - Cannot open "/usr/local/lib/php/20131226-zts/simplexml.so" in Unknown on line 0
PHP Warning:  PHP Startup: Unable to load dynamic library '/usr/local/lib/php/20131226-zts/sockets.so' - Cannot open "/usr/local/lib/php/20131226-zts/sockets.so" in Unknown on line 0
PHP Warning:  PHP Startup: Unable to load dynamic library '/usr/local/lib/php/20131226-zts/sqlite3.so' - Cannot open "/usr/local/lib/php/20131226-zts/sqlite3.so" in Unknown on line 0
PHP Warning:  PHP Startup: Unable to load dynamic library '/usr/local/lib/php/20131226-zts/tokenizer.so' - Cannot open "/usr/local/lib/php/20131226-zts/tokenizer.so" in Unknown on line 0
PHP Warning:  PHP Startup: Unable to load dynamic library '/usr/local/lib/php/20131226-zts/xml.so' - Cannot open "/usr/local/lib/php/20131226-zts/xml.so" in Unknown on line 0
PHP Warning:  PHP Startup: Unable to load dynamic library '/usr/local/lib/php/20131226-zts/xmlreader.so' - Cannot open "/usr/local/lib/php/20131226-zts/xmlreader.so" in Unknown on line 0
PHP Warning:  PHP Startup: Unable to load dynamic library '/usr/local/lib/php/20131226-zts/xmlwriter.so' - Cannot open "/usr/local/lib/php/20131226-zts/xmlwriter.so" in Unknown on line 0
PHP Warning:  PHP Startup: Unable to load dynamic library '/usr/local/lib/php/20131226-zts/zip.so' - Cannot open "/usr/local/lib/php/20131226-zts/zip.so" in Unknown on line 0
PHP Warning:  PHP Startup: Unable to load dynamic library '/usr/local/lib/php/20131226-zts/zlib.so' - Cannot open "/usr/local/lib/php/20131226-zts/zlib.so" in Unknown on line 0
[Thu Dec 17 02:51:36.125080 2015] [mpm_worker:notice] [pid 1626:tid 34397516800] AH00292: Apache/2.4.17 (FreeBSD) mod_mono/3.12 PHP/5.6.16 configured -- resuming normal operations
[Thu Dec 17 02:51:36.125137 2015] [core:notice] [pid 1626:tid 34397516800] AH00094: Command line: '/usr/local/sbin/httpd -D NOHTTPACCEPT'
Exception caught during reading the configuration file:
System.InvalidProgramException: Invalid IL code in System.Configuration.ConfigurationManager:get_AppSettings (): IL_0000: ret       


  at Mono.WebServer.Apache.Server.get_AppSettings () <0x800a070e0 + 0x00010> in :0 
  at Mono.WebServer.Apache.Server+ApplicationSettings..ctor () <0x800a06ab0 + 0x000ea> in :0 
The value given for the address is not valid: 0.0.0.0
mod-mono-server4
mod-mono-server4
Listening on: /tmp/mod_mono_server_adc.anteh.ru
Root directory: /path/adc.anteh.ru/adc.anteh.ru

Видим, что не всё в порядке, хоть сокет и был создан.

Пока отключим поддержку неиспользуемого php в Apache24, в httpd.conf комментируем "LoadModule php5_module libexec/apache24/libphp5.so" и обратим внимание на сообщение "Exception caught during reading the configuration file:
System.InvalidProgramException: Invalid IL code in System.Configuration.ConfigurationManager:get_AppSettings (): IL_0000: ret" это то, что приводит к 503 ошибке на странице и говорит о том, что некая версия Фреймворка не поддерживается, в текущем случае поддерживается Фреймворк 4.0 и выше.

В ядре должны быть включены опции:

options SYSVSHM # SYSV-style shared memory
options SYSVMSG # SYSV-style message queues
options SYSVSEM # SYSV-style semaphores

В fstab должна быть строка:

proc /proc procfs rw 0 0

В /usr/local/bin/mod-mono-server, /usr/local/bin/mod-mono-server2, /usr/local/bin/mod-mono-server4 добавляем "echo "mod-mono-server" >> /TestFramework/log", "echo "mod-mono-server2" >> /TestFramework/log", "echo "mod-mono-server4" >> /TestFramework/log" соответственно и выставляем права на папку "# chown -R www:www /TestFramework" -для того, чтобы посмотреть кто и с какими параметрами запускется. Параметры:

# mono /usr/local/lib/mono/4.5/mod-mono-server4.exe help
Unknown argument: help
mod-mono-server.exe is a ASP.NET server used from mod_mono.
Usage is:

    mod-mono-server.exe [...]

    The arguments --filename and --port are mutually exlusive.
    --filename file: a unix socket filename to listen on.
                    Default value: /tmp/mod_mono_server
                    AppSettings key name: MonoUnixSocket

    --port N: n is the tcp port to listen on.
                    Default value: none
                    AppSettings key name: MonoServerPort

    --address addr: addr is the ip address to listen on.
                    Default value: 127.0.0.1
                    AppSettings key name: MonoServerAddress

    --backlog N:    the listen backlog. Default value: 500
    --root rootdir: the server changes to this directory before
                    anything else.
                    Default value: current directory.
                    AppSettings key name: MonoServerRootDir

    --appconfigfile FILENAME: adds application definitions from the XML
                    configuration file. See sample configuration file that
                    comes with the server.
                    AppSettings key name: MonoApplicationsConfigFile

    --appconfigdir DIR: adds application definitions from all XML files
                    found in the specified directory DIR. Files must have
                    '.webapp' extension
                    AppSettings key name: MonoApplicationsConfigDir

    --applications APPS:
                    a comma separated list of virtual directory and
                    real directory for all the applications we want to manage
                    with this server. The virtual and real dirs. are separated
                    by a colon. Optionally you may specify virtual host name
                    and a port.

                           [[hostname:]port:]VPath:realpath,...

                    Samples: /:.
                           the virtual / is mapped to the current directory.

                            /blog:../myblog
                           the virtual /blog is mapped to ../myblog

                            myhost.someprovider.net:/blog:../myblog
                           the virtual /blog at myhost.someprovider.net is mapped to ../myblog

                            /:.,/blog:../myblog
                           Two applications like the above ones are handled.
                    Default value: /:.
                    AppSettings key name: MonoApplications

    --minThreads N:    the minimum number of threads the thread pool creates on startup.
                       Increase this value to handle a sudden inflow of connections.
                       Default value: (runtime default)
    --backlog N:    the listen backlog. Default value: 500
    --terminate: gracefully terminates a running mod-mono-server instance.
                 All other options but --filename or --address and --port
                 are ignored if this option is provided.
    --master: this instance will be used to by mod_mono to create ASP.NET
              applications on demand. If this option is provided, there is no
              need to provide a list of applications to start.
    --nonstop: don't stop the server by pressing enter. Must be used
               when the server has no controlling terminal.

    --no-hidden: allow access to hidden files (see 'man xsp' for details)

    --version: displays version information and exits.
    --verbose: prints extra messages. Mainly useful for debugging.
    --pidfile file: write the process PID to the specified file.

#

Перезапускаем Apache24, в логе апача наблюдаем следующие ошибки:

[Sat Dec 19 19:09:23.954527 2015] [mpm_worker:notice] [pid 5071:tid 34397516800] AH00295: caught SIGTERM, shutting down
mod-mono-server received a shutdown message
[Sat Dec 19 19:09:26.001094 2015] [:notice] [pid 5114:tid 34397516800] ModSecurity for Apache/2.9.0 (http://www.modsecurity.org/) configured.
[Sat Dec 19 19:09:26.001111 2015] [:notice] [pid 5114:tid 34397516800] ModSecurity: APR compiled version="1.5.2"; loaded version="1.5.2"
[Sat Dec 19 19:09:26.001116 2015] [:notice] [pid 5114:tid 34397516800] ModSecurity: PCRE compiled version="8.37 "; loaded version="8.37 2015-04-28"
[Sat Dec 19 19:09:26.001120 2015] [:notice] [pid 5114:tid 34397516800] ModSecurity: YAJL compiled version="2.1.0"
[Sat Dec 19 19:09:26.001123 2015] [:notice] [pid 5114:tid 34397516800] ModSecurity: LIBXML compiled version="2.9.2"
[Sat Dec 19 19:09:26.001126 2015] [:notice] [pid 5114:tid 34397516800] ModSecurity: Status engine is currently disabled, enable it by set SecStatusEngine to On.
[Sat Dec 19 19:09:26.051342 2015] [:crit] [pid 5114:tid 34397516800] (45)Operation not supported: Failed to attach to the dashboard '/tmp/mod_mono_dashboard_XXGLOBAL_1'
[Sat Dec 19 19:09:27.004561 2015] [:crit] [pid 5115:tid 34397516800] (17)File exists: Failed to create shared memory segment for backend 'XXGLOBAL' at '/tmp/mod_mono_dashboard_XXGLOBAL_1'.
Exception caught during reading the configuration file:
System.InvalidProgramException: Invalid IL code in System.Configuration.ConfigurationManager:get_AppSettings (): IL_0000: ret       


  at Mono.WebServer.Apache.Server.get_AppSettings () <0x800a070e0 + 0x00010> in :0 
  at Mono.WebServer.Apache.Server+ApplicationSettings..ctor () <0x800a06ab0 + 0x000ea> in :0 
The value given for the address is not valid: 0.0.0.0
[Sat Dec 19 19:09:27.143596 2015] [mpm_worker:notice] [pid 5115:tid 34397516800] AH00292: Apache/2.4.17 (FreeBSD) mod_mono/3.12 configured -- resuming normal operations
Exception caught during reading the configuration file:
[Sat Dec 19 19:09:27.152033 2015] [core:notice] [pid 5115:tid 34397516800] AH00094: Command line: '/usr/local/sbin/httpd -D NOHTTPACCEPT'
System.InvalidProgramException: Invalid IL code in System.Configuration.ConfigurationManager:get_AppSettings (): IL_0000: ret       


  at Mono.WebServer.Apache.Server.get_AppSettings () <0x800a070e0 + 0x00010> in :0 
  at Mono.WebServer.Apache.Server+ApplicationSettings..ctor () <0x800a06ab0 + 0x000ea> in :0 
The value given for the address is not valid: 0.0.0.0
Listening on: /tmp/mod_mono_adc.anteh.ru.sock
Root directory: /path/adc.anteh.ru/adc.anteh.ru

В файле /TestFramework/log видим:

mod-mono-server2
mod-mono-server2
mod-mono-server4

Т.е. при перезапуске апача 2 раза запускается mod-mono-server2 и затем mod-mono-server4.

То же самое, но более развёрнуто, в mod-mono-servern файлы добавлены дополнительные строки, содержимое mod-mono-server:

#!/bin/sh
echo "mod-mono-server" >> /TestFramework/log
echo "MONO_OPTIONS: $MONO_OPTIONS" >> /TestFramework/log
echo "@: $@" >> /TestFramework/log
exec /usr/local/bin/mono $MONO_OPTIONS "/usr/local/lib/mono/2.0/mod-mono-server2.exe" "$@"

И соответственно при перезапуске апача в /TestFramework/log наблюдаем:

mod-mono-server2
MONO_OPTIONS:
@: --filename /tmp/mod_mono_server_global --nonstop --master
mod-mono-server2
MONO_OPTIONS:
@: --filename /tmp/mod_mono_server_global --nonstop --master
mod-mono-server4
MONO_OPTIONS:
@: --filename /tmp/mod_mono_adc.anteh.ru.sock --applications /:/path/adc.anteh.ru/adc.anteh.ru --nonstop

Т.е. 2 раза запускается mod-mono-server2 и один раз mod-mono-server4. Также видим всего 2 параметра, с которыми запускается ASP.NET mod-mono-server2.exe сервер.

FreeBSD 9.3. С нижеприведёнными настройками браузер клиента хоть как-то реагировал, сообщая о невозможности отобразить страницу:

<VirtualHost *:80>
        ServerName adc.anteh.ru
        DocumentRoot "/path/adc.anteh.ru/adc.anteh.ru"
        ServerAdmin radodendron@inbox.ru
        ErrorLog "/var/log/adc.anteh.ru-error_log"
        CustomLog "/var/log/adc.anteh.ru-customlog" combined
        MonoServerPath "/usr/local/bin/mod-mono-server4"
        MonoApplications "/:/path/adc.anteh.ru/adc.anteh.ru"
        <Location "/">
                Allow from all
                Order allow,deny                
                SetHandler mono
        </Location>
</VirtualHost>

При перезапуске:
# apachectl restart
Performing sanity check on apache24 configuration:
[Sun Dec 20 02:08:22.927975 2015] [:crit] [pid 29382] (17)File exists: Failed to create shared memory segment for backend 'XXGLOBAL' at '/tmp/mod_mono_dashboard_XXGLOBAL_1'.
[Sun Dec 20 02:08:22.929333 2015] [:crit] [pid 29382] (17)File exists: Failed to create shared memory segment for backend 'XXGLOBAL' at '/tmp/mod_mono_dashboard_XXGLOBAL_1'.
Syntax OK
Stopping apache24.
Waiting for PIDS: 29353.
Performing sanity check on apache24 configuration:
[Sun Dec 20 02:08:24.000516 2015] [:crit] [pid 29393] (45)Operation not supported: Failed to attach to the dashboard '/tmp/mod_mono_dashboard_XXGLOBAL_1'
[Sun Dec 20 02:08:24.001742 2015] [:crit] [pid 29393] (17)File exists: Failed to create shared memory segment for backend 'XXGLOBAL' at '/tmp/mod_mono_dashboard_XXGLOBAL_1'.
Syntax OK
Starting apache24.
[Sun Dec 20 02:08:24.036754 2015] [:crit] [pid 29394] (45)Operation not supported: Failed to attach to the dashboard '/tmp/mod_mono_dashboard_XXGLOBAL_1'
[Sun Dec 20 02:08:24.037989 2015] [:crit] [pid 29394] (17)File exists: Failed to create shared memory segment for backend 'XXGLOBAL' at '/tmp/mod_mono_dashboard_XXGLOBAL_1'.
#

FreeBSD 9.3. С нижеприведёнными настройками, сайт не компилировался в /tmp/www-temp-aspnet-0/.. не появлялось соответствующих файлов, в клиентском браузере отображалось сообщение "Service Unavailable The server is temporarily unable to service your request due to maintenance downtime or capacity problems. Please try again later.":

<VirtualHost *:80>
        ServerName adc.anteh.ru
        DocumentRoot "/path/adc.anteh.ru/adc.anteh.ru"
        ServerAdmin radodendron@inbox.ru
        ErrorLog "/var/log/adc.anteh.ru-error_log"
        CustomLog "/var/log/adc.anteh.ru-customlog" combined
        MonoServerPath adc.anteh.ru "/usr/local/bin/mod-mono-server4"
        MonoApplications adc.anteh.ru "/:/path/adc.anteh.ru/adc.anteh.ru"
        <Location "/">
                Allow from all
                Order allow,deny                
                MonoSetServerAlias adc.anteh.ru
                SetHandler mono
        </Location>
</VirtualHost>

При перезапуске:
# apachectl restart
Performing sanity check on apache24 configuration:
[Sun Dec 20 02:28:53.165798 2015] [:crit] [pid 29472] (17)File exists: Failed to create shared memory segment for backend 'XXGLOBAL' at '/tmp/mod_mono_dashboard_XXGLOBAL_1'.
[Sun Dec 20 02:28:53.166974 2015] [:crit] [pid 29472] (17)File exists: Failed to create shared memory segment for backend 'XXGLOBAL' at '/tmp/mod_mono_dashboard_XXGLOBAL_1'.
[Sun Dec 20 02:28:53.167028 2015] [:crit] [pid 29472] (45)Operation not supported: Failed to attach to the dashboard '/tmp/mod_mono_dashboard_adc.anteh.ru_2'
Syntax OK
Stopping apache24.
Waiting for PIDS: 29395.
Performing sanity check on apache24 configuration:
[Sun Dec 20 02:28:54.238705 2015] [:crit] [pid 29483] (45)Operation not supported: Failed to attach to the dashboard '/tmp/mod_mono_dashboard_XXGLOBAL_1'
[Sun Dec 20 02:28:54.239918 2015] [:crit] [pid 29483] (17)File exists: Failed to create shared memory segment for backend 'XXGLOBAL' at '/tmp/mod_mono_dashboard_XXGLOBAL_1'.
[Sun Dec 20 02:28:54.239967 2015] [:crit] [pid 29483] (45)Operation not supported: Failed to attach to the dashboard '/tmp/mod_mono_dashboard_adc.anteh.ru_2'
Syntax OK
Starting apache24.
[Sun Dec 20 02:28:54.275268 2015] [:crit] [pid 29484] (45)Operation not supported: Failed to attach to the dashboard '/tmp/mod_mono_dashboard_XXGLOBAL_1'
[Sun Dec 20 02:28:54.276472 2015] [:crit] [pid 29484] (17)File exists: Failed to create shared memory segment for backend 'XXGLOBAL' at '/tmp/mod_mono_dashboard_XXGLOBAL_1'.
[Sun Dec 20 02:28:54.276528 2015] [:crit] [pid 29484] (45)Operation not supported: Failed to attach to the dashboard '/tmp/mod_mono_dashboard_adc.anteh.ru_2'

В итоге, после долгих поисков, подозрение пало на FreeBSD 9.3, хоть и было всё обновлено до последних версий, но не работало обновления системы тянулись с FreeBSD 8.1. Была установлена FreeBSD 10.2.

Произведена установка на чистую машину FreeBSD 10.2 + apache2.4 + mod_mono-3.12. В качестве тестового проекта использовался дефолтный шаблон от Visual Web Developer 2010 Express на Framework 4.0. Все файлы проекта скопированы в директорию виртуального хоста на сервер. Речь везде идёт о "боевом" удалённом сервере. Наконец-то заработало:freebsd apache24 mod mono install config

Неразборчивые символы -это слова "тест тест" вставленные прямо в html код. Это потому, что не стояло опции "AddDefaultCharset utf-8" в конфигурации апача для запускаемого сайта.

Минимальные настройки с которыми всё работало:

<VirtualHost *:80>
        ServerName adc.anteh.ru
        DocumentRoot "/<doc root>/adc.anteh.ru"
        ServerAdmin serv@adm.adm
        ErrorLog "/var/log/adc.anteh.ru-error_log"
        CustomLog "/var/log/adc.anteh.ru-customlog" combined
        MonoServerPath adc.anteh.ru "/usr/local/bin/mod-mono-server4"
        MonoApplications adc.anteh.ru "/:/<doc root>/adc.anteh.ru"
        <Location "/">
                Allow from all
                Order allow,deny
                AddDefaultCharset utf-8
                MonoSetServerAlias adc.anteh.ru
                SetHandler mono
        </Location>
</VirtualHost>

mod-mono-server4 кирилические буквы

Русские буквы статического контента апач обрабатывает без каких либо дополнительных опций. Динамический контент, содержащий русские буквы стал корректно обрабатывать после использования директивы 'AddDefaultCharset utf-8" на каталог сайта с динамическим контентом. mono в "лице" mod-mono-server4, возможно не корректно воспринимает Русские буквы. Кирилические символы статического контента отображаются не корректно, латиница без проблем. Динамические текстовые поля контролов, содержащие русские буквы отображаются корректно, если количество кирилических символов, возможно в сочетании с некоторыми символамиих, не превышает определённого количества символов. Если превышает, то получаем ошибку 500 на клиетнской странице. Проверено на контроллах "asp:Label", "textarea", "asp:textbox" для Фреймворка 2.0 и 4.0. Причём, первая клиентская страница отображается правильно, но повторный запрос приводит к ошибке 500 -только для Русской локализации страницы, с латиницей проблем никаких. Например, содержимое контрола, с кирилическими символами, взятое автоматически из ресурсного файла или динамически присвоенное в "Page_Load(object sender, EventArgs e)" такого содержания:
apache24 mod mono server4 отображение кирилических символов

не приводит к ошибке. А если добавить немного кирилических букв штук 20 перед например "AvrDelayCalculator" в контрол "textarea", то при повторном запросе клиентская страница вылетает с ошибкой 500. Латинских букв можно добавлять любое количество.

Отображение статического и динамического русского текста на ASP.NET странице, как оказалось 2 разные проблемы.

После ряда экспериментов, подозрение в конце концов пало на некорректную обработку Русских букв mod-mono-server4.mod mono server4 отображение русскиз букв

На скриншоте показано отображение кирилицы страницы формируемой apache24+mod-mono-server4, в конфигурации апача для сайта установлена опция "AddDefaultCharset utf-8". Благодаря этой опции на странице корректно отображаются динамически сформированные кирилические буквы. Статические кирилические буквы, располагающиеся в .aspx файле отображаются не корректно. Повторюсь, динамический контент с кирилическими буквами отображается корректно с условием: если для конкретного контрола количество кирилических букв не превышало некоторого критического количества.

Со статическим текстом в .aspx страницах всё оказалось до жути просто. Проблема была в кодировке файла исходного кода, а именно Default.aspx и всех остальных .aspx. Он должен быть "Unicode(UTF-8 with signature) Codepage 65001", сюда же можно выбрать Unix окончание строки Unix(LF). Возможно подойдут и другие кодровки. В Visual Studio 2008 нужно выбрать файл, кодировку которого будем менять, затем File->Advanced Safe Options.... "Advanced Safe Options" появится только если выбран файл.

Теперь проблема динамического текста с Русскими буквами

Замечена одна особенность, работы отлаживаемого сайта рассчёта коэффициентов для функции задержки 8bit AVR контроллеров. При использовании Русского языка, при первом нажатии на кнопку "ПЕРЕСЧИТАТЬ" всё работает как обычно, но при втором нажатии на любой контрол с постбэком сессия вылетает с ошибкой. Если сначала загрузки страницы дёргать любые контролы кроме кнопки, то проблем не наблюдается. Первое нажатие на кнопку срабатывает штатно и всё отображается, но что-то ломается, и при последующем использовании любого контрола, постбэк и страница клиента вылетает с ошибкой 500. При использовании Английского языка всё работает чётко. Проблема одна и та же для ASP.NET сайта на Фреймворке 2.0 и 4.0. Текст выводился в "asp:Label", "textarea", "asp:textbox" проблема едина. В логах апача иногда проскакивало:

[Sun Dec 27 01:19:52.420745 2015] [:error] [pid 3133] (32)Broken pipe: write_data failed
[Sun Dec 27 01:19:52.420906 2015] [:error] [pid 3133] (32)Broken pipe: write_data failed
[Sun Dec 27 01:19:52.420946 2015] [:error] [pid 3133] command failed: failed to get client block (data)

После правки .aspx страницы, как оказалось там был полный бордак, мною же учинённый, проблема кирилических символов распространилась и на латинские. Скорее всего есть какой-то нюанс.

На текущий момент с проблемой не разобрался, вопрос решон размещением текста через динамическую генерацию содержимого .aspx страницы.

Установка mod_mono коротко по сути

Установка поддержки ASP.NET web сайтов на "свежую" FreeBSD 10.2, apache24, mod_mono-3.12. В настройках апача используем только mod-mono-server4. На FreeBSD 9.3 последовательно обновляемой с 8.1, поддержку ASP.NET реализовать не удалось. В конфигурации апача для сайтов с динамическим контентом, содержащим русские символы обязательно указывать "AddDefaultCharset utf-8" иначе вместо русских букв будут нечитаемые символы. Файлы .aspx в директории сайта должны быть в utf-8 иначе кирилические буквы статического контента будут отображаться неправильно.

ASP.NET Web сайт разрабатывался в студии, учитывалось отличие сепараторов вещественных чисел для UNIX System.Globalization.NumberFormatInfo.CurrentInfo.NumberDecimalSeparator, сепаратор пути диреккторий Path.DirectorySeparatorChar, символ новой строки System.Environment.NewLine.


Ставим апач с дефолтными настройками. Если апач стоит, то переустанавливаем: куда-либо переносим директорию apache24 -сохраняем конфигурационные файлы. Удаляем файл /var/db/ports/www_apache24/options

# apachectl stop

# cd /usr/ports/www/apache24

# make deinstall

# make clean

# make

# make install

В /etc/rc.conf apache24_enable="yes"

Переустанавливаем mod_mono

# cd /usr/ports/www/mod_mono

# make clean

# make deinstall

# make

# make install

Можно и в несколько строк всё записать.

Уже установленный mono 4.2.1 можно не переустанавливать.

Поправляем /usr/local/etc/apache24/httpd.conf

Редактируем /usr/local/etc/apache24/extra/httpd-vhosts.conf

httpd.conf, httpd-vhosts.conf приводим к состоянию работоспособности того, что было. Или сразу настраиваем ASP.NET виртуальный хост. В файл /usr/local/etc/apache24/extra/httpd-vhosts.conf добавляем минимальные настройки, для работоспособности asp.net:

<VirtualHost *:80>
        ServerName adc.anteh.ru
        DocumentRoot "/<doc root>/adc.anteh.ru"
        ServerAdmin serv@adm.adm
        ErrorLog "/var/log/adc.anteh.ru-error_log"
        CustomLog "/var/log/adc.anteh.ru-customlog" combined
        MonoServerPath adc.anteh.ru "/usr/local/bin/mod-mono-server4"
        MonoApplications adc.anteh.ru "/:/<doc root>/adc.anteh.ru"
        <Location "/">
                Allow from all
                Order allow,deny
                AddDefaultCharset utf-8
                MonoSetServerAlias adc.anteh.ru
                SetHandler mono
        </Location>
</VirtualHost>

Какие ещё настройки добавить, смотрим в сети, например deflate, склейка с www, nginx для статики и пр.

Для ASP.NET приложений существует возможность игнорирования регистра символов в именах файлов, для включения в конфигурационный файл Apache нужно добавить строку: "MonoSetEnv MONO_IOMAP=all"

Если всё в порядке, то сокет в /tmp появится сразу же после перезапуска апача, скомпилированный контент в /tmp/www-temp-aspnet-0/.. или другой директории, появится только после первого обращения к сайту. В error логе апача, после перезапуска, будет:

[Mon Dec 21 00:38:32.622730 2015] [mpm_prefork:notice] [pid 79367] AH00169: caught SIGTERM, shutting down
mod-mono-server received a shutdown message
[Mon Dec 21 00:38:33.882262 2015] [mpm_prefork:notice] [pid 79544] AH00163: Apache/2.4.18 (FreeBSD) mod_mono/3.12 configured -- resuming normal operations
[Mon Dec 21 00:38:33.882333 2015] [core:notice] [pid 79544] AH00094: Command line: '/usr/local/sbin/httpd -D NOHTTPACCEPT'
Exception caught during reading the configuration file:
System.InvalidProgramException: Invalid IL code in System.Configuration.ConfigurationManager:get_AppSettings (): IL_0000: ret       


  at Mono.WebServer.Apache.Server.get_AppSettings () <0x150e0 + 0x00010> in :0 
  at Mono.WebServer.Apache.Server+ApplicationSettings..ctor () <0x14ab0 + 0x000ea> in :0 
The value given for the address is not valid: 0.0.0.0
Exception caught during reading the configuration file:
System.InvalidProgramException: Invalid IL code in System.Configuration.ConfigurationManager:get_AppSettings (): IL_0000: ret       


  at Mono.WebServer.Apache.Server.get_AppSettings () <0x150e0 + 0x00010> in :0 
  at Mono.WebServer.Apache.Server+ApplicationSettings..ctor () <0x14ab0 + 0x000ea> in :0 
The value given for the address is not valid: 0.0.0.0
Listening on: /tmp/mod_mono_server_adc.anteh.ru
Root directory: /path/adc.anteh.ru/adc.anteh.ru

Строка: "System.InvalidProgramException: Invalid IL code in System.Configuration.ConfigurationManager:get_AppSettings (): IL_0000: ret" связана с отсутствием Framework ниже 4.0. И появляется при запуске mod-mono-server2. Да, действительно mod-mono-server2 по прежнему запускается 2 раза. Если убрать из конфигурации апача алиас adc.anteh.ru(как в конфигурации ниже), то запуск mod-mono-server2 будет производиться только раз.

<VirtualHost *:80>
        ServerName adc.anteh.ru
        DocumentRoot "/<doc root>/adc.anteh.ru"
        ServerAdmin serv@adm.adm
        ErrorLog "/var/log/adc.anteh.ru-error_log"
        CustomLog "/var/log/adc.anteh.ru-customlog" combined
        MonoServerPath "/usr/local/bin/mod-mono-server4"
        MonoApplications "/:/<doc root>/adc.anteh.ru"
        <Location "/">
                Allow from all
                Order allow,deny
                AddDefaultCharset utf-8         
                SetHandler mono
        </Location>
</VirtualHost>

Ниже скриншот того, для чего всё делалось. С год назад работа сервиса AvrDelayCalculator, после обновлений, была приостановлена.freebsd apache24 mod mono test

Написано на Framework 2.0, скомпилировано в VS2008, размещено и запущено на реальном удалённом сервере. Локально всё работает чётко, при удалённой работе иногда появляется:

System.Web.HttpException
Unable to validate data.
Description: HTTP 500.Error processing request.

Это минимум проблема с ключами для обмена данными с клиентами. В error логах апача наблюдаем нижеприведённые строки, всё, что после "Root directory: /path/adc.anteh.ru/adc.anteh.ru" связано с отсутствием "/.mono" директории:

[Thu Dec 24 02:33:09.720155 2015] [mpm_prefork:notice] [pid 5855] AH00169: caught SIGTERM, shutting down
mod-mono-server received a shutdown message
[Thu Dec 24 02:33:10.947275 2015] [mpm_prefork:notice] [pid 8221] AH00163: Apache/2.4.18 (FreeBSD) mod_mono/3.12 configured -- resuming normal operations
[Thu Dec 24 02:33:10.947345 2015] [core:notice] [pid 8221] AH00094: Command line: '/usr/local/sbin/httpd -D NOHTTPACCEPT'
Exception caught during reading the configuration file:
System.InvalidProgramException: Invalid IL code in System.Configuration.ConfigurationManager:get_AppSettings (): IL_0000: ret       


  at Mono.WebServer.Apache.Server.get_AppSettings () <0x150e0 + 0x00010> in :0 
  at Mono.WebServer.Apache.Server+ApplicationSettings..ctor () <0x14ab0 + 0x000ea> in :0 
The value given for the address is not valid: 0.0.0.0
Exception caught during reading the configuration file:
System.InvalidProgramException: Invalid IL code in System.Configuration.ConfigurationManager:get_AppSettings (): IL_0000: ret       


  at Mono.WebServer.Apache.Server.get_AppSettings () <0x150e0 + 0x00010> in :0 
  at Mono.WebServer.Apache.Server+ApplicationSettings..ctor () <0x14ab0 + 0x000ea> in :0 
The value given for the address is not valid: 0.0.0.0
Listening on: /tmp/mod_mono_server_adc_anteh_ru
Root directory: /path/adc.anteh.ru/adc.anteh.ru
(info) Auto generated encryption keys not saved: System.Security.SecurityException: No access to the given key ---> System.UnauthorizedAccessException: Access to the path "/.mono" is denied.
  at System.IO.Directory.CreateDirectoriesInternal (System.String path) <0x2b5de0 + 0x00193> in :0 
  at System.IO.Directory.CreateDirectory (System.String path) <0x2b5b80 + 0x000c4> in :0 
  at System.IO.DirectoryInfo.Create () <0x3ca000 + 0x0001b> in :0 
  at (wrapper remoting-invoke-with-check) System.IO.DirectoryInfo:Create ()
  at System.IO.Directory.CreateDirectoriesInternal (System.String path) <0x2b5de0 + 0x0012e> in :0 
  at System.IO.Directory.CreateDirectory (System.String path) <0x2b5b80 + 0x000c4> in :0 
  at System.IO.DirectoryInfo.Create () <0x3ca000 + 0x0001b> in :0 
  at (wrapper remoting-invoke-with-check) System.IO.DirectoryInfo:Create ()
  at System.IO.Directory.CreateDirectoriesInternal (System.String path) <0x2b5de0 + 0x0012e> in :0 
  at System.IO.Directory.CreateDirectory (System.String path) <0x2b5b80 + 0x000c4> in :0 
  at Microsoft.Win32.KeyHandler..ctor (Microsoft.Win32.RegistryKey rkey, System.String basedir, Boolean is_volatile) <0x3c9bb0 + 0x000aa> in :0 
  --- End of inner exception stack trace ---
  at Microsoft.Win32.KeyHandler..ctor (Microsoft.Win32.RegistryKey rkey, System.String basedir, Boolean is_volatile) <0x3c9bb0 + 0x00121> in :0 
  at Microsoft.Win32.KeyHandler..ctor (Microsoft.Win32.RegistryKey rkey, System.String basedir) <0x3c9b70 + 0x00020> in :0 
  at Microsoft.Win32.KeyHandler.Lookup (Microsoft.Win32.RegistryKey rkey, Boolean createNonExisting) <0x3c8000 + 0x001d9> in :0 
  at Microsoft.Win32.UnixRegistryApi.OpenSubKey (Microsoft.Win32.RegistryKey rkey, System.String keyname, Boolean writable) <0x3c7e10 + 0x0003e> in :0 
  at Microsoft.Win32.RegistryKey.OpenSubKey (System.String name, Boolean writable) <0x3c7c60 + 0x0006b> in :0 
  at (wrapper remoting-invoke-with-check) Microsoft.Win32.RegistryKey:OpenSubKey (string,bool)
  at System.Web.Configuration.MachineKeyRegistryStorage.OpenRegistryKey (System.String path, Boolean write) <0x3c7a10 + 0x000b4> in :0 
  at System.Web.Configuration.MachineKeyRegistryStorage.Store (System.Byte[] buf, KeyType kt) <0x3cb610 + 0x0008b> in :0 
(info) Auto generated encryption keys not saved: System.Security.SecurityException: No access to the given key ---> System.UnauthorizedAccessException: Access to the path "/.mono" is denied.
  at System.IO.Directory.CreateDirectoriesInternal (System.String path) <0x2b5de0 + 0x00193> in :0 
  at System.IO.Directory.CreateDirectory (System.String path) <0x2b5b80 + 0x000c4> in :0 
  at System.IO.DirectoryInfo.Create () <0x3ca000 + 0x0001b> in :0 
  at (wrapper remoting-invoke-with-check) System.IO.DirectoryInfo:Create ()
  at System.IO.Directory.CreateDirectoriesInternal (System.String path) <0x2b5de0 + 0x0012e> in :0 
  at System.IO.Directory.CreateDirectory (System.String path) <0x2b5b80 + 0x000c4> in :0 
  at System.IO.DirectoryInfo.Create () <0x3ca000 + 0x0001b> in :0 
  at (wrapper remoting-invoke-with-check) System.IO.DirectoryInfo:Create ()
  at System.IO.Directory.CreateDirectoriesInternal (System.String path) <0x2b5de0 + 0x0012e> in :0 
  at System.IO.Directory.CreateDirectory (System.String path) <0x2b5b80 + 0x000c4> in :0 
  at Microsoft.Win32.KeyHandler..ctor (Microsoft.Win32.RegistryKey rkey, System.String basedir, Boolean is_volatile) <0x3c9bb0 + 0x000aa> in :0 
  --- End of inner exception stack trace ---
  at Microsoft.Win32.KeyHandler..ctor (Microsoft.Win32.RegistryKey rkey, System.String basedir, Boolean is_volatile) <0x3c9bb0 + 0x00121> in :0 
  at Microsoft.Win32.KeyHandler..ctor (Microsoft.Win32.RegistryKey rkey, System.String basedir) <0x3c9b70 + 0x00020> in :0 
  at Microsoft.Win32.KeyHandler.Lookup (Microsoft.Win32.RegistryKey rkey, Boolean createNonExisting) <0x3c8000 + 0x001d9> in :0 
  at Microsoft.Win32.UnixRegistryApi.OpenSubKey (Microsoft.Win32.RegistryKey rkey, System.String keyname, Boolean writable) <0x3c7e10 + 0x0003e> in :0 
  at Microsoft.Win32.RegistryKey.OpenSubKey (System.String name, Boolean writable) <0x3c7c60 + 0x0006b> in :0 
  at (wrapper remoting-invoke-with-check) Microsoft.Win32.RegistryKey:OpenSubKey (string,bool)
  at System.Web.Configuration.MachineKeyRegistryStorage.OpenRegistryKey (System.String path, Boolean write) <0x3c7a10 + 0x000b4> in :0 
  at System.Web.Configuration.MachineKeyRegistryStorage.Store (System.Byte[] buf, KeyType kt) <0x3cb610 + 0x0008b> in :0 
(info) Auto generated encryption keys not saved: System.Security.SecurityException: No access to the given key ---> System.UnauthorizedAccessException: Access to the path "/.mono" is denied.
  at System.IO.Directory.CreateDirectoriesInternal (System.String path) <0x2b5de0 + 0x00193> in :0 
  at System.IO.Directory.CreateDirectory (System.String path) <0x2b5b80 + 0x000c4> in :0 
  at System.IO.DirectoryInfo.Create () <0x3ca000 + 0x0001b> in :0 
  at (wrapper remoting-invoke-with-check) System.IO.DirectoryInfo:Create ()
  at System.IO.Directory.CreateDirectoriesInternal (System.String path) <0x2b5de0 + 0x0012e> in :0 
  at System.IO.Directory.CreateDirectory (System.String path) <0x2b5b80 + 0x000c4> in :0 
  at System.IO.DirectoryInfo.Create () <0x3ca000 + 0x0001b> in :0 
  at (wrapper remoting-invoke-with-check) System.IO.DirectoryInfo:Create ()
  at System.IO.Directory.CreateDirectoriesInternal (System.String path) <0x2b5de0 + 0x0012e> in :0 
  at System.IO.Directory.CreateDirectory (System.String path) <0x2b5b80 + 0x000c4> in :0 
  at Microsoft.Win32.KeyHandler..ctor (Microsoft.Win32.RegistryKey rkey, System.String basedir, Boolean is_volatile) <0x3c9bb0 + 0x000aa> in :0 
  --- End of inner exception stack trace ---
  at Microsoft.Win32.KeyHandler..ctor (Microsoft.Win32.RegistryKey rkey, System.String basedir, Boolean is_volatile) <0x3c9bb0 + 0x00121> in :0 
  at Microsoft.Win32.KeyHandler..ctor (Microsoft.Win32.RegistryKey rkey, System.String basedir) <0x3c9b70 + 0x00020> in :0 
  at Microsoft.Win32.KeyHandler.Lookup (Microsoft.Win32.RegistryKey rkey, Boolean createNonExisting) <0x3c8000 + 0x001d9> in :0 
  at Microsoft.Win32.UnixRegistryApi.OpenSubKey (Microsoft.Win32.RegistryKey rkey, System.String keyname, Boolean writable) <0x3c7e10 + 0x0003e> in :0 
  at Microsoft.Win32.RegistryKey.OpenSubKey (System.String name, Boolean writable) <0x3c7c60 + 0x0006b> in :0 
  at (wrapper remoting-invoke-with-check) Microsoft.Win32.RegistryKey:OpenSubKey (string,bool)
  at System.Web.Configuration.MachineKeyRegistryStorage.OpenRegistryKey (System.String path, Boolean write) <0x3c7a10 + 0x000b4> in :0 
  at System.Web.Configuration.MachineKeyRegistryStorage.Store (System.Byte[] buf, KeyType kt) <0x3cb610 + 0x0008b> in :0 

Важно с этим разобраться:

1. создаём папку /.mono

2. # chown www:www /.mono

3. # chmod 0700 /.mono

4. # apachectl restart

5. В браузере заходим на страницу ASP.NET сайта

И только после этого в /.mono будут автоматически созданы нужные директории и файлы с ключами. Например: /.mono/registry/CurrentUser/software/mono/asp.net/4.0.xxxx.xxx/autogenkeys/3ea67ab6-0/values.xml

/.mono/registry/CurrentUser/software/mono/asp.net/4.0.xxxx.xxx/autogenkeys/3e56aab6-1/values.xml

И в логах апача, после перезапуска и первого обращения клиента к ASP.NET странице сервера наступит относительная тишина:

[Thu Dec 24 05:08:26.074913 2015] [mpm_prefork:notice] [pid 11500] AH00169: caught SIGTERM, shutting down
mod-mono-server received a shutdown message
[Thu Dec 24 05:08:27.198461 2015] [mpm_prefork:notice] [pid 11569] AH00163: Apache/2.4.18 (FreeBSD) mod_mono/3.12 configured -- resuming normal operations
[Thu Dec 24 05:08:27.198530 2015] [core:notice] [pid 11569] AH00094: Command line: '/usr/local/sbin/httpd -D NOHTTPACCEPT'
Exception caught during reading the configuration file:
System.InvalidProgramException: Invalid IL code in System.Configuration.ConfigurationManager:get_AppSettings (): IL_0000: ret       


  at Mono.WebServer.Apache.Server.get_AppSettings () <0x150e0 + 0x00010> in :0 
  at Mono.WebServer.Apache.Server+ApplicationSettings..ctor () <0x14ab0 + 0x000ea> in :0 
The value given for the address is not valid: 0.0.0.0
Exception caught during reading the configuration file:
System.InvalidProgramException: Invalid IL code in System.Configuration.ConfigurationManager:get_AppSettings (): IL_0000: ret       


  at Mono.WebServer.Apache.Server.get_AppSettings () <0x150e0 + 0x00010> in :0 
  at Mono.WebServer.Apache.Server+ApplicationSettings..ctor () <0x14ab0 + 0x000ea> in :0 
The value given for the address is not valid: 0.0.0.0
Listening on: /tmp/mod_mono_server_adc_anteh_ru
Root directory: /path/adc.anteh.ru/adc.anteh.ru

Нюансы обсуждались выше, с mod-mono-server2 тоже желательно разобраться. На текущий момент ASP.NET сайт работает.

При перезапуске апача на такие сообщения не реагируем. При перезапуске сервера их нет:

# apachectl restart
Performing sanity check on apache24 configuration:
[Sat Dec 26 19:23:42.071225 2015] [:crit] [pid 1603] Failed to remove dashboard mutex file '/tmp/mod_mono_dashboard_XXGLOBAL_1.lock'; will attempt to continue. Operation not permitted
[Sat Dec 26 19:23:42.071479 2015] [:crit] [pid 1603] (1)Operation not permitted: Failed to create mutex '/tmp/mod_mono_dashboard_XXGLOBAL_1.lock'
Syntax OK
Stopping apache24.
Waiting for PIDS: 1577.
Performing sanity check on apache24 configuration:
[Sat Dec 26 19:23:43.171152 2015] [:crit] [pid 1613] Failed to remove dashboard mutex file '/tmp/mod_mono_dashboard_XXGLOBAL_1.lock'; will attempt to continue. Operation not permitted
[Sat Dec 26 19:23:43.171403 2015] [:crit] [pid 1613] (1)Operation not permitted: Failed to create mutex '/tmp/mod_mono_dashboard_XXGLOBAL_1.lock'
Syntax OK
Starting apache24.
[Sat Dec 26 19:23:43.232621 2015] [:crit] [pid 1614] Failed to remove dashboard mutex file '/tmp/mod_mono_dashboard_XXGLOBAL_1.lock'; will attempt to continue. Operation not permitted
[Sat Dec 26 19:23:43.232876 2015] [:crit] [pid 1614] (1)Operation not permitted: Failed to create mutex '/tmp/mod_mono_dashboard_XXGLOBAL_1.lock'

Установка mod_mono, apache24, FreeBSD компактное описание

Ставим apache24, mod_mono

Минимальная конфигурация апача для сайта ASP.NET:

<VirtualHost *:80>
        ServerName adc.anteh.ru
        DocumentRoot "/<doc root>/adcantehru"
        ServerAdmin serv@adm.adm
        ErrorLog "/var/log/adc.anteh.ru-error_log"
        CustomLog "/var/log/adc.anteh.ru-customlog" combined
        MonoServerPath adc_anteh_ru "/usr/local/bin/mod-mono-server4"
        MonoApplications adc_anteh_ru "/:/<doc root>/adcantehru"
        <Location "/">
                Allow from all
                Order allow,deny
                AddDefaultCharset utf-8
                MonoSetServerAlias adc_anteh_ru 
                SetHandler mono
        </Location>
</VirtualHost>

1. создаём папку /.mono

2. # chown www:www /.mono

3. # chmod 0700 /.mono

.aspx файлы, содержащие кирилические буквы должны быть в utf-8.

Нельзя использовать динамические элементы с большим количеством текста, проблема описана выше. Больщое количество в районе нескольких сотен символов.

Copyright ©Новиков Алексей Александрович,

2012-2017 Санкт-Петербург, 197372, ООО "Антех ПСБ",

anteh собака bk.ru