Appunti Aapache2 mod_ssl Virtual Host e htaccess

Visto che a lavoro mi son trovato a dover scrivere 2 appunti su come ho configurato un server Apache, ho deciso di riportarlo anche sul mio blog, magari fa comodo a qualcuno :)

Apache2 + mod_ssl + htaccess + virtual hosts

Per aggiungere un nuovo virtual host basta fare i seguenti passi:
1 – Creare un file in /etc/apache2/site-available
2 – Popolarlo con la configurazione corretta sia sulla porta 80 che sulla 443 se necessario SSL
3 – Abilitarlo tramite il comando a2ensite [file di configurazione]
4 – Fare il reload di Apache2:

/etc/init.d/apache2 reload

Se non ci sono errori, il nuovo virtual host e` attivo.

Le configurazioni di Apache si trovano nella directory /etc/apache2, i virtual host creati risiedono in /etc/apache2/site-available e sono stati abilitati tramite in comando a2ensite

a2ensite wiki.trii.it

Di conseguenza sono attivi in /etc/apache2/site-enabled

Utilizziamo un sistema di accessi tramite htaccess che risiede in /var/www/wiki.trii.it/.htaccess, mentre il file dell pwd sta in /var/www/.htpasswd
Per aggiungere un utente basta utilizzare htpasswd nel seguente modo:

htpasswd /var/www/.htpasswd nuovoutente

Verra` chiesta due volte la password ed il gioco e` fatto.

La configurazione e` di tipo SSL, di seguito riportata

#Questo primo blocco server per fare redirect da http ad https nel caso in cui si tenti di accedere al wiki via http

<VirtualHost *:80>
ServerName wiki.trii.it
RedirectMatch (.*)$ https://wiki.trii.it$1
RedirectMatch /.* https://wiki.trii.it

</VirtualHost>

#Questo e` il blocco principale della configurazione, ho lasciato il blocco dei cgi-bin anche se in realta` non li usiamo.
<VirtualHost *:443>
SSLEngine on
SSLCertificateFile /etc/apache2/apache.pem
ServerAdmin alessio.rocchi@trii.it
ServerName wiki.trii.it
ServerAlias wiki

DocumentRoot /var/www/wiki.trii.it

Options FollowSymLinks
AllowOverride AuthConfig
Order allow,deny
allow from all

ScriptAlias /cgi-bin/ /usr/lib/cgi-bin/

AllowOverride None
Options +ExecCGI -MultiViews +SymLinksIfOwnerMatch
Order allow,deny
Allow from all

ErrorLog /var/log/apache2/error.log

# Possible values include: debug, info, notice, warn, error, crit,

# alert, emerg.
LogLevel warn

CustomLog /var/log/apache2/access.log combined

</VirtualHost>

Parallelize operations in Perl

The easiest way to parallelize an operations in Perl, is to use Prallel::ForkManager() module. Of course you can do it manually, but this way it’s very very better.

Just an example of use:

use Parallel::ForkManager;

my $MAX_PROCESSES=10;
my $pm = new Parallel::ForkManager($MAX_PROCESSES);

my $pid = $pm->start and next;
    #Operations to do in child processes.
$pm->finish;
$pm->wait_all_children;

Done, in few scripting lines we have a functionally parallel system method that use fork. The good things is that we can decide how many child the script can spawns at the same time, things quite annoying to write manually.

If you want to know how the module works, you can just see the sources, they are very readable.

Byez :)

Svn Client via SSH on a nonstandard port

Hello :) Considering that I’ve setup a subversion server on a virtual machine and it binds ssh on port 1022, I had to find a way to tell to svn client how to contact that port…

So,  how dows it works?
It’s simple:

  1. Edit ~/.subversion/config
  2. Find tunnels sections and insert the following lines:
    [tunnels]
    ssh = ssh -p 1022
  3. It’s done, save the file and use svn client as always. :)

Byez.

    Export SSH Public Key

    Simple script to export our public ssh to a remote host in order to login without password.

    #!/bin/bash
    
    HOST=$1
    PORT=$2
    
    if [ $# -lt 2 ]
    then
    echo "Error, missing one parameter."
    echo "Usage: $0 HOST PORT"
    exit 1
    fi
    
    cat ~/.ssh/id_rsa.pub |ssh root@$HOST -p $PORT "if [ ! -d ~/.ssh ]; then mkdir ~/.ssh; fi; touch ~/.ssh/authorized_keys && cat - >> ~/.ssh/authorized_keys"
    
    exit 0
    

    Installazione di Drupal su Gentoo

    Si emerge il pacchetto:

    emerge drupal

    Configurazione del vhost:
    Per la configurazione dei vhosts, c’e` il tool interno del pacchetto webapp-config Poniamo di dover configurare il vhost lab2.dadanoc.com nella directory /var/www/www.pippo.pluto, la sintassi di webapp-config sara` la seguente:

    webapp-config -I -h www.pippo.pluto  -D /var/www drupal 6.14

    Dove ovviamente 6.14 e` la versione specifica. E` anche possibile specificare uid e gid diversi del proprietario dei file aggiungendo le opzioni -u e -g.

    IMPORTANTE! Pre-Upgrade
    Visto che l’upgrade sovrascrive tutti i files del vhost, prima di fare qualsiasi cosa consiglio un:

    tar cvfz vhost.tgz vhost_dir

    Upgrade di un vhost
    Per aggiornare un vhost configurato con l’applicazione, basta lanciare il seguente comando:

    weba0pp-config -U [-dghus] {app-name} {app-version}
    es.
    webapp-config -U -h www.pippo.pluto -D /var/www

    IMPORTANTE! Post-Upgrade
    Dato il Pre-Upgrade, il file settings.php all’interno di ${VHOST}/sites/default e` adesso vergine, quindi, tentendo comunque conto della compatibilita`, conviene prendere quello della vecchia versione copiarlo al posto di quello vergine e cambiargli i permessi:

    chmod 644 settings.php

    Opzioni utili per webapp-config
    Nel caso in cui si voglia vedere la lista delle applicazioni installate tramite esso:

    webapp-config --show-installed

    FINE!