WEB SERVER con debian

Una delle migliori distribuzioni, in assoluto è DEBIAN, dalla debian derivano tante distribuzioni fra cui la conosciutissima UBUNTU.
Al momento in cui scrivo questo tutorial la versione stable è la 7.05
Nelle puntate precedenti abbiamo configurato un server con su NIENTE, adesso è ora di utilizzare questa grande potenza di fuoco, cominciamo con un

apt-get update
apt-get upgrade

Bene adesso istalliamo i pacchetti necessari al nostro webserver

apt-get install vim apache2-mpm-prefork apache2-utils libexpat1 apache2-suexec -y

Quando avrà finito cominceremo con la configurazione

vi /etc/apache2/apache2.conf

Come prima riga dobbiamo mettere il nome del server, quindi

ServerName webserver.dibrigida.it
questo nome serve ad identificare il server, serve più al sistema che a noi, però è necessario, salviamo il file e cominciamo con abilitare i primi due moduli

a2enmod headers expires ssl rewrite suexec include

Riavviamo il server impartendo il comando apache2ctl graceful

Creiamo la directory che conterrà i certificati
mkdir /etc/apache2/ssl/

Adesso creiamo il nostro primo certificato e gli diamo una valenza di 10 anni, tanto per stare tranquilli, chiaramente lo possiamo cambiare in qualsiasi momento, semplicemente forgiandone uno nuovo.
openssl req -new -x509 -days 3650 -nodes -out /etc/apache2/ssl/webserver.dibrigida.it.pem -keyout /etc/apache2/ssl/webserver.dibrigida.it.pem

Per comodità chiamo i certificati con lo stesso nome del suo padrone, in questo caso sto creando un certificato generico per il server webserver.dibrigida.it, come ho dichiarato nel file /etc/apache2/apache2.conf, per cui: nomeserver=nomecertificato, all’interno del certificato mettiamo i nostri parametri corretti:

davide@server1:~$ openssl req -new -x509 -days 3650 -nodes -out /etc/apache2/ssl/webserver.dibrigida.it.pem -keyout /etc/apache2/ssl/webserver.dibrigida.it.pem
Generating a 2048 bit RSA private key
..+++
…………..+++
writing new private key to ‘/etc/apache2/ssl/webserver.dibrigida.it.pem’
—–
You are about to be asked to enter information that will be incorporated
into your certificate request.
What you are about to enter is what is called a Distinguished Name or a DN.
There are quite a few fields but you can leave some blank
For some fields there will be a default value,
If you enter ‘.’, the field will be left blank.
—–
Country Name (2 letter code) [AU]:IT ——-> qui ci va il nostro tld di appartenenza, se avessimo un dominio.com ci andrebbe comunque IT, se il server fosse in uganda stessa cosa, IT
State or Province Name (full name) [Some-State]:Italia —-> Qui mettiamo Italia in Italiano, non Italy
Locality Name (eg, city) []:Roma —-> qui la città dove risiede la vostra azienda o il posto da dove operate abitualmente
Organization Name (eg, company) [Internet Widgits Pty Ltd]:Davide di Brigida —> il nome della vostra azienda
Organizational Unit Name (eg, section) []:Server web —–> qesta è una descrizione, potete anche non mettere nulla
Common Name (e.g. server FQDN or YOUR name) []:webserver.dibrigida.it —> Questo è il parametro più importante di tutti, dobbiamo mettere il nome del padrone del certificato.
Email Address []:email@del-webmaster.che-gestisce.il.dominio

Approfondiamo il parametro Common Name (e.g. server FQDN or YOUR name) []:

Qui ci va il nome vero, ad esempio www.dibrigida.it per il certificato di www.dibrigida.it, oppure www.pincopallino.com, io ho messo webserver.dibrigida.it solo perchè è il certificato generico, quindi se non trova altri certificati adopererà quello del server, poichè il server si chiama webserver.dibrigida.it ho messo il suo nome.

Passiamo oltre

Prepariamo il file di default per utilizzare i nostri bei certificatoni

cominciamo con l’azzerare il file pre esistente

echo >/etc/apache2/sites-available/default-ssl
poi vi /etc/apache2/sites-available/default-ssl e ci copiamo dentro questa bella pappardella, chiaramente va adattata alle proprie esigenze

NameVirtualHost *:443

<VirtualHost *:443>

SSLEngine on

SSLCertificateFile /etc/apache2/ssl/webserver.dibrigida.it.pem

SSLCertificateKeyFile /etc/apache2/ssl/webserver.dibrigida.it.pem

ServerAdmin webmaster@dominio.tld

ServerName webserver.dibrigida.it

ErrorLog /var/log/apache2/error_ssl.log

LogLevel warn

CustomLog /var/log/apache2/access_ssl.log combined

ServerSignature On

DocumentRoot /var/www/apache2-default

<Directory />

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/

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”>

AllowOverride None

Options None

Order allow,deny

Allow from all

</Directory>

Alias /icons/ “/usr/share/apache2/icons/”

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>

Se pur perfettamente funzionante, copiando e incollando quanto sopra, esce una cosa estericamente bruttissima, quindi rimuoviamo gli spazi fra una riga e l’altra e diamo un senso logico al file aggiungendo dei {TAB} prima di ogni riga così che si possa ottenere una visualizzazione del file simile a questa qui sopra.

Salviamo e creiamo le directory adeguate

mkdir -p /var/www/apache2-default/cgi-bin/
Aggiungiamo il default e riavviamo il nostro server
a2ensite default-ssl
/etc/init.d/apache2 restart
diamo un occhiata ai log per vedere se è tutto ok
tail -f /var/log/apache2/error.log
se tutto è apposto non dovremmo vedere errori
Passiamo ora all’istallazione e configurazione di PHP

apt-get install php5 libapache2-mod-php5 -y

Quando ha finito modifichiamo immediatamente un parametro che di default è sbagliato

vi /etc/php5/cli/php.ini e cerchiamo la sezione memory_limit che è impostata a -1 (SBAGLIATO) cambiamo il – con 128

; Maximum amount of memory a script may consume (128MB)
; http://php.net/memory-limit
memory_limit = 128M

salviamo e riavviamo il nostro serverweb con un sano /etc/init.d/apache2 restart

creiamo un bel file test.php lo mettiamo nella directory di default e testiamo il nostro server web con i file html e coon i file php

vi /var/www/prova.php e ci scriviamo dentro quanto segue:

<html><head><title> Pagina per testare php</title></head>
<body><?php
phpinfo( );
?></body></html>
salvaimo.

Anche qui, il file se pur funzionante perfettamente è uno schifo, quindi va sistemato con degli spazi o dei {TAB}

Andiamo all’indirizzo ip del ns server con un browser
http://ipdirizzoipdelserver, se funziona dovremmo leggere la scritta It WorksitworksA questo punto controlliamo se funzionano le pagine php, come prima andiamo sul indirizzo del server e aggiungiamo /prova.php così: http://ipdirizzoipdelserver/prova.php se funziona dovremmo vedere la schermata di php.

PERFETTO !

Adesso aggiungiamo alcuni moduli, ognuno aggiunge quelli che desidera, ma io credo che questi siano necessari, quindi un bel

apt-get install libexpect-php5 libgv-php5 libphp5-embed php5-adodb php5-cgi php5-cli php5-common php5-curl php5-enchant php5-exactimage php5-ffmpeg php5-fpm php5-gd php5-geoip php5-gmp php5-imagick php5-imap php5-interbase php5-intl php5-ldap php5-mapscript php5-mcrypt php5-memcache php5-memcached  php5-mysql php5-odbc php5-pgsql php5-ps php5-pspell php5-radius php5-recode php5-sasl php5-sqlite php5-sybase php5-xcache php5-xmlrpc php5-xsl -y

ed attendiamo l’istallazione.

Passiamo ora ad installare il database server ed il software necessario ad amministrarlo facilmente.

Cominciamo con MYSQL

apt-get install mysql-server mysql-client -y

una schermata semigrafica ci chiede la password, inseriamo una password a nostra scelta, possibilmente differente dalla password di root

Terminata l’istallazione testiamo il database

mysql -uroot -p

ci chiede la password, la digitiamo e se tutto funziona dovremmo ottenere il prompt di mysql

:~# mysql -uroot -p
Enter password:
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 43
Server version: 5.5.35-0+wheezy1 (Debian)

Copyright (c) 2000, 2013, Oracle and/or its affiliates. All rights reserved.

Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.

Type ‘help;’ or ‘\h’ for help. Type ‘\c’ to clear the current input statement.

mysql>

PERFETTO !

Adesso usciamo con un bel quit;
Tutti i comandi impartiti al database finiscono con ;
quindi:
mysql> quit;
Bye
:~#
OTTIMO !

Passiamo ora ad intallare l’interfaccia phpmyadmin che ci permette di amministrare graficamente il database.

apt-get install phpmyadmin -y

Eventuali dipendenze non soddisfatte in precedenza verranno risolte adesso, pertanto quando compare la schermata azzurra che ci chiede per quale server istalliamo phpmyadmin, selezioniamo SOLTANTO la voce apache2 e proseguiamo.
Quando la solita schermata azzurra ci chiede se configurare o meno phpmyadmin rispondiamo si, alla richiesta di password dobbiamo inserire quella del database, non quella di root nella shell, ma quella di root nel database.
Al termine verifichiamo se tutto funziona
http://indirizzo_ns_server/phpmyadmin
COMPLIMENTI, HAI ISTALLATO UN WEB SERVER PERFETTAMENTE FUNZIONANTE !!!!

Poichè siamo dei malati di mente, imponiamo a phpmyadmin di accettare connessioni soltanto in https, quindi editiamo il file /etc/apache2/conf.d/phpmyadmin.conf ed aggiungiamo in cima

<IfModule mod_rewrite.c>
<IfModule mod_ssl.c>
<Location /phpmyadmin>
RewriteEngine on
RewriteCond %{HTTPS} off
RewriteRule ^(.*)$ https://%{HTTP_HOST}/phpmyadmin [R]
</Location>
</IfModule>
</IfModule>

Il resto del file non va toccato.

Salviamo e restartiamo il server
/etc/init.d/apache2 restart
adesso proviamo a tornare in phpmyadmin, noteremo che anche se non specifichiamo https automaticamente la connessione verrà forzata in https e ci verrà mostrato il ns certificato self signed, lo accettiamo e tutto funziona 🙂
NOTA
Questa configurazione funziona fillo alla versione Wheezy, dalla prossima, la Jessie, il file da modificare è /etc/phpmyadmin/apache.conf
Ed anche per oggi è tutto.


Commenti

WEB SERVER con debian — 1 commento

  1. Pingback: File System condiviso da due web servers

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *

This site uses Akismet to reduce spam. Learn how your comment data is processed.