Если у вас в системе больше 10 активных пользователей (admin
, service
и cron
не считаются пользователями), сначала регистрируетесь, оплачиваете и выпускаете лицензию на ru.totum.online/pro
Если у вас на сервере несколько установок, то эта инструкция предполагает, что они все переводятся на новую версию.
При переходе с V4 проверить корретность лицензии невозможно, поэтому будте внимательны при указании хоста и схемы! Схема указана в технической плашке сверху справа в вашей системе (слева от версии, по умолчанию totum).
Также удостоверьтесь, что в лицензии содержится достаточное количество пользователей.
До начала обновления у вас должен быть доступ к PRO-репозиторию: https://github.com/totumonline/totum-pro Получить доступ: https://ru.docs.totum.online/pro-install
V5 использует web-sockets, поэтому если вы используете промежуточные proxy — вам нужно их предварительно настроить. Чтобы запросы по WebSocket не терялись при прохождении через промежуточный прокси-сервер перед Nginx, необходимо убедиться, что этот прокси корректно обрабатывает и передает заголовки Upgrade и Connection, которые используются для установления WebSocket-соединений.
Логинимся на сервер и обновляем репозитории:
apt update
Устанавливаем PHP 8.3
:
apt -y install php8.3 php8.3-bcmath php8.3-cli php8.3-curl php8.3-fpm php8.3-gd php8.3-mbstring php8.3-opcache php8.3-pgsql php8.3-xml php8.3-zip php8.3-soap php8.3-ldap
Переносим настройки пула fpm на версию 8.3:
rm /etc/php/8.3/fpm/pool.d/www.conf && mv /etc/php/8.0/fpm/pool.d/totum.conf /etc/php/8.3/fpm/pool.d/totum.conf && sed -i "s:php8.0:php8.3:g" /etc/php/8.3/fpm/pool.d/totum.conf && sed -i "s:php8.0:php8.3:g" /etc/nginx/sites-available/totum.online.conf && sed -i "/jit_buffer_size/d" /etc/php/8.3/fpm/pool.d/totum.conf && sed -i '/php_admin_value\[opcache.enable_cli\] = 1/d' /etc/php/8.3/fpm/pool.d/totum.conf && service php8.3-fpm restart
Добавляем в настройки nginx проксирование на web-socket:
nano /etc/nginx/sites-available/totum.online.conf
Вставляем секцию перед location ~* \.php$ {
:
# functionality for web sockets
location /PRONotify {
proxy_pass http://localhost:8181/PRONotify;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
proxy_set_header Host $host;
proxy_read_timeout 600s;
}
# ...
Сохраяняем файл Ctrl + S
и перезапускаем nginx
:
service nginx restart
Удаляем PHP 8.0:
service php8.0-fpm stop && apt -y purge php8.0 php8.0-bcmath php8.0-cli php8.0-curl php8.0-fpm php8.0-gd php8.0-mbstring php8.0-opcache php8.0-pgsql php8.0-xml php8.0-zip php8.0-soap php8.0-ldap
Удаляем хвосты:
apt autoremove
Ответить Y
apt clean
Проверяем версию PHP:
php -v
Ставим разрешение на перезапуск от пользователя totum
при помощи перенаправления вывода:
echo 'totum ALL=(ALL) NOPASSWD: /usr/sbin/service totum-gom restart' | sudo tee /etc/sudoers.d/restart-totum-gom && sudo chmod 440 /etc/sudoers.d/restart-totum-gom
Переключаемся в пользователя Totum:
su totum
cd ~/totum-mit
Записываем учетные данные GitHub в локальный GIT в папке Totum (замените USERNAME_IN_GITHUB
и EMAIL_IN_GITHUB
):
git config --local user.name USERNAME_IN_GITHUB
git config --local user.email EMAIL_IN_GITHUB
Чтобы проверить:
git config --list --local
Перейдем в папку с ключами:
cd ~/.ssh
Если вы увидите ошибку
bash: cd: /home/totum/.ssh: No such file or directory
то вам нужно создать папку и потом в нее перейти!
╔
cd ~
mkdir .ssh
cd ~/.ssh
╚
Создаем SSH ключ (замените EMAIL_IN_GITHUB
):
ssh-keygen -t ed25519 -C "EMAIL_IN_GITHUB"
Вводим название файла ключа — totum_pro_key
Дальше будет вопрос про пароль ключа — оставьте пустым и нажмите Enter
Повторно нажмите Enter
Создаем конфиг для подключения:
nano config
Вставляем и сохраняем (что бы сохранить Ctrl + X
, вводим Y
и Enter
):
Host *
AddKeysToAgent yes
IdentityFile ~/.ssh/totum_pro_key
Выводим и копируем ключ (всю строку от начала названия алгоритма до окончания email):
cat ~/.ssh/totum_pro_key.pub
В некоторых терминалах, email, который находится в конце строки ключа может копироваться с техническим тегом.
Поэтому наилучшим вариантом будет являться сначала вставить скопированный ключ в простой текстовый файл и скопировать его оттуда повторно.
Идем на страницу GitHub https://github.com/settings/keys и добавляем ключ в раздел SSH keys (New SSH Key). Вводим название и вставляем строку ключа вида:
ssh-ed25519 [here_your_key] [your_email]
Проверяем подключение к GH:
cd ~/totum-mit
ssh -T git@github.com
> The authenticity of host 'github.com (IP ADDRESS)' can't be established.
> RSA key fingerprint is SHA256:nThbg6kXUpJWGl7E1IGOCspRomTxdCARLviKw6E5SY8.
> Are you sure you want to continue connecting (yes/no)?
yes
Вы должны увидеть что-то типа:
Hi you_name! You've successfully authenticated, but GitHub does not provide shell access.
Подключаем PRO репозиторий:
git remote set-url origin git@github.com:totumonline/totum-pro.git
Скачиваем данные:
git fetch origin pro
Переключаемся в новую ветку pro:
git checkout -b pro origin/pro -t
Обновляем скрипты:
git pull
Создаем GOM-service:
exit
ln -s /home/totum/totum-mit/totum-gom.service /etc/systemd/system/totum-gom.service && systemctl daemon-reload && systemctl enable totum-gom && service totum-gom start && service totum-gom status
Смотрим таймзону сервера:
cat /etc/php/8.3/fpm/pool.d/totum.conf
Скопируйте таймзону из строки php_admin_value[date.timezone] = Europe/Madid
(Europe/Madrid
надо скопировать эту часть).
Возвращаемся в totum:
su totum
Создаем файл CLI.totum.php.ini
(замениете Europe/London
на таймзону, которую вы скопировали на предыдущем шаге):
nano /home/totum/totum-mit/CLI.totum.php.ini
opcache.enable_cli = 1
opcache.memory_consumption = 256M
date.timezone = Europe/London
cd ~/totum-mit && bin/totum git-update --force
Если у вас больше 10 пользователей в системе! То обязательно получить валидную лицензию. Внимательно проверяйте host и схемы базы данных при выпуске лицензии!
Создаем файл лицензии:
nano /home/totum/totum-mit/PRO.license
Записываем в него лицензию полученную на сервере лицензий: license.totum.online
Записывайте лицензию через консоль сервера или ее эмулятор! Не используете сторонние файловые редакторы в вашей настольной операционной системе, или предоставляемые хостером в браузере — они могут добавлять лишние нечитаемые символы (например переносы строк), которые сделают файл лицензии нечитаемым.
Лицензия читается системой в момент старта totum-gom (модуля тотум на GO).
После сохранения файла лицензии необходимо перезапустить totum-gom:
sudo service totum-gom restart
Также вам необходимо проверить, количество активных пользователей в вашей системе и удостоверится, что в лицензии достаточно слотов.
Проверить пользователей можно командой (смотрите внизу списка параметр TOTAL) (измените схему totum
на вашу, если она отлична от стандартной):
cd /home/totum/totum-mit && bin/totum schema-users --schema totum --list=on
Если у вас несколько схем на одном сервере, то они все должны покрываться лицензией, если в схеме больше 10 пользователей.
Подробнее про лицензии, а также информация как отключить пользователей их консоли в документации установки PRO-версии.
Если при попытке входа система выдает ошибку проверки лицензии:
Проверьте в файле /etc/php/8.3/fpm/pool.d/totum.conf
наличие следующих строк:
nano /etc/php/8.3/fpm/pool.d/totum.conf
php_admin_value[session.gc_maxlifetime] = 3600
php_admin_value[session.save_path] = /var/lib/php/sessions_totum
Если их нет, то добавьте от root
и сохраните.
Создайте папку:
mkdir /var/lib/php/sessions_totum && chmod 1733 /var/lib/php/sessions_totum
Перезапустите FPM:
service php8.3-fpm restart
Получите на сервере лицензий тестовую лицензию и проверьте, правильно ли вы указали хосты через gomodule-test
Перейдите в пользователя totum
:
su totum
cd /home/totum/totum-mit
Создайте файл PRO.license-test
и запишите в него тестовую лицензию, полученную с сервера лицензий:
nano PRO.license-test
Запустите проверку:
bin/gomodule-test
Запустите totum-gom в режиме отладки лицензий:
От root
остановите totum-gom
service totum-gom stop
Перейдите в пльзователя totum
:
su totum
cd /home/totum/totum-mit
Запустите totum-gom в режиме отладки:
/home/totum/totum-mit/bin/gomodule -php-sessions-directory /var/lib/php/sessions_totum -totum-directory /home/totum/totum-mit/ -log=ln
После окончания отладки, остановите и запустите totum-gom как сервис:
sudo service totum-gom restart
totum
Выполняем от root, поэтому выходим из пользователя totum:
exit
Подключаем репозиторий meilisearch
:
echo "deb [trusted=yes] https://apt.fury.io/meilisearch/ /" > /etc/apt/sources.list.d/fury.list
apt update && apt install meilisearch-http
Meilisearch нельзя обновлять без дампирования базы, так как он может не запуститься после обновления из-за разности файла базы и пакета.
Для этого необходимо добавить пакет в
hold
:apt-mark hold meilisearch-http
Переключаемся в пользователя Totum:
su totum
Переходим в домашнюю папку:
cd ~
Cоздаем файл ключа и набираем там произвольный ключ используя a
- z
, A
- Z
, 0
- 9
(что бы сохранить Ctrl + X
, вводим Y
и Enter
):
nano meili_masterkey
Запускаем сервер поиска:
meilisearch --no-analytics --db-path ./meilifiles --env production --master-key $(cat meili_masterkey) &
Записываем запуск поиска при перезагрузке сервера:
crontab -e
Добавляем строку в конец:
@reboot cd ~ && exec meilisearch --no-analytics --db-path ./meilifiles --env production --master-key $(cat meili_masterkey) > /dev/null 2>&1 &
Последняя строка в
crontab
обязательно должна быть пустой!
Что бы сохранить Ctrl + X
, вводим Y
и Enter
.
Дальше настройки выполняются в схеме Totum.
Все!
exit
Рекомендуем также обновить все пакеты на сервере до последних версий:
apt upgrade
Если будут спрашивать что-то про локальные конфигурации — выбирайте оставить локальные так-как они настроены под вашего хостера
Если у вас много одновременно работающих пользователей, кроны, есть активно-работающие remouts, а также вы работаете со стандартной конфигурацией postgresql — может быть исчерпан стандартный пул подключений к базе данных (по умолчанию 100), так-как totum-gom использует собственный пул подключений в дополнение к PHP-FPM.
Если вы видите ошибки вида:
SQLSTATE[08006] [7] FATAL: remaining connection slots are reserved for non-replication superuser connections
Вам нужно их увеличить. От root
смотрим путь к конфигурационному файлу:
su - postgres -c "psql -c 'SHOW config_file;'"
Открываем (например):
nano /etc/postgresql/12/main/postgresql.conf
Ищем параметр max_connections
, изменяем 100
> 300
, сохраняем.
Останавливаем totum-gom:
service totum-gom restart
Перезапускаем БД:
service postgre sql restart
Запускаем totum-gom:
service totum-gom start
Также удостоверьтесь, что у вас усредненная нагрузка на сервер не превышает 20-25%. Если она больше и вы не являетесь пофессиональным системным администратором — повысьте тариф сервера, что бы укладываться в 25% лимит усредненной нагрузки.