Предварительные требования#
Для установки системы 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 в ручном режиме см. Установка обновлений