• Home
  • Laravel Framework su Ubuntu Server 18.04 LTS e Apache

Laravel è il framework PHP open source, forse più popolare, scritto per poter sviluppare applicazioni con semplicità.

Quindi, vediamo come installare ed eseguire Laravel su un server Apache a base Ubuntu Server 18.04 LTS.


Prerequisiti

Per procedere è certamente necessario disporre di un server basato su Ubuntu Server 18.04 LTS. Qualora non si avesse ancora installato, è possibile scaricare la iso dal server ufficiale.

Prima di procedere con l’installazione di Laravel, assicurarsi che le fonti e il software esistente siano aggiornati:

sudo apt update

sudo apt upgrade


Installazione di Apache 2, MariaDB 10.3 e PHP 7.3

Installare Apache2 e curl

Installare i pacchetti comuni fondamentali: sudo apt install software-properties-common (python-software-properties è incluso in esso)

A questo punto Apache2 e curl: sudo apt install apache2 apache2-utils libapache2-mod-php7.3 curl

 

Installare MariaDB

Come motore di DB personalmente utilizzo MariaDB (10.3 nel momento in cui scrivo). Procedere alla sua installazione importando il repository ufficiale di MariaDB stesso; questo poichè quello Ubuntu contiene una versione vecchia e con funzionalità troppo limitate. E’ possibile seguire la mia precedente guida, ma per completezza riporto di seguito dato che si opera da shell:

sudo apt-key adv --recv-keys --keyserver hkp://keyserver.ubuntu.com:80 0xF1656F24C74CD1D8

sudo add-apt-repository 'deb [arch=amd64,arm64,ppc64el]

http://mirror2.hs-esslingen.de/mariadb/repo/10.3/ubuntu bionic main'

sudo apt update

sudo apt install mariadb-server e probabilmente servirà anche sudo apt install mariadb-client

Al termine, ricordarsi di eseguire sudo mysql_secure_installation per configurare la password di root. Consiglio comunque di creare immediatamente un secondo utente che ne faccia le veci.

Ad esempio, creare il database “laravel” da utilizzare con l’utente “laravel_user” e relativa password “p4ssw0rD“:

[mysql]
mysql -u username -p

mysql> CREATE DATABASE IF NOT EXISTS laravel DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci;
mysql> CREATE USER ‘laravel_user’@’%’ IDENTIFIED BY ‘p4ssw0rD’;
mysql> USE `laravel`;
mysql> GRANT ALL PRIVILEGES ON `laravel`.* TO ‘laravel_user’@’%’;
mysql> FLUSH PRIVILEGES;
mysql> exit;
[/mysql]

Qualora mysql risponda con un errore in merito

Installare PHP 7.3

Il prossimo passo è installare PHP insieme a diversi pacchetti extra che potrebbero rivelarsi utili per lavorare con Laravel.

Il repository di Ubuntu dispone di PHP, ma è meglio aggiungere un repository di terze parti che viene aggiornato più frequentemente. E’ possibile saltare questo passaggio e restare adesi alla versione di Ubuntu (che presenta PHP 7.2 nel momento in cui scrivo). Preciso che il repository in questione è di uno degli sviluppatori core di PHP stesso, quindi assolutamente sicuro (come descritto in un precedente articolo).

Iniziare con: sudo add-apt-repository ppa:ondrej/php

Aggiornare la lista dei pacchetti: sudo apt update

sudo apt install php7.3 php7.3-xml php7.3-gd php7.3-opcache php7.3-mbstring php7.3-mysql php7.3-curl php7.3-json php7.3-zip php7.3-bz2 php7.3-cli php7.3-mcrypt php7.3-mysql php7.3-xsl php-xdebug

Ubuntu installerà automaticamente alcune dipendenze (tipo la libapache2-mod-php7.3)


Abilitare mod_rewrite su Apache

Laravel necessita di mod_rewrite attivo per poter far funzionare correttamente il routing.

sudo a2enmod rewrite

sudo service apache2 restart


Installare Composer

Installare composer a livello globale: sudo apt update

e quindi: sudo apt install composer


Creare il progetto Laravel

cd /var/www/html

composer create-project laravel/laravel laravel_project

cd laravel_project

php artisan --version (nel momento in cui scrivo Laravel è alla 5.8.31)


Imposta le autorizzazioni per le cartelle di Laravel

Laravel deve essere in grado di scrivere dati temporanei in alcune directory, in particolare le directory bootstrap/cache e storage.

Portarsi nella directory del progetto Laravel con cd /var/www/html/laravel_project

Aggiornare i permessi delle directory con: sudo chmod -R 777 storage bootstrap/cache


Impostare un VirtualHost in Apache per gestire il progetto

sudo cp /etc/apache2/sites-available/000-default.conf /etc/apache2/sites-available/laravel.conf

sudo nano /etc/apache2/sites-available/laravel_project.conf

A questo punto modificare il contenuto del file laravel_project.conf di modo che sia esattamente come segue:
[code]
NameVirtualHost *:8080
Listen 8080

<VirtualHost *:8080>
ServerAdmin tuaemail@dominio.com
ServerName laravel.dev
ServerAlias www.laravel.dev
DocumentRoot /home/user/projects/laravel_project/public

<Directory /home/user/projects/laravel_project/public/>
Options Indexes FollowSymLinks MultiViews
AllowOverride All
Order allow,deny
allow from all
Require all granted
</Directory>

LogLevel debug
ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>
[/code]

Nella precedente configurazione Apache ascolta sulla porta 8080 per non interferire sulla 80 standard. Parametrizzare ServerAdmin, ServerName e ServerAlias come meglio si crede. In particolare, se si configura ServerName in modo differente da localhost, è poi necessario modificare l’host del server per renderlo raggiungibile.

sudo nano /etc/hosts

e alla fine del file inserire 127.0.0.1 laravel.dev

La directory principale (DocumentRoot) è la directory public del progetto Laravel. In tal modo i file dell’applicazione si trovano in directory a cui Apache non può accedere.

A questo punto attivare il nuovo virtual host: sudo a2dissite 000-default.conf e  sudo a2ensite laravel_project.conf

e riavviare Apache: sudo services apache2 restart


Conclusioni

Una volta modificato il file .env nella root del progetto laravel con i dati di configurazione, il progetto sarà finalmente raggiungibile digitando come url sul browser: http://laravel.dev:8080 o http://localhost:8080.

In particolar modo prestare attenzione alle seguenti voci di .env (che compilo con i dati esempio utilizzati in questa guida):

[code]
APP_NAME=laravel.dev
APP_ENV=local
APP_KEY=base64:X0B/MoZ3BI2lxz9TOFxFeidWoIOa355jV6fAv1szVr0=
APP_DEBUG=true
APP_URL=http://localhost

DB_CONNECTION=mysql
DB_DATABASE=laravel
DB_USERNAME=laravel_user
DB_PASSWORD=p4ssw0rD
[/code]


Note

Qualora si incappi in errori di scrittura dei log da parte di Laravel, ricordate di modificare i permessi tramite:

[code]

sudo chgrp -R www-data storage bootstrap/cache

sudo chmod -R ug+rwx storage bootstrap/cache

[/code]

 


Segui @andymnc (Andrea Manconi) su Twitter per essere sempre aggiornato su guide ed articoli


Condividi: