[[oktatas:web:back-end_framework:laravel:laravel_deploy|< Laravel deploy]]
====== Laravel Deploy Debian GNU/Linuxon ======
* **Szerző:** Sallai András
* Copyright (c) Sallai András, 2021
* Licenc: [[https://creativecommons.org/licenses/by-sa/4.0/|CC Attribution-Share Alike 4.0 International]]
* Web: https://szit.hu
===== Bevezetés =====
A Laravel projekt fejlesztési időben tartalmaz egy node_modules könyvtárat.
Erre csak fejlesztési időben van szükség. Ne másoljuk fel a szerverre, már csak
azért sem mert több ezer állomány is lehet a könyvtárban.
===== Szerveren szükséges =====
Laravel függőségeinek a következőt szokták megjelölni:
* PHP >= 7.1.3
* OpenSSL PHP Extension
* PDO PHP Extension
* Mbstring PHP Extension
* Tokenizer PHP Extension
* XML PHP Extension
* Ctype PHP Extension
* JSON PHP Extension
Ezek közül alapból megtalálható a php csomag telepítése után: Ctype, OpenSSL és a PDO.
Telepítsük a szükséges fájlokat:
apt install php-cli php-gd php-mbstring php-mcrypt \
php-zip php-opcache php-xml \
php-tokenizer php-json php-bcmath unzip curl php-curl
Engedélyezni kell a .htaccess fájl használatát.
Debian GNU/Linuxon, ehhez szerkesszük az apache2.conf fájlt:
sudo nano /etc/apache2/apache2.conf
Keressük meg az AllowOverride beállítást a /var/www könyvtáron.
Az alapértelmezett None értéket állítsuk All-ra:
Options Indexes FollowSymLinks
AllowOverride All
Require all granted
Engedélyezzük az átírást:
sudo a2enmod rewrite
Indítsuk újra az apache-t:
sudo systemctl restart apache2
===== Projekt letöltése Git-ről =====
Tegyük fel, hogy /var/www könyvtárba szeretnénk letölteni, ekkor:
git clone https://github.com/valaki/projekt01.git
Az elérési utat javítsuk saját projektünkre.
===== PHP függőségek telepítése =====
Töltsük le a PHP függőségeket a composer segítségével. Itt szólni fog, hogy nem ajánlott rootként futtatni.
cd /var/www/projekt01
composer install
Ha van NodeJS függősége, akkor telepítsük:
npm install
===== Írható könyvtárak =====
Állítsuk be, hogy az apache tudjon írni a storage és a bootstrap/cache könyvtárakba:
Ha az apache a www-data nevében fut:
cd /var/www/projekt01
chown -R www-data: storage
chown -R www-data: bootstrap/cache
===== Adatbázis =====
Ha van adatbázis, vegyük fel az adatbázis felhasználót és végezzük el a migrálást.
php artisan migrate
Állítsuk be az adatbáziselérést a .env fájlban. Ha nincs .env fájl, másoljunk a .env.example fájlból:
cp .env.example .env
Ha vannak seed adataink, töltsük fel:
php artisan db:seed
===== public beállítása =====
A webszerver DocumentRoot könyvtárát állítsuk be a Laravel projekt public
könyvtárára.
nano /etc/apache2/sites-available/000-default.conf
DocumentRoot /var/www/projekt01/public
Indítsuk újra a szervert:
systemctl restart apache2
===== Kulcs generálás =====
Generáljunk kulcsot az alkalmazás számára. Ha még nincs .env állományunk készítsük el.
Ha adatbázist használunk, az legyen beállítva az állományban.
cd /var/www/projekt01
cp .env.example .env
php artisan key:generate
===== Optimalizálás =====
Éles szerveren ajánlott az optimalizálás:
composer install --optimize-autoloader --no-dev
php artisan config:cache
php artisan route:cache
* https://laravel.com/docs/8.x/deployment#optimization (2021)
===== A .env =====
Az élesítéshez állítsuk be a még kimaradt változókat. Például APP_ENV, APP_DEBUG.
APP_NAME=Projekt01
APP_ENV=production
APP_DEBUG=false
APP_KEY=base64:SyvMmCx6w8w8rcnsm6sWvq6X2HGm9HQVo7412tPNOic=
APP_URL=http://zold.lan
...
DB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE=projekt01
DB_USERNAME=projekt01
DB_PASSWORD=titok