Shared hosting su TopServer

In questo articolo mostrerò come si configura in poco tempo una VPS per hosting condiviso con tanto di pannello web superaccessoriato per gli utenti. Lo strumento che andrò ad utilizzare si chiama Virtualmin (www.virtualmin.com), come potete vedere dal sito si tratta di una GUI avanzata per configurare virtualhost apache (e tanto tanto altro) in pochi click, così da poter hostare i siti dei propri clienti.

Per scrivere questo articolo utilizzerò una VPS fornita da TopHost che recentemente ha lanciato i TopServer, macchine virtuali con tariffazione al minuto, IPv6, nessun limite di traffico e 100Mbps di banda. Maggiori informazioni sulle caratteristiche dell’offerta le trovate su http://www.tophost.it/sc/topserver/.

Appena avviata la nuova macchina (consiglio vivamente di utilizzare Debian) ci colleghiamo con l’utente di root via ssh e senza bisogno di toccare altro scarichiamo lo script di installazione di Virtualmin disponibile sul sito

root@ts101042:~# wget http://software.virtualmin.com/gpl/scripts/install.sh

e poi lo eseguiamo

root@ts101042:~# sh ./install.sh

Lo script si occuperà di aggiornare la lista dei pacchetti in repo e di scaricare qualsiasi cosa abbia bisogno. Incollo l’output dello script per chiarezza.

root@ts101042:~# sh ./install.sh

Welcome to the Virtualmin GPL installer, version 1.0.9

 WARNING:

 The installation is quite stable and functional when run on a freshly
 installed supported Operating System.

 If you have existing websites, email users, or if you manually installed
 Virtualmin via a Webmin 'wbm' module, you are likely to run into problems.
 Please read the Virtualmin Administrators Guide before proceeding if
 your system is not a freshly installed and supported OS.

 This script is not intended to update your system!  It should only be
 used to perform your initial Virtualmin installation.  If you have previously
 run the Virtualmin installer, you can perform upgrades and updates from within
 Virtualmin itself, or using your system's package manager. Once Virtualmin is
 installed, you never need to run this script again.

 The systems currently supported by install.sh are:
 CentOS and RHEL 5-6 on i386 and x86_64
 Scientific Linux 6 on i386 and x86_64
 Debian 6.0 on i386 and amd64
 Ubuntu 8.04 LTS and 10.04 LTS, and 12.04 LTS on i386 and amd64
 Amazon Linux 2012.03 on i386 and x86_64
 FreeBSD 7.0 and 8 on i386 and amd64

 If your OS is not listed above, this script will fail.  More details
 about the systems supported by the script can be found here:

   http://www.virtualmin.com/os-support.html

 Continue? (y/n) y
Checking for HTTP client...found /usr/bin/wget -nv
Checking for perl...found /usr/bin/perl
2012-07-09 16:42:56 URL:http://software.virtualmin.com/lib/spinner [579/579] -> "spinner" [1]
Loading log4sh logging library...
2012-07-09 16:42:57 URL:http://software.virtualmin.com/lib/log4sh [21395/21395] -> "log4sh" [1]
INFO - Started installation log in /root/virtualmin-install.log
INFO - Checking for fully qualified hostname...
INFO - Hostname OK: fully qualified as ts101042.server.topcloud.it
INFO - Installing serial number and license key into /etc/virtualmin-license
INFO - Loading OS selection library...
2012-07-09 16:42:58 URL:http://software.virtualmin.com/lib/oschooser.pl [4461/4461] -> "oschooser.pl" [1]
INFO - Download of http://software.virtualmin.com/lib/oschooser.pl Succeeded.
INFO - Loading OS list...
2012-07-09 16:42:58 URL:http://software.virtualmin.com/lib/os_list.txt [3735/3735] -> "os_list.txt" [1]
INFO - Download of http://software.virtualmin.com/lib/os_list.txt Succeeded.
INFO - Operating system name:    Debian Linux
INFO - Operating system version: 6.0
INFO - Configuring package manager for Debian Linux 6.0...
INFO - Enabling universe repositories, if not already available...
INFO - Disabling cdrom repositories...
Get:1 http://debian.seeweb.it squeeze Release.gpg [1672 B]
Ign http://debian.seeweb.it/debian/ squeeze/contrib Translation-en
Ign http://debian.seeweb.it/debian/ squeeze/main Translation-en
Ign http://debian.seeweb.it/debian/ squeeze/non-free Translation-en
Get:2 http://debian.seeweb.it squeeze-updates Release.gpg [836 B]
Ign http://debian.seeweb.it/debian/ squeeze-updates/contrib Translation-en
Ign http://debian.seeweb.it/debian/ squeeze-updates/main Translation-en
Ign http://debian.seeweb.it/debian/ squeeze-updates/non-free Translation-en
Get:3 http://debian.seeweb.it squeeze/updates Release.gpg [836 B]
Ign http://debian.seeweb.it/security/ squeeze/updates/contrib Translation-en
Ign http://debian.seeweb.it/security/ squeeze/updates/main Translation-en
Ign http://debian.seeweb.it/security/ squeeze/updates/non-free Translation-en
Get:4 http://debian.seeweb.it squeeze Release [111 kB]
Get:5 http://debian.seeweb.it squeeze-updates Release [113 kB]
Get:6 http://debian.seeweb.it squeeze/updates Release [86.9 kB]
Get:7 http://debian.seeweb.it squeeze/main amd64 Packages [6542 kB]
Get:8 http://debian.seeweb.it squeeze/contrib amd64 Packages [53.0 kB]
Get:9 http://debian.seeweb.it squeeze/non-free amd64 Packages [102 kB]
Get:10 http://debian.seeweb.it squeeze-updates/main amd64 Packages [13.7 kB]
Get:11 http://debian.seeweb.it squeeze-updates/contrib amd64 Packages [14 B]
Get:12 http://debian.seeweb.it squeeze-updates/non-free amd64 Packages [14 B]
Get:13 http://debian.seeweb.it squeeze/updates/main amd64 Packages [234 kB]
Get:14 http://debian.seeweb.it squeeze/updates/contrib amd64 Packages [674 B]
Get:15 http://debian.seeweb.it squeeze/updates/non-free amd64 Packages [14 B]
Fetched 7261 kB in 14s (511 kB/s)
Reading package lists... Done
INFO - Cleaning up apt headers and packages, so we can start fresh...
INFO -
2012-07-09 16:43:30 URL:http://software.virtualmin.com/lib/apt.conf.noninteractive [243/243] -> "apt.conf.noninteractive" [1]
INFO - Download of http://software.virtualmin.com/lib/apt.conf.noninteractive Succeeded.
INFO - Installing Webmin and Virtualmin package signing keys...
2012-07-09 16:43:30 URL:http://software.virtualmin.com/lib/RPM-GPG-KEY-virtualmi     90/1690] -> "RPM-GPG-KEY-virtualmin" [1]
INFO - Download of http://software.virtualmin.com/lib/RPM-GPG-KEY-virtualmin Suc     d.
2012-07-09 16:43:30 URL:http://software.virtualmin.com/lib/RPM-GPG-KEY-webmin [1     320] -> "RPM-GPG-KEY-webmin" [1]
INFO - Download of http://software.virtualmin.com/lib/RPM-GPG-KEY-webmin Succeed
INFO - OK
INFO - OK
INFO - Hit
INFO - Removing Debian standard Webmin package, if they exist...
INFO - Removing Debian apache packages...
INFO - Installing dependencies using command: /usr/bin/apt-get --config-file apt     .noninteractive -y --force-yes install postfix postfix-pcre webmin usermin ruby      ache2-mod-ruby libxml-simple-perl libcrypt-ssleay-perl unzip zip libfcgi-dev bin     amassassin spamc procmail libnet-ssleay-perl libpg-perl libdbd-pg-perl libdbd-my     erl quota iptables openssl python mailman subversion ruby irb rdoc ri mysql-serv     sql-client mysql-common postgresql postgresql-client awstats webalizer dovecot-c      dovecot-imapd dovecot-pop3d proftpd libcrypt-ssleay-perl awstats clamav-base cl     daemon clamav clamav-freshclam clamav-docs clamav-testfiles libapache2-mod-fcgid     he2-suexec-custom scponly apache2 apache2-doc libapache2-svn libsasl2-2 libsasl2     les sasl2-bin php-pear php5 php5-cgi libgd2-xpm libapache2-mod-php5 php5-mysql
...in progress, please wait...
.....................................................................................Extracting templates from packages: 100%............................
Extracting templates from packages: 100%
...............................................................................................................................................................................................................................................................................................................................................................................................................
INFO - /usr/bin/apt-get --config-file apt.conf.noninteractive -y --force-yes install postfix postfix-pcre webmin usermin ruby libapache2-mod-ruby libxml-simple-perl libcrypt-ssleay-perl unzip zip libfcgi-dev bind9 spamassassin spamc procmail libnet-ssleay-perl libpg-perl libdbd-pg-perl libdbd-mysql-perl quota iptables openssl python mailman subversion ruby irb rdoc ri mysql-server mysql-client mysql-common postgresql postgresql-client awstats webalizer dovecot-common dovecot-imapd dovecot-pop3d proftpd libcrypt-ssleay-perl awstats clamav-base clamav-daemon clamav clamav-freshclam clamav-docs clamav-testfiles libapache2-mod-fcgid apache2-suexec-custom scponly apache2 apache2-doc libapache2-svn libsasl2-2 libsasl2-modules sasl2-bin php-pear php5 php5-cgi libgd2-xpm libapache2-mod-php5 php5-mysql: Succeeded.
INFO -  Succeeded.
INFO - Installing Virtualmin and all related packages now using the command:
INFO - /usr/bin/apt-get --config-file apt.conf.noninteractive -y --force-yes install virtualmin-base
...in progress, please wait...
........................................................................................................
INFO - /usr/bin/apt-get --config-file apt.conf.noninteractive -y --force-yes install virtualmin-base: Succeeded.
INFO - Checking for updates to Virtualmin-related packages...
...in progress, please wait...
..
INFO - /usr/bin/apt-get --config-file apt.conf.noninteractive -y --force-yes install postfix postfix-pcre webmin usermin ruby libapache2-mod-ruby libxml-simple-perl libcrypt-ssleay-perl unzip zip libfcgi-dev bind9 spamassassin spamc procmail libnet-ssleay-perl libpg-perl libdbd-pg-perl libdbd-mysql-perl quota iptables openssl python mailman subversion ruby irb rdoc ri mysql-server mysql-client mysql-common postgresql postgresql-client awstats webalizer dovecot-common dovecot-imapd dovecot-pop3d proftpd libcrypt-ssleay-perl awstats clamav-base clamav-daemon clamav clamav-freshclam clamav-docs clamav-testfiles libapache2-mod-fcgid apache2-suexec-custom scponly apache2 apache2-doc libapache2-svn libsasl2-2 libsasl2-modules sasl2-bin php-pear php5 php5-cgi libgd2-xpm libapache2-mod-php5 php5-mysql: Succeeded.
INFO - Updating SpamAssassin rules...
INFO - Rule updates done
root@ts101042:~#

Una volta terminata l’installazione possiamo collegarci alla WebGUI con un browser.

https://ts101042.server.topcloud.it:10000

Apparirà una schermata come questa:


Facciamo il login e ci troveremo davanti al Wizard di post-installazione:

Lasciamo come sono le impostazioni relative all’uso della memoria, probabilmente ne abbiamo poca e non vogliamo sprecarla percui usiamola per lo stretto necessario.

Dato che non utilizzerò Virtualmin per gestire la posta (perchè complicarsi la vita quando esiste GoogleApps?) posso tranquillamente disattivare il demone di clamav per la scansione delle email.

Stesso discorso per Spamassassin.

A meno di non usare script particolari limitiamoci a far partire all’avvio solo il buon vecchio MySQL, PostgreSQL raramente ci sarà utile.

Impostate la password di amministrazione di MySQL, per buona abitudine usate tanti caratteri alfanumerici anche se il demone mysql è bindato solamente in localhost. Non si sa mai.

Selezionate la quantità di RAM disponibile nel vostro sistema, Virtualmin si occuperà di fare il tuning di MySQL per evitare di consumare troppa o troppo poca memoria. Di norma questa impostazione viene selezionata automaticamente.

Il prossimo passaggio riguarda la configurazione del DNS. Virtualmin permette anche di gestire un proprio server DNS anche se faccio volentieri a meno di questa features. Cliccate su Next senza troppi pensieri.

A questo punto Virtualmin vi chiede se volete salvare le password dei vostri clienti in chiaro! Voi rispondete prontamente di no.

Finito! Ora facciamo un po’ di “fine tuning”.

Andiamo in “System Settings” -> “Features and Plugins” dove togliamo un po’ di roba che non useremo per non trovarcela nel pannello:
_ BIND DNS domain
_ Mail for domain
_ SSL website
_ Spam filtering
_ Virus filtering
_ DAV Login
_ Mailman

E poi ovviamente bisogna abbattere i demoni che partono all’avvio della macchina. Andiamo in “Webmin” -> “System” -> “Bootup and Shutdown”. Selezioniamo i demoni sotto e clicchiamo su “Disable Now and On Boot”.
_ bind9 -> niente dns
_ mailman -> niente posta
_ clamav-freshclam -> niente posta
_ spamassassin -> niente posta
_ postfix -> niente posta correzione: va lasciato per poter inviare email dai siti web
_ dovecot -> niente posta
_ usermin -> niente posta

Ecco fatto, ora non resta che creare il nostro primo “Virtual Server”. Dal frame a sinistra selezioniamo “Create Virtual Server”, apparirà la schermata di sotto. Ora inseriamo il nome di dominio, una eventuale descrizione e la password di amministrazione dell’account.

Per popolare di contenuti il nostro Virtual Server ci si può collegare in FTP all’ip del vostro server utilizzando username e password scelti al momento della creazione dell’account.

Perfetto, ora non resta che modificare i vostri DNS per far puntare “example.com” sull’IP del vostro server. Potete adoperare sia record A sia un record CNAME, l’importante è che alla fine si riesca a risolvere l’ip del server.

Da notare che per fare le prove potete usare anche un “sottodominio”, usando come “Domain name” sottodominio.example.com. In questo modo non dovete preoccuparvi di rimettere a posto le cose in caso ci siamo dei problemi.

Se avete altre domande su Virtualmin potete utilizzare la documentazione sul sito o anche fare una domanda sul forum.

Rimango a disposizione per altri chiarimenti. Ciao e buon shared hosting!

 

 

File .DS_Store nelle cartelle condivise

Ciao a tutti, questo è il mio primo articolo del mio primo blog, un evento storico dunque ;-).

Molti di voi che possiedono un Mac avranno probabilmente una qualche sorta di storage di rete, come un NAS o anche semplicemente un pc fisso con windows di cui hanno condiviso una cartella. Ebbene come avrete notato il caro MacOSX si diletta nel creare dei file nascosti denominati .DS_Store su OGNI cartella visualizzata in rete. Questo comportamento è da considerare routine all’interno dei dischi di sistema del Mac, tuttavia può essere parecchio fastidioso visualizzarli anche da Windows o Linux…

Ecco quindi la soluzione finale al problema! Aprite Terminal.app e scriveteci:

defaults write com.apple.desktopservices DSDontWriteNetworkStores true

Da questo momento in poi Mac non vi infastidirà più 😉

PS: Il trucchetto è spiegato nella KB di apple.