Encodera

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

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

Оглавление

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

Размещение — перенос проекта с компьютера разработчика на сервер, где его увидят посетители. Кроме копирования файлов нужно настроить веб-сервер, выключить режим отладки и выполнить несколько команд.

Корень сайта

Веб-сервер должен смотреть не в корень проекта, а в папку webroot: тогда файлы настроек и исходный код недоступны по адресу сайта. Все запросы, для которых нет файла, направляют в webroot/index.php. Для Nginx:

server {
    server_name example.com;
    root /var/www/blog/webroot;
    index index.php;
 
    location / {
        try_files $uri $uri/ /index.php?$args;
    }
 
    location ~ \.php$ {
        include fastcgi_params;
        fastcgi_pass unix:/run/php/php8.3-fpm.sock;
        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
    }
}

Для Apache достаточно включить модуль mod_rewrite: файл webroot/.htaccess с нужными правилами уже есть в проекте.

Файлы проекта

cd /var/www
git clone https://example.com/blog.git blog
cd blog
composer install --no-dev --optimize-autoloader

Ключ --no-dev пропускает пакеты для разработки — DebugKit, bake, PHPUnit.

Настройки сервера

Файла config/app_local.php в репозитории нет, на сервере его создают вручную:

// config/app_local.php
return [
    'debug' => false,
 
    'Security' => [
        'salt' => 'своя-длинная-случайная-строка',
    ],
 
    'Datasources' => [
        'default' => [
            'host' => 'localhost',
            'username' => 'blog',
            'password' => 'secret',
            'database' => 'blog',
        ],
    ],
];

При debug равном false посетитель не видит подробностей ошибок. Значение Security.salt на сервере должно быть своим, не таким, как у разработчика.

Права на папки

В папки tmp и logs приложение пишет кеш и журнал, поэтому они должны быть доступны для записи пользователю веб-сервера:

chown -R www-data:www-data tmp logs

База и кеш

bin/cake migrations migrate
bin/cake cache clear_all
bin/cake schema_cache build
КомандаЗачем
migrations migrateСоздать или обновить таблицы
cache clear_allСбросить устаревший кеш
schema_cache buildЗаранее закешировать структуру таблиц

Откройте адрес сайта — должна появиться главная страница.

Обновление

При каждом следующем выпуске повторяют одну и ту же последовательность:

git pull
composer install --no-dev --optimize-autoloader
bin/cake migrations migrate
bin/cake cache clear_all

Удобно записать её в файл-скрипт и запускать одной командой.

Проверочный список

Что проверитьКак
Корень сайта — webrootАдрес /config/app_local.php даёт 404
Отладка выключенаНесуществующий адрес показывает короткую страницу 404
Журнал пишетсяВ logs появляются файлы
Сайт работает по HTTPSАдрес начинается с https://

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

Режим отладки на рабочем сервере показывает любому посетителю текст ошибок с запросами SQL и путями к файлам. Убедитесь, что debug равен false, а пакеты установлены с ключом --no-dev.

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

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