< Laravel deploy

Laravel Deploy Debian GNU/Linuxon

Szerző: Sallai András

Copyright © Sallai András, 2021

Licenc: 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:

<Directory /var/www/> Options Indexes FollowSymLinks AllowOverride All Require all granted </Directory>

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