Настройка веб-сервера для Flute CMS
Правильная настройка веб-сервера критически важна для корректной работы Flute CMS. В этом руководстве рассмотрены все популярные панели управления и серверы.
Важно! Корневая папка сайта должна указывать на папку public/
из архива Flute CMS, а не на корень проекта!
Панели управления хостингом
FastPanel
FastPanel
FastPanel - современная панель управления хостингом с удобным интерфейсом.
Войдите в FastPanel
- Откройте браузер и перейдите по адресу вашей панели (обычно
https://ваш-домен:8888
) - Введите логин и пароль администратора
Создайте сайт
- В главном меню выберите “Сайты”
- Нажмите “Добавить сайт”
- Заполните поля:
- Домен: ваш домен (например,
example.com
) - Версия PHP: выберите 8.2 или выше
- Корневая папка: оставьте по умолчанию или укажите
public_html
- Домен: ваш домен (например,
Настройте PHP
- Перейдите в раздел “PHP” для вашего сайта
- Убедитесь, что включены расширения:
opcache
pdo_mysql
gd
bcmath
json
ioncube
mbstring
simplexml
zip
curl
gmp
Загрузите файлы Flute CMS
- В разделе “Файлы” перейдите в папку сайта
- Загрузите архив Flute CMS
- Распакуйте архив
- Важно: Переместите содержимое папки
public/
в корень сайта, а остальные файлы - в папку выше корня
Настройте Document Root
- В настройках сайта найдите “Document Root”
- Укажите путь к папке
public/
(например,/home/user/domains/example.com/public
) - Сохраните изменения
Создайте базу данных
- Перейдите в раздел “Базы данных”
- Нажмите “Создать базу данных”
- Заполните:
- Имя базы:
flute_cms
- Пользователь: создайте нового пользователя
- Пароль: сгенерируйте надёжный пароль
- Имя базы:
- Запишите данные для подключения
В FastPanel обычно не требуется дополнительная настройка .htaccess - всё работает автоматически.
Настройка веб-серверов напрямую
Этот раздел предназначен для опытных пользователей, которые хотели бы настроить веб-сервер напрямую. Если вы не знаете, что делаете, лучше используйте панели управления хостингом.
Apache
Apache
Конфигурация для Apache веб-сервера.
Виртуальный хост
Создайте файл конфигурации виртуального хоста:
<VirtualHost *:80>
ServerName example.com
ServerAlias www.example.com
DocumentRoot /var/www/flute-cms/public
<Directory /var/www/flute-cms/public>
AllowOverride All
Require all granted
# Включить mod_rewrite
RewriteEngine On
# Обработка всех запросов через index.php
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php [QSA,L]
</Directory>
# Запретить доступ к служебным папкам
<Directory /var/www/flute-cms/storage>
Require all denied
</Directory>
<Directory /var/www/flute-cms/config>
Require all denied
</Directory>
# Логи
ErrorLog ${APACHE_LOG_DIR}/flute-cms-error.log
CustomLog ${APACHE_LOG_DIR}/flute-cms-access.log combined
</VirtualHost>
SSL конфигурация
Для HTTPS добавьте:
<VirtualHost *:443>
ServerName example.com
ServerAlias www.example.com
DocumentRoot /var/www/flute-cms/public
# SSL настройки
SSLEngine on
SSLCertificateFile /path/to/certificate.crt
SSLCertificateKeyFile /path/to/private.key
SSLCertificateChainFile /path/to/chain.crt
# Остальная конфигурация аналогична HTTP
<Directory /var/www/flute-cms/public>
AllowOverride All
Require all granted
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php [QSA,L]
</Directory>
</VirtualHost>
Файл .htaccess
Убедитесь, что в папке public/
есть файл .htaccess
:
<IfModule mod_rewrite.c>
RewriteEngine On
# Перенаправление на HTTPS (опционально)
# RewriteCond %{HTTPS} off
# RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]
# Обработка запросов
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php [QSA,L]
</IfModule>
# Безопасность
<Files "*.env">
Require all denied
</Files>
<Files "composer.*">
Require all denied
</Files>
# Кэширование статических файлов
<IfModule mod_expires.c>
ExpiresActive On
ExpiresByType text/css "access plus 1 month"
ExpiresByType application/javascript "access plus 1 month"
ExpiresByType image/png "access plus 1 month"
ExpiresByType image/jpg "access plus 1 month"
ExpiresByType image/jpeg "access plus 1 month"
ExpiresByType image/gif "access plus 1 month"
ExpiresByType image/svg+xml "access plus 1 month"
</IfModule>
Проверка конфигурации
После настройки веб-сервера выполните следующие проверки:
1. Проверка доступности
Откройте ваш сайт в браузере. Вы должны увидеть:
- Страницу установки Flute CMS (если установка не завершена)
- Главную страницу сайта (если установка завершена)
2. Проверка PHP
Создайте временный файл info.php
в корне сайта:
<?php
phpinfo();
?>
Откройте https://ваш-сайт.com/info.php
и проверьте:
- Версию PHP (должна быть 8.2+)
- Наличие всех необходимых расширений
- Настройки Opcache
Удалите файл info.php
после проверки для безопасности!
3. Проверка прав доступа
Убедитесь, что веб-сервер может записывать в папки:
storage/
storage/logs/
storage/app/cache/
public/uploads/
4. Проверка .htaccess / URL rewriting
Попробуйте открыть несуществующую страницу (например, /test
). Вы должны увидеть:
- 404 страницу Flute CMS
- Или страницу установки
Если видите ошибку 404 веб-сервера, значит URL rewriting настроен неправильно.
Возможные проблемы
Ошибка 500 Internal Server Error
Причины:
- Неправильные права доступа
- Отсутствующие PHP расширения
- Ошибки в .htaccess
- Недостаточно памяти PHP
Решение:
- Проверьте логи веб-сервера
- Включите отображение ошибок PHP
- Проверьте права доступа (755 или 777 для storage/)
- Увеличьте memory_limit в PHP
Ошибка 404 Not Found
Причины:
- Неправильный Document Root
- Не работает URL rewriting
- Отсутствует index.php
Решение:
- Проверьте, что Document Root указывает на папку
public/
- Убедитесь, что mod_rewrite включён (Apache) или try_files настроен (Nginx)
- Проверьте наличие файла
public/index.php
Белая страница
Причины:
- Ошибки PHP
- Недостаточно памяти
- Отсутствующие зависимости
Решение:
- Включите отображение ошибок PHP
- Проверьте логи PHP
- Убедитесь, что папка
vendor/
существует и содержит зависимости
Проблемы с загрузкой файлов
Причины:
- Неправильные права доступа
- Ограничения PHP на загрузку файлов
Решение:
- Установите права 755 или 777 на
public/uploads/
- Проверьте настройки
upload_max_filesize
иpost_max_size
в PHP - Убедитесь, что
file_uploads = On
в PHP
Если проблемы не решаются, обратитесь за помощью в Discord сообщество или создайте issue на GitHub .
Оптимизация производительности
После настройки веб-сервера рекомендуется:
- Включить Opcache для ускорения PHP
- Настроить кэширование статических файлов
- Включить сжатие (gzip/brotli)
Подробнее об оптимизации читайте в разделе Оптимизация производительности.