Laravel
1. Проєкт
- Створіть проєкт з обробником PHP (версія stable), кореневий каталог —
src/public. - Команда збірки:
Вона виконується після кожного деплою і кнопкою «Зібрати».cd src && composer install --no-dev --optimize-autoloader && php artisan migrate --force && php artisan optimize - Підключіть репозиторій у блоці Git: адреса, гілка, каталог
src; для приватного репозиторію додайте ключ деплою (як).
2. Змінні оточення
Laravel читає налаштування зі змінних середовища, тож файл .env не обов’язковий: впишіть у блок «Змінні оточення» щонайменше таке:
APP_ENV=production
APP_DEBUG=false
APP_KEY=base64:… # згенеруйте: php artisan key:generate --show
APP_URL=https://ваш-домен
LOG_CHANNEL=stderr # логи — у вкладку «Логи»
DB_CONNECTION=mysql
DB_HOST=хост із картки бази
DB_PORT=порт із картки бази
DB_DATABASE=ім’я бази
DB_USERNAME=користувач
DB_PASSWORD=пароль
SESSION_DRIVER=database # або file
CACHE_STORE=database # Laravel 10: CACHE_DRIVER; або file
QUEUE_CONNECTION=database
Ключ застосунку: у «Терміналі» cd src && php artisan key:generate --show і скопіюйте результат в APP_KEY. Базу створіть у розділі «Бази даних» → «База для цього проєкту».
src/.env через «Файли»: він не входить у репозиторій і залишається після деплоїв. Не кладіть .env у репозиторій.3. Перший деплой
Натисніть «Деплой». Панель забере гілку, виконає команду збірки (Composer, міграції, кеш конфігурації) і перезапустить проєкт. Крок і час видно в рядку «Деплой», лог — кнопкою «Вивід». Після цього відкрийте сайт.
Один раз після першого деплою в «Терміналі»:
cd src
php artisan storage:link
4. HTTPS і довіра до проксі
TLS завершує проксі панелі, а вебсервер контейнера передає PHP ознаки захищеного з’єднання ($_SERVER['HTTPS']), тож request()->isSecure(), url(), редиректи і підписані адреси вже з https:// — довіра до проксі для цього не потрібна. Достатньо APP_URL=https://ваш-домен зі змінних оточення (розділ 2).
Довіряти проксі треба лише заради адреси відвідувача: без цього request()->ip() (журнали, обмеження частоти запитів) бачить адресу проксі, а не клієнта. Laravel 11 і новіші, bootstrap/app.php:
->withMiddleware(function (Middleware $middleware) {
$middleware->trustProxies(at: '*');
})
Laravel 10, app/Http/Middleware/TrustProxies.php: protected $proxies = '*';
5. Планувальник і черги
Блок «Cron і процеси»:
- Cron для планувальника: розклад
* * * * *, командаcd src && php artisan schedule:run. - Фоновий процес для черг:
cd src && php artisan queue:work --sleep=3 --tries=3 --max-time=3600. Панель перезапускає процес після завершення, тож воркер сам підхопить код після деплою.
6. Якщо щось не так
- 500 після деплою. «Вивід» деплою або «Логи»: найчастіше впала міграція або бракує змінної.
APP_DEBUG=trueтимчасово покаже помилку на сторінці. - «No application encryption key». Не заданий
APP_KEY. - Mixed content, редиректи на http.
APP_URLбезhttps://(розділ 2). - Composer не вистачає пам’яті. У команді збірки:
COMPOSER_MEMORY_LIMIT=-1 composer install …; великим проєктам потрібен тариф із більшою пам’яттю. - Файли зі storage не відкриваються. Виконайте
php artisan storage:link— посилання не входить у репозиторій.