[glux] LAMP on Deb Sarge

Andrea aerdan@inventati.org
Dom 26 Feb 2006 11:41:56 CET


LAMP
-------------------------------------------------------------------------------

Apache2

Documentazione:

	http://www.debian-administration.org/articles/357

Installo i pacchetti:

	- apache2-mpm-prefork
	- apache2-doc
	- ca-certificates

	ca-certificates configuration
	Trust new CAs certificates? ask

	Setting Apache2 to Listen on port 80. If this is not desired, please edit
	/etc/apache2/ports.conf as desired. Note that the Port directive no longer
	works.
	Module userdir installed; run /etc/init.d/apache2 force-reload to enable.

Modifico /etc/apache2/ports.conf lasciando solo la linea

	Listen 127.0.0.1:80

In questo modo apache risponde solo alla porta 80 dell'interfaccia locale

Creo il file:

	/etc/apache2/conf.d/local_configs.conf

con: 

	# Limitazioni di accesso al filesystem.
	<Directory>
	        # Vieto l'accesso al filesystem
	        Order Deny,Allow
	        Deny from all
	        # Vieto l'utilizzo del file .htaccess in tutte le directory
	        # tranne per quelle specificatamente abilitate.
	        AllowOverride None
	</Directory>

	# Limito le informazioni disponibile riguardo al server.
	ServerSignature Off
	ServerTokens production

Avendo un solo indirizzo IP ma avendo la necessità di gestire più siti
indipendenti creo più siti virtuali basando la distinzione sul nome e non su un
indirizzo IP.
Creo due directory, una per il sito informatico e una per il sito del lavoro:

	# mkdir /var/www/informatica
	# mkdir /var/www/lavoro

quindi una sub-directory per ogni precedente directory dove salvare i file che
saranno pubblicati da apache:

	# mkdir /var/www/informatica/docs
	# mkdir /var/www/lavoro/docs

Ora creo una pagina test per ogni sito:

	# touch /var/www/informatica/docs/index.html
	# touch /var/www/lavoro/docs/index.html

e ci salvo una struttura base:

	<html>
	<head>
	   <title>Mydomain.com test index page</title>
	</head>
	<body>
	   <h1>Hello World!</h1>
	</body>
	</html>

Per dire ad Apache che ho due siti creo in:

	/etc/apache2/sites-available/

un file per sito che, per semplicità e ordine, chiamerò con il nome del sito
stesso. In questi due file scrivo la configurazione dei siti stessi.

	# touch /etc/apache2/sites-available/informatica
	# touch /etc/apache2/sites-available/lavoro

la configurazione è:

	<VirtualHost * >
	        #Basic setup
	        ServerAdmin webmaster@mydomain.com
	        ServerName www.mydomain.com
	        DocumentRoot /var/www/mydomain.com/docs
	
	        <Directory /var/www/mydomain.com/docs>
	                Order Deny,Allow
	                Allow from all
	                # Don't show indexes for directories
	                Options -Indexes
	        </Directory>
	</VirtualHost>

Sosituisco mydomain.com rispettivamente con informatica per un file e lavoro per
l'altro.

Per dire ad Apache che sono attivi utilizzo il comando a2ensite che crea un link
simbolico in:

	/etc/apache2/sites-enabled/

Nel caso volessi disattivarli uso a2dissite.

	# a2ensite informatica
	Site informatica installed; run /etc/init.d/apache2 reload to enable.

	# a2ensite lavoro
	Site lavoro installed; run /etc/init.d/apache2 reload to enable.

Per navigare nei siti:

	http://localhost/informatica/doc/
	http://localhost/lavoro/doc/

PHP5

Installo il pacchetto:

	- libapache2-mod-php5

da dotdeb.org devo quindi aggiungere in /etc/apt/source.list la seguente riga:

	deb http://dotdeb.pimpmylinux.org/ stable all

quindi aggiorno gli archivi di apt e installo:

	# apt-get update
	# apt-get install libapache2-mod-php5

La configurazione di PHP5 si trova in:

	/etc/php5/apache2/php.ini

Per maggiore sicurezza utilizzo una configurazione meno permissiva che trovo in:

	/usr/share/doc/php5-common/examples/php.ini-recommended

Salvo la vecchia configurazione:

	# mv /etc/php5/apache2/php.ini /etc/php5/apache2/php.ini.original

e copio la nuova:

	# cp /usr/share/doc/php5-common/examples/php.ini-recommended /etc/php5/apache2/php.ini

Per impedire ad Apache di mostrare la configurazione di PHP edito php.ini
impostantdo a Off la variabile expose_php.

Pensando di seguire la convenzione che vuole tutti i file include di PHP
nominati con .inc e non volendo che questi vengano visualizzati da Apache
edito anche il file /etc/apache2/conf.d/local_configs.conf e aggiungo:

# Nasconde tutti i file con estensione .inc
<Files *.inc>
    Order allow,deny
    Deny from all
</Files>

MySQL

Installo i pacchetti:

	- mysql-server
	- php5-mysql

Documentazione in /usr/share/doc/mysql-server-5.0/README.Debian

Per prima cosa: cambiare la password dell'amministratore di database:

	# /usr/bin/mysqladmin -u root password "nuova password"

vedi man page di mysqladmin.

Occorre ora testare MySQL:

	# mysql -u root -p
	Enter password:
	Welcome to the MySQL monitor.  Commands end with ; or \g.
	Your MySQL connection id is 11 to server version:
	5.0.18-Debian_3.dotdeb.1-log

	Type 'help;' or '\h' for help. Type '\c' to clear the buffer.

	mysql> CREATE DATABASE informatica;
	Query OK, 1 row affected (0.00 sec)

	mysql> USE informatica;
	Database changed
	mysql> CREATE TABLE hardware (nome VARCHAR(20), tipo VARCHAR(20),
	caratteristiche VARCHAR(120));
	Query OK, 0 rows affected (0.04 sec)

	mysql> INSERT INTO hardware VALUES ('Tastiera','italiana','102 tasti');
	Query OK, 1 row affected (0.00 sec)

	mysql> INSERT INTO hardware VALUES ('Touchpad','Synaptic','2 tasti');
	Query OK, 1 row affected (0.00 sec)

	mysql> SELECT * FROM hardware;
	+----------+----------+-----------------+
	| nome     | tipo     | caratteristiche |
	+----------+----------+-----------------+
	| Tastiera | italiana | 102 tasti       |
	| Touchpad | Synaptic | 2 tasti         |
	+----------+----------+-----------------+
	2 rows in set (0.01 sec)

	mysql> quit
	Bye

Sembrerebbe tutto OK.


PHPMYADMIN

PhpMyAdmin è, a quanto dicono su Debian Administration, un ottimo strumento per
la gestione di MySQL così decido di provarlo.

Scarico i sorgenti da http://www.phpmyadmin.net/home_page/index.php e seguo le
indicazioni in LAMP...

	# mkdir /usr/local/php5
	# cp phpMyAdmin-2.7.0-pl2.tar.gz /usr/local/php5/
	# cd /usr/local/php5/
	# bunzip2 phpMyAdmin-2.8.0-rc1.tar.bz2
	# tar -xvf phpMyAdmin-2.8.0-rc1.tar
	# rm phpMyAdmin-2.8.0-rc1.tar
	# cp libraries/config.default.php ./config.inc.php
	# vim config.inc.php

sostituisco le seguenti linee nel config file:

	$cfg['PmaAbsoluteUri'] = ''; -> $cfg['http://localhost/phpmyadmin'] = '';
	$cfg['blowfish_secret'] = ''; -> $cfg['blowfish_secret'] = 'passphrase';
	$cfg['Servers'][$i]['auth_type'] = 'config'; ->
		$cfg['Servers'][$i]['auth_type'] = 'cookie';

L'installazione è terminata. Per utilizzare il software devo legarlo ad un sito
attivo in Apache, per prova utilizzo informatica quindi aggiungo le seguenti
linee a /etc/apache2/site-available/informatica:

	# Provvede a un alias per phpmyadmin
	Alias /phpmyadmin /usr/local/php5/phpMyAdmin-2.8.0-rc1/
	<Directory /usr/local/php5/phpMyAdmin-2.8.0-rc1/>
	        # Restrict phpmyadmin access to just my worksation
	        Order Deny,Allow
	        Deny from all
	        Allow from 127.0.0.1
	</Directory>

Ricarico la configurazione di apache2:

	/etc/init.d/apache2 reload
	Reloading web server config...done.

Ora all'indirizzo:

	http://127.0.0.1/phpmyadmin/

ho accesso allo strumento che è davvero interessante.

Salto per ora l'installazione di Smarty (http://smarty.php.net/whyuse.php) e
ADODB (http://adodb.sourceforge.net) che sono comunque molto interessanti.

Forse prima devo imparare qualcosa di più elementare... ;)

a

-- 
ð Gli uomini sono fratelli fra loro. Cessano di esserlo quando
¶ la terra viene divisa da steccati e confini.
ñ
²			Heinmot-Tayala-Ket, Nez Percé
€
¯ KeyID:   5AF81406   2005-01-03   [scadenza: 2015-01-01]
3 KeyFpr:  A4E2 7C7C CFC7 1B1E E405  6443 9E07 AF95 5AF8 1406


Maggiori informazioni sulla lista glux