Установка и настройка окружения
Это руководство описывает полную установку Платформы на чистый сервер.
Целевое окружение: Rocky Linux 10, Nginx + PHP-FPM. Выполняйте шаги по порядку. Все команды выполняются от имени root, если не указано иное.
Во всех примерах используются следующие подстановочные значения. Замените их на свои реальные значения:
| Обозначение | Описание |
|---|---|
example.com |
домен сайта |
/var/www/example |
корневая директория проекта |
example |
Linux-пользователь, от имени которого работает проект |
example_db |
имя базы данных MySQL |
example_user |
пользователь MySQL |
db-password |
пароль пользователя MySQL |
Шаги установки:
- Требования
- Подготовка сервера
- Web-сервер (Nginx)
- PHP 8.1 и ionCube
- Пул PHP-FPM
- MySQL
- Файлы приложения
- Настройка (.env)
- База данных
- Composer
- Sphinx
- Сервис Vue SSR
- Cron-менеджер
- Отправка почты
- SELinux и firewall
- HTTPS
- Завершение установки
Требования
Перед началом установки вам потребуется:
- Дистрибутив платформы (zip-архив с последней версией).
- Чистый сервер с Rocky Linux 10 и root-доступом.
- Домен с A-записью, указывающей на IP-адрес сервера. Домен уже должен указывать на сервер — это требуется на шаге HTTPS.
Программный стек, устанавливаемый в этом руководстве:
| Компонент | Версия | Назначение |
|---|---|---|
| Nginx | последняя стабильная | web-сервер |
| PHP (FPM) | 8.1 | среда выполнения приложения |
| ionCube Loader | 15+ | требуется для запуска кода платформы |
| MySQL | 8.0 / 8.4 | база данных |
| Sphinx | 3.7.1 | поисковый движок |
| Node.js | 22 | серверный рендеринг Vue (SSR) |
| Composer | последняя | PHP-зависимости |
| Postfix | последняя | отправка почты |
Обязательные PHP расширения: curl, dom, fileinfo, gd, gettext, iconv, intl, json, libxml, mbstring, openssl, pcntl, pdo, pdo_mysql, posix, simplexml, spl, xmlreader, xmlwriter, zip, zlib.
Необязательные PHP расширения: imagick (улучшенные миниатюры изображений), memcached и apcu (драйверы кеша).
Обязательная настройка PHP: short_open_tag = On.
Подготовка сервера
Обновите систему и подключите репозитории пакетов (EPEL, Remi, CRB):
dnf update -y
dnf install -y epel-release
dnf config-manager --set-enabled crb
dnf install -y https://rpms.remirepo.net/enterprise/remi-release-10.rpm
dnf install -y wget unzip tar policycoreutils-python-utils
Создайте Linux-пользователя, который будет владельцем проекта и от имени которого проект будет работать:
groupadd example
useradd -m -d /var/www/example -g example -s /bin/bash example
chmod 755 /var/www/example
Не запускайте проект от имени root или пользователя nginx. У каждого сайта должен быть свой пользователь.
Web-сервер (Nginx)
dnf install -y nginx
Создайте файл /etc/nginx/conf.d/tuning.conf с настройками, которые нужны платформе (значение client_max_body_size по умолчанию — 1 МБ, этого мало для загрузки файлов):
client_max_body_size 50m;
gzip on;
gzip_static on;
gzip_min_length 1000;
gzip_comp_level 5;
gzip_proxied any;
gzip_vary on;
gzip_types text/plain text/css text/xml application/json application/javascript
application/xml application/xml+rss image/svg+xml
application/vnd.ms-fontobject font/ttf font/woff font/woff2;
Создайте конфигурацию сайта /etc/nginx/conf.d/example.com.conf. В архиве есть минимальный пример в /public_html/nginx.conf; конфигурация ниже покрывает его и добавляет кеширование, правила безопасности и обработчик PHP:
server {
listen 80;
listen [::]:80;
server_name example.com;
root /var/www/example/public_html;
access_log /var/log/nginx/example.com-access.log;
error_log /var/log/nginx/example.com-error.log error;
index index.php;
# страницы ошибок приложения
error_page 401 /index.php?bff=errors&errno=401;
error_page 403 /index.php?bff=errors&errno=403;
error_page 404 /index.php?bff=errors&errno=404;
error_page 500 /index.php?bff=errors&errno=500;
error_page 501 /index.php?bff=errors&errno=501;
error_page 502 /index.php?bff=errors&errno=502;
error_page 504 /index.php?bff=errors&errno=504;
location = /robots.txt { access_log off; log_not_found off; try_files $uri @rewrites; }
# запрет доступа к скрытым и резервным файлам
location ~ /\. { deny all; access_log off; log_not_found off; }
location ~ ~$ { deny all; access_log off; log_not_found off; }
# статические файлы
location ~* \.(js|css|png|jpg|jpeg|gif|ico|swf|flv|eot|ttf|woff|woff2|pdf|xls|htc)$ {
add_header Pragma "public";
add_header Cache-Control "public, must-revalidate, proxy-revalidate";
add_header Access-Control-Allow-Origin '*';
access_log off;
log_not_found off;
expires 360d;
try_files $uri @rewrites;
}
# запрет выполнения PHP в директориях загрузок
location ~* ^/(files|styles|css|img|rss|seo)/.*\.(php|php2|php3|php4|php5)$ {
deny all;
}
if ($request_uri ~ " ") { return 404; }
# проверка домена при выпуске сертификата (шаг HTTPS)
location ^~ /.well-known/acme-challenge/ {
allow all;
default_type "text/plain";
}
# обработчик PHP
location ~* \.php$ {
try_files $uri =404;
fastcgi_pass unix:/var/run/php-fpm/example.sock;
fastcgi_index index.php;
fastcgi_split_path_info ^(.+\.php)(.*)$;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
fastcgi_param SCRIPT_NAME $fastcgi_script_name;
fastcgi_param PATH_INFO $fastcgi_path_info;
include fastcgi_params;
}
# зона для защищенных загрузок (X-Accel-Redirect)
location ^~ /files/partial/ {
internal;
alias /var/www/example/public_html/files/;
}
# фронт-контроллер
location / {
try_files $uri $uri/ @rewrites;
}
location @rewrites {
rewrite ^ /index.php last;
}
}
# редирект с www на домен без www
server {
listen 80;
listen [::]:80;
server_name www.example.com;
location ^~ /.well-known/acme-challenge/ {
allow all;
default_type "text/plain";
}
location / {
return 301 http://example.com$request_uri;
}
}
Проверьте конфигурацию и запустите Nginx:
nginx -t
systemctl enable --now nginx
PHP 8.1 и ionCube
Установите PHP 8.1 из репозитория Remi:
dnf module reset -y php
dnf module enable -y php:remi-8.1
dnf install -y php php-fpm php-cli php-pdo php-mysqlnd php-gd php-mbstring \
php-xml php-intl php-zip php-process php-opcache
Если другая версия PHP уже была установлена из системного репозитория, сначала удалите ее: dnf remove -y php php-common php-fpm, затем повторите команды выше.
Проверьте версию и обязательные расширения:
php -v
for e in curl dom fileinfo gd gettext iconv intl json libxml mbstring openssl \
pcntl pdo pdo_mysql posix simplexml spl xmlreader xmlwriter zip zlib; do
php -r "exit(extension_loaded('$e') ? 0 : 1);" || echo "MISSING: $e"
done
Цикл не должен ничего вывести. Если расширение отсутствует, найдите и установите его пакет (поможет dnf provides 'php-*').
Отредактируйте /etc/php.ini и установите:
short_open_tag = On
memory_limit = 128M
post_max_size = 40M
upload_max_filesize = 40M
date.timezone = Europe/Berlin ; укажите ваш часовой пояс
display_errors = Off
log_errors = On
ionCube Loader
Код платформы защищен ionCube и не работает без загрузчика:
cd /tmp
wget https://downloads.ioncube.com/loader_downloads/ioncube_loaders_lin_x86-64.tar.gz
tar xzf ioncube_loaders_lin_x86-64.tar.gz
cp ioncube/ioncube_loader_lin_8.1.so /usr/lib64/php/modules/
restorecon /usr/lib64/php/modules/ioncube_loader_lin_8.1.so
echo 'zend_extension = /usr/lib64/php/modules/ioncube_loader_lin_8.1.so' > /etc/php.d/01-ioncube.ini
rm -rf /tmp/ioncube /tmp/ioncube_loaders_lin_x86-64.tar.gz
На сервере с архитектурой ARM используйте ioncube_loaders_lin_aarch64.tar.gz.
Проверьте — вывод должен содержать строку “with the ionCube PHP Loader”:
php -v
Пул PHP-FPM
Приложение работает в собственном пуле PHP-FPM. Процесс пула работает от имени пользователя проекта (example), поэтому приложение может записывать в свои файлы без дополнительных прав. Nginx обращается к пулу через unix-сокет.
Создайте /etc/php-fpm.d/example.conf:
[example]
user = example
group = nginx
listen = /var/run/php-fpm/example.sock
listen.owner = example
listen.group = nginx
listen.mode = 0660
pm = dynamic
pm.max_children = 25
pm.start_servers = 5
pm.min_spare_servers = 5
pm.max_spare_servers = 25
pm.max_requests = 200
chdir = /
php_admin_value[open_basedir] = /var/www/example:/tmp/
php_admin_value[sendmail_path] = /usr/sbin/sendmail -t -i -f noreply@example.com
php_admin_value[upload_tmp_dir] = /var/www/example/tmp
php_admin_value[session.save_path] = /var/www/example/tmp
php_admin_value[display_errors] = stderr
php_admin_value[log_errors] = On
Примечания:
pm.max_childrenограничивает количество одновременно работающих PHP-процессов. Подбирайте значение по доступной памяти (примерно 50–100 МБ на процесс).open_basedirограничивает доступ PHP к файлам директорией проекта.sendmail_pathзадает адрес отправителя исходящей почты — укажите ваш домен в адресеnoreply@.- Путь к сокету должен совпадать с
fastcgi_passв конфигурации сайта Nginx.
Запустите PHP-FPM:
systemctl enable --now php-fpm
MySQL
dnf install -y mysql-server
Rocky Linux 10 предоставляет MySQL 8.4. Также подойдет любая сборка, совместимая с MySQL 8.0.
Создайте /etc/my.cnf.d/zz-platform.cnf:
[mysqld]
# платформа не поддерживает строгий режим SQL
sql_mode =
max_allowed_packet = 128M
# требуется для подключения индексатора Sphinx (только для MySQL 8.4, на 8.0 удалите эту строку)
mysql_native_password = ON
Запустите MySQL и установите пароль root:
systemctl enable --now mysqld
mysql_secure_installation
Убедитесь, что строгий режим выключен — запрос должен вернуть пустое значение:
mysql -u root -p -e "SELECT @@sql_mode;"
Файлы приложения
Распакуйте дистрибутив в корень проекта так, чтобы файл bff.php оказался непосредственно в /var/www/example:
cd /var/www/example
unzip /path/to/platform_archive.zip
Установите владельца и права:
chown -R example:example /var/www/example
find /var/www/example -type d -exec chmod 755 {} +
find /var/www/example -type f -exec chmod 644 {} +
mkdir -p /var/www/example/tmp
chown example:nginx /var/www/example/tmp
chmod 775 /var/www/example/tmp
Директория tmp используется для загрузок и PHP-сессий (см. конфигурацию пула выше).
Так как пул PHP-FPM работает от имени владельца файлов (example), директориям приложения не нужны права на запись для группы или для всех. Директории, в которые приложение пишет во время работы:
/custom/— модифицированные файлы расширений/files/— системные файлы: кеш, лог-файлы, файлы миграций базы данных/plugins/— плагины/public_html/custom/— модифицированные статические файлы/public_html/files/— публичные файлы (изображения, …)/public_html/plugins/— статические файлы плагинов/public_html/themes/— статические файлы тем/themes/— темы
На сервере с включенным SELinux этим директориям также нужны метки SELinux — см. SELinux и firewall.
Настройка (.env)
Основные настройки окружения находятся в файле .env в корне проекта. Файл системных настроек /config/sys.php читает их, поэтому при стандартной установке достаточно редактировать только .env.
cd /var/www/example
cp .env.example .env
chown example:example .env
chmod 600 .env
Сгенерируйте уникальный ключ шифрования для этой установки:
echo "CRYPT_KEY=base64:$(openssl rand -base64 32)"
Заполните .env (добавьте строки, которых нет в .env.example):
HOST_NAME=example.com
MYSQL_HOST=localhost
MYSQL_PORT=3306
MYSQL_DATABASE=example_db
MYSQL_USER=example_user
MYSQL_PASSWORD=db-password
CRYPT_KEY=base64:... # значение, сгенерированное выше
SPHINX_ENABLED=1
SPHINX_HOST=127.0.0.1
SPHINX_PORT=9306
SPHINX_VERSION=3.7.1
VUE_SSR_HOST=127.0.0.1
VUE_SSR_PORT=13715
VUE_SSR_WORKERS=0
HOST_NAME— домен проекта, безwwwи без протокола.- Значения
MYSQL_*должны совпадать с базой данных, создаваемой на следующем шаге. CRYPT_KEYиспользуется для шифрования данных в базе. Установите его один раз, до первого запуска, и никогда не меняйте — после смены ключа уже зашифрованные данные станут нечитаемыми. Храните копию ключа вместе с резервными копиями.SPHINX_VERSIONдолжна совпадать с установленной версией Sphinx (в этом руководстве — 3.7.1). Остальные значенияSPHINX_*иVUE_SSR_*соответствуют сервисам, настраиваемым далее в этом руководстве; оставьте значения по умолчанию.
Настройки, которых нет в .env (название сайта и другие), редактируются в /config/sys.php или в админ-панели. См. настройки и подключение к базе данных.
База данных
Создайте базу данных и пользователя:
mysql -u root -p
CREATE DATABASE example_db CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci;
CREATE USER 'example_user'@'localhost' IDENTIFIED WITH mysql_native_password BY 'db-password';
GRANT ALL PRIVILEGES ON example_db.* TO 'example_user'@'localhost';
FLUSH PRIVILEGES;
EXIT;
Примечания:
- Требуется кодировка
utf8mb4. mysql_native_passwordтребуется потому, что индексатор Sphinx подключается к базе данных с клиентской библиотекой, которая не поддерживает более новый методcaching_sha2_password. На MySQL 8.4 для этого нужна настройкаmysql_native_password = ONв конфигурации сервера (установлена на шаге MySQL).
Импортируйте начальные данные из архива. Файл категорий зависит от языка — импортируйте файл, соответствующий языку вашего сайта (en или ru):
cd /var/www/example
mysql -u example_user -p example_db < install/install.sql
mysql -u example_user -p example_db < install/install.categories.ru.sql
mysql -u example_user -p example_db < install/install.regions.sql
Composer
Установите Composer:
cd /tmp
php -r "copy('https://getcomposer.org/installer', 'composer-setup.php');"
php composer-setup.php --install-dir=/usr/local/bin --filename=composer
rm composer-setup.php
Установите внешние библиотеки. Composer запускается в поддиректории /bff проекта, от имени пользователя проекта (не запускайте от root):
cd /var/www/example/bff
sudo -u example /usr/local/bin/composer install --no-dev
Если Composer останавливается с ошибкой памяти, запустите его так: sudo -u example php -d memory_limit=1024M /usr/local/bin/composer install --no-dev.
Sphinx
Sphinx обеспечивает поиск на сайте. В этом руководстве устанавливается версия 3.7.1. См. также отдельную страницу о настройке Sphinx.
Установите бинарные файлы и создайте пользователя sphinx (он добавляется в группу example, чтобы индексатор мог записывать индексные файлы проекта):
groupadd sphinx
useradd -r -g sphinx -G example -d /var/lib/sphinx -s /sbin/nologin sphinx
cd /tmp
wget https://sphinxsearch.com/files/sphinx-3.7.1-da9f8a4-linux-amd64.tar.gz
tar xzf sphinx-3.7.1-da9f8a4-linux-amd64.tar.gz
cp sphinx-3.7.1/bin/* /usr/bin/
mkdir -p /etc/sphinx /var/lib/sphinx /var/log/sphinx
chown sphinx:sphinx /var/lib/sphinx /var/log/sphinx
mkdir -p /var/www/example/files/sphinx
chown example:example /var/www/example/files/sphinx
chmod 775 /var/www/example/files/sphinx
На сервере с архитектурой ARM используйте архив linux-aarch64.
Сгенерируйте конфигурацию Sphinx проекта (создает /var/www/example/config/sphinx.conf; выполняйте команду повторно при изменении настроек подключения к базе данных):
cd /var/www/example/public_html
sudo -u example php index.php bff=sphinx
Создайте системную конфигурацию. Скопируйте шаблон, поставляемый с платформой, и укажите в нем проект:
cp /var/www/example/config/sphinx.conf.global /etc/sphinx/sphinx.conf
chmod 755 /etc/sphinx/sphinx.conf
Отредактируйте /etc/sphinx/sphinx.conf — в блоке files=(...) оставьте одну строку с реальным путем к конфигурации проекта:
files=(
"/var/www/example/config/sphinx.conf"
)
Этот файл — скрипт: Sphinx выполняет его и читает вывод как конфигурацию. Это позволяет одному экземпляру Sphinx обслуживать несколько проектов.
Выполните первоначальную индексацию (должна завершиться без ошибок):
sudo -u sphinx indexer --config /etc/sphinx/sphinx.conf --all
Создайте systemd-сервис /etc/systemd/system/searchd.service:
[Unit]
Description=Sphinx search engine (searchd)
After=network.target
[Service]
Type=forking
PIDFile=/var/run/sphinx/searchd.pid
User=sphinx
Group=sphinx
RuntimeDirectory=sphinx
ExecStart=/usr/bin/searchd --config /etc/sphinx/sphinx.conf
Restart=always
RestartSec=30
[Install]
WantedBy=multi-user.target
systemctl daemon-reload
systemctl enable --now searchd
Настройте ротацию индексов — скопируйте скрипт, поставляемый с платформой, и запускайте его из cron каждые 5 минут от имени пользователя sphinx:
cp /var/www/example/config/sphinx_rotate.sh /etc/sphinx/
chown sphinx:sphinx /etc/sphinx/sphinx_rotate.sh
chmod 755 /etc/sphinx/sphinx_rotate.sh
crontab -u sphinx -e
*/5 * * * * /etc/sphinx/sphinx_rotate.sh /var/www/example
Включите Sphinx как поисковый движок объявлений:
cd /var/www/example/public_html
sudo -u example php index.php bff=config key=listings.search.engine value=sphinx
Сервис Vue SSR
Платформа рендерит некоторые части страниц на сервере с помощью Vue (SSR). Для этого нужны Node.js 22 и фоновый сервис.
Установите Node.js 22:
curl -fsSL https://rpm.nodesource.com/setup_22.x | bash -
dnf install -y nodejs
Установите JavaScript-зависимости (от имени пользователя проекта, включая dev-зависимости — они нужны для запуска SSR):
cd /var/www/example
sudo -u example npm install
Создайте systemd-сервис /etc/systemd/system/bffssr.service:
[Unit]
Description=BFF Vue SSR
After=network.target
[Service]
Type=forking
ExecStart=/usr/bin/npm run ssr
WorkingDirectory=/var/www/example
User=example
Group=example
StandardInput=null
StandardOutput=journal
StandardError=journal
Restart=always
[Install]
WantedBy=multi-user.target
systemctl daemon-reload
systemctl enable --now bffssr
Убедитесь, что сервис слушает порт, указанный в .env (VUE_SSR_PORT, по умолчанию 13715):
ss -tlnp | grep 13715
Cron-менеджер
Cron-менеджер выполняет все фоновые задачи приложения. Настройте его запуск каждую минуту от имени пользователя проекта (не от root):
dnf install -y cronie
systemctl enable --now crond
crontab -u example -e
* * * * * /usr/bin/php -q /var/www/example/public_html/index.php bff=cron-manager
Примечания:
- Расширение
pcntlдолжно быть доступно в режиме CLI (установлено ранее с пакетомphp-process) — cron-менеджер использует его для параллельного выполнения задач. - Выполняемые задачи записываются в лог-файл
/files/logs/cron.logвнутри проекта.
Отправка почты
Приложение отправляет почту через локальную программу sendmail. Ее предоставляет Postfix:
dnf install -y postfix
systemctl enable --now postfix
Установите адреса, используемые приложением:
cd /var/www/example/public_html
sudo -u example php index.php bff=config key=mail.noreply value=noreply@example.com
sudo -u example php index.php bff=config key=mail.admin value=admin@example.com
Чтобы письма попадали во входящие (а не в спам), создайте для домена следующие DNS-записи:
- SPF — TXT-запись:
v=spf1 a mx ~all - DKIM — подписывайте исходящую почту через OpenDKIM и опубликуйте публичный ключ в TXT-записи
- DMARC — TXT-запись
_dmarc.example.com:v=DMARC1; p=none; - PTR — попросите хостинг-провайдера установить обратную DNS-запись (PTR) IP-адреса сервера на имя хоста сервера
Настройка OpenDKIM выходит за рамки этого руководства, но для рабочих сайтов она настоятельно рекомендуется.
SELinux и firewall
SELinux
Проверьте режим:
getenforce
Если результат — Enforcing, разрешите web-приложению запись в его рабочие директории, а также сетевые подключения (PHP подключается к Sphinx и к сервису SSR) и отправку почты:
for d in files tmp config custom plugins themes bff/vendor \
public_html/files public_html/custom public_html/plugins public_html/themes; do
semanage fcontext -a -t httpd_sys_rw_content_t "/var/www/example/$d(/.*)?"
done
restorecon -R /var/www/example
setsebool -P httpd_can_sendmail on
setsebool -P httpd_can_network_connect on
Firewall
Откройте web-порты и порт почты:
firewall-cmd --permanent --add-service=http --add-service=https --add-service=smtp
firewall-cmd --reload
HTTPS
Выпустите бесплатный сертификат Let’s Encrypt с помощью certbot. Домен (и поддомен www) уже должны указывать на этот сервер, а HTTP-сайт из шага Nginx должен быть доступен — certbot проверяет домен через location /.well-known/acme-challenge/.
dnf install -y certbot
certbot certonly -m admin@example.com --agree-tos --webroot \
-w /var/www/example/public_html \
-d example.com -d www.example.com \
--deploy-hook "systemctl reload nginx"
Включите автоматическое продление:
systemctl enable --now certbot-renew.timer
Обновите /etc/nginx/conf.d/example.com.conf. Серверы на порту 80 теперь только перенаправляют на HTTPS, а конфигурация сайта переносится в сервер на порту 443:
server {
listen 80;
listen [::]:80;
server_name example.com www.example.com;
root /var/www/example/public_html;
location ^~ /.well-known/acme-challenge/ {
allow all;
default_type "text/plain";
}
location / {
return 301 https://example.com$request_uri;
}
}
# редирект с www на домен без www
server {
listen 443 ssl;
listen [::]:443 ssl;
http2 on;
server_name www.example.com;
ssl_certificate /etc/letsencrypt/live/example.com/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/example.com/privkey.pem;
ssl_protocols TLSv1.2 TLSv1.3;
location / {
return 301 https://example.com$request_uri;
}
}
server {
listen 443 ssl;
listen [::]:443 ssl;
http2 on;
ssl_certificate /etc/letsencrypt/live/example.com/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/example.com/privkey.pem;
ssl_protocols TLSv1.2 TLSv1.3;
add_header Strict-Transport-Security 'max-age=31536000';
# ... сюда переносится вся конфигурация сайта из HTTP-примера:
# server_name, root, логи, index, error_page, все блоки location
}
nginx -t && systemctl reload nginx
Переключите приложение в режим работы только по HTTPS:
cd /var/www/example/public_html
sudo -u example php index.php bff=config key=https.only value=1
sudo -u example php index.php bff=config key=https.redirect value=1
Эти же настройки доступны в админ-панели в разделе настроек сайта.
Если у вас сертификат другого поставщика, разместите цепочку сертификатов и ключ на сервере и укажите пути к ним в строках ssl_certificate / ssl_certificate_key; остальная конфигурация не меняется.
Завершение установки
Проверьте, что все сервисы работают:
systemctl --no-pager status nginx php-fpm mysqld searchd bffssr crond postfix
Откройте https://example.com — сайт должен загрузиться. Затем откройте админ-панель: https://example.com/admin/.
Логин администратора — admin. Чтобы установить пароль администратора:
- Создайте файл
/files/admin_password_recovery.txt(в корне проекта), содержащий новый пароль администратора. - Авторизуйтесь в админ-панели с логином
adminи паролем из файла. - После успешной авторизации пароль сохраняется, а файл автоматически удаляется.
Под администратором подразумевается пользователь из группы “Главный администратор” (идентификатор пользователя #1). Эта же процедура восстанавливает доступ, если пароль утерян.
Состояние системы
Для проверки корректности настроек сервера и окружения перейдите в раздел “Настройки сайта / Состояние системы” в админ-панели и выполните проверку, нажав кнопку “Проверить повторно”. Исправьте ошибки, о которых сообщает проверка — пока есть критические ошибки, установка обновлений платформы недоступна.