Projet

Général

Profil

Actions

Prérequis du serveur

Système

Linux. Les extraits de commande sont faits sous Debian.

Utilisateur dédié

Pour tourner le service dans un environnement protégé et isolé, il est fortement recommandé de créer un utilisateur système dédié pour l'application.

useradd assistat -m -U

Environnement Ruby et Rails

On va faire un environnement ruby complet pour cet utilisateur, avec RVM.

Installation de RVM, en tant qu'utilisateur assistats :

apt-get install curl
\curl -sSL https://get.rvm.io | bash
rvm install 2.1
rvm --default use 2.1

Installation de rails :

gem install rails

Librairies nécessaires

Pour installer l'interfaçage entre rails et postgresql, on a besoin d'une librairie de développement :

apt-get install libpq-dev

Services

Postgresql

Préparer un environnement postgresql, avec une base de donnée et un utilisateurs possédant la base et le droits de créer des tables.

Par la suite, la base s'appellera assistatsdb et l'utilisateur assistats_web

Node.js

Lancer un serveur Rails demande également de pouvoir exécuter du javascript côté serveur. Pour cela, on install node.js depuis une source externe (tel que décrit dans la doc node.js https://github.com/joyent/node/wiki/installing-node.js-via-package-manager), en tant que root :

curl -sL https://deb.nodesource.com/setup | bash -

Apache2

Installation d'Apache2 :

apt-get install apache2

Phusion Passenger

Passenger est installé avec les paquets officiels du dépôt de Phusion :

apt-key adv --keyserver keyserver.ubuntu.com --recv-keys 561F9B9CAC40B2F7
echo "deb https://oss-binaries.phusionpassenger.com/apt/passenger wheezy main" > /etc/apt/sources.list.d/passenger.list
apt-get update && apt-get install libapache2-mod-passenger
passenger-install-apache2-module

Déploiement

Récupération de l'application

su - assistats
git clone git://tucuxi.univ-brest.fr/assistats
cd assistats
bundle install

Configuration
Configurer l'accès à la base de données dans le fichier config/database.yml

production:
  adapter: postgresql
  database: assistatsdb
  host: localhost
  username: assistats_web
  password: xXXXXXxxxXX
  encoding: utf8

Secret

Génération d'un secret pour rails :

rake secret

On colle la sortie dans le fichier config/secrets.yml

Base de données

Création du schéma

RAILS_ENV=production rake db:migrate

Assets

Préparation des "assets" (CSS, JS, images, polices, ...). Il faut préciser que l'application tourne dans une URL relative "/assistats", afin que les chemins internes soient bien configurés.

$ RAILS_ENV=production rake assets:precompile RAILS_RELATIVE_URL_ROOT=/assistats

Conifguration Apache2

Dans le fichier de configuration d'apache, on ajoute dans le virtualhost souhaité la config suivante :

        Alias /assistats /var/www/assistats/public
        <Location /assistats>
                PassengerBaseURI /assistats
                PassengerAppRoot /var/www/assistats
                PassengerRuby /home/assistat/.rvm/gems/ruby-2.1.2/wrappers/ruby
#               RailsEnv production
        </location>
        <Directory /var/www/assistats/public>
                Allow from all
                Options -MultiViews
        </Directory>

et un lien symbolique : /var/www/assistats -> /home/assistat/assistats

Mis à jour par Jonathan Schaeffer il y a plus de 8 ans · 3 révisions