Installare Ispconfig Con Apache2 E Nginx Come Reverse Proxy Su Ubuntu 12

Installare Ispconfig Con Apache2 E Nginx Come Reverse Proxy Su Ubuntu 12

Questo tutorial spiega come installare ispconfig3 con apache2 e nginx come reverse proxy insieme a dovecot e tutto il necessario per un webserver completo anche di roundcube e dns. Cominciamo installando:

apt-get update  
apt-get install postfix postfix-mysql postfix-doc mysql-client mysql-server openssl getmail4 rkhunter binutils dovecot-imapd dovecot-pop3d dovecot-mysql dovecot-sieve sudo  

New password for the MySQL "root" user:
<– yourrootsqlpassword

Aprire le porte per postfix

vim /etc/postfix/master.cf  

Modificare quanto segue

[...]
submission inet n       -       -       -       -       smtpd  
  -o syslog_name=postfix/submission
  -o smtpd_tls_security_level=encrypt
  -o smtpd_sasl_auth_enable=yes
  -o smtpd_client_restrictions=permit_sasl_authenticated,reject
#  -o milter_macro_daemon_name=ORIGINATING
smtps     inet  n       -       -       -       -       smtpd  
  -o syslog_name=postfix/smtps
  -o smtpd_tls_wrappermode=yes
  -o smtpd_sasl_auth_enable=yes
  -o smtpd_client_restrictions=permit_sasl_authenticated,reject
#  -o milter_macro_daemon_name=ORIGINATING
[...]

Riavviamo postfix e abilitiamo il bind a mysql non solo in locale commentando come segue

/etc/init.d/postfix restart

Modifichiamo il mysql decommentando il bind address

vim /etc/mysql/my.cnf  

Installiamo Amavisd-new, SpamAssassin e Clamav

apt-get install amavisd-new spamassassin clamav clamav-daemon zoo unzip bzip2 arj nomarch lzop cabextract apt-listchanges libnet-ldap-perl libauthen-sasl-perl clamav-docs daemon libio-string-perl libio-socket-ssl-perl libnet-ident-perl zip libnet-dns-perl  

Fermiamo spamassassin

/etc/init.d/spamassassin stop


update-rc.d -f spamassassin remove  

Installiamo Apache2, PHP5, phpMyAdmin, FCGI, suExec, Pear, e mcrypt

apt-get install apache2 apache2.2-common apache2-doc apache2-mpm-prefork apache2-utils libexpat1 ssl-cert libapache2-mod-php5 php5 php5-common php5-gd php5-mysql php5-imap phpmyadmin php5-cli php5-cgi libapache2-mod-fcgid apache2-suexec php-pear php-auth php5-curl php5-mcrypt mcrypt php5-imagick imagemagick libapache2-mod-suphp libruby libapache2-mod-ruby libapache2-mod-python libapache2-mod-perl2  

Alle seguenti domande rispondiamo

Web server to reconfigure automatically:

<– apache2

Digitiamo ora

a2enmod suexec rewrite ssl actions include

a2enmod dav_fs dav auth_digest  

Riavviamo apache2

service apache2 restart  

Modifichiamo come segue il seguente file

/etc/mime.types

[...] #application/x-ruby rb [...]

Installiamo ora xcache e poi riavviamo apache2

apt-get install php5-xcache

service apache2 restart  

Installiamo ora il client ftp pureftpd

apt-get install pure-ftpd-common pure-ftpd-mysql  
vi /etc/default/pure-ftpd-common  
[...]
STANDALONE_OR_INETD=standalone  
[...]
VIRTUALCHROOT=true  
[...]

Abilitiamo FTP e TLS nelle connessioni

echo 1 > /etc/pure-ftpd/conf/TLS  

Creiamo il certificato

mkdir -p /etc/ssl/private/  
openssl req -x509 -nodes -days 7300 -newkey rsa:2048 -keyout /etc/ssl/private/pure-ftpd.pem -out /etc/ssl/private/pure-ftpd.pem

Compiliamo tutti i campi della licenza dopodichè settiamo i permessi e riavviamo

chmod 600 /etc/ssl/private/pure-ftpd.pem  
/etc/init.d/pure-ftpd-mysql restart

Installiamo ora BIND Dns server

apt-get install bind9 dnsutils  

Installiamo Vlogger, Webalizer e AWstats

apt-get install vlogger webalizer awstats geoip-database libclass-dbi-mysql-perl  

Apriamo le configurazioni del cron di awstat e commentiamo tutto

#MAILTO=root
# */10 * * * * www-data [ -x /usr/share/awstats/tools/update.sh ] && /usr/share/awstats/tools/update.sh
#  Generate static reports:
# 10 03 * * * www-data [ -x /usr/share/awstats/tools/buildstatic.sh ] && /usr/share/awstats/tools/buildstatic.sh

Installiamo fail2ban

apt-get install fail2ban  

Creiamo poi il file

vim /etc/fail2ban/jail.local  

Modifichiamo il file come segue

[pureftpd]
enabled  = true  
port     = ftp  
filter   = pureftpd  
logpath  = /var/log/syslog  
maxretry = 3

[dovecot-pop3imap]
enabled = true  
filter = dovecot-pop3imap  
action = iptables-multiport[name=dovecot-pop3imap, port="pop3,pop3s,imap,imaps", protocol=tcp]  
logpath = /var/log/mail.log  
maxretry = 5

Creiamo i due filtri

vi /etc/fail2ban/filter.d/pureftpd.conf  
[Definition]
failregex = .*pure-ftpd: (.*@) [WARNING] Authentication failed for user.*  
ignoreregex =  

Modifichiamo il file

vim /etc/fail2ban/filter.d/dovecot-pop3imap.conf  
[Definition]
failregex = (?: pop3-login|imap-login): .*(?:Authentication failure|Aborted login (auth failed|Aborted login (tried to use disabled|Disconnected (auth failed|Aborted login (d+ authentication attempts).*rip=(?PS*),.*  
ignoreregex =  

Riavviamo adesso fail2ban
/etc/init.d/fail2ban restart

Passiamo ora ad installare squirrelmail o roundcube

Creiamo la directory per la webmail roundcube o squirrelmail

mkdir /var/www/webmail/ && cd /var/www/

In caso vogliamo continuare nell'installazione di roundcube continuiamo con i seguenti step altrimenti passiamo al prossimo step

Scarichiamo l'ultima versione di roundcube disponibile (al momento la 0.8.4)

wget http://sourceforge.net/projects/roundcubemail/files/roundcubemail/0.8.4/roundcubemail-0.8.4.tar.gz/download

tar xfz roundcubemail-0.8.4.tar.gz

mv roundcubemail-0.8.4/* webmail

rm roundcubemail-0.8.4.tar.gz

rm -rf roundcubemail-0.8.4  

Ora settiamo i permessi

cd webmail

chown -R www-data:www-data temp/ logs/  

Creiamo il database che ospiterà roundcube quindi colleghiamoci al mysql digitando

mysql -u root -p

Inseriamo la password e digitiamo

CREATE DATABASE roundcubemail;

GRANT ALL PRIVILEGES ON roundcubemail.* TO [email protected] IDENTIFIED BY 'password';  
FLUSH PRIVILEGES;  
Inseriamo la password che vogliamo e naturalmente se preferiamo avere un diverso database basterà cambiare il nome utente  

Per finire l'installazione di roundcube dovremo recarci al nostro indirizzo ip del server http://indirizzo.ip/webmail e alla fine ricordiamo di eliminare la cartella d'installazione

rm -rf /var/www/webmail/installer  

Installazione di squirrelmail

apt-get install squirrelmail

squirrelmail-configure

Non abbiamo ancora finito, ora dobbiamo configurare apache

cd /etc/apache2/conf.d/

ln -s ../../squirrelmail/apache.conf squirrelmail.conf

/etc/init.d/apache2 reload

Apriamo

vim /etc/apache2/conf.d/squirrelmail.conf  

Andiamo a controllare e modificare le seguenti linee

[...]

  Options FollowSymLinks

    AddType application/x-httpd-php .php

    php_flag magic_quotes_gpc Off

    php_flag track_vars On

    php_admin_flag allow_url_fopen Off

    php_value include_path .

    php_admin_value upload_tmp_dir /var/lib/squirrelmail/tmp

    php_admin_value open_basedir /usr/share/squirrelmail:/etc/squirrelmail:/var/lib/squirrelmail:/etc/hostname:/etc/mailname:/var/spool/squirrelmail

    php_flag register_globals off

    DirectoryIndex index.php

  # access to configtest is limited by default to prevent information leak

    order deny,allow

    deny from all

    allow from 127.0.0.1

[...]

Creiamo la cartella temporanea di squirrelmail

mkdir /var/lib/squirrelmail/tmp  

Diamogli i permessi

chown www-data /var/lib/squirrelmail/tmp  

Infine facciamo il reload di apache

/etc/init.d/apache2 reload 

Adesso passiamo all'installazione di ispconfig3 scaricando l'ultima versione disponibile,scompattandolo e installandolo

cd /tmp

wget http://www.ispconfig.org/downloads/ISPConfig-3-stable.tar.gz

tar xfz ISPConfig-3-stable.tar.gz

cd ispconfig3_install/install/

php -q install.php  

Adesso seguirà una procedura d'installazione in cui dovremo inserire i campi giusti e nella generazione della ssl inseriamo i nostri campi

Adesso andando all'indirizzo http(s)://nostro.ip:8080 possiamo loggarci con user e password admin (consiglio di riconfigurare la password) e procedere con l'installazione di nginx

// Una piccola nota per chi stia installando ispconfig su un container openvz (macchina virtuale) eseguire le modifiche sull'host

Adesso finalmente passiamo alla configurazione di nginx. Prima di cominciare configuriamo apache2 a lavorare sulla porta 82 quindi andiamo in

/etc/apache2/ports.conf

Spostiamo il listen e i virtualhost dalla porta 80 alla porta 82

NameVirtualHost *:82  

Listen 82`
Adesso rechiamo in /etc/apache2/sites-available e configuriamo il default cambiando porta nella stringa del virtualhost

Cambiato la porta adesso diamo ora i comandi

mkdir /root/apache2_vhost_backup/

mv /etc/apache2/sites-available/*.vhoste /root/apache2_vhost_backup/  

Riavviamo infine apache2

service apache2 restart  

Adesso dobbiamo cambiare i template di ispconfig quindi diamo i comandi

cd /usr/local/ispconfig/server/

cp conf/apache_ispconfig.conf.master conf-custom/

cp conf/vhost.conf.master conf-custom/  

Andiamo ad aprire i file appena copiati e cambiamo le porte da 80 a 82

cd /usr/local/ispconfig/server/conf-custom/  
vim apache_ispconfig.conf.master

NameVirtualHost {tmplvar name="ipaddress"}:82

Adesso facciamo la stessa cosa con l'altro file cambiando la porta da 80 a 82

vim vhost.conf.master  

Installiamo ora l'ultima mod per apache2

apt-get install libapache2-mod-rpaf  
/etc/apache2/apache2.conf
RPAFsethostname On  
RPAFproxy_ips 127.0.0.1 YOU_IP_ADDRESS  

Installiamo ora nginx

apt-get install nginx

rm /etc/nginx/sites-available/default

vi /etc/nginx/sites-available/default  

Inseriamo adesso

server {  
    listen   80 default;
        server_name  _;
        server_name_in_redirect  off;
    resolver  127.0.0.1;
#### www. redirect    - all domains starting with www will be redirected to http://domain. ####
    if ($host ~* ^(www.)(.+)) {
        set $rawdomain $2;
        rewrite ^/(.*)$  http://$rawdomain/$1 permanent;
    }
    access_log  /var/log/ispconfig/httpd/$host/access.log;
location ~* ^.+.(jpg|jpeg|gif|png|ico|css|zip|tgz|gz|rar|bz2|doc|xls|exe|pdf|ppt|txt|tar|mid|midi|wav|bmp|rtf|js|swf|flv|html|htm|mp3)$ {  
    root   /var/www/$host/web;
    access_log off;
    expires 30d;
    }
location / {  
    root   /var/www/$host/web;
    index  index.html index.htm index.php;
        access_log      off;
        proxy_pass http://$host:82;
        proxy_set_header X-Real-IP  $remote_addr;
        proxy_set_header Host $host;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
}

Questo è tutto. Finalmente nginx e apache2 sono configurati in ispconfig3. Riavviamo i due webserver e cominciamo ad utilizzare il nostro server

service apache2 restart && service nginx restart  

Con questo è tutto. Lascio il link alle guide originali in lingua inglese e con i file di configurazione di apache2 nginx e i vari default e vhost [Link Dropbox]

Se avete degli errori nell'upload dei file (ad esempio da wordpress) o errori 50X provate a commentare o a cancellare nel file /usr/local/ispconfig/server/conf/nginx_vhost.conf.master la linea

`fastcgi_intercept_errors on;`

Articoli Correlati