|
|
Riga 1: |
Riga 1: |
| =Introduzione=
| | {{Debianized}} |
| LAMP � l'acronimo di Linux Apache Mysql Php e indica l'ambiente libero (e anche gratuito in questo caso) di programmazione di applicazioni Web che � possibile costruire dalla somma delle parti di queste eccezionali applicazioni a sorgente aperto.
| |
|
| |
|
| Questa guida non fornisce alcun elemento per la configurazione ottimale dei server presi in esame (Apache e MySQL). Essa non � intesa ad amministrare tali servizi su macchine in produzione, ma solo a fornire all' utente domestico e allo sviluppatore web un ambiente correttamente configurato senza introdurre sensibili rischi per la sicurezza del computer usato.
| | ==Introduzione== |
| | Su debian il kernel pu� essere ricompilato con il metodo standard (valido con tutte le distribuzioni) oppure nella cos� detta ''debian-way''. |
|
| |
|
| Per il dettaglio sulla configurazione di quanto preso in esame Vi invitiamo pertanto a visitare in primo luogo i siti [http://httpd.apache.org Httpd Apache], [http://www.php.net PHP.net] e [http://www.mysql.org MySQL.org] e, quando presenti, le guide specifiche messe a disposizione da questa Community.
| | Questa guida illustrer� il metodo debian di compilare il kernel. Questo metodo consite nel creare un pacchetto debian del kernel compilato per una facile installazione/disinstallazione. |
|
| |
|
| Buona lettura!
| | ==Installazione Pacchetti== |
|
| |
|
| =Il server http=
| | Avremo innanzitutto bisogno di alcuni pacchetti di base per compilare e pacchettizzare un kernel: |
| ==Apache==
| |
| [http://httpd.apache.org/ Apache] � il frutto del lavoro della [http://www.apache.org/ Apache Software Foundation]. Tra le caratteristiche che ne fanno il server HTTP pi� diffuso evidenziamo che:
| |
| * � software libero;
| |
| * gira sulle pi� svariate piattaforme (*nix, Windows, ec...);
| |
| * � sviluppato in accordo con le pi� recenti specifiche per i servizi http.
| |
| Secondo [http://news.netcraft.com/archives/web_server_survey.html Netcraft] Apache, con una percentuale del 68% (febbraio 2005), � il server http pi� usato in assoluto.
| |
|
| |
|
| Apache deve il suo nome all' omonima trib� di indiani nordamericani, famosa per le straordinarie doti di resistenza e strategia. Visto per� che il software � stato inizialmente sviluppato come una serie di patches ad un altro server http, nell' uso comune Apache significa anche "A Patchy Server".
| | <pre> |
| | # apt-get install debhelper modutils kernel-package libncurses5-dev fakeroot |
| | </pre> |
|
| |
|
| La pronuncia corretta di Apache suona grossomodo come "APACI".
| | Adesso installiamo i sorgenti veri e propri del kernel. Useremo i sorgenti debian che hanno tutte le patch specifiche di debian. Nel seguito prenderemo come esempio la versione 2.6.8 del kernel, sostituitela con qualsiasi altra versione vogliate usare. |
|
| |
|
| Il progetto Apache � suddiviso principalmente in due rami distinti (ne esiste un terzo, ma � nella fase di sviluppo alpha al momento): la versione 1.3 (la versione "vecchia" molto robusta e testata) e la versione 2.0 (dal design innovativo rispetto alla precedente).
| | <pre> |
|
| | # apt-get install kernel-source-2.6.8 |
| ===Apache 1.3===
| | </pre> |
| ====Installazione====
| |
| L' installazione nuda e cruda di Apache 1.3 in Debian � di una semplicit� disarmante. Tutto quello che avremo bisogno di fare consiste nel dare il comando:
| |
| <pre># apt-get install apache</pre> | |
| al termine del download ci viene chiesto se vogliamo abilitare suExec: a meno di utilizzi professionali, possiamo tranquillamente rispondere "No".
| |
| ====Verifica====
| |
| A questo punto il nostro server web � gi� attivo, ma possiamo anche verificarlo tramite il comando '''ps''':
| |
| <pre>$ ps aux |grep apache
| |
| root 7378 0.0 0.4 4592 2228 pts/1 S 12:01 0:00 /usr/sbin/apache
| |
| www-data 7379 0.0 0.4 4592 2364 pts/1 S 12:01 0:00 /usr/sbin/apache
| |
| www-data 7380 0.0 0.4 4592 2364 pts/1 S 12:01 0:00 /usr/sbin/apache
| |
| www-data 7381 0.0 0.4 4592 2204 pts/1 S 12:01 0:00 /usr/sbin/apache
| |
| www-data 7382 0.0 0.4 4592 2204 pts/1 S 12:01 0:00 /usr/sbin/apache
| |
| www-data 7383 0.0 0.4 4592 2204 pts/1 S 12:01 0:00 /usr/sbin/apache</pre>
| |
| Notiamo subito uno dei meccanismi principali di Apache: esistono svariati processi in esecuzione. Per la precisione abbiamo 1 processo propriet� dell' utente root e ben 5 processi di propriet� dell' utente www-data, come possiamo vedere con il comando '''pstree''':
| |
| <pre>$ pstree -uc |grep apache
| |
| ??apache???apache(www-data)
| |
| ? ??apache(www-data)
| |
| ? ??apache(www-data)
| |
| ? ??apache(www-data)
| |
| ? ??apache(www-data)</pre>
| |
| Il primo processo (padre) viene lanciato da root e ed il suo unico compito consiste nel genere e controllare i restanti processi (figli). Sono questi ultimi a rispondere alle richieste http ed a fornire le pagine. In questo modo Apache gira con privilegi minimi (quelli dell' utente www-data) ed in caso di una sua eventuale compromissione gli effetti sul sistema sono in qualche misura limitati.
| |
|
| |
|
| ====Configurazione====
| | {{Box|Nota|Dalla versione 2.6.12 in poi del kernel di linux, i pacchetti sorgenti e binari si chiamano rispettivamente <tt>linux-source-x.x.x</tt> e <tt>linux-image-x.x.x</tt> (invece di <tt>kernel-source-x.x.x</tt> e |
| La configurazione di Apache � un compito estremamente delicato e pu� richiedere conoscenze anche notevoli in svariati ambiti quali networking, programmazione e amministrazione di sistema. Dato che questa guida si propone fondamentalmente di illustrare i passi necessari ad installare e configurare un sistema per uso non professionale, ci limiteremo agli aspetti macroscopici della configurazione.
| | <tt>kernel-image.x.x.x</tt>). Questo perch� in Debian sono presenti anche altri kernel diversi da linux, come hurd o freebsd. }} |
|
| |
|
| I files di configurazione di Apache risiedono nella directory '''/etc/apache''' al cui interno troviamo svariati files. Quello di cui ci occuperemo qui � il file di controllo principale e cio� '''httpd.conf'''. Apriamo il file con il nostro editor di fiducia (dobbiamo essere root per modificare questo file) e vediamo quali sono le direttive principali su cui agiremo.
| | Per ricompilare il kernel non � necessario essere root, anzi � sconsigliato. Baster� aggiungere l'utente dal quale si desidera ricompilare il kernel al gruppo '''src''', con il seguente comando: |
|
| |
|
| '''server-pool size'''
| | <pre> |
| Alla riga 130 del file di configurazione originale troviamo il primo blocco da prendere in esame: si tratta della direttiva che dice ad Apache il numero minimo e massimo di processi "figlio" da mantenere in memoria. Ogni processo "figlio" risponde ad un numero prefissato di richieste, dopodich� viene ucciso (mondo crudele) e ne viene generato uno nuovo. Esaminiamo la direttiva:
| | # adduser nomeutente src |
| <pre>MinSpareServers 5
| | </pre> |
| MaxSpareServers 10</pre>
| |
| Come default Apache genera 5 processi, ma se il carico aumenta pu� arrivare fino a 10 figli simultanei. Per un sistema domestico � sicuramente eccessivo ed io consiglio di porre queste limitazioni:
| |
| <pre>MinSpareServers 1
| |
| MaxSpareServers 2</pre>
| |
|
| |
|
| '''Number of servers to start initially''' | | {{Box|Nota|Ricordate di non usare mai l'utente root per ricompilare il kernel altrimenti tutti i file che verranno creati apparterranno a root:root. Se a questo punto si cercher� di compilare dall'utente normale si avranno problemi di permessi e per risolverli dovrete dare un: |
| Questo blocco (riga 153) dice ad Apache quanti sono i figli da generare al momento dell' avvio del server. Il default �:
| | # chown -R root:src /usr/src/ |
| <pre>StartServers 5</pre>
| | }} |
| che noi cambieremo in:
| |
| <pre>StartServers 1</pre>
| |
|
| |
|
| '''Listen'''
| | == Configurazione del kernel == |
| Questo blocco (riga 192) indica ad Apache su quale porta TCP restare in attesa di richeste http. E' anche possibile specificare una particolare accoppiata di indirizzo IP + porta TCP. Possiamo tranquillamente lasciare commentata la direttiva ed il nostro server sar� in ascolto sulla porta 80 per tutti gli indirizzi configurati sul sistema.
| |
|
| |
|
| '''BindAddress'''
| | === Passi preliminari === |
| Alla riga 199 abbiamo la direttiva che specifica a quale specifico indirizzo IP associare Apache. Come per il punto precedente, lasciamo pure il valore di default.
| | Entriamo ora nella directory dei sorgenti del kernel: |
|
| |
|
| '''ServerName'''
| | <pre> |
| Con questa direttiva (alla linea 276) diciamo ad Apache quale � il suo nome. Questo � particolarmente utile nel caso abbiamo a disposizione un [[FQDN]] (a questo proposito puoi consultare la guida [[Server Web Casalingo]]).
| | $ cd /usr/src |
| | </pre> |
|
| |
|
| '''DocumentRoot'''
| | Troveremo in questa directory (avendoli installati precedentemente) i sorgenti del kernel in un archivio tar.bz2: |
| Con questa direttiva (riga 284) indichiamo ad Apache quale directory del nostro sistema deve corrispondere alla radice del Web Server. Il default va pi� che bene: ricordatevi quindi che tutti i vostri files che volete pubblicare sul server http dovranno risiedere in '''/var/www''' o in una sua sotto-directory.
| |
|
| |
|
| {{Warningbox|� fondamentale per il funzionamento di Apache che i files che devono essere visibili via Web siano leggibili da parte dell' utente '''www-data''' e che le sotto-directory di /var/www siano raggiunbili dallo stesso utente}}
| | <pre> |
| Questo � il minimo indispensabile che ci occorre sapere per poter utilizzare proficuamente Apache: salviamo il file e procediamo a riavviare Apache. Per fare questo possiamo procedere in due modi distinti:
| | $ ls |
| * metodo standard <pre><nowiki># apachectl graceful
| | ... |
| /usr/sbin/apachectl graceful: httpd gracefully restarted</nowiki></pre>
| | kernel-source-2.8.6.tar.bz2 |
| * metodo debian init.d <pre><nowiki># /etc/init.d/apache restart
| | ... |
| Restarting apache.</nowiki></pre>
| | </pre> |
| Senza dubbio '''apachectl''' � il metodo da preferire. Oltre a riavviare Apache possiamo controllare altri aspetti del server web. Tra questi quello che inizialmente pu� risultare pi� comodo consiste nel controllo della sintassi del file di configurazione.<br>
| | |
| Facciamo un esempio:
| | Decomprimiamo il kernel: |
| <pre># apachectl configtest
| | |
| Syntax error on line 49 of /etc/apache/httpd.conf:
| | <pre> |
| ServerType takes one argument, 'inetd' or 'standalone'</pre>
| | $ tar xvjf kernel-source-2.6.8.tar.bz2 |
| lo script mi avvisa che alla riga 49 di httpd.conf c'� un errore di sintassi: la direttiva ServerType supporta un solo argomento, mentre nel file ne sono specificati almeno 2. Se controllo �a riga incriminata scopro che:
| | </pre> |
| <pre>ServerType is either inetd, or standalone. Inetd mode is only supported on</pre>
| |
| Noto subito che manca il commendo (#) a inizio riga, provvedo a reinserirlo e quindi controllo nuovamente la configurazione:
| |
| <pre># apachectl configtest | |
| Syntax OK</pre>
| |
|
| |
|
| Se non abbiamo fatto pasticci, una volta riavviato il server Apache, baster� puntare il nostro browser all' indirizzo '''http://127.0.0.1''' per vedere la pagina di default installata dal manutentore del pacchetto Debian:
| | A fine decompressione avremo una directory kernel-source-2.6.8, creiamo un link simbolico linux che punta ai sorgenti del kernel: |
| [[Immagine:Apache_installazione.png|thumb|center|Pagina di Benvenuto di Apache]]
| |
|
| |
|
| {{box|Nota Bene: Directory home degli utenti|Per default Apache permette anche a ciascun utente del sistema di avere una propria home. Poniamo l' esempio dell' utente '''pippo''': all' interno di /home/pippo l' utente dovr� semplicemente creare la directory '''public_html''' per poter accedere ai files in essa contenuti attraverso l' indirizzo '''http://127.0.0.1/~pippo/'''}}
| | <pre> |
| | $ ln -s /usr/src/kernel-source-2.6.8 linux |
| | </pre> |
|
| |
|
| Ora non ci resta che inserire i nostri files in /var/www o nella nostra public_html per poter cominciare ad usare Apache!
| | Non � necessario creare questo link, ma � una usuale convenzione farlo anche perch� risulta comodo per entrare nella directory dei sorgenti del kernel. |
|
| |
|
| ====Supporto SSL====
| | Ora spostiamoci della directory e puliamo i sorgenti del kernel: |
| Abilitando il supporto a SSL (Secure Socket Layer) � possibile instaurare un canale di comunicazione crittografato tra il nostro server web ed i browser che richiedono le pagine.
| |
|
| |
|
| Tra i vantaggi in termini di sicurezza che l' uso di SSL comporta, segnalo:
| | <pre> |
| * transito di informazioni sensibili (passwords, dati personali, ecc...) in internet attraverso un canale crittografato sicuro;
| | $ cd linux |
| * accertamento dell' identit� del server e/o del client web tramite certificati digitali.
| | $ make-kpkg clean |
| | </pre> |
|
| |
|
| Il supporto SSL per Apache pu� essere abilitato in due modi distinti:
| | Questo passaggio � inutile se � la prima volta che compilate il kernel, ma dalla seconda volta in poi diviene necessario per eliminare i file generati dalle precedenti compilazioni che potrebbero creare conflitti. |
| * realizzazione di un nuovo server Apache con supporto SSL (vedi: '''apt-cache show apache-ssl''');
| |
| * implementazione di Apache e Apache SSL nel medesimo server grazie a mod_ssl.
| |
|
| |
|
| In questa guida vedremo l' installazione e configurazione di '''mod_ssl'''.
| | Ora, se avete installato un kernel precompilato che abbia la stessa versione del kernel che volete ricompilare potreste usare il suo file di configurazione come base di partenza per configurare il vostro kernel. A tal scopo basta copiare il file di configurazione che st� in <tt>/boot</tt> (i file di configurazione dei kernel installati hanno come nome <code>config</code> seguito dalla versione del kernel) nella directory dei sorgenti: |
|
| |
|
| Procediamo con l' installazione del pacchetto:
| |
| <pre> | | <pre> |
| # apt-get install libapache-mod-ssl
| | $ cp /boot/config-2.6.8 .config |
| </pre> | | </pre> |
|
| |
|
| ===Apache 2.0===
| | C'� chi arriva anche a installare un kernel precompilato per usare semplicemente il suo file di configurazione. Se avete banda da sprecare � possibile farlo. Tuttavia si pu� benissimo partire da zero senza copiare nessun file di configurazione. |
| ====Installazione==== | | |
| L'installazione di Apache2 � perfettamente uguale a quella precedentemente illustrata per Apache:
| | === Configurazione: <code>make menuconfig</code> === |
| | |
| | A questo punto, per configurare il nostro kernel, non ci resta che lanciare il comando: |
| | |
| <pre> | | <pre> |
| # apt-get install apache2-mpm-prefork
| | $ make menuconfig |
| </pre> | | </pre> |
|
| |
|
| Il [[metapacchetto]] ''apache2'' � presente, ma installa '''apache2-mpm-worker''', che risulta non essere compatibile con '''libapache2-mod-php4'''.
| | Vi apparir� un'interfaccia testuale dalla quale sar� possibile configurare le opzioni del kernel. ''Questo � il passaggio pi� delicato, nonch� il pi� lungo e difficile''. |
|
| |
|
| ======I diversi pacchetti======
| | Se dovete configurare un kernel per la prima volta prendetevi almeno un'ora di tempo ed iniziate con calma, leggendo tutte le pagine dell'help in linea. Uno dei vantaggi di un kernel ricompilato � la possibilit� di ottenere un kernel estremamente piccolo e leggero proprio perch� viene compilato il supporto per le sole periferiche e i soli filesytem effettivamente usati. In questo modo si ha un kernel piccolo e pochi moduli. Un kernel di questo tipo impiega anche molto meno tempo ad essere compilato. Per fare un esempio potrebbe impiegare sui 10 min. su in athlon 1000, quando un kernel debian ufficiale impiegherebbe sicuramente pi� di un'ora sulla stessa macchina. In definitiva, compilando un kernel snello, sar� possibile anche fare pi� prove ed ottimizzarlo quindi al meglio. |
| La pacchettizzazione Debian, per�, � leggermente diversa, per poter gestire le nuove caratteristiche introdotte in Apache2: esistono quattro diversi pacchetti di Apache2, ognuno con delle caratteristiche diverse (relativamente alla gestione dei thread e dei child):
| |
| ; apache2-mpm-perchild : la soluzione adottata in questo pacchetto fa in modo che vengano avviati un numero definito di processi, i quali possono creare dei thread in base al carico della macchina. Una peculiarit� � la possibilit� di assegnare dei permessi diversi ad ogni processo, vincolarlo ad un singono ''virtual host'', cos� da gestire facilmente la redistribuzione delle risorse e/o personalizzare il servizio offerto;
| |
| ; apache2-mpm-prefork : I thread sono disabilitati, e la gestione dei '''pool di processi''' viene gestita come per Apache1 (''MinSpareServers'' e ''MaxSpareServers'');
| |
| ; apache2-mpm-threadpool : pacchetto di transizione;
| |
| ; apache2-mpm-worker : la soluzione � intermedia rispetto a perchild e prefork.
| |
|
| |
|
| Quello che a noi interessa � '''apache2-mpm-prefork''', visto che � l'unico ad essere compatibile con le librerie che offrono il supporto per php4.
| | Per trovare quali moduli sono richiesti dal vostro hardware potete usare il comando '''lspci''' o meglio '''lspci -v'''. Inoltre risulta utilissimo consultare il database dei driver di Linux a [http://kmuto.jp/debian/hcl/ questo indirizzo]: inserendo semplicemente l'output di <code>lspci -n</code>, otterrete l'elenco dei moduli da compilare |
|
| |
|
| ====Verifica====
| | Per approfondire la configurazione del kernel: |
| Per verificare la corretta installazione di Apache2, � sufficiente aprire un browser ed inserire l'indirizzo http://localhost/. | |
| Se Apache � stato installato correttamente, apparir� una schermata simile a questa:
| |
| [[Immagine:Apache2_installazione.png|thumb|center|Schermata di benvenuto di Apache2]]
| |
|
| |
|
| ====Configurazione====
| | * [[Esempio configurazione kernel]] nel nostro wiki, per un semplice esempio. |
| Le regole di configurazione viste precedentemente per Apache valgono anche per Apache2.<br />
| | * [http://a2.pluto.it/a266.htm#almltitle484 Elementi della configurazione] per una descrizione pi� dettagliata delle varie voci. Questo � un capitolo della monumentale opera [http://a2.pluto.it/appunti_di_informatica_libera.htm Appunti di Informatica Libera], per la quale tutti noi siamo grati all'autore '''Daniele Giacomini'''. |
| Sono per� presenti delle sostanziali differenze a livello strutturale, per quanto riguarda la struttura della directory '''/etc/apache2''', che riguardano l'organizzazione dei file e la gestione dei ''VirtualHost'' e dei ''moduli''.
| | * [http://kernel.xc.net/ Linux Kernel Configuration Archive]: potrete cercare le varie opzioni di configurazione di ogni versione del kernel. |
|
| |
|
| =====Organizzazione dei file=====
| | In bocca al lupo con la configurazione ;-). |
| Durante il passaggio da Apache ad Apache2, sono state apportate delle modifiche ai file di configurazione, ai loro nomi e all'organizzazione delle directory contenenti le configurazione dei ''VirtualHost' e dei ''moduli'', il tutto per disporre di un sistema di gestione flessibile e facilmente gestibile:
| |
|
| |
|
| ======File di Configurazione======
| | Una volta finita la configurazione, uscite e salvate i cambiamenti. A questo punto il file <tt>/usr/src/linux/.config</tt> conterr� la nostra configurazione del kernel. |
| Il file di configurazione di Apache2 si chiama '''apache2.conf''', ed adotta la stessa sintassi del vecchio file di configurazione '''httpd.conf''', che � ancora presente nella directory '''/etc/apache2''' e viene richiamato all'interno del file di configurazione generale, per motivi di compatibilit�... consiglio, comunque, di non utilizzarlo, in quando � un file di transizione, e in futuro potrebbe venir rimosso da apache2.
| |
|
| |
|
| ======Moduli======
| | {{Box|Nota|Se avete gi� ricompilato il vostro kernel e volete passare ad una versione pi� aggiornata, ma non troppo diversa (ad esempio: 2.6.8 --> 2.6.10), non conviene rifare tutta la configurazione da capo. D'altro canto non � neanche possibile usare il vecchio file di configurazione dato che nel nuovo kernel ci saranno voci in pi� e o in meno e sarebbe improponibile cercarle ad una ad una. |
| La gestione dei moduli ha subito una profonda modifica rispetto alla versione 1 di Apache: non � pi� legata ad un solo file, ma a due directory: '''/etc/apache2/mods-available''' e '''/etc/apache2/mods-enabled'''.
| |
| ; mods-available : contiene i file che permettono il caricamento dei moduli. I file presenti all'interno di questa directory sono divisibili, tramite le loro estensioni, in due categorie: i file con estensione ''.load'' contengono le istruzioni necessarie al caricameto dei moduli; i file con estensione ''.config'', invece, contengono le eventuali opzioni di configurazione da passare al modulo.
| |
|
| |
|
| ; mods-enables : contiene dei link ai file presenti nella directory '''mods-available'''. All'avvio di Apache verranno caricati i moduli i cui file di canfigurazione presentano un link in questa directory.
| | Basta allora copiare il vecchio file di configurazione nella directory dei sorgenti del nuovo kernel e lanciare il comando: |
|
| |
|
| ======Siti======
| | $ make oldconfig |
| In apache2, a differenza di apache1, tutti i siti vengono gestiti tramite ''siti''.
| |
| La struttura utilizzata per la gestione di questi � del tutto simile a quella dei moduli: sono presenti due directory: '''/etc/apache2/sites-available''' e '''/etc/apache2/sites-enabled''' che funzionano esattamente come illustrato precedentemente.
| |
| Il concetto � semplice: ogni file presente in '''sites-available''' rappresenta un sito, con tutti i sottodomini associati. Per abilitarli � sufficiente un link simbolico in '''sites-enabled'''.
| |
| Anche in questo caso, inoltre, apache2 mette a disposizione due comodi comandi per la gestione dei siti: '''a2ensite''' e '''a2dissite''', che hanno la funzione, rispettivamente, di attivare e disattivare un sito.
| |
|
| |
|
| L'utilizzo di questi due tool � semplicissimo:
| | in questo modo verranno fatte delle domande su come configurare ''le sole nuove voci'' presenti nel kernel. Se i due kernel sono troppo diversi questo metodo non conviene pi� dato che bisogna rispondere ad uno ad uno a tutte le domande sulle voci diverse. Sicuramente non conviene usarlo per il passaggio 2.4 --> 2.6.<br> |
| * se si lancia il comando senza parametri, verr� mostrata la lista di tutti i siti disponibili
| | Un file config del vostro attuale kernel pu� essere trovato in <tt>/boot</tt> sotto il nome di <tt>config-2.x.x</tt>.}} |
| * se si indica il sito su cui effettuare l'operazione, questa verr� eseguita.
| |
|
| |
|
| Per rendere effettive le modifiche � necessario riavviare apache2.
| | === Alternative a <code>make menuconfig</code> === |
|
| |
|
| =====Supporto SSL=====
| | Per completezza segnalo le altre interfacce grafiche che � possibile usare per configurare il kernel al posto di <code>make menuconfig</code>. |
| Per Apache2, a differenza di Apache1, non esiste un pacchetto '''apache-ssl''' per attivare il supporto [[ssl]]. Per attivare il supporto ssl � necessario modificare la configurazione di apache. | | |
| | ;<code>make xconfig</code>: per usare una interfaccia grafica '''qt''' per la configurazione. |
| | ;<code>make gconfig</code>: per usare una interfaccia grafica '''gtk''' per la configurazione. |
| | |
| | Questi fronted non aggiungono niente di nuovo e sono pertanto funzionalmente equivalenti tra di loro. Per usarli sono per� necessarie le librerie di sviluppo, rispettivamente, di ''qt'' e ''gtk''. |
| | |
| | == Compilazione del kernel == |
| | Ora � venuto il momento di cominciare la compilazione, a tal scopo useremo make-kpkg. Vediamo come utilizzare velocemente questo tool per compilare il nostro kernel personalizzato: |
|
| |
|
| Per abilitare il supporto, e creare i certificati necessari al funzionamento dell'ssl, bisogna installare openssl:
| |
| <pre> | | <pre> |
| # apt-get install openssl
| | $ fakeroot make-kpkg --append-to-version -nomepersonalizzato --revision=1 kernel_image |
| </pre> | | </pre> |
|
| |
|
| Oltre a questo, deve essere abilitato il modulo ''ssl'', con il comando prima descritto per la gestione dei moduli in Apache2:
| | Questo comando compiler� il nostro kernel e lo inserir� in un pacchetto debian in /usr/src. Il comando '''fakeroot''' viene usato semplicemente per simulare un ambiente di root per l'utente normale. |
| <pre>
| |
| # a2enmod ssl
| |
| </pre>
| |
|
| |
|
| Per la generazione del certificato, apache2 offre il comando:
| | Diamo uno sguardo alle opzioni usate: |
| <pre>
| |
| # apache2-ssl-certificate
| |
| </pre>
| |
| che, tramite una serie di domande, creer� nella direcotry '''/etc/apache2/ssl/''' due file: ''apache.pem'' ed il certificato.
| |
|
| |
|
| Ora aggiungiamo un ''sito'' con supporto ssl: con il nostro editor preferito creiamo un file di testo in '''/etc/apache2/sites-available''' come nel seguente esempio (il nome del file pu� essere, ad esempio, '''default-ssl'''):
| | ; --append-to-version : serve ad aggiungere un nome personalizzato al pacchetto che verr� aggiunto dopo il numero di versione, che in questo caso diventer� ''2.6.8-nomepersonalizzato''. |
| <pre>
| |
| NameVirtualHost *:443
| |
| <VirtualHost *:443>
| |
| SSLEngine on
| |
| SSLCertificateFile /etc/apache2/ssl/apache.pem
| |
| SSLCertificateKeyFile /etc/apache2/ssl/apache.pem
| |
|
| |
|
| ServerAdmin admin@dominio.org
| | ; --revision : permette di impostare il numero di revisione del pacchetto, normalmente viene indicato con un numero intero. |
| ServerName server.dominio.org
| |
|
| |
|
| ErrorLog /var/log/apache2/error_ssl.log
| | ; kernel_image : dice a make-kpkg di compilare l'immagine del kernel creare il pacchetto debian. |
| LogLevel warn
| |
| CustomLog /var/log/apache2/access_ssl.log combined
| |
| ServerSignature On
| |
| DocumentRoot /var/www/apache2-default
| |
|
| |
|
| <Directory>
| | Se ad esempio compileremo per la seconda volta lo stesso kernel, per fare solo delle modifiche minori, pu� essere utile usare lo stesso nome per --append-to-version ed usare un numero di revisione maggiore. In questo modo quando installarete il pacchetto del kernel ricompilato questo sostituir� il pacchetto precedente. Al contrario se ricompilate un secondo kernel cambiando la stringa da appendere alla versione, il pacchetto del nuovo kernel conviver� tranqullamente col precedente. |
| Options FollowSymLinks
| |
| AllowOverride None
| |
| </Directory>
| |
| <Directory /var/www/apache2-default>
| |
| Options Indexes FollowSymLinks MultiViews
| |
| AllowOverride None
| |
| Order allow,deny
| |
| allow from all
| |
| </Directory>
| |
|
| |
|
| ScriptAlias /cgi-local/ /var/www/apache2-default/cgi-bin/
| | In realt� il comando '''make-kpkg''' accetta molti ulteriori paramentri (elencher� solo i pi� importanti per gli altri leggete l'amichevole pagina di manuale aka read the friendly manual): |
| ScriptAlias /cgi-bin/ /usr/lib/cgi-bin/
| |
|
| |
| <Directory "/var/www/apache2-default/cgi-bin">
| |
| AllowOverride None
| |
| Options None
| |
| Order allow,deny
| |
| Allow from all
| |
| </Directory>
| |
|
| |
|
| <Directory "/usr/lib/cgi-bin">
| | ; --added-modules foo : compila dei sorgenti esterni (presenti in /usr/src/modules) insieme al kernel, potete mettere pi� nomi separati da virgole |
| AllowOverride None
| | ; --added-patches foo : aggiunge delle patch al kernel, le patch possono essere molteplici separate da virgole |
| Options None
| | ; --config : sceglie quale frontend usare per configurare il kernel (config, menuconfig, xconfig, gconfig) |
| Order allow,deny
| | ; --initrd : da usare se state compilando un kernel che utilizza le immagini initrd.img |
| Allow from all
| | ; --zimage : crea una zImage per il kernel |
| </Directory>
| | ; --bzImage : crea una bzImage per il kernel |
| | ; --mkimage : qui potete passare dei parametri a mkinitrd, ad esempio se volete creare una immagine rom "genromfs -d %s -f %s" |
| | ; --rootcmd foo : per passare un comando a make-kpkg ad esempio fakeroot o sudo |
| | ; CONCURRENCY_LEVEL : questa variabile e' l'omonimo di -j per make, per usarla vi basta mettere il numero intero che desiderate usare (''$ CONCURRENCY_LEVEL=4 make-kpkg --blabla ecc.ecc...'' ) |
|
| |
|
| Alias /icons/ "/usr/share/apache2/icons/"
| | Come ultimo parametro dovremo mettere un'azione da compiere, vediamo le principali: |
| Alias /manual/ "/usr/share/doc/apache2-doc/manual/"
| |
|
| |
| <Directory "/usr/share/apache2/icons">
| |
| Options Indexes MultiViews
| |
| AllowOverride None
| |
| Order allow,deny
| |
| Allow from all
| |
| </Directory>
| |
| </VirtualHost>
| |
| </pre>
| |
|
| |
|
| Molte delle opzioni contenute nell'esempio sono prese pari pari dal file '''/etc/apache2/sites-available/default'''.
| | ; clean : pulisce i sorgenti |
| | ; buildpackage : pulisce i sorgenti e avvia "binary" (vedere sotto) |
| | ; binary : questo genera un nuovo pacchetto deb con i sorgenti, uno con gli header, uno con la documentazione e uno con l' immagine del kernel |
| | ; kernel_headers : questo genera un pacchetto con gli headers del kernel |
| | ; build : compila solo l'immagine del kernel |
| | ; modules :compila tutti moduli esterni sotto /usr/src/modules e genera un file .diff e un pacchetto sorgente |
| | ; modules_config : permette di configurare i moduli esterni residenti in /usr/src/modules prima di compilarli |
| | ; modules_image : crea i pacchetti deb dei moduli esterni residenti in /usr/src/modules senza il file .diff e senza creare un'altro pacchetto sorgente |
| | ; modules_clean : pulisce i sorgenti dei moduli esterni presenti in /usr/src/modules |
| | ; debian : questo crea la directory ./debian utile per compilare i kernel vanilla e patcharli alla maniera debian |
|
| |
|
| Mancano due modifiche, prima di avere il supporto ssl attivo: Apache non � in ascolto sulla porta 443, quella normalmente utilizzata da apache-ssl, e quindi lo dobbiamo istruire modificando il file '''/etc/apache2/ports.conf''' aggiungendo la riga:
| | ==Installazione nuovo kernel== |
| <pre>
| | Una volta finito torneremo alla riga di comando e ci sposteremo nella directory precedente (/usr/src/) dove troveremo il pacchetto .deb del kernel appena compilato: |
| Listen 443
| |
| </pre>
| |
|
| |
|
| Come ultima cosa, importantissima, bisogna attivare il sito che abbiamo appena creato (sempre utilizzando i comodi comandi che Apache2 ci mette a disposizione). Sar quindi sufficiente un
| |
| <pre> | | <pre> |
| # a2ensite default-ssl
| | $ cd .. |
| | $ ls |
| | ... |
| | kernel-image-2.6.8-nomepersonalizzato-386_1.Custom_i386.deb |
| | ... |
| </pre> | | </pre> |
| questo se si scelto di creare un file separato per i siti che avranno il supporto ssl... Un'altra pratica molto diffusa quella di gestire ogni singolo sito come un file, quindi le direttive per l'abilitazione del supporto ssl vengono scritte all'interno del file ''generale'' di quel sito (in questo caso il file '''default''').
| |
|
| |
|
| Per rendere effettive tutte le modifiche, riavviamo apache:
| | Adesso possiamo installare il pacchetto con il nostro nuovo kernel ricompilato. Diventiamo quindi root con '''su''', e digitiamo: |
| <pre> | | <pre> |
| # /etc/init.d/apache2 restart | | # dpkg -i kernel-image-2.6.8-nomepersonalizzato-386_1.Custom_i386.deb |
| </pre> | | </pre> |
|
| |
|
| =====Far convivere Apache e Apache2=====
| | Se abbiamo lilo dovremo configurare lilo.conf aggiungendo le righe relative al kernel. Ricordatevi che, con lilo, per rendere effettive le modifiche bisogna aggiornare il [[MBR]] (Master Boot Record) con il comando: |
| Alcune volte pu� essere utile far convivere Apache1 e Apache2 sulla stessa macchina (magari durante un periodo di migrazione)...a tale proposito, � buona norma modificare il numero della porta su cui uno dei due server � in ascolto.
| |
| Normalmente si ''sposta'' Apache2 dalla porta '''80''' alla '''8080''' (sempre se su questa non � configurato un server proxy).
| |
|
| |
|
| Per modificare la porta su cui Apache2 in ascolto sufficiente modificare il file '''/etc/apache/ports.conf''' sostituendo al numero '''80''', '''8080'''. Nel file '''ports.conf''' avremo, quindi, una riga come la seguente:
| |
| <pre> | | <pre> |
| Listen 8080
| | # lilo -v |
| </pre> | | </pre> |
|
| |
|
| =Il processore PHP=
| | Se abbiamo grub, invece, non ci resta altro che riavviare :D. Tuttavia per approfondire le personalizzazioni che � possibile fare su grub, potete leggere l'apposita sezione della [[Guida a Grub]]: |
| PHP � un [[acronimo ricorsivo]] per "PHP: Hypertext Preprocessor" e cio� "PHP: preprocessore ipertestuale". Questo significa che i nostri script non vengono elaborati dai client (in questo caso dai browser) come ad esempio nel caso di javascript, ma che vengono eseguiti direttamente sul server il quale fornisce ai clients semplici pagine html. Un linguiaggio di questo tipo viene chiamato anche '''server-side''' (lato server), in contrapposizione ai linguaggi '''client-side''' (lato client).
| | |
| | * [[Guida_a_Grub#Usare_update-grub|Guida a Grub: Usare update-grub]] |
|
| |
|
| La cosa pi� interessante nell'uso di PHP � che si tratta di un linguaggio estremamente semplice per il principiante, ma che, tuttavia, offre molte prestazioni avanzate al programmatore di professione.
| | ==Installare e gestire i moduli== |
|
| |
|
| Con PHP non siete limitati soltanto ad un output in HTML. Le possibilit� di PHP, infatti, includono l'abilit� di generare immagini, files PDF e perfino filmati Flash al volo (utilizzando libswf e Ming). Sarete in grado di generare facilmente qualsiasi testo, come XHTML e qualsiasi altro file XML. PHP pu� autogenerare questi file, e salvarli nel file system, piuttosto che eseguire un printing esterno, o creare server-side cache per contenuti dinamici.
| | Per compilare e creare automaticamente pacchetti .deb per moduli non presenti nei sorgenti del kernel, Debian fornisce un comodo strumento: [[Pagina di manuale di module-assistant|module-assistant]]. Per un uso interattivo baster� lanciarlo da root per installare i pacchetti, scaricare i sorgenti del modulo che interessa, compilarlo e creare un pacchetto debian. |
|
| |
|
| Una delle caratteristiche pi� importanti e significative di PHP � la possibilit` di supportare una completa gamma di databases. Scrivere una pagina web collegata ad un database � incredibilmente semplice.
| | Per scegliere invece quali moduli fare partire all'avvio ci sono diverse strade. |
|
| |
|
| PHP fa anche da supporto per dialogare con altri servizi utilizzando i protocolli del tipo LDAP, IMAP, SNMP, NNTP, POP3, HTTP, COM (in Windows) e innumerevoli altri. Potete anche aprire network sockets ed interagire usando qualsiasi altro protocollo. Inoltre supporta l'interscambio di dati complessi WDDX tra, virtualmente, tutti i linguaggi di programmazione web. A proposito di interconessioni, PHP supporta l'installazione dei JavaObjects e l'utilizzo di questi come oggetti PHP in modo trasparente. Si pu� anche usare la nostra estensione CORBA per accedere ad oggetti remoti.
| | # Se si usa l'hotplug, questi dovrebbe caricare automaticamente al boot tutti i moduli necessari. Per evitare il caricamento di certi moduli che possono creare conflitti basta inserili in '''/etc/hotplug/blacklist'''. |
| {{box|Nota Bene:|Questo elenco delle funzionalit� offerte da PHP � tratto dal manuale online di PHP e precisamente dal capitolo [http://it2.php.net/manual/it/intro-whatcando.php Che cosa pu� fare PHP?]}}
| | # Se non si usa l'hotplug bisogna specificare manualmente quali moduli caricare all'avvio. Per far ci� baster� inserire i nomi dei moduli da caricare in '''/etc/modules''', uno per riga. Se non vi va di editare un file di testo (o non ricordate esattamente i nomi dei moduli) potrete usare '''modconf''' che permette di scegliere interattivamente quali moduli caricare all'avvio. |
|
| |
|
| ==Installazione== | | ==FAQ== |
| Anche installare PHP non � un compito per nulla complesso.
| | ===Per aggiungere un modulo devo ricompilare tutto il kernel?=== |
| ===PHP e Apache 1.3=== | | Dipende. |
| Vediamo subito come procedere a abilitare PHP per il nostro server Apache in maniera minimale:
| |
| <pre># apt-get install libapache-mod-php4</pre>
| |
| Apt scaricher� il modulo per Apache, le eventuali dipendenze e aggiorner� anche il file di configurazione dei moduli (/etc/apache/modules.conf).
| |
|
| |
|
| Tutto quello che dovremo fare manualmente � di riavviare Apache, altrimenti non ci fornir� gli script Php elaborati, ma ci permetter� unicamente di scaricarli. Come abbiamo gi� visto nella sezione relativa all' installazione di Apache il comando �:
| | Se il modulo fa parte del kernel debian (cio� il suo sorgente � contenuto nel pacchetto <tt>kernel-source</tt> del kernel) allora bisogna ricompilare il kernel. Tenete presente, tuttavia, che i kernel binari debian includono gi� la maggior parte dei moduli presenti nei sorgenti del kernel. Per caricarli basta usare: |
| <pre># apachectl graceful | |
| /usr/sbin/apachectl graceful: httpd gracefully restarted</pre>
| |
|
| |
|
| Ora, anche se a livello minimale, Apache � in grado fornire al nostro browser l' output degli script elaborati dal motore PHP. Non ci resta altro da fare che [[#Test|testarne]] il funzionamento.
| | # modprobe ''nomemodulo'' |
|
| |
|
| ===PHP e Apache 2.0===
| | Se il sorgente del modulo � invece pacchettizzato singolarmente (il nome di questi pacchetti comincia per <tt>module-source</tt>) '''non � necessario''' ricompilare il kernel. |
| Per abilitare il Php in Apache2 bisogna installare il modulo apposito:
| | Debian ci fornisce la comoda utility '''module-assistant''' che permette di scaricare, compilare e pacchettizzare un modulo del kernel. Basta lanciare il comando |
| <pre> | |
| # apt-get install libapache2-mod-php4
| |
| </pre> | |
|
| |
|
| Durante l'installazione verr� aggiornata la configurazione di Apache2 per attivare il supporto a php4, inoltre verr� automaticamente riavviato il server Web.
| | # m-a |
|
| |
|
| ==Test==
| | e una interfaccia ''dialog'' ci guider� passo passo. |
| Il modo pi� semplice per testare la nostra installazione di PHP consiste nel preparare uno script e tentare di visualizzarlo nel nostro browser.
| |
|
| |
|
| Possiamo procedere in due modi fondamentalmente: creare uno script nella '''DocumentRoot''' del server web, e cio� '''/var/www''' (se non l' avete modificata in ahttpd.conf) oppure nella nostra '''public_html.
| | Si pu� usare il comando <tt>module-assistant list-avaible</tt> (o il diminutivo <tt>m-a la</tt>) per ottenere la lista completa dei moduli installabili con module-assistant. Per le altre innumerevoli opzioni potete leggere la pagina di manuale tradotta in italiano: |
|
| |
|
| Nel caso vogliate creare o spostare files all' interno della DocumentRoot di Apache � indispensabile tenere sempre a mente che quella directory e le directory in essa contenute sono visibili anche da altri computer (nella eventuale lan o su internet): prestate estrema attenzione ai permessi di scrittura di questi files!
| | * [[Pagina di manuale di module-assistant]] |
|
| |
|
| Un consiglio personale consiste nell' agire sempre come utente '''www-data''' quando operate nella DocumentRoot: vi risparmierete patemi in fatto di permessi e sicurezza. Per loggarci come utente www-data � sufficiente operare in questo modo:
| | ===Bisogna usare l'initrd oppure no?=== |
| <pre>$ whoami
| | La risposta breve �: no non usatelo. |
| keltik
| |
| $ su
| |
| Password:
| |
| # whoami
| |
| root
| |
| # su - www-data
| |
| $ whoami
| |
| www-data</pre>
| |
| Siamo cos� passati dal nostro utente normale all' utente root e da questo siamo diventati l' utente www-data (il passaggio tramite l' utente root ci evita di dover fornire la password per www-data). Avendo usato il comando '''su - ''' abbiamo effettuato un login vero e proprio, ereditando tutte le variabili locali per www-data.
| |
|
| |
|
| Ora possiamo operare in tranquillit� nella DocumentRoot (che � anche la $HOME dell' utente www-data).
| | Di seguito la risposta lunga: |
|
| |
|
| Se invece scegliamo di usare la nostra public_html, non dovremo fare altro che creare il file al suo interno usando il nostro utente normale.
| | L'immagine initrd (ramdisk iniziale) serve per caricare dei moduli nel kernel prima che questo abbia l'accesso alla partizione di root. Quindi basta compilare questi moduli staticamente e non avremo mai bisogno di un ramdisk. Ma quali sono questi moduli che servono nelle prime fasi di avvio? Semplicemente i moduli che permettono di leggere la partizione di root, ovvero: |
|
| |
|
| Usiamo il nostro editor preferito e creiamo il file prova.php che conterr� questo codice:
| | * il modulo del controller del proprio harddisk |
| <pre><?php phpinfo(); ?></pre>
| | * il modulo del filesystem della partizione di root |
|
| |
|
| {{box|Nota Bene|Aldil� di quale sia il vostro editor preferito, consiglio caldamente di imparare quantomeno i rudimenti di '''vi''': questo editor testuale infatti � presente nella quasi totalit� dei sistemi operativi *nix, � molto pratico anche durante sessioni telnet o ssh e - con un minimo di allenamento - dispone di tutta la potenza necessaria ad un editor di codice}}
| | Per un kernel casalingo ricompilato, l'uso dell'initrd non solo � inutile (e leggermente pi� lento) ma � anche facile da sbagliare (se vi scordate ad esempio il supporto cramfs nel kernel o non aggiungete i giusti moduli all'immagine del ram disk il sistema andr� in kernel panic e dovrete ricompilare nuovamente). L'initrd serve soprattutto per i kernel ufficiali delle distribuzioni che devono supportare tutti i controller esistenti e una gran variet� di filesystem. Sarebbe assurdo compilare tutti questi supporti staticamente e quindi vengono inseriti come moduli nel ram disk. L'initrd � necessario anche se si vuole usare un bootsplash, ma questa � un'altra storia: |
|
| |
|
| Se tutto � andato bene, puntando il browser all' indiritto http://127.0.0.1/prova.php (nel caso di aver usato la DocumentRoot) oppure http://127.0.0.1/~utente/prova.php vedremo una pagina html che riporta molte informazioni utili sul nostro nuovo ambiente di sviluppo (versione del software, moduli di apache, moduli di php, variabili di ambiente, ecc...).
| | * [[Compilazione Kernel 2.6.11 con Bootsplash]] |
| | * [[Kernel2.6.10 - Framebuffer - Gensplash Patch]] |
|
| |
|
| =Il Database Server=
| | La risposta lunga � quindi no, non usate il'initrd quando questo non sia strettamente necessario. |
| ==MySQL==
| |
| Passiamo adesso ad installare il server di database MySQL.
| |
| <pre># apt-get install mysql-server</pre>
| |
| che, oltre al server MySQL, installer� per noi anche il client, alcuni tools e le librerie indispensabili.
| |
|
| |
|
| A questo punto il server MySQL dovrebbe essere installato ed avviato automaticamente. Possiamo controllare usando il solito comando '''ps''' oppure '''/etc/init.d/mysql status'''.
| | ===Ma se io devo usare l'initrd assolutamente?=== |
| {{Warningbox|MySQL inizialmente � accessibile unicamente all' utente '''root''' senza alcuna password.}}
| | Per usare l'intrd '''si deve''' compilare staticamente il supporto per l'initrd impostando le seguenti voci: |
| {{box|Nota Bene:|Negli esempi seguenti ho digitando i comandi mysql su righe diverse per renderli pi� leggibili, ma nulla vieta di scrivere tutto di seguito sulla medesima linea.}}
| |
| La nostra prima preoccupazione dovrebbe essere senz' altro quella di impostare una passowrd per l' utente root. Ecco come fare:
| |
| <pre>
| |
| $ mysql -u root
| |
| mysql> SET PASSWORD
| |
| -> FOR root@localhost
| |
| -> =
| |
| -> PASSWORD('la_tua_password')
| |
| -> ;
| |
| Query OK, 0 rows affected (0.08 sec)
| |
|
| |
|
| mysql> exit
| |
| Bye
| |
| $
| |
| </pre>
| |
| {{box|Nota Bene:|Se non funziona il comando '''mysql -u root''' provare con '''mysql -u root -p''' e se richiede la password lasciarla vuota e premere invio.}}
| |
| Se ora proviamo a loggarci nuovamente, dovremmo vederci negato l' accesso in questo modo:
| |
| <pre> | | <pre> |
| $ mysql -u root
| | Device Drivers ---> |
| ERROR 1045: Access denied for user: 'root@localhost' (Using password: NO)
| | Block devices ---> |
| | <*> RAM disk support |
| | (16) Default number of RAM disks |
| | (8192) Default RAM disk size (kbytes) |
| | [*] Initial RAM disk (initrd) support |
| </pre> | | </pre> |
| Riproviamo usando la password che abbiamo scelto in precedenza:
| | |
| | Inoltre bisogna anche aggiungere il supporto per il filesystem usato nell'immagine del ram disk. In debian si usa di default il '''cramfs''', attivabile alla voce: |
| | |
| <pre> | | <pre> |
| $ mysql -u root -pla_tua_password
| | File systems ---> |
| Welcome to the MySQL monitor. Commands end with ; or \g.
| | Miscellaneous filesystems ---> |
| | <*> Compressed ROM file system support |
| </pre> | | </pre> |
| {{box|Nota Bene:|Lo switch "-p" usato nel comando ''mysql'' prevede che la password venga digitata '''senza spazi tra il -p e la password effettiva'''. Non si tratta di un mio errore di battitura!<br> Se invece usiamo lo switch "-p" senza specificare alcuna password, questa ci verr richiesta interattivamente.}}
| |
| Usare utenti con privilegi alti non mai una buona idea, per cui provvediamo a creare un utente a cui concederemo i privilegi minimi (ma al quale potremo dare privilegi pi alti per database specifici):
| |
| <pre>
| |
| mysql> GRANT USAGE ON *.*
| |
| -> TO 'utente'@'localhost'
| |
| -> IDENTIFIED BY 'la_tua_password'
| |
| -> ;
| |
| Query OK, 0 rows affected (0.02 sec)
| |
|
| |
|
| mysql> FLUSH PRIVILEGES;
| | Se si vuole usare un'altro filesystem basta impostarlo in '''/etc/mkinitrd/mkinitrd.conf'''. |
| Query OK, 0 rows affected (0.04 sec)
| | |
| </pre> | | Con tali configurazioni � possibile compilare il kernel con initrd aggiungendo semplicemente l'opzione <code>--initrd</code> al comando <code>make-kpkg</code>. Il pacchetto risultante conterr� degli script che creeranno l'immagine initrd in fase di installazione del pacchetto. |
| Se ora proviamo a loggarci con il nuovo utente, dovremmo riuscire ad autenticarci usando le credenziali specificate con il comando GRANT.
| | |
| | Attualmente ci sono tre tool in debian che permettono di creare l'immagine initrd: |
| | |
| | * '''<code>mkinitrd</code> ''' (fornito dal pacchetto <code>initrd-tools</code>): questo � il vecchio metodo usato fino al kernel 2.6.12. |
| | * '''<code>update-initramfs</code> ''' (fornito dal pacchetto <code>initramfs-tools</code>): utilizzabile con kernel 2.6.13 o pi� recenti. Aggiunge tutti i controller del disco e i supporti che potrebbero servire per il boot che sono stati complati come moduli. |
| | * '''<code>mkinitrd.yaird</code> ''' (fornito dal pacchetto <code>yaird</code>): utilizzabile con kernel 2.6.13 o pi� recenti. Analizza il sistema e aggiunge all'immagine initrd '''solo''' i moduli necessari all boot della macchina su cui si installa il kernel. Permette di ottenere una immagine molto pi� piccola del caso precedente. |
| | |
| | Per ulteriori informazioni sui kernel debian e le immagini initrd: |
| | |
| | * [http://kernel-handbook.alioth.debian.org/ch-initramfs.html Debian Linux Kernel Handbook: Managing the initial ramfs (initramfs) archive] |
|
| |
|
| Ora creiamo un database nuovo:
| | === Ma il kernel non fa il boot senza initrd! === |
| <pre>
| | Vedi FAQ precedente. L'initrd non � necessario per fare il boot. Se il sistema non parte ci� dipende da una incorretta configurazione del kernel. |
| mysql> CREATE DATABASE prova;
| |
| Query OK, 1 row affected (0.00 sec)
| |
|
| |
|
| mysql> show databases;
| | '''lordnisse''' ha riportato sul forum che per avviare il suo sistema � stato necessario compilare anche il supporto per partizioni MS-DOS: |
| +----------+
| |
| | Database |
| |
| +----------+
| |
| | mysql |
| |
| | prova |
| |
| | test |
| |
| +----------+
| |
| 3 rows in set (0.02 sec)
| |
| </pre>
| |
| ed assegnamo all' utente che abbiamo creato in precedenza piena diritti di amministrazione al database:
| |
| <pre>
| |
| mysql> GRANT ALL PRIVILEGES
| |
| -> ON prova.*
| |
| -> TO 'utente'@'localhost'
| |
| -> ;
| |
| Query OK, 0 rows affected (0.02 sec)
| |
|
| |
|
| mysql> FLUSH PRIVILEGES;
| |
| Query OK, 0 rows affected (0.04 sec)
| |
| </pre>
| |
| Se ora ci logghiamo con il nostro utente e chiediamo una lista dei database, vedremo unicamente quelli su cui abbiamo privilegi:
| |
| <pre> | | <pre> |
| mysql> show databases;
| | File systems ---> |
| +----------+
| | Partition Types ---> |
| | Database |
| | [*] Advanced partition selection |
| +----------+
| | [*] PC BIOS (MSDOS partition tables) support (NEW) |
| | prova |
| |
| +----------+
| |
| 1 row in set (0.00 sec)
| |
| </pre> | | </pre> |
| Selezioniamo il database su cui operare col comando:
| | |
| | === Posso usare make-kpkg con un kernel vanilla === |
| | Certamente, <tt>make-kpkg</tt> pu� essere usato indifferentemente sia con i sorgenti Debian del kernel di linux che con i sorgenti del [[kernel vanilla]]. |
| | |
| | I sorgenti Debian sono contenuti nei pacchetti <tt>kernel-source-*</tt> (o <tt>linux-source-*</tt> per i kernel dal 2.6.12 in poi) e sono installabili come usuali pacchetti con [[APT]]. |
| | |
| | I sorgenti vanilla devono essere scaricati manualmente da [http://www.kernel.org www.kernel.org]. Devono essere scompattati in <code>/usr/src</code>, e per il resto la procedura di compilazione � assolutamente identica al caso di sorgenti Debian. |
| | |
| | Nel caso di sorgenti vanilla, pu� essere interessante vedere l'opzione <tt>debian</tt> nella sezione [[Debian_Kernel_Howto#Compilazione_del_kernel|Compilazione del kernel]], tuttavia l'uso di tale parametro � del tutto opzionale. |
| | |
| | ===Errore con l'opzione <tt>--revision</tt> === |
| | Puo' capitare che, ricompilando il kernel variando il valore dell'opzione <tt>--revision</tt> venga rilevato un errore simile al seguente: |
| <pre> | | <pre> |
| mysql> USE prova;
| | I note that you are using the --revision flag with the value |
| </pre>
| | 2. |
| Ora creiamo una tabella all' interno del database ''prova'', giusto per verificare che sia tutto a posto:
| | However, the ./debian/changelog file exists, and has a different value |
| <pre> | | 1. |
| mysql> CREATE TABLE tabella (colonna1 VARCHAR(20), colonna2 VARCHAR(20));
| | I am confused by this discrepancy, and am halting.</pre> |
| Query OK, 0 rows affected (0.42 sec)
| | |
| | Questo problema e' semplicemente dovuto al fatto che non si � pulito il tree dei sorgenti dopo la prima compilazione. Per ovviare basta dunque: |
|
| |
|
| mysql> DESCRIBE tabella;
| | <pre>$ make-kpkg clean</pre> |
| +----------+-------------+------+-----+---------+-------+
| |
| | Field | Type | Null | Key | Default | Extra |
| |
| +----------+-------------+------+-----+---------+-------+
| |
| | colonna1 | varchar(20) | YES | | NULL | |
| |
| | colonna2 | varchar(20) | YES | | NULL | |
| |
| +----------+-------------+------+-----+---------+-------+
| |
| 2 rows in set (0.08 sec)
| |
| </pre> | |
|
| |
|
| Se non abbiamo ottenuto errori passiamo al punto successivo, altrimenti verifichiamo tutti i passaggi precedenti.
| | e rilanciare la compilazione. |
|
| |
|
| ==MySQL e PHP== | | ===You are attempting to install a kernel image (version ''version-revision'') However, the directory /lib/modules/''version-revision'' still exists.=== |
| Per poter usare MySQL attraverso pagine PHP dobbiamo installareil modulo '''php4-mysql''' e riavviare Apache:
| | Se si aggiorna il kernel ad una [[revisione]] successiva, durante l'installazione del pacchetto verr� fatta la seguente domanda: |
| | |
| <pre> | | <pre> |
| # apt-get install php4-mysql
| | You are attempting to install a kernel image (version 2.6.15.4-swsusp) However, the directory /lib/modules/2.6.15.4-swsusp still exists. If this directory |
| # apachectl graceful
| | belongs to a previous linux-image-2.6.15.4-swsusp package, and if you have deselected some modules, or installed standalone modules packages, this could be |
| /usr/sbin/apachectl graceful: httpd gracefully restarted | | bad. However, if this directory exists because you are also installing some stand alone modules right now, and they got unpacked before I did, then this is |
| </pre>
| | pretty benign. Unfortunately, I can not tell the difference. |
|
| |
|
| Ora possiamo verificare se siamo effettivamente in grado di accedere a MySQL.<br>
| | If /lib/modules/2.6.15.4-swsusp belongs to a old install of linux-image-2.6.15.4-swsusp, then this is your last chance to abort the installation of this |
| La procedura � simile a quella vista in precedenza per testare la corretta installazione di PHP:
| | kernel image (nothing has been changed yet). |
| * logghiamoci come utente root oppure spostiamoci nella nostra directory '''public_html''';
| |
| * creaimo il file mysql.php che conterr� questo codice:
| |
| <pre><nowiki>
| |
| <?php
| |
|
| |
|
| // si collega al database, altrimenti esce e ritorna un errore
| | If this directory is because of stand alone modules being installed right now, or if it does belong to an older linux-image-2.6.15.4-swsusp package but you |
| | know what you are doing, and if you feel that this image should be installed despite this anomaly, Please answer n to the question. |
|
| |
|
| mysql_connect('localhost','utente','la_tua_password') or die(mysql_error());
| | Otherwise, I suggest you move /lib/modules/2.6.15.4-swsusp out of the way, perhaps to /lib/modules/2.6.15.4-swsusp.old or something, and then try |
| | re-installing this image. |
|
| |
|
| ?></nowiki> | | Stop install since the kernel-image is already installed? |
| </pre> | | </pre> |
| * apriamo un browser e puntiamolo alla pagina appena creata ( http://localhost/mysql.php oppure http://localhost/~utente/mysql.php);
| |
| ** se quello che vediamo una pagina bianca, significa che PHP in grado di dialogare con MySQL;
| |
| ** se otteniamo l' errore '''Fatal error: call to undefined function - mysql_connect()''' significa che il modulo php4-mysql non stato installato correttamente o che non abbiamo riavviato Apache;
| |
| ** se otteniamo l' errore '''Warning: mysql_connect(): Access denied for user: xxxxxxxx''' significa che abbiamo scritto male le credenziali da utilizzare.
| |
|
| |
|
| ==PhpMyAdmin==
| | La risposta da dare � '''<tt>No</tt>'''! L'avvertimento ci ricorda che i moduli del vecchio kernel (quello con la stessa versione ma numero di revisione diverso) verranno cancellati e sostituiti dai moduli del nuovo kernel. |
| Questo software � un validissimo alleato nel lavoro quotidiano di manutenere un server MySQL, anche se in locale e/o domestico: tra i suoi pregi segnalo l' ottima usabilit� e l' interfaccia web.
| |
|
| |
|
| Questo pacchetto si installa con il comando: | | Questo � il comportamento normale, infatti, nel caso non si voglia sostiture un vecchio kernel ma semplicemente installarne parallelamente uno nuovo (con la stessa identica versione) si sarebbe dovuta modificare la stringa dopo <code>--append-to-version</code> invece che quella dopo <code>--revision</code> (vedi sez. [[Debian_Kernel_Howto#Compilazione_del_kernel|Compilazione kernel]]). |
| <pre> | |
| # apt-get install phpmyadmin php4 php4-gd
| |
| </pre> | |
| Ci verr� quindi chiesto quale server http dovr� essere riconfigurato automaticamente. In base alla versione di Apache che abbiamo installato in precedenza possiamo scegliere '''apache''' oppure '''apache2'''.
| |
|
| |
|
| Al termine della configurazione scegliamo di riavviare Apache e cominciamo subito ad utilizzare PhpMyAdmin puntando il browser all'indirizzo http://localhost/phpmyadmin/
| | Se il kernel che si st� sostituendo � quello in esecuzione ''� necessario riavviare la macchina il prima possibile!'' |
|
| |
|
| [[Immagine:Phpmyadmin_table.png|thumb|center|Schermata di esempio di PhpMyAdmin]]
| | == Link == |
|
| |
|
| =Conclusioni=
| | * [http://www.debian.org/doc/manuals/reference/ch-kernel.it.html Manuale di Riferimento Debian: Capitolo 7 - Il kernel Linux su Debian] |
| Ora si ha a disposizione un sistema completo per l'utilizzo di script in php (ed anche per il loro sviluppo).
| | * [http://a2.pluto.it/kernel_linux_1.htm Appunti di informatica Libera: Kernel Linux]: Il capitolo dedicato al kernel della monumentale opera di Daniele Giacomini contiene sia istruzioni generiche che istruzioni per Debian. Inoltre c'� una descrizione dettagliata della configurazione delle varie voci del kernel! |
| | * [http://kernel.xc.net/ Linux Kernel Configuration Archive] |
|
| |
|
| | Buon divertimento con Debian GNU/Linux |
|
| |
|
| ---- | | ---- |
| Autore: [[Utente:Keltik|Keltik]] 07:20, Giu 20, 2005 (EDT)<br/> | | |
| [[Utente:MaXeR|MaXeR]] 07:59, Lug 18, 2005 (EDT)
| | Autore iniziale: Abortigeno |
| [[Categoria:Server]][[Categoria:Networking]] | | |
| | Rivisto ed esteso: [[Utente:TheNoise|~ The Noise]] |
| | |
| | [[Categoria:Kernel]] |