Installa il server Web Apache
Tempo fa ho aggiornato il mio Ubuntu alla 13.10 e poi l'installazione di apache php si è incasinata. Quindi ho dovuto reinstallarlo rapidamente per continuare a lavorare sui miei progetti php.
Apache è presente nei repository di Ubuntu, quindi può essere installato senza troppi sforzi. Ecco il comando rapido di cui hai bisogno per sparare al terminale.
$ sudo apt-get install apache2
Apache per impostazione predefinita si configura rapidamente in modo da poterlo aprire dal browser con l'URL localhost
http://localhost/
Avvia/arresta apache
Per avviare o interrompere il server Web Apache dalla riga di comando, utilizzare i seguenti comandi.
# Start web server $ sudo service apache2 start # Stop the web server $ sudo service apache2 stop # Restart the web server $ sudo service apache2 restart # Reload configuration without restarting $ sudo service apache2 reload
La directory principale Web predefinita è /var/www. Quindi tutti i file inseriti in questa directory sono accessibili dall'URL di localhost. Successivamente verificheremo come modificare la directory principale Web predefinita
Per verificare quale versione di apache è installata, usa il comando apache2 con l'opzione v/
$ apache2 -v Server version: Apache/2.4.6 (Ubuntu) Server built: Aug 9 2013 14:28:56
Individuare i file di configurazione
Per ottenere maggiori informazioni su come configurare esattamente apache sul tuo sistema, usa il comando apache2ctl.
$ apache2ctl -V AH00558: apache2: Could not reliably determine the server's fully qualified domain name, using 127.0.1.1. Set the 'ServerName' directive globally to suppress this message Server version: Apache/2.4.6 (Ubuntu) Server built: Aug 9 2013 14:28:56 Server's Module Magic Number: 20120211:23 Server loaded: APR 1.4.8, APR-UTIL 1.5.2 Compiled using: APR 1.4.8, APR-UTIL 1.5.2 Architecture: 64-bit Server MPM: prefork threaded: no forked: yes (variable process count) Server compiled with.... -D APR_HAS_SENDFILE -D APR_HAS_MMAP -D APR_HAVE_IPV6 (IPv4-mapped addresses enabled) -D APR_USE_SYSVSEM_SERIALIZE -D APR_USE_PTHREAD_SERIALIZE -D SINGLE_LISTEN_UNSERIALIZED_ACCEPT -D APR_HAS_OTHER_CHILD -D AP_HAVE_RELIABLE_PIPED_LOGS -D DYNAMIC_MODULE_LIMIT=256 -D HTTPD_ROOT="/etc/apache2" -D SUEXEC_BIN="/usr/lib/apache2/suexec" -D DEFAULT_PIDLOG="/var/run/apache2.pid" -D DEFAULT_SCOREBOARD="logs/apache_runtime_status" -D DEFAULT_ERRORLOG="logs/error_log" -D AP_TYPES_CONFIG_FILE="mime.types" -D SERVER_CONFIG_FILE="apache2.conf" .....
Indica il nome del file di configurazione, il server mpm utilizzato e molti altri dettagli. Questi sono utili quando si configura ulteriormente Apache.
Il file di configurazione principale si trova in /etc/apache2/apache2.conf
Basta anteporre HTTPD_ROOT con SERVER_CONFIG_FILE per ottenere la posizione effettiva del file di configurazione.
Oppure c'è un'altra opzione S che riporta anche vari dettagli di configurazione su Apache
$ apache2ctl -S AH00558: apache2: Could not reliably determine the server's fully qualified domain name, using 127.0.1.1. Set the 'ServerName' directive globally to suppress this message VirtualHost configuration: *:80 is a NameVirtualHost default server localhost (/etc/apache2/sites-enabled/000-default.conf:1) port 80 namevhost localhost (/etc/apache2/sites-enabled/000-default.conf:1) port 80 namevhost localhost (/etc/apache2/sites-enabled/000-default.conf:1) ServerRoot: "/etc/apache2" Main DocumentRoot: "/var/www" Main ErrorLog: "/var/log/apache2/error.log" Mutex default: dir="/var/lock/apache2" mechanism=fcntl Mutex mpm-accept: using_defaults Mutex watchdog-callback: using_defaults Mutex rewrite-map: using_defaults PidFile: "/var/run/apache2/apache2.pid" Define: DUMP_VHOSTS Define: DUMP_RUN_CFG User: name="www-data" id=33 not_used Group: name="www-data" id=33 not_used User: name="www-data" id=33 not_used Group: name="www-data" id=33 not_used
Tutte queste informazioni sono molto utili durante la configurazione di Apache. Risparmia tempo che altrimenti verrebbe speso per indovinare.
Ci sono molti file di configurazione coinvolti con Apache. Il file di configurazione principale è "apache2.conf" come menzionato sopra. Questo file di configurazione contiene le istruzioni per caricare altri file di configurazione. Ecco la linea che lo fa.
# Include generic snippets of statements IncludeOptional conf-enabled/*.conf # Include the virtual host configurations: IncludeOptional sites-enabled/*.conf
Correggi il messaggio di errore
Apache per impostazione predefinita fornisce il seguente messaggio di errore
AH00558: apache2: Could not reliably determine the server's fully qualified domain name, using 127.0.1.1. Set the 'ServerName' directive globally to suppress this message
Per risolvere questo problema, imposta la variabile ServerName sul tuo nome host o nome di dominio completo nel file di configurazione di Apache
$ sudo nano /etc/apache2/apache2.conf
Aggiungi la riga seguente alla fine
ServerName yourhostname
Ricarica la configurazione di Apache
$ sudo service apache2 reload
Cambia la directory principale del web
Per modificare la directory principale del Web, è necessario modificare l'impostazione nei file di configurazione "abilitati per i siti". Come pratica standard, viene creato un file di configurazione separato all'interno della directory abilitata per i siti per ciascun host virtuale.
Un host virtuale è un dominio. Quindi puoi avere più domini serviti da Apache. In questo esempio, tuttavia, utilizziamo solo il file di configurazione predefinito.
Dovrebbe esserci un file chiamato 000-default.conf all'interno della directory /etc/apache2/sites-enabled. Se non è presente, copialo da /etc/apache2/sites-available. Inizialmente il file è simile a questo.
<VirtualHost *:80> ... #ServerName www.example.com ServerAdmin [email protected] DocumentRoot /var/www # Available loglevels: trace8, ..., trace1, debug, info, notice, warn, # error, crit, alert, emerg. # It is also possible to configure the loglevel for particular # modules, e.g. #LogLevel info ssl:warn ErrorLog ${APACHE_LOG_DIR}/error.log CustomLog ${APACHE_LOG_DIR}/access.log combined ... </VirtualHost>
Modificare il percorso DocumentRoot nella nuova radice Web che si desidera utilizzare. Salva il file e riavvia Apache.
$ sudo service apache2 restart
Ora prova ad accedere a localhost. Se non funziona, controlla il registro degli errori che si trova in
$ cat /var/log/apache2/error.log
A partire da Apache 2.4.3 esiste una funzione di sicurezza che impedisce ad Apache di accedere ad altre directory. E quindi l'URL di localhost mostrerebbe il messaggio di errore "Forbidden" e il registro degli errori conterrebbe un messaggio come questo
[Sun Nov 03 11:25:24.521491 2013] [authz_core:error] [pid 6950] [client 127.0.0.1:41078] AH01630: client denied by server configuration: /var/www/phpinfo.php
L'errore significa che Apache non è in grado di accedere alla directory principale Web a causa di alcune configurazioni. Per risolvere questo problema, aggiungi quanto segue alla configurazione di vhost
<Directory "/var/www2"> Order allow,deny Allow from all # New directive needed in Apache 2.4.3: Require all granted </Directory>
The "Require" directive fixes the problem. Newer version of Apache (2.3+) require the "Require" directive to allow access.
Il file 000-default.conf finale dovrebbe assomigliare a questo
<VirtualHost *:80> ... #ServerName www.example.com ServerAdmin [email protected] DocumentRoot /var/www2 # Available loglevels: trace8, ..., trace1, debug, info, notice, warn, # error, crit, alert, emerg. # It is also possible to configure the loglevel for particular # modules, e.g. #LogLevel info ssl:warn ErrorLog ${APACHE_LOG_DIR}/error.log CustomLog ${APACHE_LOG_DIR}/access.log combined ... # New directive needed in Apache 2.4.3: <Directory "/var/www2"> Order allow,deny Allow from all # New directive needed in Apache 2.4.3: Require all granted </Directory> </VirtualHost>
Ora riavvia nuovamente Apache e la nuova directory principale Web dovrebbe finalmente funzionare.
Aggiunta di più vhost o domini
Per aggiungere più host virtuali basta creare più file di configurazione come 000-default.conf e nominarlo qualsiasi cosa tranne che con un'estensione conf. Imposta un ServerName univoco in ogni file e assegna a ogni host una directory radice web separata.
In alternativa, creare un file di configurazione nella directory sites-available e utilizzare il comando a2ensite per abilitare il sito. Creerà i collegamenti simbolici necessari nella directory "siti abilitati".
Quindi prima crea un file di configurazione copiando il file di configurazione predefinito.
$ sudo cp /etc/apache2/sites-available/000-default.conf /etc/apache2/sites-available/mysite.conf
Modifica il file di configurazione secondo necessità. La cosa importante da cambiare è la radice del documento per il nuovo sito.
Poi abilitalo usando il comando a2ensite
$ sudo a2ensite mysite
Riavvia apache. E il nuovo sito dovrebbe funzionare correttamente.
Abilita file htaccess
Il file htaccess consente di modificare vari parametri di configurazione di Apache in base alla directory in fase di esecuzione. Per impostazione predefinita, Apache non è configurato per utilizzare il file htaccess. Per farlo, aggiungi semplicemente la seguente riga nella sezione Directory mostrata sopra.
AllowOverride FileInfo
Quanto sopra dirà ad Apache di iniziare a leggere i file htaccess e di analizzare le istruzioni di configurazione scritte in essi.
La configurazione finale potrebbe assomigliare a questa -
<Directory "/var/www2"> Order allow,deny Allow from all AllowOverride FileInfo # New directive needed in Apache 2.4.3: Require all granted </Directory>
Dopo aver installato Apache, potresti voler installare altre cose come php, mysql, phpmyadmin a seconda di ciò di cui hai bisogno. Quindi vai avanti e divertiti!!