Con questa guida andremo a vedere come configurare un web server linux installando e configurando tutto ciò che serve a far girare una applicazione Laravel al meglio. Questa guida è stata testata su Ubuntu 18.04, ma i comandi sono abbastanza generali da poter essere usati anche con altre versioni di Ubuntu o distribuzioni basate su Ubuntu.
Preparazione
Supponiamo di aver acquistato uno spazio server e di essere in possesso di nome utente e password per accedere con il protocollo ssh (solitamente il nome utente è root e la password arriva tramite email al momento dell’attivazione del servizio). Chiamiamo inoltre yourvpsipaddress l’indirizzo IP del nostro server.
Collegandoci in ssh al server, prima di tutto aggiorniamolo:
sudo apt update sudo apt upgrade sudo reboot
Aspettiamo che si riavvii e ripristinare la connessione ssh.
Apache, MySql, PHP
Cominciamo installando le seguenti componenti:
- Apache: il web server che gestisce le richieste http/https in entrata
- MySql: il DBMS che utilizzeremo in questa guida (Laravel supporta anche PostgreSQL, SQLite ed SQL Server)
- PHP e alcune estensioni necessarie per il funzionamento di Laravel
sudo apt install apache2 sudo apt install mysql-server sudo apt install php-pear php-fpm php-dev php-zip php-curl php-xmlrpc php-gd php-mysql php-mbstring php-xml libapache2-mod-php sudo service apache2 restart
A questo punto è possibile testare il corretto funzionamento di Apache visualizzando all’indirizzo http://yourvpsipaddress/ dal vostro browser la pagina di default di Apache.
Firewall
Dal punto di vista della sicurezza è utile configurare un firewall. Usando UFW andiamo a bloccare tutte le connessioni in ingresso al server, mantenendo aperte solamente le porte tcp strettamente necessarie per usufruire della nostra applicazione Laravel.
sudo ufw app list sudo ufw allow 'Apache' sudo ufw allow 'OpenSSH' sudo ufw status sudo ufw enable
Con questi comandi andiamo ad aprire le porte 80, 443 e 22.
phpMyAdmin
phpMyAdmin è uno strumento molto utile per la gestione del vostro database. Facciamo partire l’installazione e la procedura di configurazione:
apt install phpmyadmin php-mbstring php-gettext
Comparirà sul terminale una schermata in cui è necessario selezionare l’opzione “apache2” premendo la barra spaziatrice e poi INVIO per confermare. Sulla schermata che segue scegliere Yes ed inserire una password per l’utente. Abilitiamo l’estensione mbstring di php necessaria a phpmyadmin per il suo corretto funzionamento.
phpenmod mbstring service apache2 restart
E’ necessario adesso creare un utente mysql dedicato per phpmyadmin. Prima di tutto cambiamo la password dell’utente root, inserendo una password al posto di “insert_your_password_here”:
sudo mysql
alter user 'root'@'localhost' identified with mysql_native_password by 'insert_user_password_here'; flush privileges; exit;
Creiamo un utente phpmyadmin, inserendo una password al posto di “inser_your_password_here”:
sudo mysql create user 'phpmyadmin'@'localhost' IDENTIFIED BY 'insert_user_password_here'; grant all privileges on *.* TO 'phpmyadmin'@'localhost' with grant option; exit;
Testiamo adesso phpmyadmin all’indirizzo http://yourvpsipaddress/phpmyadmin/.
Composer e Laravel
Composer è uno strumento per la gestione delle dipendenze PHP e rappresenta il modo più veloce per installare Laravel sul nostro sistema.
apt install composer composer global require laravel/installer
Dobbiamo adesso settare laravel come comando globale. Da terminale apriamo il file ~/.bashrc
nano $HOME/.bashrc
Aggiungiamo alla fine, la riga:
export PATH="$PATH:$HOME/.config/composer/vendor/bin"
Salvare e chiudere. Rendiamo effettive le modifiche:
source $HOME/.bashrc
Avviare una applicazione Laravel
Posizioniamoci dentro una directory del nostro file system:
laravel new app_name
Cambiare i permessi delle cartelle storage e bootstrap/cache:
chown -R www-data:www-data /your/laravel/app/storage chown -R www-data:www-data /your/laravel/app/bootstrap/cache
Settare l’applicazione come DocumentRoot di Apache:
nano /etc/apache2/sites-enabled/your-virtual-host.conf
Cambiamo il valore di DocumentRoot con la directory public dell’applicazione laravel, ad esempio
/home/ubuntu/app/public
Adesso è necessario cambiare i permessi per la directory dell’app:
nano /etc/apache2/apache2.conf
Aggiungere nella sezione Directory il seguente codice opportunamente modificato con la directory della vostra app:
Options Indexes FollowSymLinks AllowOverride None Require all granted
Riavviare apache e testare http://yourvpsipaddress/.
That’s all.