Отметим: когда .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-проекта благодаря опыту сертифицированных инженеров. Закажите настройку под ключ — и забудьте о проблемах с инфраструктурой. Получите консультацию по вашему проекту — мы подберём оптимальную конфигурацию.







