Установка CMS

  Установка CMS


  Установка и запуск кода CMS


Установки TutoCito CMS выполняется менаджером пакетов apt из локального .deb пакета. Для чего достаточно выпонить в терминале сервера строку, состоящую из двух команд:

wget https://tutocito.com/api/updates/download/cmsTCpro_<version>.deb && sudo apt install ./cmsTCpro_<version>.deb

Первая команда выполняет скачивание пакета в текущую деректорию, а вторая - распаковывает, устанвливает и запускает. Перед запуском этой команды проверьте номер последней текущей версии пакета, чтобы откорректировать в командной строке, иначе установки не произойдет. Номер текущей версии можно увидеть в личном кабинете, там же можно получить лицензионный ключ продукта.

Код приложения CMS будет размещен в директории /var/www/cmsTCpro. Там же будет находится папка /base - с файлами базы данных в которой хранится все содержимое вашего сайта. Делайте регулярные копии этой папки чтобы обеспечить возможность восстановления при случайной потере данных.
Работу приложения после установки можно проверить в браузере по адресу http://localhost:4000. Приложение запускается как системная служба, поэтому управлять ей можно командами:

  • Проверить статус: sudo systemctl status cmsTCpro.service
  • Запустить/Остановить: sudo systemctl start cmsTCpro.service \ sudo systemctl stop cmsTCpro.service
  • Включить автозагрузку: sudo systemctl enable cmsTCpro.service
  • Перезагрузить конфигурацию: sudo systemctl restart cmsTCpro.service

Это системный файл запускающий приложение:

/etc/systemd/system/cmsTCpro.service
[Unit]
Description=Example .NET Blazor Web App running on Linux

[Service]
WorkingDirectory=/var/www/cmsTCpro

ExecStart=/usr/bin/dotnet /var/www/cmsTCpro/cmsTC.dll
--urls='http://127.0.0.1:4000' Restart=always # Restart service after 10 seconds if the dotnet service crashes: RestartSec=10 KillSignal=SIGINT SyslogIdentifier=dotnet-example User=root Environment=ASPNETCORE_ENVIRONMENT=Production Environment=DOTNET_PRINT_TELEMETRY_MESSAGE=false [Install] WantedBy=multi-user.target



  Настройка веб-сервера NGINX

  Создайте новый файл конфигурации NGINX с приведенным содержимым и с указанным именем. Замените в нем example.com на ваш домен и проверьте путь к файлам сертификата .key и .crt. Если файлы сертификатов отсутствуют, их необходимо создать по инструкции хостинга или самостоятельно, например с использованием Certbot Let's Encrypt.

/etc/nginx/site-enabled/default

# MIME-типы и расширение для .razor.js
include       /etc/nginx/mime.types;
types {
    application/javascript razor.js;
}

# Upstream для ASP.NET Core приложения
upstream app_server {
    server 127.0.0.1:4000;
}

# ============================================
# Редирект с www.example.com → example.com
# ============================================
server {
    listen 80;
    listen 443 ssl;
    server_name www.example.com;

    # SSL-сертификаты (Certbot)
    ssl_certificate     /etc/letsencrypt/live/example.com/fullchain.pem;
    ssl_certificate_key /etc/letsencrypt/live/example.com/privkey.pem;
    include             /etc/letsencrypt/options-ssl-nginx.conf;
    ssl_dhparam         /etc/letsencrypt/ssl-dhparams.pem;

    # Постоянный редирект на основной домен
    return 301 https://example.com$request_uri;
}

# ============================================
# Основной сервер: example.com
# ============================================
server {
    listen [::]:443 ssl ipv6only=on;
    listen 443 ssl;
    server_name example.com;
    # server_name localhost;

    # SSL-сертификаты (Certbot)
    ssl_certificate     /etc/letsencrypt/live/example.com/fullchain.pem;
    ssl_certificate_key /etc/letsencrypt/live/example.com/privkey.pem;
    include             /etc/letsencrypt/options-ssl-nginx.conf;
    ssl_dhparam         /etc/letsencrypt/ssl-dhparams.pem;

    # Корневая директория
    root /var/www/cmsTCpro/wwwroot;

    # --------------------------------------------
    # Проксирование запросов на ASP.NET Core
    # --------------------------------------------
    location / {
        # Ограничение частоты запросов (защита от ботов)
        # zone=bot_limit, burst=20 — всплеск до 20 запросов
        # nodelay — лишние запросы отклоняются сразу с 503
        limit_req zone=bot_limit burst=20 nodelay;

        # Проксирование на upstream
        proxy_pass http://app_server;
        proxy_http_version 1.1;  # Обязательно для WebSockets

        # Заголовки для корректной работы прокси
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection "upgrade";
        proxy_set_header Host $host;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Forwarded-Proto $scheme;
        proxy_cache_bypass $http_upgrade;

        # Отключение буферизации для потоковой передачи (JS-модули, SignalR)
        proxy_buffering off;
    }

    # --------------------------------------------
    # Статические HTML-файлы
    # --------------------------------------------
    location /html {
        root /var/www;
        index index.html index.nginx-debian.html;
        try_files $uri $uri/ =404;
    }
}

Перегрузите веб-сервер:
$ sudo systemctl restart nginx
и проверьте через браузер работу вашего сайта.




Rejoining the server...

Rejoin failed... trying again in seconds.

Failed to rejoin.
Please retry or reload the page.

The session has been paused by the server.

Failed to resume the session.
Please reload the page.