Встановлення та налаштування Umbraco (.NET)

Наша компанія займається розробкою, підтримкою та обслуговуванням сайтів будь-якої складності. Від простих односторінкових сайтів до масштабних кластерних систем, побудованих на мікро сервісах. Досвід розробників підтверджено сертифікатами від вендорів.

Розробка та обслуговування будь-яких видів сайтів:

Інформаційні сайти або веб-програми
Сайти візитки, landing page, корпоративні сайти, онлайн каталоги, квіз, промо-сайти, блоги, ресурси новин, інформаційні портали, форуми, агрегатори
Сайти або веб-програми електронної комерції
Інтернет-магазини, B2B-портали, маркетплейси, онлайн-обмінники, кешбек-сайти, біржі, дропшиппінг-платформи, парсери товарів
Веб-програми для управління бізнес-процесами
CRM-системи, ERP-системи, корпоративні портали, системи управління виробництвом, парсери інформації
Сайти або веб-програми електронних послуг
Дошки оголошень, онлайн-школи, онлайн-кінотеатри, конструктори сайтів, портали надання електронних послуг, відеохостинги, тематичні портали

Це лише деякі з технічних типів сайтів, з якими ми працюємо, і кожен із них може мати свої специфічні особливості та функціональність, а також бути адаптованим під конкретні потреби та цілі клієнта.

Пропоновані послуги
Показано 1 з 1 послугУсі 2065 послуг
Встановлення та налаштування Umbraco (.NET)
Середня
від 1 робочого дня до 3 робочих днів
Часті питання

Наші компетенції:

Етапи розробки

Останні роботи

  • image_website-b2b-advance_0.png
    Розробка сайту компанії B2B ADVANCE
    1262
  • image_web-applications_feedme_466_0.webp
    Розробка веб-додатків для компанії FEEDME
    1171
  • image_websites_belfingroup_462_0.webp
    Розробка веб-сайту для компанії БЕЛФІНГРУП
    874
  • image_ecommerce_furnoro_435_0.webp
    Розробка інтернет магазину для компанії FURNORO
    1094
  • image_crm_enviok_479_0.webp
    Розробка веб-додатків для компанії Enviok
    831
  • image_bitrix-bitrix-24-1c_fixper_448_0.png
    Розробка веб-сайту для компанії ФІКСПЕР
    851

Встановлення та налаштування Umbraco (.NET)

Umbraco 13/14 працює на .NET 8. Встановлюється через dotnet CLI або шаблон у Visual Studio. База даних — SQL Server (продакшн) або SQLite (розробка). Потребує знайомства з ASP.NET Core — це не PHP-рушій, який розгортається за п'ять хвилин.

Системні вимоги

  • .NET 8 SDK
  • SQL Server 2019+, SQL Server Express або SQLite
  • IIS 10+ / Kestrel / nginx як reverse proxy
  • Windows Server 2019+ або Linux (Ubuntu 20.04+)

Встановлення через CLI

# встановити шаблони Umbraco
dotnet new install Umbraco.Templates

# новий проект
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"

cd MyProject

# запуск
dotnet run

Для SQL Server замість SQLite:

dotnet new umbraco -n MyProject \
  --connection-string "Server=localhost;Database=UmbracoDb;Trusted_Connection=True;TrustServerCertificate=True"

Структура appsettings.json

{
  "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"
      }
    }
  }
}

Налаштування IIS

<!-- 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 як reverse proxy

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";
    }
}

Налаштування systemd-сервісу (Linux)

# /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
systemctl status mysite

Конфігурація логування

{
  "Serilog": {
    "MinimumLevel": {
      "Default": "Warning",
      "Override": {
        "Microsoft": "Warning",
        "Umbraco": "Warning"
      }
    },
    "WriteTo": [
      {
        "Name": "File",
        "Args": {
          "path": "umbraco/Logs/UmbracoTraceLog.txt",
          "rollingInterval": "Day",
          "retainedFileCountLimit": 14
        }
      }
    ]
  }
}

Обновлення Umbraco

# оновити пакет
dotnet add package Umbraco.Cms --version 13.x.x

# запустити миграції — автоматично при старті
dotnet run

# або через CLI Umbraco
dotnet umbraco migrate

Umbraco виконує міграції схеми БД при старті додатка. В продакшені рекомендується запустити migration окремо перед змною кода.

Резервне копіювання

Для SQL Server:

BACKUP DATABASE [UmbracoDb]
TO DISK = N'D:\Backups\UmbracoDb_20240315.bak'
WITH NOFORMAT, NOINIT, NAME = 'UmbracoDb-Full',
     SKIP, NOREWIND, NOUNLOAD, STATS = 10;

Плюс синхронізація папки wwwroot/media/ — там зберігаються завантажені файли.

Терміни розробки

Встановлення на VPS з Nginx та SQL Server, налаштування backoffice та першого адміністратора: 1 день. З SSL, systemd-сервісом, налаштуванням бэкапів та базовими типами контенту: 2–3 дні.