Encodera

Спасибо, что читаете!

Пожертвуйте сайту, мы стараемся ради вас.

Оглавление

Размещение на сервере

Размещение (деплой) — перенос проекта с вашего компьютера на сервер, где его увидят посетители. Встроенный сервер 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 writable

www-data — пользователь, от имени которого обычно работает веб-сервер; на вашем сервере имя может быть другим.

Проверка после размещения

Что проверитьКак
Сайт открываетсяГлавная страница и страница статьи
Режим работыphp spark env печатает production
Журнал пишетсяВ writable/logs появляются файлы
Закрытые файлы недоступныАдрес /.env возвращает 404

Частая ошибка

Режим development на рабочем сервере показывает любому посетителю текст ошибок с путями к файлам и запросами к базе, а панель отладки — содержимое сессии. Убедитесь, что в .env на сервере стоит CI_ENVIRONMENT = production, а корнем сайта служит папка public, а не папка проекта.

Спасибо, что читаете!

Пожертвуйте сайту, мы стараемся ради вас.