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, emacse 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-IPe vedrai una pagina che mostra "Indice di /". Esegui ip addrse 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 httpfa 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" commonimposta 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.confe 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.htmlesista 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 httpdeve avere accesso bit eseguibile alla directory utente e alla sua public_htmldirectory:
$ mkdir ~/public_html
$ chmod o+x ~/
$ chmod o+x ~/public_html
Inoltre, l'utente httpdeve 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_htmldirectory 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.comverranno soddisfatte /srv/YOUR-DOMAIN-NAME.com. Nota che le richieste ad Apache che non corrispondono a uno specifico ServerNameo 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.