A server for your projects

Yoan BlancSun, 22 Oct 2006, , , , ,

At my work, we just installed a development server that will host the demo of the work of the web developers. I’ll explain here how I managed to do that.

First of all, install your box. I choose Ubuntu server my employer loves everything that is trendy. If I prefer Gentoo, Ubuntu is probably more convenient for most users.

The power of Ubuntu Server is that you can directly install a LAMP server. Here we’ll need some extra packages for Trac and Subversion.

sudo apt-get install trac libapache2-svn libapache2-mod-python

The idea is to have for a project a virtual host, a Subversion repository and a Trac.

I’ve choose this directory structure:

~/projects/
   .htpasswd        (Password file)
   project_name/
      apache.conf   (Apache configuration file)
      log/          (Apache logs)
      svn/          (Subversion repository)
      trac/         (Trac)
      www/          (VirtualHost document root)
		

For the better flexibility and don’t deal with a DNS server. Every project will be mapped on a port.

Here is a Python script that will create for you this structure.

All you need is to create the directory projects and .htpasswd in it, then run :

python create_project.py project_name port

An example:

  1. Create your project called “test” and mapped on the port 8000.

    python create_project.py test 8000
  2. Install it in Apache.

    sudo ln -s /home/`whoami`/projects/test/apache.conf /etc/apache2/sites-enabled/test
  3. Restart Apache to see the change

    sudo /etc/init.d/apache2 restart
  4. Open you browser and visit:

    • http://your-server-ip:8000/
    • http://your-server-ip/svn/test/
    • http://your-server-ip/trac/test/

For a very convenient server, I suggest you to use ssh for everybody. They just have to give you their public key, you add it into .ssh/authorized_keys and then they can log in safely for SCP, SFTP (need to configure the FTP server) or remote control.

Feel free to give me feedback about your experience, this script is in a early stage of development use it at your own risk.

Au boulot, il a été mis en place un serveur de test qui a pour objectif de permettre de faire des démonstrations aux clients de manière simple et également de centraliser les informations. Ce qui est toujours utile lorsqu’on travaille en équipe (de plus de une personne).

Ci-dessous, vous trouvez un descriptif de comment, je m’y suis pris pour mettre un place un serveur basé sur Ubuntu server et fournissant pour chaque projet :

un accès web de démonstration sur un port choisit ;
http://votre-serveur:port/
un répertoire Subversion ;
http://votre-serveur/svn/nom_du_projet/
un gestionnaire de projet Trac.
http://votre-serveur/trac/nom_du_projet/

Un script Python permet l’automatisation de la création des projets.

Cet outil est pour l’instant à un état très jeune, je vous invite à me faire un retour de votre expérience. Et sachez, que vous l’utilisez à vos risques et périls.

Digg it!, so del.icio.us, blogmarks, reddit.