DrupalInstall » Cronologia » Versione 19
Versione 18 (Amministratore Truelite, 23-10-2006 18:16) → Versione 19/33 (Amministratore Truelite, 23-10-2006 18:28)
[[TracNav(TOC)]] == Installare e configurare Drupal a livello di intero server == Benché sia disponibile anche nei pacchetti per Debian ed Ubuntu, la versione distribuita dal progetto stesso (a partire da http://www.drupal.org) è normalmente molto più aggiornata. Il problema generale della configurazione aggiornata, e visto che essa fornisce anche un efficiente sistema di Drupal aggiornamento, alla fine la scelta di usare la versione ufficiale rispetto a livello di server quella della distribuzione è quello che sostenibile in quanto il programma maggior carico di lavoro per la manutenzione è pensato per essere installato nella home di un utente via FTP. Questo comporta una serie di problemi sia di efficienza che di sicurezza. ridotto e viene abbondantemente bilanciato dalle maggiori funzionalità messe a disposizione. Nel nostro caso vedremo come fare una installazione a livello di server. Il primo passo allora è quello di scaricare i sorgenti di Drupal e scompattarli nella directory di destinazione; abbiamo scelto di mantenere nel nostro caso piazzeremo tutto sotto la directory {{{/usr/share/local/drupal}}}. I comandi da eseguire sono i seguenti: {{{/usr/share/local/drupal}}} con: {{{ cd wget http://ftp.osuosl.org/pub/drupal/files/projects/drupal-4.7.x.tar.gz cd /usr/share/local/drupal tar -xvzf ~/drupal-4.7.x.tar.gz mv drupal-4.7.x drupal }}} Occorre poi creare il database, nel caso specifico si è usato MySQL, (per l'impostazione iniziale del quale si veda [wiki:MySQLInitConf]) e creato un database apposito '''sitodrupal'''; poi si sono dati i privilegi di gestione per detto database ad un apposito utente con: {{{ mysqladmin -u root -p create sitodrupal mysql -u root -p ... mysql> GRANT SELECT, INSERT, UPDATE, DELETE, CREATE, DROP, INDEX, ALTER, CREATE TEMPORARY TABLES, LOCK TABLES ON sitodrupal.* TO 'utentedrupal'@'localhost' IDENTIFIED BY 'passwordsegreta'; }}} fatto questo si sono create le tabelle con l'apposito script fornito da Drupal: {{{ cd /usr/share/local/drupal mysql -u utentedrupal -p sitodrupal < database/database.4.1.mysql }}} è modificato il file {{{sites/default/settings.php}}} impostando il valore: {{{ $db_url = 'mysql://utentedrupal:passwordsegreta@localhost/sitodrupal'; }}} Inoltre per la sicurezza dell'installazione è opportuno impostare dei permessi adeguati, questo significa assegnare a ''root'' tutti i file in modo che non siano modificabili da Apache, lo si fa con qualcosa del tipo: {{{ chown -R root.root /usr/share/local/drupal }}} questo però non consentirà a Drupal di eseguire l'upload di file (ad esempio immagini) sul server. La caratteristica di Drupal infatti fa si è che i suddetti file vengono tutti manenuti in una sotto-directory sotto directory {{{files}}} di relativa a quella in cui si è installato il programma; se questa non esiste, programma, che viene dal programma creata al primo upload. Il problema è che avendo installato il tutto sotto {{{/usr}}} e senza permesso di scrittura per Apache questo meccanismo non funzionerà. Sarà allora necessario funzionerà; per questo sarà opportuno crare un'altra l'apposita directory sotto {{{/var}}} e dargli adeguati permessi (in modo che Apache possa scriverci), permessi, e poi usare un link simbolico; lo si è fatto con i comandi: con: {{{ mkdir /var/www/drupal/files chmod 755 /var/www/drupal/files chown www-data www-data /var/www/drupal/files cd /usr/share/local/drupal ln -s /var/www/drupal/files files }}} Occorre infine poi configurare Apache perché sia in grado di visualizzare il sito; anzitutto occorre installare ed abilitare {{{mod_php5}}}, inoltre occorrerà anche attivare SSL per consentire l'uso sicuro dell'interfaccia di amministrazione; per questo si è fatto: {{{ apt-get install php5 php5-mysql php5-gd libapache2-mod-php5 openssl echo Listen 443 >> /etc/apache2/ports.conf a2enmod ssl a2enmod php5 }}} e è anche creato si dovrà creare un opportuno virtual host per le connessioni anche sulla porta 443. Infine, dato che nel nostro caso si è deciso di rendere visibile il sito sotto una del tipo la URL '''!http://www.miosito.it/drupal''' si è modificato il file di configurazione del sito (nel caso {{{/etc/apache2/sites-available/default}}}) inserendovi la direttiva: {{{ Alias /drupal /usr/local/share/drupal/ }}} Un altro aspetto riguardante la configurazione di Apache è quello della riscrittura delle URL in modo da renderle più gradevoli (e facili da ricordare). Questo viene abilitato in da Drupal nella sezione '''administer -> setting''' nella sezione delle impostazioni generali. Perché funzioni però è necessario abilitare delle rewrite rule, che sono mantenute nel file {{{.htaccess}}} installato nella directory principale dei sorgenti. Dato che l'uso di questo file comporta un maggior carico di lavoro per il server (che lo rilegge ad ogni accesso) si è preferito inserire la suddetta configurazione dentro la configurazione di Apache, questa è sostanzialmente la stessa presente nel suddetto file: {{{ <Directory "/usr/local/share/drupal"> # Protect files and directories from prying eyes. <FilesMatch "(\.(engine|inc|install|module|sh|.*sql|theme|tpl(\.php)?|xtmpl)|code-style\.pl|Entries.*|Repository|Root)$"> Order deny,allow Deny from all </FilesMatch> # Set some options. Options -Indexes Options +FollowSymLinks # Override PHP settings. More in sites/default/settings.php # but the following cannot be changed at runtime. # PHP 5, Apache 1 and 2 <IfModule mod_php5.c> php_value magic_quotes_gpc 0 # php_value register_globals 0 php_value session.auto_start 0 </IfModule> # Reduce the time dynamically generated pages are cache-able. <IfModule mod_expires.c> ExpiresByType text/html A1 </IfModule> # Various rewrite rules. <IfModule mod_rewrite.c> RewriteEngine on # Modify the RewriteBase if you are using Drupal in a subdirectory and # the rewrite rules are not working properly. RewriteBase /drupal # Rewrite current-style URLs of the form 'index.php?q=x'. RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule ^(.*)$ index.php?q=$1 [L,QSA] </IfModule> </Directory> }}} solo che avendo spostato tutto sotto {{{/drupal}}} rispetto al default è necessaria anche la direttiva {{{RewriteBase /drupal}}} (qualora si sia fatta una scelta diversa si modifichino di conseguenza questa direttiva e la precedente {{{Alias}}}). Inoltre perché le regole di riscrittura funzionino occorre anche abilitare il rispettivo modulo di Apache, e quindi si è anche usato il comando: {{{ a2enmod rewrite }}} === Come aggiornare Drupal === Una volta eseguita l'installazione iniziale sarà sufficiente scaricare la nuova versione del programma e riscompattare i file; si dovrà ripetere la correzione dei permessi