LAMP (Italiano)

From ArchWiki

Jump to: navigation, search
i18n
English
Italiano
Русский
Česky
简体中文
Español

Contents

Apache, PHP, and MySQL

Questo documento descrive i passi per creare un Server Web basato su Apache su Arch Linux. Spiega inoltre come installare PHP e MySQL ed integrarlo con il server Apache

Installare i Pacchetti

# pacman -Sy
# pacman -S apache
# pacman -S php
# pacman -S mysql
# pacman -S libxml2

Se volete potete installare solo apache, apache e php, o tutti e tre. Questa guida assume che voi li abbiate installati tutti e tre, ma se volete potete fermarvi dopo ogni sezione.

Configurare Apache

  • Aggiungete questa linea in /etc/hosts (se il file non esiste, createlo):
127.0.0.1  localhost.localdomain   localhost

Nota: Se volete un hostname differente, mettetelo alla fine:

127.0.0.1  localhost.localdomain   localhost myhostname
  • Editate /etc/rc.conf: Se nel primo step avete messo un hostname, la variabile HOSTNAME deve avere lo stesso valore; altrimenti, usate "localhost":
#
# Networking
#
HOSTNAME="localhost"
  • Commentate un modulo nella configurazione di Apache
# nano /etc/httpd/conf/httpd.conf
LoadModule unique_id_module        modules/mod_unique_id.so

a

#LoadModule unique_id_module        modules/mod_unique_id.so
  • Lanciate dal terminale (come root):
# /etc/rc.d/httpd start
  • Apache ora dovrebbe essere attivo. Testatelo visitando http://localhost/ nel nostro browser. Dovreste vedere una semplice pagina di test di Apache.
  • Editate /etc/rc.conf (per lanciare Apache durante il boot):
DAEMONS=(... some daemons ... httpd)

Oppure aggiungete questa linea in rc.local:

/etc/rc.d/httpd start
  • Se volete che le directory degli utenti siano accessibili dal web (es.~/public_html nella macchina sarà accessibile come http://localhost/~user/ , decommentate le seguenti linee in /etc/httpd/conf/extra/httpd-userdir.conf:
UserDir public_html

e

<Directory /home/*/public_html>
  AllowOverride FileInfo AuthConfig Limit Indexes
  Options MultiViews Indexes SymLinksIfOwnerMatch ExecCGI
  <Limit GET POST OPTIONS PROPFIND>
    Order allow,deny
    Allow from all
  </Limit>
  <LimitExcept GET POST OPTIONS PROPFIND>
    Order deny,allow
    Deny from all
  </LimitExcept>
</Directory>

Dovrete essere sicuri che i permessi delle vostre home directory siano settati nella maniera corretta in modo che Apache possa usarle. La vostra directory e ~/public_html/ devono essere eseguibili per Others ("il resto del mondo"). Questo può essere fatto con:

$ chmod o+x ~
$ chmod o+x ~/public_html

Ci sono modi più sicuri per settare i permessi, magari creando un gruppo speciale e permettendo solo a voi e ad Apache di farne parte... dipende da quanto siete attenti alla sicurezza.

Opzioni addizionali per Apache

Decommentare per utilizzare.

Questa opzione presente in /etc/httpd/conf/httpd.conf potrebbe interessarvi:

 # Listen 80

Questa è la porta in ascolto di Apache. Per una connessione con un router, dovete aprire la porta.

 # ServerAdmin sample@sample.com

Questo è l'indirizzo e-mail che troverete nelle pagine d'errore.

 # DocumentRoot "/srv/http"

Questa è la directory dove potete mettere le vostre pagine web, ma potete cambiarla.

Configurare PHP

PHP è praticamente avviabile "out of the box" ora.

  • Aggiungete queste righe in /etc/httpd/conf/httpd.conf
LoadModule php5_module modules/libphp5.so
Include conf/extra/php5_module.conf
Note: le due righe precedenti vanno inserite in sezioni diverse dello stesso file, non nell'ordine in cui sono scritte sopra
  • Ricordate di aggiungere il riferimento al file .phtml se necessario nel file /etc/httpd/conf/extra/php5_module.conf:
DirectoryIndex index.php index.phtml index.html
  • Se volete il modulo libGD , decommentate in /etc/php/php.ini:
;extension=gd.so

a

extension=gd.so
  • Se la vostra DocumentRoot è fuori da /home/, aggiungetela a open_basedir nel file /etc/php/php.ini come:
open_basedir = /home/:/tmp/:/usr/share/pear/:/path/to/documentroot
  • Riavviate il servizio Apache perché i cambiamenti facciano effetto (da root):
# /etc/rc.d/httpd restart
  • Testate PHP questocon un semplice script:
<html>
<head>
<title>Pagina di test per PHP</title>
</head>

<body>
Questa è Arch Linux, con attivo PHP.

<?php
  phpinfo();
?>
</p>
</body>
</html>

Salvete questo file come test.php e copiatelo in /srv/http/ o in ~/public_html secondo la configurazione adottata. Inoltre, ricordate di renderlo eseguibile (chmod o+x test.php).

Note: Se connettendovi a localhost vi restituisce il listato dello script o il demone http non si avvia installate il pacchetto:

# pacman -S php-apache

Altre estensioni utili: php-mcrypt e php-curl.

Setup MySQL

Seguite questi passi solo se necessitate del supporto MySQL. Configurate MySQL come descritto qui: MySQL (Italiano)

  • Editate /etc/php/php.ini (questo si trova in /usr/etc nei sistemi vecchi) Per decommentare le seguenti righe (Rimuovendo i ;):
;extension=mysql.so

a

extension=mysql.so
  • Potete aggiungere degli utenti con privilegi minori per i vostri script web editando le tabelle che si trovano nel database di mysql. Dovete riavviare MySQL perché i cambiamenti abbiano effetto. Non dimenticate di verificare la tabella mysql/users. Se c'è un secondo record per root e il vostro hostname è senza alcuna password settata, chiunque dal vostro host potrà ottenere un pieno accesso. Guardate la prossima sezione per questo.
  • Potreste ottenere il messaggio "error no. 2013: Lost Connection to mysql server during query" quanto andrete a connettervi al demone MySQL da TCP/IP. Questo è il sistema di wrapping TCP (tcpd), che usa il sistema di hosts_access(5) per permettere o non permettere le connessioni.
  • Se avete questo problema, assicuratevi di aver aggiunto questa linea nel vostro file /etc/hosts.allow:
 # mysqld : ALL : ALLOW
 # mysqld-max : ALL : ALLOW
 # and similar for the other MySQL daemons.
  • Note: L'esempio qui sopra è il caso semplice, stiamo dicendo a tcpd di permettere connessioni da ovunque. Potreste fare una scelta più appropriata della clausola fin troppo permissiva ALL. Assicuratevi solo che localhost e l' IP address (numerico o DNS) della interfaccia dalla quale vi collegate siano specificati.
  • Potrebbe anche essere necessario editare /etc/my.cnf e commentare la linea skip-networking così:
skip-networking

a

#skip-networking
Note: se avete bisogno di configurare mysql il file relativo è: /etc/my.cnf
Personal tools