Project

General

Profile

DrupalInstall » History » Version 32

Amministratore Truelite, 07/17/2007 12:38 PM

1 1 Amministratore Truelite
[[TracNav(TOC)]]
2 1 Amministratore Truelite
3 32 Amministratore Truelite
h2. Installare e configurare Drupal a livello di intero server
4 32 Amministratore Truelite
5 32 Amministratore Truelite
6 22 Amministratore Truelite
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 (al momento della scrittura di queste note su Sid la versione disponibile era la 4.5.8 contro la 4.7.4 ufficiale). Per questo, nonostante manutenzione ed aggiornamento diventino più difficili, tratteremo l'installazione a partire dai sorgenti.
7 1 Amministratore Truelite
8 1 Amministratore Truelite
Il problema generale della configurazione di Drupal è che il programma è pensato per essere installato nella home di un utente via FTP e non come parte delle applicazioni web presenti su un server. Questo comporta che la procedura illustrata nella distribuzione ufficiale presenta una serie di problemi sia di efficienza che di sicurezza.
9 19 Amministratore Truelite
10 32 Amministratore Truelite
<pre>
11 32 Amministratore Truelite
<pre>
12 1 Amministratore Truelite
cd
13 1 Amministratore Truelite
wget http://ftp.osuosl.org/pub/drupal/files/projects/drupal-4.7.x.tar.gz
14 1 Amministratore Truelite
cd /usr/share/local/drupal
15 1 Amministratore Truelite
tar -xvzf ~/drupal-4.7.x.tar.gz
16 1 Amministratore Truelite
mv drupal-4.7.x drupal
17 32 Amministratore Truelite
</pre>
18 23 Amministratore Truelite
19 32 Amministratore Truelite
Occorre poi creare il database, nel caso specifico si è installato [[MySQL]], (per l'impostazione iniziale del quale si veda [[MySQLInitConf]]) e creato un database dedicato chiamato *sitodrupal*; poi si sono dati i privilegi di gestione per detto database ad un apposito utente con:
20 32 Amministratore Truelite
<pre>
21 1 Amministratore Truelite
mysqladmin  -u root -p create sitodrupal
22 1 Amministratore Truelite
mysql -u root -p
23 1 Amministratore Truelite
...
24 1 Amministratore Truelite
mysql> GRANT SELECT, INSERT, UPDATE, DELETE, CREATE, DROP, INDEX,
25 1 Amministratore Truelite
       ALTER, CREATE TEMPORARY TABLES, LOCK TABLES ON sitodrupal.*  TO
26 1 Amministratore Truelite
      'utentedrupal'@'localhost' IDENTIFIED BY 'passwordsegreta';
27 32 Amministratore Truelite
</pre>
28 1 Amministratore Truelite
fatto questo si sono create le tabelle con l'apposito script fornito da Drupal:
29 32 Amministratore Truelite
<pre>
30 2 Amministratore Truelite
cd /usr/share/local/drupal
31 2 Amministratore Truelite
mysql -u utentedrupal -p sitodrupal < database/database.4.1.mysql
32 32 Amministratore Truelite
</pre>
33 32 Amministratore Truelite
<pre>
34 32 Amministratore Truelite
<pre>
35 1 Amministratore Truelite
$db_url = 'mysql://utentedrupal:passwordsegreta@localhost/sitodrupal';
36 32 Amministratore Truelite
</pre>
37 1 Amministratore Truelite
38 1 Amministratore Truelite
39 32 Amministratore Truelite
Per la sicurezza dell'installazione è anzitutto opportuno impostare dei permessi adeguati sui file, questo significa assegnare a _root_ tutti i file in modo che non siano modificabili da Apache, lo si fa con qualcosa del tipo:
40 32 Amministratore Truelite
<pre>
41 1 Amministratore Truelite
chown -R root.root /usr/share/local/drupal
42 32 Amministratore Truelite
</pre>
43 1 Amministratore Truelite
44 32 Amministratore Truelite
<pre>
45 1 Amministratore Truelite
46 32 Amministratore Truelite
<pre>
47 32 Amministratore Truelite
<pre>
48 1 Amministratore Truelite
mkdir /var/www/drupal/files
49 13 Amministratore Truelite
chmod 755 /var/www/drupal/files
50 1 Amministratore Truelite
chown www-data www-data /var/www/drupal/files
51 1 Amministratore Truelite
cd /usr/share/local/drupal
52 1 Amministratore Truelite
ln -s /var/www/drupal/files files
53 32 Amministratore Truelite
</pre>
54 21 Amministratore Truelite
55 32 Amministratore Truelite
<pre>
56 32 Amministratore Truelite
<pre>
57 23 Amministratore Truelite
apt-get install php5-mysql php5-gd libapache2-mod-php5 
58 1 Amministratore Truelite
a2enmod php5
59 32 Amministratore Truelite
</pre>
60 16 Amministratore Truelite
inoltre occorrerà anche attivare SSL per consentire l'uso sicuro dell'interfaccia di amministrazione e creare un opportuno virtual host per le connessioni sulla porta 443 (tralasciamo questo passaggio, non essendo legato all'installazione di Drupal).
61 1 Amministratore Truelite
62 32 Amministratore Truelite
<pre>
63 32 Amministratore Truelite
<pre>
64 1 Amministratore Truelite
Alias /drupal /usr/local/share/drupal/
65 32 Amministratore Truelite
</pre>
66 23 Amministratore Truelite
67 32 Amministratore Truelite
<pre>
68 1 Amministratore Truelite
69 1 Amministratore Truelite
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, inserendo nel solito file di configurazione la seguente sezione:
70 32 Amministratore Truelite
<pre>
71 1 Amministratore Truelite
<Directory "/usr/local/share/drupal">
72 13 Amministratore Truelite
        # Protect files and directories from prying eyes.
73 1 Amministratore Truelite
        <FilesMatch "(\.(engine|inc|install|module|sh|.*sql|theme|tpl(\.php)?|xtmpl)|code-style\.pl|Entries.*|Repository|Root)$">
74 1 Amministratore Truelite
                Order deny,allow
75 1 Amministratore Truelite
                Deny from all
76 13 Amministratore Truelite
        </FilesMatch>
77 1 Amministratore Truelite
78 1 Amministratore Truelite
        # Set some options.
79 1 Amministratore Truelite
        Options -Indexes
80 1 Amministratore Truelite
        Options +FollowSymLinks
81 21 Amministratore Truelite
        # Override PHP settings. More in sites/default/settings.php
82 13 Amministratore Truelite
        # but the following cannot be changed at runtime.
83 1 Amministratore Truelite
        # PHP 5, Apache 1 and 2
84 1 Amministratore Truelite
        <IfModule mod_php5.c>
85 1 Amministratore Truelite
          php_value magic_quotes_gpc                0
86 13 Amministratore Truelite
          php_value register_globals                0
87 13 Amministratore Truelite
          php_value session.auto_start              0
88 13 Amministratore Truelite
        </IfModule>
89 13 Amministratore Truelite
90 13 Amministratore Truelite
        # Reduce the time dynamically generated pages are cache-able.
91 13 Amministratore Truelite
        <IfModule mod_expires.c>
92 32 Amministratore Truelite
          [[ExpiresByType]] text/html A1
93 13 Amministratore Truelite
        </IfModule>
94 1 Amministratore Truelite
95 1 Amministratore Truelite
        # Various rewrite rules.
96 1 Amministratore Truelite
        <IfModule mod_rewrite.c>
97 32 Amministratore Truelite
          [[RewriteEngine]] on
98 32 Amministratore Truelite
          # Modify the [[RewriteBase]] if you are using Drupal in a subdirectory and                               
99 1 Amministratore Truelite
          # the rewrite rules are not working properly.
100 32 Amministratore Truelite
          [[RewriteBase]] /drupal
101 1 Amministratore Truelite
102 1 Amministratore Truelite
          # Rewrite current-style URLs of the form 'index.php?q=x'.
103 32 Amministratore Truelite
          [[RewriteCond]] %{REQUEST_FILENAME} !-f
104 32 Amministratore Truelite
          [[RewriteCond]] %{REQUEST_FILENAME} !-d
105 32 Amministratore Truelite
          [[RewriteRule]] ^(.*)$ index.php?q=$1 [L,QSA]
106 23 Amministratore Truelite
        </IfModule>
107 1 Amministratore Truelite
</Directory>
108 32 Amministratore Truelite
</pre>
109 1 Amministratore Truelite
110 32 Amministratore Truelite
<pre>
111 32 Amministratore Truelite
<pre>
112 1 Amministratore Truelite
a2enmod rewrite
113 32 Amministratore Truelite
</pre>
114 32 Amministratore Truelite
<pre>
115 25 Amministratore Truelite
 
116 25 Amministratore Truelite
117 32 Amministratore Truelite
h2. Configurazione di sicurezza
118 32 Amministratore Truelite
119 32 Amministratore Truelite
120 25 Amministratore Truelite
Una volta eseguita la configurazione di base è opportuno proteggere adeguatamente gli accessi; per questo motivo si abbia cura di redirigere sotto SSL la pagina assegnata al login degli utenti. Questo si potrà fare con qualcosa del tipo:
121 32 Amministratore Truelite
<pre>
122 25 Amministratore Truelite
<VirtualHost *:80>
123 1 Amministratore Truelite
        Include "/etc/apache2/sites-available/config-common"
124 25 Amministratore Truelite
        Redirect /drupal/login https://www.miosito.it/drupal/login
125 1 Amministratore Truelite
</VirtualHost>
126 32 Amministratore Truelite
</pre>
127 32 Amministratore Truelite
<pre>
128 1 Amministratore Truelite
129 32 Amministratore Truelite
<pre>
130 32 Amministratore Truelite
<pre>
131 1 Amministratore Truelite
ini_set('arg_separator.output',     '&amp;');
132 25 Amministratore Truelite
ini_set('magic_quotes_runtime',     0);
133 1 Amministratore Truelite
ini_set('magic_quotes_sybase',      0);
134 1 Amministratore Truelite
ini_set('session.cache_expire',     86400);
135 1 Amministratore Truelite
ini_set('session.cache_limiter',    'none');
136 25 Amministratore Truelite
ini_set('session.cookie_lifetime',  86400);
137 1 Amministratore Truelite
ini_set('session.gc_maxlifetime',   86400);
138 25 Amministratore Truelite
ini_set('session.save_handler',     'user');
139 1 Amministratore Truelite
ini_set('session.use_only_cookies', 1);
140 1 Amministratore Truelite
ini_set('session.use_trans_sid',    0);
141 32 Amministratore Truelite
ini_set('url_rewriter.tags',        _);
142 32 Amministratore Truelite
</pre>
143 26 Amministratore Truelite
144 23 Amministratore Truelite
145 23 Amministratore Truelite
146 32 Amministratore Truelite
h2. Come aggiornare Drupal
147 32 Amministratore Truelite
148 32 Amministratore Truelite
149 32 Amministratore Truelite
<pre>
150 32 Amministratore Truelite
<pre>
151 23 Amministratore Truelite
cd /usr/share/local/
152 23 Amministratore Truelite
mv drupal drupal_old
153 23 Amministratore Truelite
tar -xvzf ~/drupal-4.7.new.tar.gz
154 23 Amministratore Truelite
mv drupal-4.7.new drupal
155 24 Amministratore Truelite
cp drupal_old/sites/default/settings.php drupal/sites/default/settings.php
156 1 Amministratore Truelite
cd drupal
157 1 Amministratore Truelite
ln -s /var/www/drupal/files files
158 26 Amministratore Truelite
rm .htaccess
159 32 Amministratore Truelite
</pre>
160 1 Amministratore Truelite
161 31 Amministratore Truelite
Inoltre se si sono installati dei moduli aggiuntivi si abbia cura di verificare se esistono aggiornamenti anche per questi, e di reinstallarli nella nuova versione:
162 32 Amministratore Truelite
<pre>
163 31 Amministratore Truelite
cd /usr/share/local/
164 31 Amministratore Truelite
cp -a drupal_old/modules/moduloaggiuntivo drupal/modules/
165 32 Amministratore Truelite
</pre>
166 1 Amministratore Truelite
167 27 Amministratore Truelite
La cosa si complica notevolmente qualora invece si debba passare ad una
168 32 Amministratore Truelite
diversa _major release_, in particolare il passaggio dalla versione 4.7 alla
169 27 Amministratore Truelite
5.1 è reso molto complicato dalle variazioni effettuate alla struttura del
170 27 Amministratore Truelite
database, che richiedono un passaggio per gradi, con la necessità di eseguire
171 28 Amministratore Truelite
prima l'upgrade alla versione 5.0 e da questa alla 5.1.
172 28 Amministratore Truelite
173 28 Amministratore Truelite
La procedura suggerita in questo caso è installare la nuova versione su un sito di test, utilizzando un backup della versione corrente. Il primo passo allora è duplicare i file della precedente installazione con:
174 32 Amministratore Truelite
<pre>
175 28 Amministratore Truelite
cp -a drupal drupal_new
176 28 Amministratore Truelite
cp -a /var/www/drupal/files /var/www/drupal/files_new
177 28 Amministratore Truelite
rm drupal_new/files
178 1 Amministratore Truelite
ln -s /var/www/drupal/files_new drupal_new/files
179 32 Amministratore Truelite
</pre>
180 28 Amministratore Truelite
181 31 Amministratore Truelite
Poi occorre replicare i dati del database, per questo prima si deve fare un backup dello stesso, ed usare quest'ultimo per creare un nuovo database per il sito di prova, questo si fa con:
182 32 Amministratore Truelite
<pre>
183 1 Amministratore Truelite
mysqldump -u utentedrupal -p sitodrupal > db_sito.sql
184 28 Amministratore Truelite
mysqadmin -u root -p create nuovosito
185 32 Amministratore Truelite
</pre>
186 1 Amministratore Truelite
dopo di che si devono assegnare i permessi anche sul sito replicato, in maniera analoga a quanto fatto in sede di installazione, con
187 32 Amministratore Truelite
<pre>
188 1 Amministratore Truelite
use nuovosito; 
189 29 Amministratore Truelite
GRANT ALL PRIVILEGES ON nuovosito.* TO utente@localhost IDENTIFIED BY 'password';
190 32 Amministratore Truelite
</pre>
191 1 Amministratore Truelite
qualora si debba resettare la password di amministrazione (quella dell'utente con uid 1 dentro Drupal) si potranno invece utilizzare i seguenti comandi:
192 32 Amministratore Truelite
<pre>
193 1 Amministratore Truelite
use nuovosito;
194 31 Amministratore Truelite
update users set pass=md5('NEWPASS') where uid = 1;
195 32 Amministratore Truelite
</pre>
196 1 Amministratore Truelite
ed infine si potranno reinserire i dati con:
197 32 Amministratore Truelite
<pre>
198 31 Amministratore Truelite
mysql -u utente -p nuovosito < db_sito.sql
199 32 Amministratore Truelite
</pre>
200 31 Amministratore Truelite
201 31 Amministratore Truelite
Fintanto che si è installato un solo sito dovrebbe essere sufficiente
202 32 Amministratore Truelite
<pre>
203 30 Amministratore Truelite
nuova URL del sito e la diversa stringa di connessione al database, per
204 30 Amministratore Truelite
riottenere tutto, qualora si siano inseriti siti con la tecnica di tante
205 32 Amministratore Truelite
<pre>
206 1 Amministratore Truelite
perché queste vanno rinominate per riflettere la posizione del nuovo sito e se
207 1 Amministratore Truelite
ci sono dei temi dentro, dato che alcuni pathname sono nel database, si
208 1 Amministratore Truelite
possono avere comunque disfunzioni, per cui alla fine oltre a rinominare può
209 1 Amministratore Truelite
essere il caso di lasciare dei link simbolici con il vecchio nome.
210 30 Amministratore Truelite
211 30 Amministratore Truelite
Per eseguire l'upgrade occorre mettere collegarsi come amministratore,
212 30 Amministratore Truelite
impostare un tema di default e disabilitare tutti i moduli, dopo di che, se
213 31 Amministratore Truelite
non si sono apportate modifiche significative, e se il passaggio è minore
214 31 Amministratore Truelite
(cioè ad una versione successiva nella stessa serie di sviluppo) è sufficiente
215 1 Amministratore Truelite
scompattare i sorgenti della nuova versione sul sito corrente, e poi
216 31 Amministratore Truelite
ripristinare le configurazioni, in sostanza qualcosa del tipo:
217 32 Amministratore Truelite
<pre>
218 31 Amministratore Truelite
cd /usr/local/share
219 1 Amministratore Truelite
mv drupal_new/sites/default sitedefault
220 1 Amministratore Truelite
mv drupal_new drupal-4.7.6
221 1 Amministratore Truelite
tar -xvzf /root/software/drupal-4.7.6.tar.gz
222 1 Amministratore Truelite
mv drupal-4.7.6 drupal_new
223 1 Amministratore Truelite
rm -fR drupal_new/sites/default
224 31 Amministratore Truelite
mv sitedefault drupal_new/sites/default
225 32 Amministratore Truelite
</pre>
226 31 Amministratore Truelite
(eventualmente si ripristinino i permessi come illustrato in precedenza) tutto
227 31 Amministratore Truelite
questo andrà fatto restando collegati come amministratore, in modo da poter
228 32 Amministratore Truelite
<pre>
229 31 Amministratore Truelite
dall'interfaccia di configurazione dei moduli o all'indirizzo standard
230 32 Amministratore Truelite
<pre>
231 31 Amministratore Truelite
accessibile occorrerà seguire le istruzioni riportate nella pagina di errore
232 31 Amministratore Truelite
(in sostanza modificare lo script per permetterne l'esecuzione da chiunque). 
233 31 Amministratore Truelite
234 31 Amministratore Truelite
Una volta eseguito l'aggiornamento, se non ci sono stati errori (o se questi
235 31 Amministratore Truelite
non sono significativi) si possono riabilitare i moduli, avendo cura di
236 31 Amministratore Truelite
aggiornare anche questi, qualora vi fossero nuove versioni, e di rieseguire
237 31 Amministratore Truelite
ogni volta che si riabilita un modulo.
238 31 Amministratore Truelite
239 31 Amministratore Truelite
Se il passaggio è dal 4.7 al 5.1, vista l'entità dei cambiamenti, il
240 31 Amministratore Truelite
procedimento si complica, conviene di nuovo fare una copia del sito originale
241 31 Amministratore Truelite
(che si suppone sia aggiornato all'ultima versione del 4.7) come illustrato in
242 31 Amministratore Truelite
precedenza, e poi però una volta che su detta copia si siano disabilitati i
243 31 Amministratore Truelite
moduli e impostato un tema di default, si deve passare direttamente ai
244 31 Amministratore Truelite
sorgenti della nuova versione di drupal con qualcosa del tipo:
245 32 Amministratore Truelite
<pre>
246 31 Amministratore Truelite
tar -xvzf /root/software/drupal-5.0.tar.gz
247 31 Amministratore Truelite
rm -fR drupal-5.0/sites/default
248 31 Amministratore Truelite
cp -a drupal_new/sites/default drupal-5.0/sites/
249 31 Amministratore Truelite
rm -fR drupal_new 
250 31 Amministratore Truelite
mv drupal-5.0 drupal_new
251 32 Amministratore Truelite
</pre>
252 32 Amministratore Truelite
<pre>
253 31 Amministratore Truelite
personalizzazione).
254 31 Amministratore Truelite
255 31 Amministratore Truelite
A questo punto si potrà eseguire l'aggiornamento alla versione 5.0 usando lo
256 32 Amministratore Truelite
<pre>
257 31 Amministratore Truelite
procedimento per passare al 5.1, con:
258 32 Amministratore Truelite
<pre>
259 31 Amministratore Truelite
tar -xvzf /root/software/drupal-5.1.tar.gz
260 31 Amministratore Truelite
rm -fR drupal-5.1/sites/default
261 31 Amministratore Truelite
cp -a drupal_new/sites/default drupal-5.1/sites/
262 31 Amministratore Truelite
rm -fR drupal_new 
263 31 Amministratore Truelite
mv drupal-5.1 drupal_new
264 32 Amministratore Truelite
</pre>
265 32 Amministratore Truelite
<pre>
266 32 Amministratore Truelite
<pre>
267 31 Amministratore Truelite
268 31 Amministratore Truelite
Una volta arrivati al 5.1 si potranno reinstallare gli eventuali moduli
269 31 Amministratore Truelite
aggiuntivi (da scaricare sul sito di Drupal, prendendo la versione per il
270 31 Amministratore Truelite
5.1. Si tenga presente che alcuni di essi sono stati modificati pesantemente,
271 31 Amministratore Truelite
la regola generale è che tutte le volte che si inserisce un nuovo modulo e lo
272 32 Amministratore Truelite
<pre>
273 31 Amministratore Truelite
questo non è sufficiente, e si deve aver cura di controllare le istruzioni
274 31 Amministratore Truelite
riportate nel README allegato al modulo.
275 31 Amministratore Truelite
276 32 Amministratore Truelite
<pre>
277 31 Amministratore Truelite
procedimento molto più complesso. Il modulo infatti è stato riscritto da zero
278 31 Amministratore Truelite
in maniera indipendente, per questo motivo oltre a disabilitare e
279 31 Amministratore Truelite
disinstallare il precedente modulo prima della migrazione, occorre anche
280 31 Amministratore Truelite
intervenire sul database prima di riabilitarlo, eliminando ogni riferimento ad
281 31 Amministratore Truelite
esso presente (a causa della precedente installazione), è cioè richiesto che,
282 31 Amministratore Truelite
una volta collegatisi al database, si eseguano i seguenti comandi:
283 32 Amministratore Truelite
<pre>
284 31 Amministratore Truelite
use nuovosito;
285 31 Amministratore Truelite
DELETE FROM system WHERE name = 'ldapauth';
286 31 Amministratore Truelite
DELETE FROM system WHERE name = 'ldapgroups';
287 1 Amministratore Truelite
DELETE FROM system WHERE name = 'ldapdata';
288 32 Amministratore Truelite
</pre>
289 1 Amministratore Truelite
290 1 Amministratore Truelite
A questo punto si potrà installare il nuovo modulo, eseguire lo script
291 32 Amministratore Truelite
<pre>
292 1 Amministratore Truelite
interna di Drupal.