Vhost per tutti con i template per Apache
by Giovanni on April 26th, 2009
Tutti i server di Mikamai usano Ubuntu Linux come distribuzione. Una delle cose migliori è il layout delle directory di Apache, in particolare il modo in cui si abilitano e disabilitano i Virtual Host.
Nonostante la loro semplicità, la creazione dei nuovi vhost è un lavoro tedioso, che abbiamo risolto (alfine!) con uno script ruby molto semplice (è richiesta la gemma optiflag):
#!/usr/bin/env ruby require 'rubygems' require 'optiflag' module MyOptions extend OptiFlagSet flag "d" do description "The domain name the vhost should serve" long_form "domain" end optional_flag "a" do description "Email of the admin. If not specified defaults to info@domain" long_form "admin" end optional_switch_flag "w" do description "Adds www to non www redirection" long_form "www_redirect" end and_process! end flags = MyOptions.flags admin = flags.a ? flags.a : "info@#{flags.d}" domain = flags.d quoted_domain = flags.d.gsub(/\./, "\\.") TEMPLATE=<<-EOT <VirtualHost *:80> ServerName #{domain} ServerAdmin #{admin} DocumentRoot /var/apps/#{domain} <Directory /> Options FollowSymLinks AllowOverride None </Directory> <Directory /var/apps/#{domain}> Options Indexes FollowSymLinks MultiViews AllowOverride All Order allow,deny allow from all </Directory> ErrorLog /var/log/apache2/#{domain}.log # Possible values include: debug, info, notice, warn, error, crit, # alert, emerg. LogLevel warn CustomLog /var/log/apache2/#{domain}.log combined </VirtualHost> EOT REDIRECTION=<<-EOT <VirtualHost *:80> ServerName www.#{domain} ServerAdmin #{admin} RewriteEngine On RewriteCond %{HTTP_HOST} ^www\\.#{quoted_domain} RewriteRule (.*) http://#{domain}/$1 [R=301,L] </VirtualHost> EOT puts TEMPLATE puts REDIRECTION if flags.w?
Lo usiamo in questo modo:
$ vhgen -d domain.com -w > /etc/apache2/sites-available/my_vhost $ a2ensite my_vhost
