[[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