⟵ сюдатуда ⟶
  • Установка
  • Конфигурация на Ubuntu
  • Установка тулов и php + создание пользователя linux
  • Настраиваем FPM
  • Настройка pm (опционально)
  • PostgreSQL
  • Nginx
  • Устанавливаем Totum
  • Установка из консоли
  • Установим кроны
  • Установка EXIM для отправки email
  • Обновления
  • Бэкапы
  • Multi/no-multi
  • Консольная утилита bin/totum
  • Основы для пользователей
  • Интерфейс и компоновка
  • Таблицы и их параметры
  • Префильтр
  • Поля и их параметры
  • Синтаксис
  • Код, действия, форматирование
  • Реляционные взаимосвязи
  • Порядок расчета и единицы пересчета
  • Сравнения
  • Функции
  • Отладка
  • Автозаполнение расчетных и временных
  • Дублирование строк и циклов
  • Деревья
  • Печать и CSV
  • API
  • Роли и пользователи
  • Нотификации
  • Действия по расписанию
  • Анонимные таблицы
  • Внешние формы
  • Экспорт и импорт таблиц
  • Системные таблицы
  • Подключение функций
  • Дополнительные интерфейсы
  • Структура файлов
  • Структура базы
  • Конфигурация среды и установка Totum на Ubuntu

    Далее все команды указаны от root, если вы работаете от sudo-пользователя добавьте sudo.

    Установка тулов и php + создание пользователя linux

    Обновляем реестр apt, подключаем PPA репозитарий PHP и обновляем еще раз.

    apt update
    
    apt -y install software-properties-common
    
    add-apt-repository ppa:ondrej/php
    
    apt update
    

    Устанавливаем некоторое полезное ПО.

    apt -y install git unzip curl nano htop wget mc
    

    Создаем пользователя totum — замените typepasshere на придуманный вами пароль.

    useradd -p typepasshere -s /bin/bash -m totum
    

    Устанавливаем PHP.

    apt -y install php7.4
    

    Устанавливаем необходимые модули PHP.

    apt -y install php7.4-bcmath php7.4-cli php7.4-curl php7.4-fpm php7.4-gd php7.4-json php7.4-mbstring php7.4-opcache php7.4-pgsql php7.4-xml php7.4-zip php7.4-soap
    

    Проверяем, что fpm стоит в автозапуске.

    systemctl is-enabled php7.4-fpm
    

    Если отключен, то влючаем.

    systemctl enable php7.4-fpm
    

    Останавливаем apache.

    service apache2 stop
    

    Отключаем автозапуск apache.

    systemctl disable apache2
    

    Настраиваем FPM

    Создаем пул php-fpm.

    nano /etc/php/7.4/fpm/pool.d/totum.conf
    

    Параметры pm необходимо настроить под производительность сервера (это можно сделать потом).

    Параметры php_admin_value настройте под мощность своего сервера.

    [memory_limit] — желательно от 1024М.

    [upload_max_filesize] — под задачи системы, измеряется в мегабайтах.

    [opcache.memory_consumption] — от 128 до 1024.

    [totum]
    pm = dynamic
    pm.start_servers = 4
    pm.min_spare_servers = 2
    pm.max_children = 10
    pm.max_spare_servers = 10
    php_admin_value[display_errors] = stderr
    php_admin_value[log_errors] = On
    listen = /run/php/php7.4-fpm-totum.sock
    listen.mode = 0660
    listen.owner = totum
    listen.group = www-data
    user = totum
    group = totum
    
    php_admin_value[memory_limit] = 1024M
    php_admin_value[upload_max_filesize] = 10M
    php_admin_value[opcache.enable_cli] = On
    php_admin_value[opcache.memory_consumption] = 128M
    

    Перезапускаем php-fpm.

    service php7.4-fpm restart
    

    Можно проверить, что пул totum запустился от пользователя totum.

    htop
    

    Настройка pm (опционально)

    Статья на хабр про настройку воркеров-fpm

    • pm.max_children — максимальное количество дочерних процессов;

    • pm.start_servers — количество процессов при старте;

    • pm.min_spare_servers — минимальное количество процессов, ожидающих соединения (запросов для обработки);

    • pm.max_spare_servers — максимальное количество процессов, ожидающих соединения (запросов для обработки).

    Для того, чтобы корректно установить эти значения, необходимо учитывать:

    • сколько памяти в среднем потребляет дочерний процесс (используйте htop, отфильтруйте по php-fpm);

    • объем доступного ОЗУ (при помощи free).

    Total Max Processes = (Total Ram - (Used Ram + Buffer)) / (Memory per php process)
    
    Всего ОЗУ: 4Гб
    Используется ОЗУ: 1000Мб
    Буфер безопасности: 400Мб
    Память на один дочерний php-fpm процесс (в среднем): 30Мб
    
    Максимально возможное кол-во процессов = (4096 - (1000 + 400)) / 30 = 89
    Четное количество: 89 округлили в меньшую сторону до 80
    

    Значение остальных директив можно установить исходя из ожидаемой нагрузки на приложение а также учитывая загрузку кроме работы php-fpm.

    К примеру для pm.max_children = 40.

    pm.max_children = 40
    pm.start_servers = 15
    pm.min_spare_servers = 15
    pm.max_spare_servers = 25
    

    PostgreSQL

    Устанавливаем postgresql.

    apt -y install postgresql
    

    Запускаем консоль postgresql от пользователя postgres.

    sudo -u postgres psql
    

    Создаем пользователя базы аналогичного пользователю системы — замените typasshere на придуманный вами пароль.

    CREATE USER totum WITH ENCRYPTED PASSWORD 'typepasshere';
    

    Cоздаем базу и назначаем доступ.

    CREATE DATABASE totum;
    
    GRANT ALL PRIVILEGES ON DATABASE totum TO totum;
    

    Закрываем консоль базы

    \q
    

    Nginx

    Устанавливаем nginx.

    apt -y install nginx
    

    Создаем файл конфигурации nginx — замените DOMAIN.ZONE на ваш домен .

    nano /etc/nginx/sites-available/DOMAIN.ZONE.conf
    

    Замените YOU_SERVER_IP и DOMAIN.ZONE на ваш ip и домен, admin@youdomain.input — на email админа.

    server {
        listen YOU_SERVER_IP:80;
        server_name DOMAIN.ZONE;
        charset UTF-8;
        root /home/totum/totum-mit/http/;
        index index.php;
        expires off;
    
        location / {
        try_files $uri $uri/ /index.php?$args;
        }
    
        location ~ ^/fls/6_main_img.png$ {
        try_files /fls/$host/6_main_img.png $uri /fls/hand.png;
        }
    
        location ~ ^/fls/6_favicon.png$ {
        try_files /fls/$host/6_favicon.png $uri /fls/hand_favicon.png;
        }
    
        location ~ ^/fls/(.+)$ {
        try_files /fls/$host/$1 $uri /fls/no-img.jpg;
        }
    
        location ~* \.php$ {
    
        fastcgi_param PHP_ADMIN_VALUE "sendmail_path = /usr/sbin/sendmail -t -i -f admin@youdomain.input";
        fastcgi_pass unix:/run/php/php7.4-fpm-totum.sock;
        fastcgi_split_path_info ^((?U).+\.ph(?:p\d*|tml))(/?.+)$;
        try_files $uri =404;
        include fastcgi_params;
        fastcgi_param  SCRIPT_FILENAME  $document_root$fastcgi_script_name;
        fastcgi_read_timeout 300;
     }
    }
    

    Включаем домен — замените DOMAIN.ZONE на ваш домен.

    ln -s /etc/nginx/sites-available/DOMAIN.ZONE.conf /etc/nginx/sites-enabled/DOMAIN.ZONE.conf
    

    Проверяем конфиг nginx.

    nginx -t
    

    Перезапускаем nginx.

    service nginx restart
    

    Устанавливаем Totum

    Изменяем пользователся на totum.

    su totum
    

    Переходим в домашнюю директорию.

    cd ~
    

    Устанавливаем totum с git.

    git clone https://github.com/totumonline/totum-mit.git
    
    cd totum-mit
    
    php -r "copy('https://getcomposer.org/installer', 'composer-setup.php');"
    
    php composer-setup.php --quiet
    
    rm composer-setup.php
    
    php composer.phar install --no-dev
    

    С этого момента можно открыть DOMAIN.ZONE в браузере и увидеть визуальный установщик.

    Для этого ваш домен должен быть делегирован и иметь A запись на ip сервера. Или прописан в hosts на локальной машине с которой осуществляется доступ.

    Продолжить установку можно в нем или вернуться в консоль и установить из консоли.

    Установка из консоли

    Выполните из папки totum-mit — замените DB_PASS на пароль установленный для БД ранее, admin@youdomain.input и youdomain.input на ваши значения, typepasshere — придумайте пароль админа totum.

    bin/totum install --pgdump=pg_dump --psql=psql -e -- ru no-multi totum admin@youdomain.input youdomain.input admin typepasshere totum localhost totum DB_PASS
    

    Установим кроны

    Эта команда для для no-multi установки!:

    echo -e "* * * * * cd $HOME/totum-mit/ && bin/totum schema-crons\n*/10 * * * * cd $HOME/totum-mit/ && bin/totum clean-tmp-dir\n*/10 * * * * cd $HOME/totum-mit/ && bin/totum clean-schema-tmp-tables" | crontab -u totum -
    

    Можно проверить.

    crontab -e
    # в качестве редактора выберите какой вам нравится, но лучше nano :)
    

    Эта команда для для multi установки!:

    echo -e "* * * * * cd $HOME/totum-mit/ && bin/totum schemas-crons\n*/10 * * * * cd $HOME/totum-mit/ && bin/totum clean-tmp-dir\n*/10 * * * * cd $HOME/totum-mit/ && bin/totum clean-schemas-tmp-tables" | crontab -u totum -
    

    Установка EXIM для отправки email

    Установим обработчик sendmail, вернувшись в root.

    su root
    
    apt -y install exim4
    
    

    Настроим exim4.

    dpkg-reconfigure exim4-config
    

    Далее в конфигураторе выберите вариант internet site; mail is sent and received directly using SMTP.

    Введите ваш DOMAIN.ZONE в качестве name.

    На шаге IP-adresses to listen on for incoming SMTP connections введите 127.0.0.1

    Остальные шаги оставьте по умолчанию нажимая enter.

    Что бы письма не валились в спам в настройках домена пропишите TXT-SPF запись, заменив YOU_SERVER_IP на ip вашего сервера.

    TXT "v=spf1 ip4:YOU_SERVER_IP ~all"
    

    Проверить наличие SPF-записи можно:

    dig TXT DOMAIN.ZONE
    

    Для проверки зайдите в totum, создайте в любом месте кнопку с кодом действия заменив EMAIL на ваш email.

    =: emailSend(to: "EMAIL"; title: "Тест Exim4"; body: "Тест Exim4")
    

    Сохраните и выполните кнопку, если нет ошибок — ожидайте письмо. Если нет SPF, то скорее всего искать надо в Спаме!

    Также его можно поискать в логах exim. Замените EMAIL на использованный при отправке email.

    exigrep '=> .*EMAIL' /var/log/exim4/mainlog | grep '=>'
    

    Ответом должна быть строка вида (например для gmail):

    2021-02-06 16:18:39 1l8NTt-0005ie-Lm => TEST_EMAIL@gmail.com R=dnslookup T=remote_smtp H=gmail-smtp-in.l.google.com [173.194.222.27] X=TLS1.2:ECDHE_ECDSA_CHACHA20_POLY1305:256 CV=yes DN="C=US,ST=California,L=Mountain View,O=Google LLC,CN=mx.google.com" K C="250 2.0.0 OK r17si9575802lji.231 - gsmtp"
    

    Установка завершена — можно использовать Totum.