Размещение на сервере
Размещение (деплой) — перенос проекта с вашего компьютера на сервер, где его увидят посетители. Встроенный сервер php spark serve для этого не годится: на рабочем сервере сайт обслуживает веб-сервер Apache или Nginx вместе с PHP. Главное — правильно указать корень сайта и настройки.
Корень сайта
Веб-сервер должен смотреть в папку public, а не в папку проекта. Все остальные папки — app, writable, vendor и файл .env — остаются выше корня и из браузера недоступны.
Для Apache ничего писать не нужно: в public уже лежит файл .htaccess, который направляет запросы в index.php. Для Nginx это правило задают в настройках сайта:
server {
server_name example.com;
root /var/www/blog/public;
index index.php;
location / {
try_files $uri $uri/ /index.php$is_args$args;
}
location ~ \.php$ {
include fastcgi_params;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
fastcgi_pass unix:/run/php/php8.3-fpm.sock;
}
}Строка try_files означает: если файла с таким адресом нет, передать запрос в index.php, то есть фреймворку.
Файл .env на сервере
В репозитории файла .env нет, поэтому на сервере его создают вручную:
CI_ENVIRONMENT = production
app.baseURL = 'https://example.com/'
database.default.hostname = localhost
database.default.database = blog
database.default.username = blog_user
database.default.password = strong-passwordВ режиме production подробности ошибок посетителям не показываются, а панель отладки отключена. app.baseURL — настоящий адрес сайта: по нему строятся все ссылки.
Шаги размещения
Команды выполняют на сервере в папке проекта:
git pull
composer install --no-dev --optimize-autoloader
php spark migrate
php spark optimize| Шаг | Зачем |
|---|---|
git pull | Получить свежий код |
composer install --no-dev | Установить пакеты без инструментов разработки |
php spark migrate | Обновить структуру базы данных |
php spark optimize | Закешировать настройки и расположение файлов |
Те же четыре команды повторяют при каждом обновлении сайта.
Права на папку writable
Веб-сервер должен иметь право записи в writable: туда попадают кеш, журналы, сессии и загруженные файлы. На сервере с Linux это делают так:
chown -R www-data:www-data writable
chmod -R 775 writablewww-data — пользователь, от имени которого обычно работает веб-сервер; на вашем сервере имя может быть другим.
Проверка после размещения
| Что проверить | Как |
|---|---|
| Сайт открывается | Главная страница и страница статьи |
| Режим работы | php spark env печатает production |
| Журнал пишется | В writable/logs появляются файлы |
| Закрытые файлы недоступны | Адрес /.env возвращает 404 |
Частая ошибка
Режим development на рабочем сервере показывает любому посетителю текст ошибок с путями к файлам и запросами к базе, а панель отладки — содержимое сессии. Убедитесь, что в .env на сервере стоит CI_ENVIRONMENT = production, а корнем сайта служит папка public, а не папка проекта.