Progetto

Generale

Profilo

DrupalInstall » Cronologia » Versione 13

Versione 12 (Amministratore Truelite, 18-10-2006 22:53) → Versione 13/33 (Amministratore Truelite, 23-10-2006 16:22)

[[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 da progetto stesso (a partire da http://www.drupal.org) è normalmente molto più aggiornata, aggiornata e visto che essa fornisce anche un efficiente sistema di aggiornamento, alla fine la scelta di usare la versione ufficiale rispetto a quella della distribuzione è sostenibile in quanto il maggior carico di lavoro per la manutenzione è ridotto e viene abbondantemente bilanciato dalle maggiori funzionalità messe a disposizione. sostenibile. 

 Il primo passo allora è quello di scaricare i sorgenti di Drupal e scompattarli nella directory di destinazione; nel nostro caso piazzeremo tutto sotto {{{/usr/share/local/drupal}}} con: {{{/usr/share/local/drupal}}}: 
 {{{ 
 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 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, 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 è che i suddetti file vengono tutti manenuti in una sotto directory {{{files}}} relativa a quella in cui si è installato il programma, che viene creata al primo upload. 

 Il problema è che avendo installato il tutto sotto {{{/usr}}} e senza permesso di scrittura    questo meccanismo non funzionerà; per questo sarà opportuno crare l'apposita directory sotto {{{/var}}} e dargli adeguati permessi, e poi usare un link simbolico; lo si è fatto 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 
 }}} 

 Un altro aspetto critico è quello della riscrittura delle URL in modo da renderle più gradevoli (e facili da ricordare). Questo viene abilitato 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 questi file comporta (giustificato quando l'installazione è nella home di un utente, non per una generale) un maggior carico di lavoro per il server (che li rilegge ad ogni accesso) si è preferito inserire la suddetta configurazione dentro la configurazione di Apache, con un qualcosa del tipo: 
 {{{ 
 # 
 # Apache/PHP/Drupal settings: 
 # 
 <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 
           # If your site can be accessed both with and without the prefix www. 
           # you can use one of the following settings to force user to use only 
 one option: 
           # 
           # If you want the site to be accessed WITH the www. only, adapt and uncomment the following: 
           # RewriteCond %{HTTP_HOST} !^www\.example\.com$ [NC] 
           # RewriteRule .* http://www.example.com/ [L,R=301] 
           # 
           # 
           # If you want the site to be accessed only WITHOUT the www. , adapt and uncomment the following: 
           # RewriteCond %{HTTP_HOST} !^example\.com$ [NC] 
           # RewriteRule .* http://example.com/ [L,R=301] 

           # 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> 
 }}}