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