Перейти к содержанию

Предварительные требования#

Для установки системы Sciact необходим сервер (физический сервер или виртуальная машина) с deb-based операционной системой (debian, ubuntu server, astra linux и подобные). Установка Sciact на другие операционные системы возможна, но не тестировалась.

Создание пользователя#

Для работы системы необходимо создать пользователя, из-под которого будет работать система и сервисы (nginx, php).

sudo adduser sciact

Структура директорий на сервере#

Система располагается на сервере в директории инсталляции (для примера - /sites/sciact.catalysis.ru, далее будет обозначаться [sciact]). В директории инсталляции структура папок выглядит следующим образом:

  • current - символическая ссылка (symlink) на директорию с текущим релизом (например, releases/20230523090056). При выкладке нового релиза эта символическая ссылка меняется на директорию нового релиза, обеспечивая zero-time deployment
  • releases - каталог с релизами. Хранится 3 последних релиза (можно настроить в конфигурации сборки приложения). В случае проблем с текущим релизом можно переключиться на предыдущий, изменив символическую ссылку current (на директорию с прошлым релизом)
  • shared - директория с общими данными для всех релизов. содержит в себе:
    • .env - файл с переменными окружения, в котором задается адрес сервера, каталог для загружаемых файлов и т.д.
    • files - директория для загружаемых файлов (текстов публикаций)
    • log - директория для логов приложения
    • profile_pic - директория для аватаров пользователей

Необходимо создать директории releases, shared, в shared создать указанные директории и файл .env директории в shared должны иметь права на запись (пользователю sciact)

Содержимое файла .env (нужно изменить под параметры установки:

APP_URL=https://you.site
APP_ENV=prod
APP_SECRET=make_you_secret_string
DATABASE_URL=mysql://root:@127.0.0.1:3306/db_name
FILE_UPLOAD_DIR=/sites/sciact.catalysis.ru/shared/files

FILE_UPLOAD_DIR - указывается абсолютный путь к директории [sciact]/shared/files

Установка и настройка nginx#

Для установки nginx используйте команды:

sudo apt update
sudo apt install nginx

Для добавление конф. файла sciact нужно:

  • Создать файл /etc/nginx/sites-available/sciact.catalysis.ru.conf (заменить на ваш домен)
  • Создать символическую ссылку этого файла в директорию /etc/nginx/sites-enabled/

Содержимое конф. файла:

server {
    listen 80;
    root /sites/sciact.catalysis.ru/current/web;
    server_name sciact.catalysis.ru;

    access_log          /var/log/nginx/sciact.catalysis.ru .access.log;
    error_log           /var/log/nginx/sciact.catalysis.ru .error.log;

    client_max_body_size        120M;
    client_header_buffer_size   8m;
    client_body_temp_path       /tmp 1 2;
    large_client_header_buffers 8 8m;

    gzip                on;
    gzip_types          text/plain application/javascript application/x-javascript text/javascript text/xml text/css;


    location / {
    try_files $uri /app.php$is_args$args;
    }

    location /files {
    alias       /sites/sciact.catalysis.ru/shared/files;
    internal;
    }

    location ~ ^/app\.php(/|$) {
    fastcgi_pass unix:/run/php/php8.2-fpm.sock;
    fastcgi_split_path_info ^(.+\.php)(/.*)$;

    include fastcgi_params;

    fastcgi_param SCRIPT_FILENAME $realpath_root$fastcgi_script_name;
    fastcgi_param DOCUMENT_ROOT $realpath_root;
    internal;
    }

    location ~ \.php$ {
        return 404;
    }

}

В этом файле нужно заменить пути и название домена на нужные

Для предотвращения несанкционированного доступа к передаваемым данным настоятельно рекомендуется использование ssl-сертификата. Можно использовать как свой сертификат, так и сторонний, например, letsencrypt, но желательно, чтобы он не был самоподписанным. Пример выпуска сертификатов через letsencrypt для nginx - https://www.digitalocean.com/community/tutorials/how-to-secure-nginx-with-let-s-encrypt-on-ubuntu-20-04-ru

Установка mariadb#

Для установки клиента и сервера БД нужно выполнить команды:

sudo apt install mariadb-client mariadb-server
sudo mysql_secure_installation

При выполнении mysql_secure_installation необходимо:

  • Удалить тестовые базы
  • для пользователя root указать пароль root, запретить удаленный вход
  • Подключиться к mariadb клиентом (выполнить команду mysql -uroot -proot) и создать БД с помощью sql-запроса: create database sciact_catalysis_ru (название ЬД указать соответствующее домену сайта, или любым другим)

Установка прочего софта#

sudo apt install zip pv

Установка и настройка php#

Для установки php нужно выполнить следующие команды:

sudo add-apt-repository ppa:ondrej/php
sudo apt install php8.2-bcmath php8.2-cli php8.2-common php8.1-curl php8.2-fpm php8.1-gd php8.2-intl php8.2-mbstring php8.2-mcrypt php8.2-mysql php8.2-opcache php8.2-sqlite3 php8.2-xdebug php8.2-xml php8.2-xsl php8.2-yaml php8.2-zip php8.2-gd php8.2-curl

В файле /etc/php/8.2/fpm/php.ini нужно изменить следующие настройки:

date.timezone = Asia/Novosibirsk #указать желаемый часовой пояс
memory_limit = 256M #общий обьем памяти под один php процесс
post_max_size = 128M #Общий максимальный размер post запроса (нужно для загрузки файлов)
upload_max_filesize=128M #максимальный размер загружаемого файла

В файле /etc/php/8.2/fpm/pool.d/www.conf нужно задать следующие настройки:

[www]
user=sciact ; пользователь, от которого работает php-fpm, например, sciact
group=sciact
listen=/run/php/php8.2-fpm.sock
listen.owner=sciact
Listen.group=sciact
listen.mode=0600

Тестирование окружения#

Для проверки работоспособности окружения (nginx и php) нужно сделать следующее:

  • Создать директорию [sciact]/releases/test
  • В ней создать директорию web, в директории web создать файл app.php следующего содержания:
<?php
phpinfo();
  • В директории [sciact] создать символическую ссылку current, которая будет указывать на [sciact]/releases/test
  • Открыть в браузере сайт sciact

Если все работает правильно, то на странице должна отображаться о установленной версии php

Установка Sciact#

Для установки Sciact в ручном режиме см. Установка обновлений