Как проводить разработку ASP.NET Framework 4.x на macOS
ServBay, благодаря встроенной мощной среде Mono, упрощает процесс разработки и тестирования приложений на ASP.NET Framework 1.1/2.0/3.x/4.x (максимальная поддержка до 4.7.x) на macOS.
С версии ServBay v1.12.0 мы интегрировали Mono 6.14.0 и предоставили сервер разработки XSP, что позволяет вам использовать два основных метода для запуска приложений ASP.NET Framework 4.x:
- Быстрая разработка и тестирование с XSP
- Развертывание более стабильного приложения, близкого к производственной среде, с помощью Nginx + FastCGI.
Этот документ проведет вас через процесс конфигурации и запуска вашего проекта ASP.NET Framework 4.x в среде ServBay.
Предварительные условия
- Установите ServBay: Убедитесь, что у вас установлена версия ServBay v1.12.0 или выше на macOS.
- Установите Mono:
- Откройте приложение ServBay.
- В левом навигационном меню выберите «Пакеты».
- В списке пакетов найдите категорию «.NET» и нажмите для раскрытия.
- Найдите «Mono 6» (версия должна быть 6.14.0 или выше), нажмите кнопку «Установить» справа и дождитесь завершения установки.
Подготовка вашего проекта ASP.NET
- Файл проекта: Убедитесь, что у вас есть проект веб-приложения или веб-сайта на ASP.NET Framework 4.x.
- Рекомендуемое местоположение: Мы ** настоятельно рекомендуем ** размещать ваш проект веб-сайта в единообразно управляемом каталоге ServBay
www
, а именно по адресу/Applications/ServBay/www/
. Создайте отдельный подпроект для каждого проекта.- Пример: Если ваше имя проекта
MyWebApp
, рекомендуется использовать путь/Applications/ServBay/www/MyWebApp
. - В следующих шагах мы будем использовать
/Applications/ServBay/www/MyWebApp
в качестве примера пути. Обязательно замените его на фактический путь вашего проекта.
- Пример: Если ваше имя проекта
Способ 1: Использование XSP (встроенный сервер разработки)
XSP — это легковесный веб-сервер ASP.NET, специально разработанный для Mono, идеально подходящий для этапов разработки и быстрого тестирования. Установленный в ServBay Mono 6 включает XSP4 (соответствует ASP.NET 4.x).
Подсказка
- Если вы хотите запустить проект ASP.NET 1.1, используйте команду
xsp
. - Если вы хотите запустить проект ASP.NET 2.0, используйте команду
xsp2
.
Шаги:
Откройте терминал: Запустите приложение терминал macOS (Terminal).
Перейдите в каталог проекта: Используйте команду
cd
, чтобы перейти в корневой каталог вашего проекта ASP.NET (каталог, содержащий файлweb.config
).bash# Пример: перейти в каталог проекта с именем MyWebApp cd /Applications/ServBay/www/MyWebApp
1
2Запустите сервер XSP: В корневом каталоге проекта выполните следующую команду для запуска сервера XSP4. Вы можете указать номер порта (например, 8080 или 9000), чтобы избежать конфликтов с другими службами в ServBay.
bash# Запустите проект из текущего каталога на порту 9000 xsp4 --port 9000
1
2xsp4
: вызов сервера XSP, предназначенного для .NET 4.x.--port 9000
: указание порта, на котором сервер будет принимать запросы.
Доступ к приложению: Откройте веб-браузер и перейдите по адресу
http://localhost:9000
илиhttp://127.0.0.1:9000
. Вы должны увидеть, что ваше приложение ASP.NET работает.Остановите сервер: Когда вы завершите разработку или тестирование, вернитесь в окно терминала и нажмите
Ctrl + C
илиEnter
, чтобы остановить сервер XSP.
Преимущества:
- Простая конфигурация и быстрая настройка.
- Отлично подходит для локальной разработки и отладки.
Недостатки:
- Производительность ниже, чем у производственных серверов типа Nginx.
- Относительно базовая функциональность, не полностью имитирующая производственную среду.
Способ 2: Использование Nginx + FastCGI
Этот метод использует Nginx, управляемый ServBay, в качестве фронтенд веб-сервера, который перенаправляет динамические запросы на задний процесс Mono (fastcgi-mono-server4
) через протокол FastCGI. Этот способ ближе к развертыванию в производственной среде и обеспечивает лучшую производительность.
Подсказка
- Если вы хотите запустить проект ASP.NET 1.1, используйте команду
fastcgi-mono-server
. - Если вы хотите запустить проект ASP.NET 2.0, используйте команду
fastcgi-mono-server2
.
Шаги:
Убедитесь, что Mono и Nginx установлены и работают:
- Установите Mono 6 и Nginx через пакеты ServBay.
- В разделе «Службы» ServBay убедитесь, что служба Nginx запущена.
Подготовьте проект ASP.NET: Убедитесь, что ваш проект находится по рекомендуемому пути, например,
/Applications/ServBay/www/MyWebApp
.Запустите сервер FastCGI Mono:
- Откройте новое окно терминала.
- Запустите процесс
fastcgi-mono-server4
. Этот процесс отвечает за прослушивание запросов FastCGI от Nginx и выполнение вашего кода ASP.NET.bash# Пример: запустить службу FastCGI для проекта MyWebApp fastcgi-mono-server4 --applications=/:/Applications/ServBay/www/MyWebApp \ --socket=tcp:127.0.0.1:9001 \ --loglevels=Standard \ --printlog
1
2
3
4
5--applications=/:/Applications/ServBay/www/MyWebApp
: связывает корневой путь сайта (/
) с физическим путем вашего проекта. Обязательно замените/Applications/ServBay/www/MyWebApp
на фактический путь вашего проекта.--socket=tcp:127.0.0.1:9001
: указывает TCP-адрес и порт, на которых будет прослушиваться сервер FastCGI. Проверьте, чтобы этот порт (например, 9001) не был занят другими приложениями и соответствовал инструкцииfastcgi_pass
в конфигурации Nginx ниже.--loglevels=Standard --printlog
: (опционально) выводит стандартный уровень журналирования в терминал для удобства отладки.
- Примечание: Это окно терминала должно оставаться открытым для работы службы FastCGI. Для длительной работы вы можете использовать
nohup
или инструменты типаscreen
/tmux
, чтобы запустить его в фоновом режиме.
Настройка сайта Nginx:
В ServBay перейдите в раздел «Сайты».
Нажмите «Добавить сайт» или выберите существующий сайт для редактирования.
Установите доменное имя: Например,
mywebapp.test
. ServBay автоматически добавит его в файл Hosts.Установите корневой каталог веб-сайта: Крайне важно! Установите это значение на фактический путь вашего проекта ASP.NET, например,
/Applications/ServBay/www/MyWebApp
. Это правильно настроит директивуroot
в конфигурации Nginx.Ключевой момент: проверьте/отредактируйте файл конфигурации Nginx: Нажмите на поле выбора «Пользовательская конфигурация» в правом верхнем углу настройках сайта. ServBay сгенерирует базовую конфигурацию на основе установленного вами корневого каталога сайта. Вам нужно убедиться, что настройки
location /
и@mono
(или других аналогично названных блоков location) правильно перенаправляют запросы на сервер FastCGI Mono.Пример кода, основанный на автоматически сгенерированной конфигурации ServBay, где нужно проверить или добавить части:
nginxserver { listen 443; ssl_protocols TLSv1.2 TLSv1.3; ssl_ciphers 'TLS_AES_128_GCM_SHA256:TLS_AES_256_GCM_SHA384:TLS_CHACHA20_POLY1305_SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-RSA-AES256-GCM-SHA384'; ssl_prefer_server_ciphers on; ssl_session_timeout 1d; ssl_session_cache shared:ServBay:10m; ssl_session_tickets off; ssl_certificate /Applications/ServBay/ssl/private/tls-certs/mywebapp.test/mywebapp.test.crt; # Убедитесь, что сертификат соответствует фактическому пути ssl_certificate_key /Applications/ServBay/ssl/private/tls-certs/mywebapp.test/mywebapp.test.key; # Убедитесь, что сертификат соответствует фактическому пути server_name mywebapp.test; # Должно совпадать с доменным именем, настроенным в ServBay root /Applications/ServBay/www/MyWebApp; # **Убедитесь**, что это соответствует корневому каталогу сайта index index.html index.htm default.aspx Default.aspx; # Добавьте ASP.NET по умолчанию документы location / { try_files $uri $uri/ @mono; # Попробуйте статические файлы, иначе передайте их обработке @mono } # (опционально, но рекомендуется) Nginx обрабатывает распространенные статические файлы # location ~* \.(ico|css|js|gif|jpe?g|png|svg|woff|woff2|ttf|eot)$ { # expires max; # log_not_found off; # access_log off; # } location @mono { # Передача запросов серверу FastCGI Mono # **Порт должен** совпадать с портом, указанным в параметре --socket при запуске fastcgi-mono-server4 fastcgi_pass 127.0.0.1:9001; # Необходимые параметры FastCGI include fastcgi_params; # SCRIPT_FILENAME будет правильно установлен на основе директивы root и $fastcgi_script_name fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; fastcgi_param PATH_INFO ""; } # ServBay может также включать другие стандартные настройки, такие как журналирование, управление доступом и т.д. # access_log /Applications/ServBay/logs/nginx/mywebapp.test.access.log; # error_log /Applications/ServBay/logs/nginx/mywebapp.test.error.log; }
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43Сохраните конфигурацию и перезапустите Nginx: Сохраните файл конфигурации Nginx. ServBay автоматически перезагрузит конфигурацию Nginx после сохранения. Если конфигурация неверна, ServBay выдаст ошибку. При необходимости вы можете вручную перезагрузить Nginx на странице «Службы» ServBay.
Доступ к приложению: Откройте браузер и перейдите на доменное имя, настроенное вами в Nginx (например,
https://mywebapp.test
, обратите внимание, что здесь используется протокол HTTPS). Nginx перенаправит запросы наfastcgi-mono-server4
, который выполнит ваш код ASP.NET.
Преимущества:
- Лучшая производительность и большая стабильность.
- Более близкий к производственной среде способ развертывания.
- Возможность использования Nginx для обработки статических файлов, балансировки нагрузки, SSL и других расширенных функций.
- Более высокий уровень интеграции с функциями управления сайтами ServBay, управления доменными именами и файлами Hosts.
Недостатки:
- Конфигурация немного сложнее, чем у XSP.
- Необходимо вручную управлять процессом
fastcgi-mono-server4
.
Как выбрать
- Для быстрой разработки, отладки и простого тестирования использование XSP — самый удобный способ.
- Для тестирования или внутреннего развертывания, требующего высокой производительности и близости к производственной среде, или если вы хотите воспользоваться преимуществами расширенных функций Nginx и функций управления сайтами ServBay, выберите режим Nginx + FastCGI.
Заметки и устранение неполадок
- Права на файлы: Убедитесь, что процесс Nginx (обычно управляемый ServBay) и пользователь macOS, запускающий
fastcgi-mono-server4
, имеют доступ к файлам вашего проекта (находятся в/Applications/ServBay/www/YourProjectName
). Иногда может потребоваться изменить права доступа к каталогу (chmod
илиchown
). - Путь: Тщательно проверяйте, что путь проекта в конфигурации Nginx (
директива root
) и командеfastcgi-mono-server4
(параметр --applications
) полностью корректны и указывают на каталог, содержащийweb.config
. - Конфликт портов: Убедитесь, что порты (в примере 9000 или 9001), используемые XSP или
fastcgi-mono-server4
, не заняты другими приложениями. - Журналы:
- Проверьте вывод журналов терминала при запуске
fastcgi-mono-server4
. - Проверьте журналы ошибок Nginx. Вы можете найти путь к журналу ошибок для соответствующего сайта в настройках сайта ServBay (обычно в
/Applications/ServBay/logs/nginx/mywebapp.test.error.log
).
- Проверьте вывод журналов терминала при запуске
- Совместимость версии Mono: Mono 6.14.0 совместим с .NET Framework 1.1 и примерно до .NET Framework 4.7.2. Если вы используете функции более поздних версий .NET Framework, воспользуйтесь установкой .NET Core или .NET от Microsoft, предлагаемых ServBay.
С встроенной Mono 6 и рекомендуемой структурой проекта в ServBay процесс разработки и запуска приложений на ASP.NET Framework 4.x на macOS становится более стандартизированным и удобным. Надеемся, что этот документ поможет вам успешно начать вашу работу по разработке!