Размещение на сервере
Приложение, которое работает на вашем компьютере, нужно перенести на сервер, чтобы его увидели посетители. Шаги одинаковы почти для любого хостинга с доступом по SSH.
Что нужно на сервере
- PHP той же версии, что и при разработке, с расширениями
mbstring,pdo,openssl,fileinfo; - Composer;
- база данных — MySQL или PostgreSQL;
- веб-сервер Nginx или Apache.
Корень сайта — папка public
Веб-сервер должен смотреть в папку public, а не в корень проекта. Иначе посетитель сможет открыть файл .env с паролями. Для Nginx это выглядит так:
server {
server_name example.com;
root /var/www/blog/public;
index index.php;
location / {
try_files $uri $uri/ /index.php?$query_string;
}
location ~ \.php$ {
fastcgi_pass unix:/run/php/php8.4-fpm.sock;
fastcgi_param SCRIPT_FILENAME $realpath_root$fastcgi_script_name;
include fastcgi_params;
}
}Код и зависимости
git clone https://github.com/you/blog.git /var/www/blog
cd /var/www/blog
composer install --no-dev --optimize-autoloaderФлаг --no-dev не ставит пакеты для разработки, --optimize-autoloader ускоряет загрузку классов.
Файл .env
На сервере создают свой .env — в репозитории его нет:
APP_ENV=production
APP_DEBUG=false
APP_URL=https://example.com
DB_CONNECTION=mysql
DB_DATABASE=blog
DB_USERNAME=blog
DB_PASSWORD=secretКлюч приложения создаёт команда php artisan key:generate. Он шифрует сессии и куки — не теряйте и не меняйте его.
Подготовка
php artisan migrate --force
php artisan storage:link
php artisan config:cache
php artisan route:cache
php artisan view:cacheФлаг --force нужен, потому что в рабочем режиме Laravel просит подтверждение миграций. Команды cache собирают настройки, маршруты и шаблоны в готовые файлы — сайт отвечает быстрее.
Папки storage и bootstrap/cache должны быть доступны веб-серверу для записи.
Обновление
При каждом обновлении повторяют одну и ту же последовательность:
git pull
composer install --no-dev --optimize-autoloader
php artisan migrate --force
php artisan config:cache
php artisan route:cache
php artisan view:cacheЭти команды записывают в скрипт, чтобы не пропустить шаг.
Частая ошибка
APP_DEBUG=true на рабочем сервере показывает любому посетителю страницу ошибки с фрагментами кода, запросами и значениями настроек. Проверьте эту строку первой. И помните: после изменения .env нужно заново выполнить php artisan config:cache, иначе приложение продолжит работать со старыми настройками.