Установка и настройка Apache HTTP сервера и mod_mono модуля для запуска ASP.NET приложений
1. Запускаем терминал и вводим следующие команды:
Code: Select all
su
toor
getpkg apr apr-util httpd mariadb
# введите путь для сохранения /tmp
Code: Select all
# https://slackbuilds.org/repository/15.0/development/mono/
cd /tmp
wget -q --show-progress -P /tmp https://slackbuilds.org/slackbuilds/15.0/development/mono.tar.gz
tar xf mono.tar.gz && rm -f mono.tar.gz
cd /tmp/mono
wget -q --show-progress -P /tmp/mono https://download.mono-project.com/sources/mono/preview/mono-6.12.0.205.tar.xz
wget -q --show-progress -P /tmp/mono http://sourceforge.net/projects/svoges-sbo/files/mono/mono-4.4.2.11-x86_64.tar.bz2
./mono.SlackBuild
Code: Select all
# https://slackbuilds.org/repository/15.0/development/xsp/
cd /tmp
wget -q --show-progress -P /tmp https://slackbuilds.org/slackbuilds/15.0/development/xsp.tar.gz
tar xf xsp.tar.gz && rm -f xsp.tar.gz
cd /tmp/xsp
wget -q --show-progress -P /tmp/xsp https://github.com/mono/xsp/archive/4.4/xsp-4.4.tar.gz
./xsp.SlackBuild
1.4 Скопируйте полученные xzm модули из /tmp в /mnt/sdb1/porteus/modules, где sdb1 - раздел с установленным Porteus (у Вас может быть другой раздел)
2. Открываем терминал и собираем модуль mod_monoЗаметка. Так же, можно, скачать вручную все необходимые пакеты (последние, доступные версии пакетов из ветки slackware64-current) и сконвертировать их в xzm модули, скопировать в /mnt/sdb1/porteus/modules и активировать.
# httpd и openssl (опционально - зависит от версии Porteus)
ftp://ftp.slackware.com/pub/slackware/s ... kware64/n/
# apr и apr-util
ftp://ftp.slackware.com/pub/slackware/s ... kware64/l/
# mariadb
ftp://ftp.slackware.com/pub/slackware/s ... ware64/ap/
# mono (лучше произвести сборку mono из исходников самостоятельно - см. выше)
https://packages.slackonly.com/pub/pack ... ment/mono/
# xsp (лучше произвести сборку xsp из исходников самостоятельно - см. выше)
https://packages.slackonly.com/pub/pack ... pment/xsp/
Code: Select all
su
toor
cd /tmp
git clone https://github.com/mono/mod_mono.git
cd mod_mono
./autogen.sh --prefix=/usr --with-mono-prefix=/usr
mkdir /tmp/mod_mono-xzm
make
make install DESTDIR=/tmp/mod_mono-xzm
Code: Select all
|-- etc
| `-- httpd
| `-- mod_mono.conf
`-- usr
|-- lib64
| `-- httpd
| `-- modules
| |-- mod_mono.so -> mod_mono.so.0.0.0
| `-- mod_mono.so.0.0.0
`-- man
`-- man8
`-- mod_mono.8
Code: Select all
cd ..
dir2xzm mod_mono-xzm mod_mono-3.13-$(arch)-1.xzm
3. В терминале делаем резервную копиюЗаметка. Все необходимые модули в одном архиве на выбор:
Code: Select all
su
toor
cp /etc/httpd/httpd.{conf,conf.bak}
Найти:
Code: Select all
#
# ServerName gives the name and port that the server uses to identify itself.
# This can often be determined automatically, but we recommend you specify
# it explicitly to prevent problems during startup.
#
# If your host doesn't have a registered DNS name, enter its IP address here.
#
#ServerName www.example.com:80
Code: Select all
#
# ServerName gives the name and port that the server uses to identify itself.
# This can often be determined automatically, but we recommend you specify
# it explicitly to prevent problems during startup.
#
# If your host doesn't have a registered DNS name, enter its IP address here.
#
ServerName YourHostNameOrIPAddres:80
Code: Select all
#
# DocumentRoot: The directory out of which you will serve your
# documents. By default, all requests are taken from this directory, but
# symbolic links and aliases may be used to point to other locations.
#
DocumentRoot "/srv/httpd/htdocs"
<Directory "/srv/httpd/htdocs">
Code: Select all
#
# DocumentRoot: The directory out of which you will serve your
# documents. By default, all requests are taken from this directory, but
# symbolic links and aliases may be used to point to other locations.
#
DocumentRoot "/var/www/htdocs"
<Directory "/var/www/htdocs">
Code: Select all
# Virtual hosts
#Include /etc/httpd/extra/httpd-vhosts.conf
Code: Select all
# Virtual hosts
Include /etc/httpd/extra/httpd-vhosts.conf
Code: Select all
# Activate UTF-8 encoding
AddDefaultCharset Utf-8
# Uncomment the following line to enable ASP.NET support
# via mod_mono module for Apache HTTP Server
Include /etc/httpd/mod_mono.conf
Найти:
Code: Select all
#
# VirtualHost example:
# Almost any Apache directive may go into a VirtualHost container.
# The first VirtualHost section is used for all requests that do not
# match a ServerName or ServerAlias in any <VirtualHost> block.
#
<VirtualHost *:80>
ServerAdmin [email protected]
DocumentRoot "/usr/docs/dummy-host.example.com"
ServerName dummy-host.example.com
ServerAlias www.dummy-host.example.com
ErrorLog "/var/log/httpd/dummy-host.example.com-error_log"
CustomLog "/var/log/httpd/dummy-host.example.com-access_log" common
</VirtualHost>
<VirtualHost *:80>
ServerAdmin [email protected]
DocumentRoot "/usr/docs/dummy-host2.example.com"
ServerName dummy-host2.example.com
ErrorLog "/var/log/httpd/dummy-host2.example.com-error_log"
CustomLog "/var/log/httpd/dummy-host2.example.com-access_log" common
</VirtualHost>
Code: Select all
#
# VirtualHost example:
# Almost any Apache directive may go into a VirtualHost container.
# The first VirtualHost section is used for all requests that do not
# match a ServerName or ServerAlias in any <VirtualHost> block.
#
<VirtualHost *:80>
ServerName www.example.com
ServerAlias www.example.com
ServerAdmin [email protected]
ErrorLog "/var/log/httpd/www.example.com-error_log"
CustomLog "/var/log/httpd/www.example.com-access_log" common
DocumentRoot /var/www/htdocs
MonoServerPath "/usr/bin/mod-mono-server4"
MonoSetEnv LANG=ru_RU.UTF-8
MonoSetEnv MONO_IOMAP=all
MonoUnixSocket "/tmp/.mod_mono"
MonoApplications "/monoapps:/var/www/htdocs/monoapps/"
<Location "/monoapps">
SetHandler mono
Order allow,deny
Allow from all
</Location>
<Location /mono>
SetHandler mono-ctrl
Order deny,allow
Deny from all
Allow from 127.0.0.1
</Location>
<IfModule dir_module>
DirectoryIndex index.aspx Default.aspx default.aspx view.htm index.html
</IfModule>
</VirtualHost>
Code: Select all
Listen 80
Code: Select all
Listen здесь_ваш_порт
где monoapps это папка, в которой обработка файлов с расширением .aspx и т.д., должна быть делегирована mod_mono (вместо того, чтобы Apache обрабатывал их как текстовые файлы).
6. В терминале выполняем следующие команды:
Code: Select all
su
toor
rm -rf /var/www/htdocs/*
mkdir -p /.mono /etc/mono/registry /root/.mono/registry /var/www/htdocs/monoapps
chown apache:apache -R /.mono/ /etc/mono/registry/ /root/.mono/registry/ /var/www/htdocs/*
chmod 775 -R /.mono/ /etc/mono/registry/ /root/.mono/registry/ /var/www/htdocs/*
# Пример распаковки клиента Бюджет-WEB (WEB5 линейки) фирмы Кейсистемс
wget -P /var/www/htdocs/monoapps https://keysystems.ru/files/web/INSTALL/test/MONO/web5.tar
tar xf /var/www/htdocs/monoapps/web5.tar -C /var/www/htdocs/monoapps
rm -f /var/www/htdocs/monoapps/web5.tar
# После каждой распаковки обязательно выполнить от root пользователя команду
# chown apache:apache -R /var/www/htdocs/* && chmod 775 -R /var/www/htdocs/*
# Пример распаковки клиента Бюджет-WEB (WEB6 линейки) фирмы Кейсистемс
wget -P /var/www/htdocs/monoapps https://keysystems.ru/files/web/INSTALL/WEB6/WB6.0/wb6.TAR.gz
tar xf /var/www/htdocs/monoapps/wb6.TAR.gz -C /var/www/htdocs/monoapps
mv /var/www/htdocs/monoapps/ks_web_build/* /var/www/htdocs/monoapps
rmdir /var/www/htdocs/monoapps/ks_web_build
rm -f /var/www/htdocs/monoapps/wb6.TAR.gz
# После каждой распаковки обязательно выполнить от root пользователя команду
# chown apache:apache -R /var/www/htdocs/* && chmod 775 -R /var/www/htdocs/*
chmod 755 /etc/rc.d/rc.httpd
/etc/rc.d/rc.httpd start
# Необходимо перезагрузить компьютер!
# Если этого не сделать, то получите ошибку:
# Access to the path "/root/.mono" is denied.
reboot
Заметка. в /var/www/htdocs/ можете создать любую index.html страницу, содержащую гиперссылку на mono приложение, расположенное в /var/www/htdocs/monoapps, чтобы данная страница открывалась по http://localhost и имела удобную навигацию.
Для того, чтобы создать несколько приложений-каталогов под mod_mono, привожу следующий пример:При этом не забудьте создать /var/www/htdocs/web2018 и /svod2018:/var/www/htdocs/svod2018 и в терминале выполнить:Code: Select all
# # VirtualHost example: # Almost any Apache directive may go into a VirtualHost container. # The first VirtualHost section is used for all requests that do not # match a ServerName or ServerAlias in any <VirtualHost> block. # <VirtualHost *:80> ServerName www.example.com ServerAlias www.example.com ServerAdmin [email protected] ErrorLog "/var/log/httpd/www.example.com-error_log" CustomLog "/var/log/httpd/www.example.com-access_log" common DocumentRoot /var/www/htdocs MonoServerPath "/usr/bin/mod-mono-server4" MonoSetEnv LANG=ru_RU.UTF-8 MonoSetEnv MONO_IOMAP=all MonoUnixSocket "/tmp/.mod_mono" MonoApplications "/web2018:/var/www/htdocs/web2018/" MonoApplications "/svod2018:/var/www/htdocs/svod2018/" <Location "/web2018"> SetHandler mono Order allow,deny Allow from all </Location> <Location "/svod2018"> SetHandler mono Order allow,deny Allow from all </Location> <Location /mono> SetHandler mono-ctrl Order deny,allow Deny from all Allow from 127.0.0.1 </Location> <IfModule dir_module> DirectoryIndex index.aspx Default.aspx default.aspx view.htm index.html </IfModule> </VirtualHost>
Code: Select all
su toor chown apache:apache -R /var/www/htdocs/* && chmod 775 -R /var/www/htdocs/*