Prerequisiti
- Un server Vultr con Arch Linux aggiornato. Vedi questa guida per maggiori informazioni.
- Accesso al Sudo.
- I comandi che devono essere eseguiti come root hanno il prefisso
#
e quelli che possono essere eseguiti come utente normale da $
. Il modo raccomandato per eseguire i comandi come root è, come utente normale, aggiungere un prefisso a ciascuno di essi sudo
.
- Avere un editor di testo installato, e avere familiarità con essa, come ad esempio
vi
, vim
, nano
, emacs
e così via.
Installa Apache 2.4 Web Server
Se si utilizza un firewall, sarà necessario abilitare il traffico TCP in entrata sulla porta 80
.
Installa Apache:
# pacman -S apache
Avvia Apache e avvialo dopo ogni avvio:
# systemctl enable --now httpd
Verifica che Apache sia in esecuzione. Visita http://YOUR-SERVER-WEB-ADDRESS-OR-IP
e vedrai una pagina che mostra "Indice di /". Esegui ip addr
se devi conoscere l'indirizzo IP.
Il file di configurazione di Apache è /etc/httpd/conf/httpd.conf
. Sebbene Apache sia avviato dall'utente root, lo User http
fa passare immediatamente all'esecuzione come questo utente per motivi di sicurezza. DocumentRoot "/srv/http"
imposta dove cercare i file web. CustomLog "/var/log/httpd/access_log" common
imposta dove verranno registrati gli accessi ad Apache riusciti. ErrorLog "/var/log/httpd/error_log"
imposta da dove verrà registrato l'accesso ad Apache.
Disabilitazione degli indici
Per impostazione predefinita, se ad Apache viene fornita una directory che non trova un file indice con un'estensione che è configurata per l'uso, genererà automaticamente un indice che mostra il contenuto della directory. Questa può essere considerata una vulnerabilità di sicurezza. Per disabilitarlo, modifica /etc/httpd/conf/httpd.conf
e all'interno <Directory "/srv/http">
, da Options
, elimina Indexes
. Una volta riavviato, Apache emetterà un "Accesso vietato!" messaggio di errore, a meno che non /srv/http/index.html
esista un file simile .
Riavvia Apache:
# systemctl restart httpd
Directory utenti
Per impostazione predefinita, la ~/public_html/
directory di un utente verrà visualizzata in http://YOUR-SERVER-WEB-ADDRESS-OR-IP/~USERNAME/
. Tuttavia, l'utente http
deve avere accesso bit eseguibile alla directory utente e alla sua public_html
directory:
$ mkdir ~/public_html
$ chmod o+x ~/
$ chmod o+x ~/public_html
Inoltre, l'utente http
deve avere accesso in lettura ai singoli file. Se necessario, eseguire il comando seguente:
$ chmod o+r ~/public_html/<FILES>
Se si desidera disabilitare le public_html
directory dell'utente sul proprio server Web, indipendentemente dalle autorizzazioni di directory e file, commentare questa riga (aggiungere #
all'inizio) in /etc/httpd/conf/httpd.conf
:
Include conf/extra/httpd-userdir.conf
Riavvia Apache:
# systemctl restart httpd
Host virtuali
Puoi ospitare più nomi di dominio dallo stesso server Apache e offrire loro contenuti diversi.
Crea una cartella per contenere le configurazioni dell'host virtuale:
# mkdir /etc/httpd/conf/vhosts
Creare un file di configurazione per ciascun host virtuale, ad esempio /etc/httpd/conf/vhosts/YOUR-DOMAIN-NAME.com
:
<VirtualHost *:80>
ServerAdmin [email protected]
DocumentRoot "/srv/YOUR-DOMAIN-NAME.com"
ServerName YOUR-DOMAIN-NAME.com
ServerAlias YOUR-DOMAIN-NAME.com
ErrorLog "/var/log/httpd/YOUR-DOMAIN-NAME.com-error_log"
CustomLog "/var/log/httpd/YOUR-DOMAIN-NAME.com-access_log" common
<Directory "/srv/YOUR-DOMAIN-NAME.com">
Require all granted
</Directory>
</VirtualHost>
Crea la directory di servizio dell'host virtuale:
# mkdir /srv/YOUR-DOMAIN-NAME.com
Alla fine /etc/httpd/conf/httpd.conf
, includi ciascuno di questi file di configurazione dell'host virtuale:
Include conf/vhosts/YOUR-DOMAIN-NAME.com
Riavvia Apache:
# systemctl restart httpd
Le richieste a cui riceve Apache YOUR-DOMAIN-NAME.com
verranno soddisfatte /srv/YOUR-DOMAIN-NAME.com
. Nota che le richieste ad Apache che non corrispondono a uno specifico ServerName
o ServerAlias
, solo l'indirizzo IP o un altro nome di dominio che si risolvono nel tuo IP, verranno comunque servite dal primo host virtuale incluso. Detto questo, dovresti comunque considerare qualsiasi cosa in generale DocumentRoot
, che per impostazione predefinita /srv/http
, essere in qualche modo accessibile.