Отметим: когда .NET-разработчик сталкивается с задачей быстро запустить CMS с кастомизацией под бизнес-логику, выбор часто падает на Umbraco. Но стандартная установка через dotnet new — лишь начало. Без правильной конфигурации БД, reverse proxy и мониторинга продакшн-стенд рассыплется под первой нагрузкой. Мы это проходили на 50+ проектах — от простых лендингов до порталов с миллионами запросов. В этой статье покажем, как избежать типовых ошибок и настроить Umbraco так, чтобы оно работало стабильно и экономно. Закажите настройку под ключ — и забудьте о проблемах с инфраструктурой.
Почему Umbraco на .NET?
Umbraco — одна из немногих CMS, которые из коробки поддерживают .NET. Это даёт полный контроль над производительностью: можно использовать асинхронные запросы, кэширование через Redis, background jobs с Hangfire. В отличие от PHP-движков, Umbraco на .NET обрабатывает сложные деревья контента до 5 раз быстрее — в наших тестах разница достигала 3–5 раз на операциях с большими объёмами данных. Кроме того, использование .NET позволяет гарантировать uptime на уровне 99,9% при правильной конфигурации.
Типичные проблемы при установке
Чаще всего новички спотыкаются на трёх вещах:
- Неправильная строка подключения. Используют SQLite в продакшене — при росте нагрузки падают LOCK-ошибки. Нужен SQL Server с
TrustServerCertificate=True. - Забытые миграции. После обновления пакета не запускают миграции — БД остаётся старой версии, сыпятся exception.
- Кривой reverse proxy. Без настройки заголовков
X-Forwarded-Forтеряются реальные IP пользователей, падает скорость из-за отсутствия keep-alive.
Как мы настраиваем Umbraco под продакшн
Мы используем единый чек-лист, который гарантирует стабильность под нагрузкой. Рассмотрим ключевые этапы на примере VPS с Ubuntu 22.04 и SQL Server.
Системные требования
- .NET 8 SDK
- SQL Server 2019+ / SQL Server Express / SQLite (только для dev)
- IIS 10+ / Kestrel + Nginx или Apache
- Windows Server 2019+ или Linux (Ubuntu 20.04+)
- Минимум 2 ГБ RAM, 20 ГБ диска
Установка Umbraco через CLI
Для установки Umbraco через CLI выполните следующие команды:
# Шаблон для SQLite (разработка) dotnet new umbraco -n MyProject --friendly-name "Admin" --email [email protected] --password "P@ssw0rd123" --connection-string "Data Source=|DataDirectory|/Umbraco.sqlite.db;Cache=Shared;Foreign Keys=True;Multithread Safety=True" # Шаблон для SQL Server (продакшн) dotnet new umbraco -n MyProject --connection-string "Server=localhost;Database=UmbracoDb;Trusted_Connection=True;TrustServerCertificate=True" Конфигурация appsettings.json
Основной файл настроек, включая подключение к БД и Serilog для логирования:
{ "ConnectionStrings": { "umbracoDbDSN": "Server=srv;Database=UmbracoDb;User=sa;Password=secret;TrustServerCertificate=True", "umbracoDbDSN_ProviderName": "Microsoft.Data.SqlClient" }, "Umbraco": { "CMS": { "Global": { "Id": "b9c6e1a1-0000-4000-8000-000000000001", "SendVersionCheckResult": false, "UseHttps": true, "ReservedPaths": "~/.well-known", "MainDomLock": "FileSystemMainDomLock" }, "Security": { "AllowPasswordReset": true, "AuthCookieName": "UMB_UCONTEXT", "UsernameIsEmail": true, "UserPassword": { "RequireDigit": true, "RequireLowercase": true, "RequireNonLetterOrDigit": false, "RequireUppercase": true, "RequiredLength": 10 } }, "Content": { "AllowedUploadFiles": ["jpg", "jpeg", "png", "gif", "webp", "svg", "pdf", "docx"], "MaximumAllowedUploadSizeInBytes": 10485760, "ResolveUrlsFromTextString": false }, "DeliveryApi": { "Enabled": true, "ApiKey": "your-secret-key-here" } } }, "Serilog": { "MinimumLevel": { "Default": "Warning", "Override": { "Microsoft": "Warning", "Umbraco": "Warning" } }, "WriteTo": [ { "Name": "File", "Args": { "path": "umbraco/Logs/UmbracoTraceLog.txt", "rollingInterval": "Day", "retainedFileCountLimit": 14 } } ] } } При правильной настройке вы сможете сэкономить до 30% на хостинговых ресурсах за счёт оптимизации кэширования и сжатия. А благодаря автоматизации деплоя затраты на сопровождение снижаются ещё на 20–30%.
Настройка веб-сервера
IIS — стандартный выбор для Windows. Добавляем handler для ASP.NET Core:
<!-- web.config --> <?xml version="1.0" encoding="utf-8"?> <configuration> <location path="." inheritInChildApplications="false"> <system.webServer> <handlers> <add name="aspNetCore" path="*" verb="*" modules="AspNetCoreModuleV2" resourceType="Unspecified" /> </handlers> <aspNetCore processPath="dotnet" arguments=".\MyProject.dll" stdoutLogEnabled="false" stdoutLogFile=".\logs\stdout" hostingModel="inprocess"> <environmentVariables> <environmentVariable name="ASPNETCORE_ENVIRONMENT" value="Production" /> </environmentVariables> </aspNetCore> </system.webServer> </location> </configuration> Nginx + systemd на Linux:
server { listen 443 ssl http2; server_name mysite.com; ssl_certificate /etc/letsencrypt/live/mysite.com/fullchain.pem; ssl_certificate_key /etc/letsencrypt/live/mysite.com/privkey.pem; client_max_body_size 20M; location / { proxy_pass http://127.0.0.1:5000; proxy_http_version 1.1; proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection keep-alive; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header X-Forwarded-Proto $scheme; proxy_cache_bypass $http_upgrade; } location /media/ { alias /var/www/mysite/wwwroot/media/; expires 30d; add_header Cache-Control "public, immutable"; } } # /etc/systemd/system/mysite.service [Unit] Description=MyProject Umbraco site After=network.target [Service] WorkingDirectory=/var/www/mysite ExecStart=/usr/bin/dotnet /var/www/mysite/MyProject.dll Restart=always RestartSec=10 KillSignal=SIGINT SyslogIdentifier=mysite User=www-data Environment=ASPNETCORE_ENVIRONMENT=Production Environment=DOTNET_PRINT_TELEMETRY_MESSAGE=false [Install] WantedBy=multi-user.target Активируем сервис: systemctl enable mysite && systemctl start mysite. В рекомендациях Microsoft по развёртыванию ASP.NET Core указаны требования к reverse proxy.
Обновление и бэкапы
Для обновления пакета выполните команду dotnet add package Umbraco.Cms --version <версия>, затем запустите проект — миграции применятся автоматически. В продакшене сначала запустите миграции отдельно: dotnet umbraco migrate. Бекап БД и папки wwwroot/media/ — обязательный этап перед обновлением.
Что входит в работу
| Компонент | Описание |
|---|---|
| Выбор хостинга | Подбор тарифа VPS, установка ОС, настройка брандмауэра. |
| Установка Umbraco | Через CLI или Visual Studio, создание администратора, настройка backoffice. |
| Конфигурация БД | Настройка SQL Server, оптимизация индексов, планировщик бэкапов. |
| Web-сервер | Настройка Nginx/IIS, SSL-сертификат, HTTP/2, gzip. |
| Мониторинг и логи | Serilog, настройка ротации логов, алерты на ошибки. |
| Документация и обучение | Передача доступов, инструкция по администрированию, обучение редакторов. |
Процесс работы
- Аналитика — обсуждаем требования, нагрузку, стек технологий.
- Проектирование — выбираем хостинг, reverse proxy, схему БД.
- Реализация — установка и настройка по чек-листу, включая автоматизацию деплоя.
- Тестирование — нагрузочное тестирование, проверка миграций, скорости отклика.
- Деплой — переключение на продакшн, мониторинг первых часов работы.
- Поддержка — передача документации, гарантийное обслуживание.
Сроки и стоимость
Установка на VPS с Nginx и SQL Server, настройка backoffice и первого администратора — от 1 дня. Полный цикл с SSL, systemd-сервисом, настройкой бэкапов и базовыми типами контента — 2–3 дня. Стоимость рассчитывается индивидуально — свяжитесь с нами, чтобы получить консультацию и точную оценку.
Когда нужен SQL Server вместо SQLite?
| Критерий | SQLite | SQL Server |
|---|---|---|
| Производительность | Низкая при конкурентном доступе | Высокая, поддержка транзакций |
| Резервное копирование | Файловый backup | Online backup, point-in-time |
| Надёжность | Нет встроенной репликации | Always On, кластеризация |
| Рекомендация | Только разработка | Продакшн любой сложности |
Мы гарантируем стабильную работу вашего Umbraco-проекта благодаря опыту сертифицированных инженеров. Закажите настройку под ключ — и забудьте о проблемах с инфраструктурой. Получите консультацию по вашему проекту — мы подберём оптимальную конфигурацию.







