Installation sur un serveur GNU/Linux CentOS : Différence entre versions

De wiki CoRM
Aller à : navigation, rechercher
(Configuration)
(Configuration du socle logiciel)
 
(33 révisions intermédiaires par le même utilisateur non affichées)
Ligne 6 : Ligne 6 :
 
Cependant, si vous savez ce que vous faites, ce n'est nullement obligatoire.
 
Cependant, si vous savez ce que vous faites, ce n'est nullement obligatoire.
  
Pour information, notre solution s'appuie (de façon classique) sur une [http://fr.wikipedia.org/wiki/Architecture_trois_tiers Architecture 3 tiers].
+
Pour information, notre solution s'appuie sur une [http://fr.wikipedia.org/wiki/Architecture_trois_tiers Architecture 3 tiers].
 +
[[Fichier:Archi_3tiers.png|center|Architecture 3 tiers]]
  
 
== Prérequis ==
 
== Prérequis ==
Ligne 12 : Ligne 13 :
 
Les prérequis afin d'installation la solution CoRM sont les suivants.
 
Les prérequis afin d'installation la solution CoRM sont les suivants.
  
=== Materiel ===
+
=== Matériel ===
 
* CPU : au moins 1 cœur ;
 
* CPU : au moins 1 cœur ;
 
* Architecture CPU : 64 bits ;
 
* Architecture CPU : 64 bits ;
Ligne 27 : Ligne 28 :
 
== Installation ==
 
== Installation ==
  
L'installation du système d'exploitation n'est pas détaillé ici.<br />
+
L'installation du système d'exploitation n'est pas détaillée ici.<br />
 
Cependant, vous trouverez de nombreux guides d'installation sur Internet.<br />
 
Cependant, vous trouverez de nombreux guides d'installation sur Internet.<br />
 
À commencer par [http://www.tecmint.com/centos-6-5-installation-guide-with-screenshots/ celui-ci].<br />
 
À commencer par [http://www.tecmint.com/centos-6-5-installation-guide-with-screenshots/ celui-ci].<br />
  
Avant d'installer quoi que se soit, assurez-vous que votre système soit à jour :<br />
+
Avant d'installer quoique ce soit, assurez-vous que votre système soit à jour :<br />
 
<code># yum update -y</code>
 
<code># yum update -y</code>
  
Pour des questions de simplicité, nous allons désactiver le firewall ''IPTABLES'' pui ''SELINUX'' :<br />
+
Pour des questions de simplicité, nous allons désactiver le firewall ''IPTABLES'' puis ''SELINUX'' :<br />
 
<code># vi /etc/selinux/config</code><br />
 
<code># vi /etc/selinux/config</code><br />
 
<code>SELINUX=disabled</code><br />
 
<code>SELINUX=disabled</code><br />
Ligne 49 : Ligne 50 :
 
<code># service httpd start</code><br />
 
<code># service httpd start</code><br />
 
<br />
 
<br />
À partir de ce moment vous pouvez faire pointer votre navigateur préféré à l'adresse de votre serveur GNU/Linux.
+
À partir de ce moment, vous pouvez faire pointer votre navigateur préféré à l'adresse de votre serveur GNU/Linux.
 
[[Fichier:Install_CoRM_Apache_Test_Page.PNG|center|thumb|400px|Apache Test page]]
 
[[Fichier:Install_CoRM_Apache_Test_Page.PNG|center|thumb|400px|Apache Test page]]
 
<br />
 
<br />
Ligne 80 : Ligne 81 :
 
<br /><br />
 
<br /><br />
 
Présrequis :<br />
 
Présrequis :<br />
<code># yum groupinstall 'Development Tools' -y</code><br />
+
<code># yum install curl-devel openssl-devel zlib-devel apr-devel apr-util-devel readline-devel gcc gcc-c++ wget unzip git -y</code><br />
<code># yum install curl-devel openssl-devel zlib-devel apr-devel apr-util-devel readline-devel wget -y</code><br />
+
 
<br />
 
<br />
 
Libyaml :<br />
 
Libyaml :<br />
Ligne 127 : Ligne 127 :
 
Attention à bien copier le code de configuration du serveur apache !<br />
 
Attention à bien copier le code de configuration du serveur apache !<br />
 
Dans mon exemple : <br />
 
Dans mon exemple : <br />
  LoadModule passenger_module /usr/local/lib/ruby/gems/1.9.1/gems/passenger-4.0.53/buildout/apache2/mod_passenger.so<br />
+
<code>LoadModule passenger_module /usr/local/lib/ruby/gems/1.9.1/gems/passenger-4.0.53/buildout/apache2/mod_passenger.so</code><br />
  <IfModule mod_passenger.c><br />
+
<code><IfModule mod_passenger.c></code><br />
    PassengerRoot /usr/local/lib/ruby/gems/1.9.1/gems/passenger-4.0.53<br />
+
<code>PassengerRoot /usr/local/lib/ruby/gems/1.9.1/gems/passenger-4.0.53</code><br />
    PassengerDefaultRuby /usr/local/bin/ruby<br />
+
<code>PassengerDefaultRuby /usr/local/bin/ruby</code><br />
  </IfModule><br />
+
<code></IfModule></code><br />
  
 
== Récupération du code source ==
 
== Récupération du code source ==
Ligne 138 : Ligne 138 :
 
<code># mkdir webapps</code><br />
 
<code># mkdir webapps</code><br />
 
<code># cd webapps/</code><br />
 
<code># cd webapps/</code><br />
<code># git clone https://github.com/SIGIRE/CoRM.git</code><br />
+
<code># wget https://github.com/SIGIRE/CoRM/archive/master.zip</code><br />
<code># chown apache:apache CoRM/ -R</code><br />
+
<code># unzip master.zip</code><br />
<code># cd CoRM/</code><br />
+
<code># mv CoRM-master/ CoRM</code><br />
 +
<code># chown apache:apache /webapps/CoRM/ -R</code><br />
  
== Configuration ==
+
== Configuration du socle logiciel ==
 
=== Serveur Web ===
 
=== Serveur Web ===
 
Ajouter les lignes suivantes au fichier de configuration du serveur web.
 
Ajouter les lignes suivantes au fichier de configuration du serveur web.
Ligne 182 : Ligne 183 :
  
 
=== Base de données ===
 
=== 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ée. En environnement de production, il est préférable de créer un utilisateur dédié avec des droits uniquement sur sa base.
+
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.
  
 
<code># cd CoRM/config</code><br />
 
<code># cd CoRM/config</code><br />
Ligne 189 : Ligne 190 :
 
<code># vi database.yml</code><br />
 
<code># vi database.yml</code><br />
 
<code>development:</code><br />
 
<code>development:</code><br />
<code> adapter: postgresql</code><br />
+
<code>&nbsp;&nbsp;adapter: postgresql</code><br />
<code> encoding: unicode</code><br />
+
<code>&nbsp;&nbsp;encoding: unicode</code><br />
<code> database: db_corm_dev</code><br />
+
<code>&nbsp;&nbsp;database: db_corm_dev</code><br />
<code> pool: 5</code><br />
+
<code>&nbsp;&nbsp;pool: 5</code><br />
<code> username: postgres</code><br />
+
<code>&nbsp;&nbsp;username: postgres</code><br />
<code> password: MyGreatPassword</code><br />
+
<code>&nbsp;&nbsp;password: MyGreatPassword</code><br />
 
<code></code><br />
 
<code></code><br />
 
<code>test:</code><br />
 
<code>test:</code><br />
<code> adapter: postgresql</code><br />
+
<code>&nbsp;&nbsp;adapter: postgresql</code><br />
<code> encoding: unicode</code><br />
+
<code>&nbsp;&nbsp;encoding: unicode</code><br />
<code> database: db_corm_test</code><br />
+
<code>&nbsp;&nbsp;database: db_corm_test</code><br />
<code> pool: 5</code><br />
+
<code>&nbsp;&nbsp;pool: 5</code><br />
<code> username: postgres</code><br />
+
<code>&nbsp;&nbsp;username: postgres</code><br />
<code> password: MyGreatPassword</code><br />
+
<code>&nbsp;&nbsp;password: MyGreatPassword</code><br />
 
<code></code><br />
 
<code></code><br />
 
<code>production:</code><br />
 
<code>production:</code><br />
<code> adapter: postgresql</code><br />
+
<code>&nbsp;&nbsp;adapter: postgresql</code><br />
<code> encoding: unicode</code><br />
+
<code>&nbsp;&nbsp;encoding: unicode</code><br />
<code> database: db_corm_prod</code><br />
+
<code>&nbsp;&nbsp;database: db_corm_prod</code><br />
<code> pool: 5</code><br />
+
<code>&nbsp;&nbsp;pool: 5</code><br />
<code> username: postgres</code><br />
+
<code>&nbsp;&nbsp;username: postgres</code><br />
<code> password: MyGreatPassword</code><br />
+
<code>&nbsp;&nbsp;password: MyGreatPassword</code><br />
  
 
=== Fichier de sécurité ===
 
=== Fichier de sécurité ===
Ligne 220 : Ligne 221 :
  
 
Pour des questions de sécurité, vous devez modifier les deux valeurs ci-dessus.
 
Pour des questions de sécurité, vous devez modifier les deux valeurs ci-dessus.
 +
 +
=== Fichier de paramètres ===
 +
 +
<code># cp CORM.json.example CORM.json</code><br />
 +
<code># vi CORM.json</code><br />
 +
<code>
 +
<br />
 +
{
 +
  "protocol": "http",
 +
  "host": "localhost",
 +
  "mail": {
 +
    "type": ":smtp",
 +
    "host": "localhost",
 +
    "port": 25,
 +
    "from": "no_reply@corm.fr"
 +
  }
 +
}
 +
</code>
 +
 +
Remplacez les valeurs correspondant à votre configuration ("host" : le nom de votre serveur, "protocol" : "http" ou "https", "from" : l'adresse e-mail servant à expédier les messages).
  
 
== Initialisation de l'application ==
 
== Initialisation de l'application ==
Ligne 225 : Ligne 246 :
 
<code># bundle install</code><br />
 
<code># bundle install</code><br />
 
<code># rake db:setup RAILS_ENV=production</code><br />
 
<code># rake db:setup RAILS_ENV=production</code><br />
<code># bundle exec rake assets:precompile:all RAILS_ENV=production</code><br />
+
<code># service httpd restart</code><br />
<code># /etc/init.d/httpd restart</code><br />
+
  
 
== Premier lancement ==
 
== Premier lancement ==
Ligne 232 : Ligne 252 :
 
[[Fichier:Install_CoRM_First_Start.PNG|center|thumb|400px|Premier démarrage]]
 
[[Fichier:Install_CoRM_First_Start.PNG|center|thumb|400px|Premier démarrage]]
  
== Création du compte Administrateur ==
+
== Configuration de l'application ==
Pointez votre navigateur à l'adresse suivante : http://192.168.1.55/user/new
+
=== Création du compte Administrateur ===
Vous pourrez alors configurer le compte adminsitrateur de l'application.
+
Vous devez créer un compte administrateur !<br>
 +
Pour ce faire, pointez votre navigateur à l'adresse suivante : http://ADRESSE_IP_DU_SERVEUR/user/new <br>
 
Attention, le mot de passe doit contenir au moins 6 caractères !
 
Attention, le mot de passe doit contenir au moins 6 caractères !
 +
 
[[Fichier:Install_CoRM_Admin.PNG|center|thumb|400px|Compte Admin]]
 
[[Fichier:Install_CoRM_Admin.PNG|center|thumb|400px|Compte Admin]]
  
 
'''Remarque :''' le compte administrateur est à utiliser uniquement pour les tâches d'administration.
 
'''Remarque :''' le compte administrateur est à utiliser uniquement pour les tâches d'administration.
 +
 +
=== Création des comptes Utilisateurs ===
 +
Une fois votre compte administrateur créé, il faut bien entendu créer les comptes propres à vos utilisateurs : Menu Paramètres --> Administration --> Configuration --> Utilisateurs.
 +
 +
Remarque : Seul l'Administrateur peut créer un utilisateur.
 +
 +
[[Fichier:Install_CoRM_User.PNG|center|thumb|400px|Compte User]]
 +
 +
Puis affecter leur rôle adéquat.
 +
 +
[[Fichier:CoRM_Roles.PNG|center|thumb|400px|Utilisateurs créés et rôles disponibles]]
 +
 +
=== Configuration générale ===
 +
 +
Votre application est presque prête.<br />
 +
Il vous reste à personnaliser le logo d'accueil et éventuellement un serveur de messagerie POP afin d'activer la fonctionnalité "mail-to-event".
 +
<br />
 +
Menu Paramètres --> Administration --> Configuration --> Configuration de CoRM<br />
 +
<br />
 +
Enfin ultime configuration : le modèle des devis. Menu Paramètres --> Administration --> Configuration --> Modèles devis.
 +
 +
== Félicitation==
 +
Bravo, votre application est à présent configurée !<br />
 +
La procédure d'installation est donc terminée.

Version actuelle en date du 26 août 2015 à 16:07

Cette procédure montre pas à pas comment installer la solution CoRM sur un serveur GNU/Linux CentOS.

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.

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 6.5 (de préférence fraichement installé) ;
  • Apache 2.2 ;
  • Ruby 1.9.3 ;
  • Rails 3.2.18 ;
  • Serveur PostgreSQL 8.4 ;

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

# rm -rf /etc/rc3.d/S08ip*

Afin de prendre en compte les modifications, il faut redémarrer votre serveur.
# reboot

Serveur Web Apache


# yum install httpd httpd-devel -y
# chkconfig httpd on
# service httpd start

À partir de ce moment, vous pouvez faire pointer votre navigateur préféré à l'adresse de votre serveur GNU/Linux.

Apache Test page


Serveur PostgreSQL


# yum install postgresql-server postgresql-devel -y
# chkconfig postgresql on
# service postgresql initdb
# service postgresql start

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

# service postgresql restart

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 install curl-devel openssl-devel zlib-devel apr-devel apr-util-devel readline-devel gcc gcc-c++ wget unzip git -y

Libyaml :
# cd /usr/local/src
# wget http://pyyaml.org/download/libyaml/yaml-0.1.4.tar.gz
# tar xzvf yaml-0.1.4.tar.gz
# cd yaml-0.1.4
# ./configure --prefix=/usr/local
# make && make install

Ruby :
# cd /usr/local/src
# wget http://ftp.ruby-lang.org/pub/ruby/1.9/ruby-1.9.3-p547.tar.gz
# tar xzvf ruby-1.9.3-p547.tar.gz
# cd ruby-1.9.3-p547
# ./configure --prefix=/usr/local --enable-shared --disable-install-doc --with-opt-dir=/usr/local/lib
# make && make install

Création d'un lien symbolique :
# ln -s /usr/local/src/ruby-1.9.3-p547/ruby /usr/bin

Vérification :
# ruby -v
ruby 1.9.3p547 (2014-05-14 revision 45962) [x86_64-linux]

Framework Ruby-on-Rails

# gem update
# gem install --no-rdoc --no-ri rails -v 3.2.18

Pour vérifier si tout a fonctionné :
# rails -v
Rails 3.2.18

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/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>

Récupération du code source

# cd /
# mkdir webapps
# cd webapps/
# wget https://github.com/SIGIRE/CoRM/archive/master.zip
# unzip master.zip
# mv CoRM-master/ CoRM
# chown apache:apache /webapps/CoRM/ -R

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.

Fichier de paramètres

# cp CORM.json.example CORM.json
# vi CORM.json

{
 "protocol": "http",
 "host": "localhost",
 "mail": {
   "type": ":smtp",
   "host": "localhost",
   "port": 25,
   "from": "no_reply@corm.fr"
 }
}

Remplacez les valeurs correspondant à votre configuration ("host" : le nom de votre serveur, "protocol" : "http" ou "https", "from" : l'adresse e-mail servant à expédier les messages).

Initialisation de l'application

# cd /webapps/CoRM
# bundle install
# rake db:setup RAILS_ENV=production
# service httpd restart

Premier lancement

À ce stade vous devez visualiser cette page si vous pointez votre navigateur sur votre serveur.

Premier démarrage

Configuration de l'application

Création du compte Administrateur

Vous devez créer un compte administrateur !
Pour ce faire, pointez votre navigateur à l'adresse suivante : http://ADRESSE_IP_DU_SERVEUR/user/new
Attention, le mot de passe doit contenir au moins 6 caractères !

Compte Admin

Remarque : le compte administrateur est à utiliser uniquement pour les tâches d'administration.

Création des comptes Utilisateurs

Une fois votre compte administrateur créé, il faut bien entendu créer les comptes propres à vos utilisateurs : Menu Paramètres --> Administration --> Configuration --> Utilisateurs.

Remarque : Seul l'Administrateur peut créer un utilisateur.

Compte User

Puis affecter leur rôle adéquat.

Utilisateurs créés et rôles disponibles

Configuration générale

Votre application est presque prête.
Il vous reste à personnaliser le logo d'accueil et éventuellement un serveur de messagerie POP afin d'activer la fonctionnalité "mail-to-event".
Menu Paramètres --> Administration --> Configuration --> Configuration de CoRM

Enfin ultime configuration : le modèle des devis. Menu Paramètres --> Administration --> Configuration --> Modèles devis.

Félicitation

Bravo, votre application est à présent configurée !
La procédure d'installation est donc terminée.