Encodera

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

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

Оглавление

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

Приложение, которое работает на вашем компьютере, нужно перенести на сервер, чтобы его увидели посетители. Шаги одинаковы почти для любого хостинга с доступом по 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, иначе приложение продолжит работать со старыми настройками.

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

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