Sviluppo

Configurare Un Ambiente di Sviluppo per WordPress su macOS dal Terminale

In questo blog ho già spiegato come:

Esistono anche altri tool e ognuno potrà optare per quello che trova più adatto alle proprie esigenze di sviluppo.

Ci sono però delle volte in cui si può preferire fare tutto da riga di comando. Una situazione del genere potrebbe verificarsi quando si ha bisogno di versioni specifiche dei servizi (es. una particolare versione di PHP), oppure si desidera automatizzare alcune operazioni, come nel caso in cui si abbia necessità di WP-CLI, oppure si decide di sviluppare blocchi per Gutenberg.

Nota: Questo articolo non è un vero e proprio tutorial, ma solo gli appunti che ho preso installando e configurando un server Apache, con PHP e MySQL, sul mio macOS Mojave versione 10.14.6.

mojave

Ecco le fasi che ho seguito:

Installiamo Homebrew

Come anticipato, faremo tutto da riga di comando. Prima di installare i pacchetti che ci servono, procuriamoci Homebrew, il gestore di pacchetti software per macOS. Qui non entro nel dettaglio di Brew, dato che nel sito del progetto è disponibile un’ampia documentazione.

homebrew

Per installare brew si può utilizzare il seguente comando:

$ /bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"

Una volta terminata l’installazione, verifichiamo che brew funzioni regolarmente:

$ brew -v

Se brew è installato correttamente, vedremo la versione del programma.

Con il comando brew help vedremo invece la guida di brew:

brew help

Installiamo Apache Web Server

Per l’installazione di Apache ho fatto riferimento all’ottima guida di Andy Miller.

Ora utilizziamo brew per installare Apache. Prima, però, potrebbe essere necessario verificare che la versione nativa di Apache non sia in esecuzione:

$ sudo apachectl stop
$ sudo launchctl unload -w /System/Library/LaunchDaemons/org.apache.httpd.plist 2>/dev/null

Il primo comando termina l’esecuzione di Apache, il secondo rimuove l’esecuzione automatica dello script.

Il passaggio successivo è l’installazione della versione di Apache fornita da brew:

$ brew install httpd

Al completamento dell’operazione, avviamo finalmente il server:

$ brew services start httpd

A questo punto, digitando localhost:8080, dovreste vedere la pagina che segue:

it works

La nostra versione di httpd è stata installata come servizio di brew, quindi per fermare, avviare o riavviare il server utilizzeremo il comando brew services:

$ brew services stop httpd
$ brew services start httpd
$ brew services restart httpd

Ora bisogna configurare Apache in modo che possa eseguire WordPress. Per prima cosa, localizziamo httpd.conf. Questo dovrebbe trovarsi nella cartella /usr/local/etc/httpd:

Per far funzionare WordPress, e qualsiasi altra applicazione PHP, dovremo apportare diverse modifiche. Per prima cosa, cambiamo la porta utilizzata da Apache modificando questa istruzione:

Listen 8080

nella seguente:

Listen 80

Cambiamo poi la document root, ossia la cartella dove andremo ad installare tutti i nostri siti. La directory predefinita è la seguente:

DocumentRoot "/usr/local/var/www"

Nel mio caso ho scelto la cartella /UserName/Sites per memorizzare i miei siti. Potete scegliere qualsiasi cartella, ma supponiamo sia questa anche per voi. Dunque la commentiamo o la eliminiamo sostituendola con questa:

DocumentRoot "/users/nomeutente/sites"

Naturalmente, al posto di nomeutente bisogna inserire il proprio nome utente effettivo.

La stessa modifica va fatta nell’elemento , che dovrebbe trovarsi subito sotto:

<Directory "/users/nomeutente/sites">

All’interno dell’elemento Directory bisognerà sostituire

AllowOverride None

Con

AllowOverride All

Ora dobbiamo abilitare il mod_rewrite. Basterà rimuovere il simbolo di commento da questa istruzione:

LoadModule rewrite_module lib/httpd/modules/mod_rewrite.so

Individuate poi la seguente istruzione commentata:

#ServerName www.example.com:8080

E sostituitela con

ServerName localhost

Ora riavviate Apache:

$ brew services stop httpd
$ brew services start httpd

A questo punto non siamo ancora pronti per l’esecuzione di PHP. Vedremo più avanti come aggiornare la versione di PHP. Per il momento individuiamo la seguente direttiva:

#
# DirectoryIndex: sets the file that Apache will serve if a directory
# is requested.
#
<IfModule dir_module>
    DirectoryIndex index.html
</IfModule>

E modifichiamola come segue:

#
# DirectoryIndex: sets the file that Apache will serve if a directory
# is requested.
#
<IfModule dir_module>
    DirectoryIndex index.php index.html
</IfModule>

Aggiungiamo poi una direttiva che non dovrebbe essere presente di default nel vostro file httpd.conf:

<FilesMatch \.php$>
    SetHandler application/x-httpd-php
</FilesMatch>

Questa direttiva forza Apache ad utilizzare il gestore application/x-httpd-php per i file con estensione .php.

Ora riavviamo di nuovo Apache:

$ brew services stop httpd
$ brew services start httpd

Anche se non abbiamo ancora aggiornato la versione di PHP, possiamo già verificare che tutto funzioni correttamente creando un file phpinfo.php nella directory root contenente semplicemente phpinfo(); e lanciando nel browser http://localhost/phpinfo.php.

Aggiorniamo la versione di PHP del Mac

PHP è installato di default su macOS, ma è molto probabile che la versione che abbiamo non sia la più recente. Naturalmente, è necessario dotarsi di una versione di PHP compatibile con la versione corrente di WordPress.

Innanzi tutto, verifichiamo dal terminale la versione corrente di PHP:

$ php -v

Se la versione che abbiamo sulla nostra macchina è precedente alla 7.4, conviene aggiornare ad una versione più recente. Anche in questo caso, utilizziamo brew, il gestore di pacchetti per macOS.

Se non abbiamo installato brew proprio oggi, è consigliabile aggiornare alla versione corrente:

$ brew update

Il comando brew update recupera la versione più recente di brew e di tutte le formule (si veda anche la documentazione).

Installiamo poi l’ultima versione di PHP. Nel mio caso ho installato PHP 8.0.3 dalla repository di shivammathur. Trattandosi di una repository di terze parti, utilizzeremo prima il comando tap:

$ brew tap shivammathur/php

Il comando brew tap aggiunge altre repository alla lista delle formule rintracciate, aggiornate e installate da brew. Nella documentazione di brew si trovano maggiori informazioni sul comando tap.

Aggiunta la repository shivammathur/php, procediamo con l’installazione, come illustrato nella documentazione di shivammatur:

$ brew install shivammathur/php/php@8.0.3

Dobbiamo poi impostare la versione di PHP che vogliamo utilizzare:

$ brew unlink php && brew link --overwrite --force php@8.0.3

Ora riavviamo il terminale e digitiamo nuovamente:

$ php -v

PHP 8.0.3 è pronto per l’esecuzione.

PHP 8.0.3

Se in precedenza avete creato il file phpinfo.php, digitando l’indirizzo http://localhost/phpinfo.php nella barra del browser dovreste vedere che il vostro server Apache sta eseguendo PHP 8.0.3.

Installiamo MySQL con Homebrew

Il passo successivo è l’installazione di MySQL. Potete installare mysql, ma potreste anche preferire mariadb. In questo caso vi rimando a questo altro post del blog di Grav.

Verifichiamo prima di tutto di non avere MySQL sul nostro computer:

$ mysql -V

oppure

$ mysql --version

Se il pacchetto non è presente, procediamo con l’installazione di MySQL:

$ brew install mysql

Ora verifichiamo di nuovo se il pacchetto è correttamente installato:

$ mysql --version

La risposta, nel mio caso, è stata la seguente:

mysql  Ver 8.0.23 for osx10.14 on x86_64 (Homebrew)

Ora potete avviare il servizio mysql con il comando:

$ brew services start mysql

Se il servizio è già in esecuzione, il terminale vi suggerirà di eseguire:

$ brew services restart mysql

Se volete provare MySQL dal terminale, vi basterà accedere così:

$ mysql -u root -p

Vi sarà chiesta la password per l’utente root. All’installazione l’utente root non avrà assegnata una password, quindi basterà dare invio per avviare il servizio mysql.

Avviata la shell, potrete creare altri utenti ed eseguire direttamente le query sul database.

Prima di tutto, vediamo quali sono gli utenti predefiniti del database:

mysql> SELECT Host, User FROM mysql.user;

Creiamo quindi un nuovo utente:

mysql> CREATE USER 'carlodaniele'@'localhost' IDENTIFIED BY 'password';

Questo utente al momento non ha nessun privilegio. Per assegnargli i privilegi sul database è necessario eseguire la seguente query:

mysql> GRANT ALL PRIVILEGES ON * . * TO 'carlodaniele'@'localhost';

Ora l’utente carlodaniele potrà accedere al database con tutti i privilegi. Verifichiamo se i permessi sul database sono stati assegnati correttamente:

mysql> SELECT Host, User, Select_priv, Insert_priv, Update_priv, Delete_priv, Create_priv FROM mysql.user;

Se i privilegi non sono stati modificati, provate ad aggiornare in questo modo:

mysql> FLUSH PRIVILEGES;

Ma molto probabilmente non vi servirà eseguire query MySQL dal terminale, quindi potrete fermare l’esecuzione del servizio digitando exit;.

Una volta installato MySQL, potrete accedere ai vostri database con qualsiasi database manager, come TablePlus o Sequel Pro. L’immagine che segue mostra la schermata di connessione al database di TablePlus.

TablePlus

Abbiamo quasi tutto. Ora dobbiamo passare all’installazione di WordPress. Prima però procuriamoci WP-CLI.

Installiamo WP-CLI e WordPress

WP-CLI è l’interfaccia a riga di comando per WordPress che ci permette di eseguire moltissime operazioni dal terminale del sistema operativo.

WP-CLI è un insieme di strumenti da linea di comando per la gestione delle installazioni WordPress. Potete aggiornare plugin, configurare installazioni multisito e molto altro, senza utilizzare un browser web.

Prima di tutto scarichiamo il file wp-cli.phar. In questo esempio procediamo via curl:

$ curl -O https://raw.githubusercontent.com/wp-cli/builds/gh-pages/phar/wp-cli.phar

Poi verifichiamo che il file .phar sia integro:

$ php wp-cli.phar --info

Rendiamo il file wp-cli.phar eseguibile:

$ chmod +x wp-cli.phar

E lo spostiamo in una directory di nostra scelta:

$ sudo mv wp-cli.phar /usr/local/bin/wp

Poi spostiamoci nella directory in cui vogliamo installare il sito (ad es. ~/Sites/wordpress):

$ cd ~/sites/wordpress

Ora scarichiamo il core di WordPress:

$ wp core download --path=wordpress

Creiamo poi il file wp-config.php. Nell’esempio che segue, accediamo al database come utente root:

$ wp config create --dbname=wordpress57 --dbuser=root --dbpass="" --dbhost=127.0.0.1 --dbprefix=wp57_ --extra-php <<PHP
define( 'WP_DEBUG', true );
define( 'WP_DEBUG_LOG', true );
define( 'WP_DEBUG_DISPLAY', 'true' );
PHP

Il comando sarà leggermente diverso se accediamo come utente diverso da root:

$ wp config create --dbname=wordpress --dbuser=carlodaniele --dbpass=password --dbhost=127.0.0.1 --dbprefix=wp57_ --extra-php <<PHP
define( 'WP_DEBUG', true );
define( 'WP_DEBUG_LOG', true );
define( 'WP_DEBUG_DISPLAY', 'true' );
PHP

Dovremmo vedere il seguente messaggio di conferma:

Success: Generated 'wp-config.php' file.

A questo punto bisogna creare il database:

$ wp db create

E quindi eseguire l’installazione:

$ wp core install --url=127.0.0.1/wordpress --title="Test site" --admin_user=carlodaniele --admin_password=password --admin_email=email@email.org

Nelle versioni di PHP precedenti alla 7.4, questo comando poteva dar origine ad un errore di autenticazione. Se avete aggiornato la versione di PHP come visto sopra, non dovreste riscontrare questo problema.

Ora basterà digitare 127.0.0.1/wordpress nella barra degli indirizzi del browser per accedere a WordPress e cominciare a sviluppare.

Happy coding!

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *