База знаний (кластер NBICS)
  • A
    522
    0

    3. Устанавливаем SQL Server 2022

    3.1. Добавляем ключ GPG для MS SQL Server

    wget -q -O- https://packages.microsoft.com/keys/microsoft.asc | \
    gpg --dearmor | sudo tee /usr/share/keyrings/microsoft.gpg > /dev/null 2>&1
    

    3.2. Добавляем репозиторий MS SQL Server

    echo "deb [signed-by=/usr/share/keyrings/microsoft.gpg arch=amd64,armhf,arm64] https://packages.microsoft.com/ubuntu/22.04/mssql-server-2022 jammy main" | \
    sudo tee /etc/apt/sources.list.d/mssql-server-2022.list
    

    3.3. Обновляем репозиторий

    sudo apt update
    

    3.4. Устанавливаем SQL Server

    sudo apt install mssql-server
    

    3.5. Для завершения установки выполняем команду

    sudo /opt/mssql/bin/mssql-conf setup
    

    3.6. Настраиваем SQL Server

    • Выбираем 3 (Express)
      
    • Принимаем условия лицензии (Yes)
      
    • Выбираем цифру 9 (русский язык)
      
    • Вводим дважды пароль системного администратора
      

    3.7. Включаем службу и проверяем её статус

    sudo systemctl is-enabled mssql-server
    sudo systemctl status mssql-server
    

    3.8. Устанавливаем MS SQL Tools для терминала

    echo "deb [signed-by=/usr/share/keyrings/microsoft.gpg arch=amd64,armhf,arm64] https://packages.microsoft.com/ubuntu/22.04/prod jammy main" | \
    sudo tee /etc/apt/sources.list.d/prod.list
    
    sudo apt update
    
    sudo apt install mssql-tools unixodbc-dev
    
    echo 'export PATH="$PATH:/opt/mssql-tools/bin"' >> /etc/environment
    source /etc/environment
    echo $PATH
    

    3.9. Проверяем вход в SQL Server

    sudo /opt/mssql-tools/bin/sqlcmd -S localhost -U SA -p
    

    Попросит ввести пароль и впустит в командную строку SQL
    Вводим exit для выхода из интерпретатора.

  • A
    522
    0

    4. Устанавливаем Dotnet 8.0

    sudo apt-get update
    sudo apt-get install -y dotnet-sdk-8.0
    
    wget https://packages.microsoft.com/config/debian/12/packages-microsoft-prod.deb -O packages-microsoft-prod.deb
    sudo dpkg -i packages-microsoft-prod.deb
    rm packages-microsoft-prod.deb
    
    sudo apt-get update
    sudo apt-get install -y aspnetcore-runtime-8.0
    
  • A
    522
    0

    5. Скачивание и распаковка сайта и базы данных

    5.1. Создаём каталог для скачиваемых ресурсов

    sudo mkdir -p /home/nbics_archive
    

    5.2. Скачиваем по очереди туда сайт и базу данных

    sudo wget -O /home/nbics_archive/school-sample.nbics.net_2025_02_04.zip "https://>nextcloud.nbics.net/index.php/s/zJzBRENozBycTde/download"
    
    sudo wget -O /home/nbics_archive/VSM_School-sample_Web_2025_02_04.bak "https://>nextcloud.nbics.net/index.php/s/8nSLXAcyrGjrook/download"
    

    Внимание! Проверяйте работоспособность ссылок.


    5.3. Создаём каталог для сайта (если уже существует, ничего страшного)

    sudo mkdir -p /var/www
    

    5.4. Распаковываем архив с сайтом в созданный каталог

    sudo unzip /home/nbics_archive/school-sample.nbics.net_2025_02_04.zip -d /var/www
    

    5.5. Создаём каталог для бэкапа базы данных

    sudo mkdir -p /var/opt/mssql/backup/
    

    5.6. Копируем туда бэкап (если он там есть, то перезаписи не будет)

    sudo cp -n /home/nbics_archive/VSM_School-sample_Web_2025_02_04.bak /var/opt/mssql/backup/
    

    5.7. Дать права на новый каталог (!! проверить, возможно команда не нужна !!)

    sudo chown -R mssql:mssql /var/opt/mssql/backup/
    
  • A
    522
    0

    6. Восстановление базы данных

    6.1. Заходим в интерпретатор SQL

    sudo /opt/mssql-tools/bin/sqlcmd -S localhost -U SA -p
    

    Вводим пароль.


    6.2. Восстанавливаем базу данных командами

    USE [master]
    RESTORE DATABASE [VSM_School-sample_Web] FROM DISK = N'/var/opt/mssql/backup/VSM_School-sample_Web_2025_02_04.bak'
    WITH FILE = 1,
    MOVE N'VSM_School-sample_Web' TO N'/var/opt/mssql/data/ExtraSql/VSM_School-sample_Web.mdf',
    MOVE N'VSM_School-sample_Web_MSGS' TO N'/var/opt/mssql/data/ExtraSql/VSM_School-sample_Web.ndf',
    MOVE N'VSM_School-sample_Web_1' TO N'/var/opt/mssql/log/ExtraSql/VSM_School-sample_Web_1.ldf',
    NOUNLOAD,
    STATS = 5;
    GO
    

    6.3. Проверяем созданную базу

    - Просмотр списка баз данных:

    SELECT name FROM sys.databases;
    GO
    

    Будет так:

    name
    ----------------------------
    master
    tempdb
    model
    msdb
    VSM_School-sample_Web

    (5 rows affected)

    ..............................
    - Переключение на вашу восстановленную базу данных:

    USE [VSM_School-sample_Web];
    GO
    

    Будет так:

    Changed database context to 'VSM_School-sample_Web'.

    ..............................
    - Просмотр списка таблиц в вашей базе данных:

    SELECT name FROM sys.tables;
    GO
    

    Будет примерно так:

    name
    ------------------------------------------------
    PersPhysical
    RoleUserRelations
    Files
    WebPages
    ConfigurationsTree
    WebPageResources
    CourseVersionConfigurationsTree
    TableFiles
    Enums
    Qualifiers
    RegisteredAssemblies
    Stat
    CourseConfigurationAccess
    Talks
    TypeRelations
    Quals
    TalkMembers
    QualRels
    Entities
    AssembliesReferences
    GlobalSettings
    Messages
    Meta
    PluginLog
    Tables
    Permissions
    Relations
    Qualifiers
    MetaGroup
    MessageFiles
    PrincipalSettings
    Entities
    Docs
    MessageConfigurationsTree
    Timers
    EntityStates
    Quals
    Sites
    RelationStates
    Enums
    Rels
    SiteUsers
    TalkMemberMessages
    Strs
    SitePlugins
    Addresses
    Territories
    UserDevices
    Captcha
    Groups
    Objects
    Fields
    VersionFiles
    VersionConfigurationsTree
    SmallInts
    GroupTalk
    Roles
    SocialNetworksUsers
    Users

    (59 rows affected)


    ..............................
    - Выполнение простого запроса к вашей базе данных (например, выборка первых 10 строк из таблицы):

    SELECT TOP 10 * FROM Enums;
    GO
    

    Будет что-то типа этого:

    Enum Id Code Alias Name > Memo From To > Flag0 Flag1 Flag2 Flag3 Flag4 Flag5 Flag6 Flag7 ImportSrc ImportId ImportCode >Imports Header Enum_Code
    ---- --- ------------------------------- --------------------------------------------------------------- ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- ------ ------ ----- ----- ----- ----- ----- ----- ----- ----- --------- ----------- ------------------------------------ ------- ------ ---------
    0 0 ТПД Типы данных Типы данных > NULL NULL > NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL > 255 0 NULL
    0 36 uniqueidentifier uniqueidentifier uniqueidentifier

    И ТАК ДАЛЕЕ....

    ВНИМАНИЕ!! После этого команда exit для выхода из интерпретатора может не сработать (а может и сработать). Придётся закрыть терминал или сеанс SSH, и снова открыть.
    После повторного открытия в следующие разы выход из интерпретатора SQL с помощью команды exit будет нормальным.

  • A
    522
    0

    7. Создаём аккаунт wcf для базы данных

    sudo /opt/mssql-tools/bin/sqlcmd -S localhost -U SA -p
    
    CREATE LOGIN [wcf] WITH PASSWORD = 'Debian123', DEFAULT_DATABASE=[master], DEFAULT_LANGUAGE=[us_english], CHECK_EXPIRATION=OFF, CHECK_POLICY=OFF
    GO
    

    Выходим (exit)

    Проверяем существование wcf

    sudo /opt/mssql-tools/bin/sqlcmd -S localhost -U wcf -p
    

    Вводим пароль

    Если появилась строка приглашения ко вводу команд - выходим (exit)

    Входим опять под SA

    sudo /opt/mssql-tools/bin/sqlcmd -S localhost -U SA -p
    

    Даём права на БД для wcf

    USE [VSM_School-sample_Web]
    GO
    alter user wcf with login = wcf
    GO
    
    exit
    

    !!! ВНИМАНИЕ !!!
    Если при создании логина для wcf впишем параметр CHECK_EXPIRATION=ON то пароль от wcf автоматически сбросится через 90 дней.
    Проверить это можно войдя в учётку wcf, и введя команду

    select LOGINPROPERTY('wcf','DaysUntilExpiration')
    

    Чтобы предотвратить сброс нужно писать CHECK_EXPIRATION=OFF
    Либо, если уже поставили значение на ON, можно под учёткой SA ввести команду

    ALTER LOGIN [wcf] WITH CHECK_EXPIRATION = OFF;
    
  • A
    522
    0

    8. Настройка файла appsettings.json

    sudo nano /var/www/school-sample.nbics.net_2025_02_04/appsettings.json
    

    В пустые кавычки ставим пароль SA
    "DbAdminPassword": "",

    Это оригинальная строка
    "ConnectionString": "Data Source=lpc:(local);Initial Catalog=VSM_School-sample_Web;Persist Security Info=True;User ID=wcf;Password=",

    Меняем её так:
    "ConnectionString": "Data Source=localhost;Initial Catalog=VSM_School-sample_Web;Persist Security Info=True;User ID=wcf;Password=Debian123",

  • A
    522
    0

    9. Создание файла Kestrel

    ВНИМАНИЕ! Если есть файрволл, открываем порт 5000

    В каталоге /etc/systemd/system/ создаём файл с именем kestrel-school-sample.nbics.net_2025_02_04-service.service

    sudo touch /etc/systemd/system/kestrel-school-sample.nbics.net_2025_02_04-service.service
    

    Открываем файл

    sudo nano /etc/systemd/system/kestrel-school-sample.nbics.net_2025_02_04-service.service
    

    Вставляем в пустой файл такие строки:

    [Unit]
    Description=vsm veb core school-sample.nbics.net_2025_02_04 application
    
    [Service]
    WorkingDirectory=/var/www/school-sample.nbics.net_2025_02_04
    ExecStart=/usr/bin/dotnet /var/www/school-sample.nbics.net_2025_02_04/VSM.Web.Core.dll
    Restart=always
    RestartSec=10
    SyslogIdentifier=school-sample.nbics.net_2025_02_04
    User=www-data
    
    Environment=ASPNETCORE_ENVIRONMENT=Production
    Environment=DOTNET_PRINT_TELEMETRY_MESSAGE=false
    [Install]
    
    WantedBy=multi-user.target
    

    Сохраняем файл.

    Даём права nginx на каталог с сайтом (для этого сначала установите Nginx - sudo apt install nginx)

    sudo chown -R www-data:www-data /var/www/school-sample.nbics.net_2025_02_04
    sudo chmod -R 755 /var/www/school-sample.nbics.net_2025_02_04
    

    Запускаем службу

    sudo systemctl enable kestrel-school-sample.nbics.net_2025_02_04-service.service
    sudo systemctl start kestrel-school-sample.nbics.net_2025_02_04-service.service
    

    Проверяем

    sudo systemctl status kestrel-school-sample.nbics.net_2025_02_04-service.service
    

  • A
    522
    0

    10. Создание админского аккаунта для веб-интерфейса НБИКС.

    Заходим в интерпретатор под учёткой SA

    sudo /opt/mssql-tools/bin/sqlcmd -S localhost -U SA -p
    
    USE [VSM_School-sample_Web];
    GO
    update Tech.Users set Password = 0x35666132383565316265626530613636 where Id = database_principal_id('администратор')
    GO
    exit
    
  • A
    522
    0

    11. Настраиваем веб-сервер Nginx

    Внимание. Для этого сначала установите Nginx

    sudo apt install nginx
    

    Создаём конфигурационный файл

    sudo touch /etc/nginx/sites-available/nbics.conf
    

    Открываем этот файл (можно в принципе пропустить предыдущую команду, файл создастся автоматически при открытии несуществующего файла)

    sudo nano /etc/nginx/sites-available/nbics.conf
    

    Вписываем туда следующие строки:

    server {
               listen 80;
               server_name school-sample.nbics.net_2025_02_04;
               root /var/www/school-sample.nbics.net_2025_02_04;
               keepalive_timeout 60;
       location / {
           proxy_pass http://localhost:5000;
           proxy_http_version 1.1;
           proxy_set_header Upgrade $http_upgrade;
           proxy_set_header Connection "upgrade";
           proxy_cache off;
           proxy_buffering off;
           proxy_read_timeout 100s;
           proxy_set_header Host $host;
           proxy_cache_bypass $http_upgrade;
           proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
           proxy_set_header X-Forwarded-Proto $scheme;
                       }
               }
    

    Сохраняем следующими комбинациями клавиш, последовательно три комбинации:

    Ctrl-X

    Shift-Y

    Enter

    Cоздаём линк.

    sudo ln -s /etc/nginx/sites-available/nbics.conf /etc/nginx/sites-enabled/nbics.conf
    

    Проверяем работоспособность Nginx:

    sudo nginx -t
    

    Должно быть так:

    nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
    nginx: configuration file /etc/nginx/nginx.conf test is successful
    
  • A
    522
    0

    12. Установка и настройка Letsencrypt

    Для того, чтобы сайт открывался без проблем, используя доступ по протоколу //https необходимо создать и установить SSL сертификат. Для этого используется Let’s Encrypt - бесплатный, автоматизированный и открытый Центр Сертификации, созданный на благо всего общества организацией Internet Security Research Group (ISRG)

    Имя сайта должно быть зарегистрировано и у компьютера должен быть статический IP

    Устанавливаем certbot и зависимости

    sudo apt install certbot python3-certbot-nginx -y
    

    Создаём сертификат

    sudo certbot --nginx -d <имя.вашего.домена>
    
  • A Admin переместил эту тему из в
  • A Admin закрепил эту тему в