Also sprach Alessandro

Configurare un webserver locale su macOS

Su macOS è possibile hostare i propri siti web in locale sfruttando la directory ~/Sites come alternativa a /Library/WebServer/Documents.

Abilitazione della configurazione per-utente

Per farlo è sufficiente creare un file /etc/apache2/other/00-enable_userdir.conf contenente:

LoadModule userdir_module libexec/apache2/mod_userdir.so
Include /private/etc/apache2/extra/httpd-userdir.conf

Questo abiliterà il file /private/etc/apache2/extra/httpd-userdir.conf; dal file sarà dunque necessario decommentare la riga Include /private/etc/apache2/users/*.conf:

$ sed -i '.bak' 's%#\(Include /private/etc/apache2/users/*.conf\)%\1%' /etc/apache2/extra/httpd-userdir.conf

Procedere quindi con la generazione della configurazione per-utente:

<Directory "/Users/<username>/Sites/">
	AddLanguage en .en 
	AddLanguage it .it
	Options Indexes MultiViews FollowSymLinks ExecCGI 
	AllowOverride All 
	Require host localhost
</Directory>

Controllare la configurazione di Apache

$ apachectl configtest

Configurazione dei permessi

$ chmod +a “_www allow execute” ~

Avviare Apache

$ sudo apachectl start

PHP

Per eseguire codice PHP tramite Apache, è sufficiente creare un file /etc/apache2/other/00-php.conf contenente:

LoadModule php_module <path-installazione-lib-php>/lib/httpd/modules/libphp.so "Nome"

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

In alternativa Homebrew preconfigura Apache come segue:

<IfModule php7_module>
	AddType application/x-httpd-php .php
	AddType application/x-httpd-php-source .phps

	<IfModule dir_module>
		DirectoryIndex index.html index.php
	</IfModule>
</IfModule>

Come si può notare è presente il campo Nome: da macOS Monterey, è necessario firmare moduli esterni. Per farlo, seguirà una guida apposita.

Lanciare dunque: $ apachectl restart

Utilizzo

Ora è possibile lanciare i propri siti nella propria cartella utente. Per visualizzarli è sufficiente usare come URL: localhost/~<username>/<nome-sito>

Fonte