Progetto

Generale

Profilo

DrupalInstall » Cronologia » Versione 32

Amministratore Truelite, 17-07-2007 12:38

1 1 Amministratore Truelite
[[TracNav(TOC)]]
2
3 32 Amministratore Truelite
h2. Installare e configurare Drupal a livello di intero server
4
5
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
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
<pre>
12 1 Amministratore Truelite
cd
13
wget http://ftp.osuosl.org/pub/drupal/files/projects/drupal-4.7.x.tar.gz
14
cd /usr/share/local/drupal
15
tar -xvzf ~/drupal-4.7.x.tar.gz
16
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
<pre>
21 1 Amministratore Truelite
mysqladmin  -u root -p create sitodrupal
22
mysql -u root -p
23
...
24
mysql> GRANT SELECT, INSERT, UPDATE, DELETE, CREATE, DROP, INDEX,
25
       ALTER, CREATE TEMPORARY TABLES, LOCK TABLES ON sitodrupal.*  TO
26
      '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
mysql -u utentedrupal -p sitodrupal < database/database.4.1.mysql
32 32 Amministratore Truelite
</pre>
33
<pre>
34
<pre>
35 1 Amministratore Truelite
$db_url = 'mysql://utentedrupal:passwordsegreta@localhost/sitodrupal';
36 32 Amministratore Truelite
</pre>
37 1 Amministratore Truelite
38
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
<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
<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
cd /usr/share/local/drupal
52
ln -s /var/www/drupal/files files
53 32 Amministratore Truelite
</pre>
54 21 Amministratore Truelite
55 32 Amministratore Truelite
<pre>
56
<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
<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
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
                Order deny,allow
75
                Deny from all
76 13 Amministratore Truelite
        </FilesMatch>
77 1 Amministratore Truelite
78
        # Set some options.
79
        Options -Indexes
80
        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
        <IfModule mod_php5.c>
85
          php_value magic_quotes_gpc                0
86 13 Amministratore Truelite
          php_value register_globals                0
87
          php_value session.auto_start              0
88
        </IfModule>
89
90
        # Reduce the time dynamically generated pages are cache-able.
91
        <IfModule mod_expires.c>
92 32 Amministratore Truelite
          [[ExpiresByType]] text/html A1
93 13 Amministratore Truelite
        </IfModule>
94 1 Amministratore Truelite
95
        # Various rewrite rules.
96
        <IfModule mod_rewrite.c>
97 32 Amministratore Truelite
          [[RewriteEngine]] on
98
          # 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
          # Rewrite current-style URLs of the form 'index.php?q=x'.
103 32 Amministratore Truelite
          [[RewriteCond]] %{REQUEST_FILENAME} !-f
104
          [[RewriteCond]] %{REQUEST_FILENAME} !-d
105
          [[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
<pre>
112 1 Amministratore Truelite
a2enmod rewrite
113 32 Amministratore Truelite
</pre>
114
<pre>
115 25 Amministratore Truelite
 
116
117 32 Amministratore Truelite
h2. Configurazione di sicurezza
118
119
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
<pre>
128 1 Amministratore Truelite
129 32 Amministratore Truelite
<pre>
130
<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
ini_set('session.cache_expire',     86400);
135
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
ini_set('session.use_trans_sid',    0);
141 32 Amministratore Truelite
ini_set('url_rewriter.tags',        _);
142
</pre>
143 26 Amministratore Truelite
144 23 Amministratore Truelite
145
146 32 Amministratore Truelite
h2. Come aggiornare Drupal
147
148
149
<pre>
150
<pre>
151 23 Amministratore Truelite
cd /usr/share/local/
152
mv drupal drupal_old
153
tar -xvzf ~/drupal-4.7.new.tar.gz
154
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
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
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
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
173
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
cp -a /var/www/drupal/files /var/www/drupal/files_new
177
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
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
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
ci sono dei temi dentro, dato che alcuni pathname sono nel database, si
208
possono avere comunque disfunzioni, per cui alla fine oltre a rinominare può
209
essere il caso di lasciare dei link simbolici con il vecchio nome.
210 30 Amministratore Truelite
211
Per eseguire l'upgrade occorre mettere collegarsi come amministratore,
212
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
(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
mv drupal_new drupal-4.7.6
221
tar -xvzf /root/software/drupal-4.7.6.tar.gz
222
mv drupal-4.7.6 drupal_new
223
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
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
(in sostanza modificare lo script per permetterne l'esecuzione da chiunque). 
233
234
Una volta eseguito l'aggiornamento, se non ci sono stati errori (o se questi
235
non sono significativi) si possono riabilitare i moduli, avendo cura di
236
aggiornare anche questi, qualora vi fossero nuove versioni, e di rieseguire
237
ogni volta che si riabilita un modulo.
238
239
Se il passaggio è dal 4.7 al 5.1, vista l'entità dei cambiamenti, il
240
procedimento si complica, conviene di nuovo fare una copia del sito originale
241
(che si suppone sia aggiornato all'ultima versione del 4.7) come illustrato in
242
precedenza, e poi però una volta che su detta copia si siano disabilitati i
243
moduli e impostato un tema di default, si deve passare direttamente ai
244
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
rm -fR drupal-5.0/sites/default
248
cp -a drupal_new/sites/default drupal-5.0/sites/
249
rm -fR drupal_new 
250
mv drupal-5.0 drupal_new
251 32 Amministratore Truelite
</pre>
252
<pre>
253 31 Amministratore Truelite
personalizzazione).
254
255
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
rm -fR drupal-5.1/sites/default
261
cp -a drupal_new/sites/default drupal-5.1/sites/
262
rm -fR drupal_new 
263
mv drupal-5.1 drupal_new
264 32 Amministratore Truelite
</pre>
265
<pre>
266
<pre>
267 31 Amministratore Truelite
268
Una volta arrivati al 5.1 si potranno reinstallare gli eventuali moduli
269
aggiuntivi (da scaricare sul sito di Drupal, prendendo la versione per il
270
5.1. Si tenga presente che alcuni di essi sono stati modificati pesantemente,
271
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
riportate nel README allegato al modulo.
275
276 32 Amministratore Truelite
<pre>
277 31 Amministratore Truelite
procedimento molto più complesso. Il modulo infatti è stato riscritto da zero
278
in maniera indipendente, per questo motivo oltre a disabilitare e
279
disinstallare il precedente modulo prima della migrazione, occorre anche
280
intervenire sul database prima di riabilitarlo, eliminando ogni riferimento ad
281
esso presente (a causa della precedente installazione), è cioè richiesto che,
282
una volta collegatisi al database, si eseguano i seguenti comandi:
283 32 Amministratore Truelite
<pre>
284 31 Amministratore Truelite
use nuovosito;
285
DELETE FROM system WHERE name = 'ldapauth';
286
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
A questo punto si potrà installare il nuovo modulo, eseguire lo script
291 32 Amministratore Truelite
<pre>
292 1 Amministratore Truelite
interna di Drupal.