NBICS - установка на Debian 12
-
-
-
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.listsudo apt updatesudo apt install mssql-tools unixodbc-devecho '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 для выхода из интерпретатора. -
-
4. Устанавливаем Dotnet 8.0
sudo apt-get update sudo apt-get install -y dotnet-sdk-8.0wget 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.debsudo apt-get update sudo apt-get install -y aspnetcore-runtime-8.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/ -
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 будет нормальным. -
7. Создаём аккаунт wcf для базы данных
sudo /opt/mssql-tools/bin/sqlcmd -S localhost -U SA -pCREATE 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; -
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", -
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 -
10. Создание админского аккаунта для веб-интерфейса НБИКС.
Заходим в интерпретатор под учёткой SA
sudo /opt/mssql-tools/bin/sqlcmd -S localhost -U SA -pUSE [VSM_School-sample_Web]; GO update Tech.Users set Password = 0x35666132383565316265626530613636 where Id = database_principal_id('администратор') GO exit -
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 -
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 закрепил эту тему