Установка и настройка mono на Linux Ubuntu
Проект mono позволяет реализовать платформу .NET Framework на системах Linux. В данной инструкции мы разберем процесс его установки на Ubuntu.
Установка и запуск сервера mono
Mono + веб-сервер
NGINX
Apache
Примеры некоторых настроек
Добавить новое приложение
Поменять порт прослушивания
Установка и запуск mono
Установку выполняем командой:
apt-get install mono-complete mono-xsp4 asp.net-examples
* пакет mono-complete содержит все возможности Mono; mono-xsp4 предоставляет поддержку ASP.NET; asp.net-examples — содержит примеры скриптов ASP и скрипт для автоматической конфигурации веб-приложения.
Разрешаем автозапуск и стартуем сервис:
systemctl enable mono-xsp4
systemctl start mono-xsp4
Если мы используем брандмауэр, добавим правило:
iptables -I INPUT 1 -p tcp -m tcp --dport 8084 -j ACCEPT
* где 8084 — порт, по умолчанию для mono-xsp4.
Сохраняем правила iptables любым способом, например:
netfilter-persistent save
* если данная команда вернет ошибку, устанавливаем iptables-persistent командой apt-get install iptables-persistent.
Для проверки работы сервиса открываем браузер и переходим по адресу http://<IP-адрес сервера>:8084/samples/ — мы должны увидеть страницу «Welcome to Mono XSP»:
* не обращаем внимания на некрасивый вид страницы и отсутствующее изображение — это происходит по причине того, что демо верстка немного не коррелирует с настройкой веб-приложения.
Совместное использование с веб-сервером
Рассмотрим процесс настройки mono с веб-серверами NGINX и Apache2 путем проксирования запросов.
NGINX
Открываем файл настройки виртуального домена по умолчанию:
vi /etc/nginx/sites-enabled/default
Находим опцию location / и приводим ее к виду:
location / {
proxy_pass http://127.0.0.1:8084/;
proxy_redirect off;
proxy_set_header Host $host;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
* где proxy_pass перенаправляет все запросы на внутренний сервер mono-xsp4.
Проверяем корректность настроек:
nginx -t
... и перезапускаем nginx:
systemctl restart nginx
Теперь открываем браузер и заходим по адресу http://<IP-адрес сервера>/samples/ (без указания порта). Мы должны увидеть веб-приложение, настроенное на mono.
Apache
Включаем модули для проксирования:
a2enmod proxy proxy_http
* где proxy — главный модель для перенаправления запросов; proxy_http — проксирование HTTP.
Настраиваем виртуальный домен с сайтом — в данном примере для сайта по умолчанию:
vi /etc/apache2/sites-enabled/000-default.conf
Добавляем строки внутри VirtualHost:
<VirtualHost *:80>
...
ProxyPreserveHost On
ProxyPass / http://127.0.0.1:8084/
ProxyPassReverse / http://127.0.0.1:8084/
...
</VirtualHost>
* где опция ProxyPreserveHost включаем проксирование для виртуального домена; ProxyPass позволяет перенаправить все запросы на данный сервер (в данном примере, на локальный mono-xsp4); ProxyPassReverse задает правило для возврата ответа — при такой настройке ответ будет возвращаться обратно веб-серверу.
Проверяем корректность настроек:
apachectl configtest
... и перезапускаем веб-сервер:
systemctl restart apache2
Теперь открываем браузер и переходим по адресу без указания порта — http://<IP-адрес сервера>/samples/. Мы должны увидеть веб-приложение, настроенное на mono.
Дополнительные настройки
Разберем некоторые настройки, которые могут пригодится при конфигурировании сервера.
Добавить веб-приложение
Открываем файл webapp:
vi /etc/xsp4/debian.webapp
Добавим веб-приложение:
<apps>
...
<web-application>
<name>api</name>
<vpath>/api</vpath>
<path>/var/www/api</path>
</web-application>
</apps>
* где:
- web-application — секция с настройками приложения.
- name — имя приложения.
- vpath — путь URL, при обращении по которому приложение доступно.
- path — путь на сервере, где находятся скрипты приложения.
... также можно использовать дополнительные опции:
- vhost — имя виртуального хоста, если будем его применять.
- vport — номер сетевого порта, на котором слушает приложение.
- enabled — принимает значение true или false. Позволяет включить или отключить приложение.
Перезапускаем mono-xsp4:
systemctl restart mono-xsp4
Смена порта сервера
Открываем настройки mono-xsp4:
vi /etc/default/mono-xsp4
Ищем опцию port= и меняем ее значение на порт, на котором должен работать сервис:
...
port=8080
...
После перезапускаем mono-xsp4:
systemctl restart mono-xsp4