Installation sur un serveur GNU/Linux CentOS 7
Attention procédure en cours de construction !!
Cette procédure montre pas à pas comment installer la solution CoRM sur un serveur GNU/Linux CentOS 7.
Sommaire
Introduction
Il est recommandé d'utiliser un serveur dédié afin d'installer CoRM. Cependant, si vous savez ce que vous faites, ce n'est nullement obligatoire.
Pour information, notre solution s'appuie sur une Architecture 3 tiers.
Prérequis
Vous devez connaitre les commandes de base d'un système GNU/Linux.
Les prérequis afin d'installation la solution CoRM sont les suivants.
Matériel
- CPU : au moins 1 cœur ;
- Architecture CPU : 64 bits ;
- Mémoire vive : au moins 1Go ;
- Espace disque : au moins 15Go ;
Logiciel
- Système d'exploitation GNU/Linux CentOS 7 (de préférence fraichement installé) ;
- Apache 2.4.6 ;
- Ruby 2.0.0 ;
- Rails 3.2.19 ;
- Serveur PostgreSQL 9.2.7 ;
Installation
L'installation du système d'exploitation n'est pas détaillée ici.
Cependant, vous trouverez de nombreux guides d'installation sur Internet.
À commencer par celui-ci.
Avant d'installer quoique ce soit, assurez-vous que votre système soit à jour :
# yum update -y
Pour des questions de simplicité, nous allons désactiver le firewall IPTABLES puis SELINUX :
# vi /etc/selinux/config
SELINUX=disabled
Cette commande permet l'arret du firewall IpTables et l'empeche de se relancer apres un reboot.
# Systemctl disable firewalld
Afin de prendre en compte les modifications, il faut redémarrer votre serveur.
# reboot
Serveur Web Apache
Permet d'installer le service httpd.
# yum install httpd httpd-devel -y
Permet de relancer le service après chaque redémarrage.
# systemctl enable httpd.service
Lancer le service httpd.
# systemctl start httpd.service
À partir de ce moment, vous pouvez faire pointer votre navigateur préféré à l'adresse de votre serveur GNU/Linux.
Serveur PostgreSQL
Permet d'installer le service postgresql.
# yum install postgresql-server postgresql-devel -y
Permet de redémarrer le service après un reboot.
# systemctl enable postgresql
# service postgresql initdb
Vous devez obtenir un rélutat :Initializing database ... OK
Démarrer le service postgresql:
# systemctl start postgresql.service
Initialiser le mot de passe administrateur de PostgreSQL :
# su - postgres
-bash-4.1$ psql
postgres=# ALTER USER postgres WITH ENCRYPTED PASSWORD 'MyGreatPassword' ;
postgres=# \q
-bash-4.1$ logout
Le nouveau mot de passe administrateur (postgres) est donc "MyGreatPassword".
# vi /var/lib/pgsql/data/pg_hba.conf
local all all password
# systemctl restart postgresql.service
Language Ruby
La version de ruby fournie avec le système est trop ancienne (1.8.7).
Nous allons récupérer puis compiler une version plus récente.
Présrequis :
# yum groupinstall 'Development Tools' -y
# yum install curl-devel openssl-devel zlib-devel apr-devel apr-util-devel readline-devel wget -y
Ruby 2.0.0:
# yum install ruby-devel
Vérification :
- ruby -v
ruby 2.0.0p353 (2013-11-22) [x86_64-linux]
Framework Ruby-on-Rails
# gem update
# gem install --no-rdoc --no-ri rails -v 3.2.19
Pour vérifier si tout a fonctionné :
# rails -v
Rails 3.2.19
Passenger (mod_rails)
Passenger sert de "passerelle" entre le serveur Apache et l'application Rails...
# gem install passenger
# passenger-install-apache2-module
> (*) Ruby
( ) Python
( ) Node.js
( ) Meteor
Attention à bien copier le code de configuration du serveur apache !
Dans mon exemple :
LoadModule passenger_module /usr/local/lib/ruby/gems/2.0.0/gems/passenger-4.0.57/buildout/apache2/mod_passenger.so
<IfModule mod_passenger.c>
PassengerRoot /usr/local/lib/ruby/gems/2.0.0/gems/passenger-4.0.57
PassengerDefaultRuby /usr/local/bin/ruby
</IfModule>
Récupération du code source
# cd /
# mkdir webapps
# cd webapps/
# git clone https://github.com/SIGIRE/CoRM.git
# chown apache:apache CoRM/ -R
# cd CoRM/
Configuration du socle logiciel
Serveur Web
Ajouter les lignes suivantes au fichier de configuration du serveur web.
# vi /etc/httpd/conf/httpd.conf
LoadModule passenger_module /usr/local/lib/ruby/gems/1.9.1/gems/passenger-4.0.53/buildout/apache2/mod_passenger.so
<IfModule mod_passenger.c>
PassengerRoot /usr/local/lib/ruby/gems/1.9.1/gems/passenger-4.0.53
PassengerDefaultRuby /usr/local/bin/ruby
</IfModule>
VHOST
# vi /etc/httpd/conf.d/my_CoRM_Apps.conf
<VirtualHost 192.168.1.55:80>
ServerName www.domain.tld
# !!! Be sure to point DocumentRoot to 'public'!
DocumentRoot /webapps/CoRM/public
<Directory /webapps/CoRM/public>
# This relaxes Apache security settings.
AllowOverride all
# MultiViews must be turned off.
Options -MultiViews
</Directory>
RailsEnv production
# Activation de la compression
SetOutputFilter DEFLATE
# Activation de l'expiration
ExpiresActive On
<FilesMatch "\.(ico|gif|jpe?g|png|js|css)$">
ExpiresDefault "access plus 1 year"
Header append Cache-Control "public"
</FilesMatch>
</VirtualHost>
Base de données
Pour des questions de simplicité, nous utilisons l'utilisateur administrateur afin de créer la connexion avec la base de données. En environnement de production, il est préférable de créer un utilisateur dédié avec des droits uniquement sur sa base.
# cd CoRM/config
# cp database.yml.example database.yml
# vi database.yml
development:
adapter: postgresql
encoding: unicode
database: db_corm_dev
pool: 5
username: postgres
password: MyGreatPassword
test:
adapter: postgresql
encoding: unicode
database: db_corm_test
pool: 5
username: postgres
password: MyGreatPassword
production:
adapter: postgresql
encoding: unicode
database: db_corm_prod
pool: 5
username: postgres
password: MyGreatPassword
Fichier de sécurité
# cp application.yml.default application.yml
# vi application.yml
CORM_SECRET_TOKEN:
64a4aa0d52e1611fe17027ad78e5b55a1495fc2770b2fdb2e570eea6fc2c2c031f7de0e07ea4d2a8fce30237c696d92072ec7c94b7020a19bc52ba1734c09743
DEVISE_SECRET_KEY:
48af28f68a5a821b2e0c9f404130d8c566d47d43883c3460108137110013af4993ddc79f73f66e49c28ff866c329ffbe05aa7239f2b5d840c2b81471691ad9dc
Pour des questions de sécurité, vous devez modifier les deux valeurs ci-dessus.
Initialisation de l'application
# cd /webapps/CoRM
# bundle install
# rake db:setup RAILS_ENV=production
# bundle exec rake assets:precompile:all RAILS_ENV=production
# service httpd restart
Premier lancement
À ce stade vous devez visualiser cette page si vous pointez votre navigateur sur votre serveur.