Install drush in Gandi.net Simple Hosting

In this article I will explain how to install drush in a Simple Hosting instance of Gandi.net.

First we need to get SSH access and mv to the directory /srv/data/var/php/admin

The recommended method to install drush is using composer, but with Simple Hosting we cannot perform a global installation.

curl -sS https://getcomposer.org/installer | php
php composer.phar require drush/drush:7.*

Drush is now installed and can be used directly or in a script using the full path: /srv/data/var/php/admin/vendor/drush/drush/drush

Here is an example script that I use to upgrade my Drupal installations:

#!/bin/bash
 DRUSH="bash /srv/data/var/php/admin/vendor/drush/drush/drush"
 SITEPATH="/srv/data/web/vhosts/www.example.com"
 USERNAME=hosting-user
 GROUP=hosting-user
 cd $SITEPATH/htdocs/
 cp .htaccess ../
 $DRUSH pm-refresh && $DRUSH pm-update drupal --no-backup
 mv -f ../.htaccess ./
 cd ..
 chown -R $USERNAME.$GROUP $SITEPATH/htdocs/

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!

 

 

Spegnimento remoto per risparmiare energia

In un momento così delicato per l’economia mondiale e per le proprie tasche la mente umana è spinta ad escogitare nuove forme di risparmio. Per esempio quando la sera tornate a casa da lavoro vi ricordate sempre di spegnere i vostri PC? Si? Bravi!

Purtroppo sono tante le persone che, per pigrizia o per semplice distrazione non spengono la loro workstation e questo comporta (oltre al costo in bolletta) un notevole spreco di energia ed un possibile invecchiamento precoce dei componenti, soprattutto quelli in movimento come ventole (si, si rompono più spesso di quanto si possa credere e dopo fanno un rumore assordante) e Hard Disk.

Ecco quindi un modo semplice e veloce per spegnere in maniera remota ed automatizzata ogni PC della vostra azienda.

Accedete ad uno dei vostri server con Windows 2008 o un PC Windows 7 con privilegi di amministratore ed incollate il comando sotto in un file di testo aperto per esempio con blocco note.

shutdown /s /m \\nomepc /t 60 /c "Shutdown serale" /f /d p:1:1

Vediamo quali sono le opzioni da modificare per far funzionare il comando nel vostro ambiente.

/s indica che vogliamo effettuare uno shutdown

/m \\nomepc il parametro m indica il nome DNS, NETBIOS oppure direttamente l’IP del PC che si vuole spegnere Es.: /m \\192.168.1.50;

/t 60 Il parametro t indica quanti secondi  passano dalla ricezione del comando all’effettivo avvio della procedura di spegnimento;

/c "Shutdown serale" è il contenuto del messaggio visualizzato a video quando il PC riceve il comando;

/f forza la chiusura di tutte le applicazioni senza avvisare l’utente, sappiate quindi che se usate questa opzione e non avete ancora salvato i vostri dati rischiate di perderli;

/d p:1:1 indica il motivo per cui stiamo spegnendo il PC, all’atto pratico è irrilevante ed è un informazione richiesta solo per ragioni di logging, il codice della ragione di spegnimento che ho usato io è Hardware: Maintenance (planned);

Ora chiudete il file e cambiate l’estensione da *.txt a *.bat, in questo modo ogni volta che cliccate sul file il comando verrà eseguito; ora l’esecuzione dello script va pianificata con “Operazioni pianificate” all’orario che preferite.

Per informazioni sulle opzioni del comando shutdown digitate shutdown -? nel Prompt dei comandi.

NB: il comando di spegnimento remoto va eseguito su una macchina che ha privilegi di amministrazione sul PC remoto, come per esempio un server appartenente al dominio. Se tentate di eseguire il comando da PC-A a PC-B senza che in B ci sia lo stesso nome utente con la stessa password e privilegi di amministrazione che c’è in PC-A, allora non aspettatevi che funzioni.

Buon risparmio!

OpenMP in MacOSX

Ciao a tutti!

Di recente mi è capitato di dover utilizzare OpenMP per la programmazione parallela, nel corso di Laboratorio di Fisica II.

Dato che uso MacOSX mi è sembrato naturale provare XCode 4. Ebbene, dopo innumerevoli tentativi di compilazione andati a vuoto ho cominciato una ricerca in rete.

Premetto che non sono riuscito ad integrare la compilazione all’interno di XCode, per intenderci il programma lo scrivete con XCode ma lo compilate da terminale; tuttavia ho raggiunto lo scopo con una versione di gcc compilata appositamente da Gaurav Khanna, un professore della “University of Massachussets”, che la distribuisce dal sito HPC Sourceforge.

Sul sito si legge che il compilatore è automatizzato per rendere al meglio nel calcolo vettoriale e parallelo, inoltre è disponibile anche una versione per Lion, l’ultimo OSX di Apple.

Per installarlo, una volta scaricato il pacchetto, si hanno due opzioni:

  1.  Si estrae il contenuto in una cartella qualsiasi (la propria cartella utente per esempio) e lo si esegue da li. Es.:
    /Users/riccardo/usr/local/bin/gcc -fopenmp main.c
  2.  Lo si estrae nella cartella /usr/local/bin, in questo modo sarà accessibile a tutti gli utenti e disponibile da terminale con un semplice:
    gcc -fopenmp main.c

    Per estrarlo si seguono le istruzioni sul sito:

    sudo tar -xvf gcc-lion.tar -C /

A breve pubblicherò un post sullo strumento “make” che si occupa di semplificare la compilazione di programmi che utilizzano più di un file sorgente.

Ciao!