Installation sur un serveur GNU/Linux CentOS 7 : Différence entre versions
(→Language Ruby) |
(→Initialisation de l'application) |
||
(55 révisions intermédiaires par le même utilisateur non affichées) | |||
Ligne 1 : | Ligne 1 : | ||
− | |||
− | |||
− | |||
Cette procédure montre pas à pas comment installer la solution CoRM sur un serveur GNU/Linux CentOS 7. | Cette procédure montre pas à pas comment installer la solution CoRM sur un serveur GNU/Linux CentOS 7. | ||
Ligne 25 : | Ligne 22 : | ||
* Système d'exploitation GNU/Linux [http://fr.wikipedia.org/wiki/CentOS CentOS 7] (de préférence fraichement installé) ; | * Système d'exploitation GNU/Linux [http://fr.wikipedia.org/wiki/CentOS CentOS 7] (de préférence fraichement installé) ; | ||
* Apache 2.4.6 ; | * Apache 2.4.6 ; | ||
− | * Ruby | + | * Ruby 1.9.3 ; |
* Rails 3.2.19 ; | * Rails 3.2.19 ; | ||
* Serveur PostgreSQL 9.2.7 ; | * Serveur PostgreSQL 9.2.7 ; | ||
Ligne 35 : | Ligne 32 : | ||
À commencer par [https://www.howtoforge.com/centos-7-server// celui-ci].<br /> | À commencer par [https://www.howtoforge.com/centos-7-server// celui-ci].<br /> | ||
+ | <br /> | ||
Avant d'installer quoique ce 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 | + | Présrequis :<br /> |
+ | <code># yum install curl-devel openssl-devel zlib-devel apr-devel apr-util-devel readline-devel gcc gcc-c++ wget unzip vim -y</code><br /> | ||
+ | |||
+ | Pour des questions de simplicité, nous allons désactiver ''SELINUX'' puis ''IPTABLES'' :<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 /> | ||
[[Fichier:Fichier Conf Selinux.png|center|thumb|400px|Selinux]] | [[Fichier:Fichier Conf Selinux.png|center|thumb|400px|Selinux]] | ||
− | Cette commande permet | + | Cette commande permet l’arrêt du firewall IpTables et l’empêche de se relancer après un reboot.<br /> |
− | <code># | + | <code># systemctl disable firewalld </code><br /> |
Afin de prendre en compte les modifications, il faut redémarrer votre serveur.<br /> | Afin de prendre en compte les modifications, il faut redémarrer votre serveur.<br /> | ||
Ligne 72 : | Ligne 73 : | ||
<code># systemctl enable postgresql</code><br /> | <code># systemctl enable postgresql</code><br /> | ||
− | <code># | + | <code># postgresql-setup initdb</code><br /> |
Vous devez obtenir un rélutat :Initializing database ... OK <br /> | Vous devez obtenir un rélutat :Initializing database ... OK <br /> | ||
Ligne 93 : | Ligne 94 : | ||
<code># systemctl restart postgresql.service</code><br /> | <code># systemctl restart postgresql.service</code><br /> | ||
− | === Language Ruby === | + | === Language Ruby (via RVM) === |
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
<br /> | <br /> | ||
+ | <code># gpg2 --keyserver hkp://keys.gnupg.net --recv-keys 409B6B1796C275462A1703113804BB82D39DC0E3</code><br /> | ||
+ | <code># curl -sSL https://get.rvm.io | bash -s stable</code><br /> | ||
+ | <code># source /etc/profile.d/rvm.sh</code><br /> | ||
+ | <code># rvm install 1.9.3</code><br /> | ||
+ | <code># rvm use 1.9.3 --default </code><br /> | ||
− | + | <br /> | |
− | < | + | Tester la version :<br /> |
− | + | <code># ruby --version</code><br /> | |
− | + | ruby 1.9.3p551 (2014-11-13 revision 48407) [x86_64-linux] | |
− | <code># ruby - | + | |
− | < | + | |
=== Framework Ruby-on-Rails === | === Framework Ruby-on-Rails === | ||
Ligne 128 : | Ligne 126 : | ||
<code> ( ) Meteor</code><br /> | <code> ( ) Meteor</code><br /> | ||
− | Attention à bien copier le code de configuration du serveur apache !<br /> | + | Attention à bien copier/coller le code de configuration du serveur apache !<br /> |
Dans mon exemple : <br /> | Dans mon exemple : <br /> | ||
− | <code>LoadModule passenger_module /usr/local/ | + | <code>LoadModule passenger_module /usr/local/share/gems/gems/passenger-4.0.57/buildout/apache2/mod_passenger.so</code><br /> |
<code> <IfModule mod_passenger.c></code><br /> | <code> <IfModule mod_passenger.c></code><br /> | ||
− | <code>PassengerRoot /usr/local/ | + | <code>PassengerRoot /usr/local/share/gems/gems/passenger-4.0.57</code><br /> |
− | <code> PassengerDefaultRuby /usr | + | <code>PassengerDefaultRuby /usr/bin/ruby</code><br /> |
<code></IfModule></code><br /> | <code></IfModule></code><br /> | ||
Ligne 141 : | Ligne 139 : | ||
<code># mkdir webapps</code><br /> | <code># mkdir webapps</code><br /> | ||
<code># cd webapps/</code><br /> | <code># cd webapps/</code><br /> | ||
− | <code># | + | <code># wget https://github.com/SIGIRE/CoRM/archive/master.zip</code><br /> |
− | <code># | + | <code># unzip master.zip</code><br /> |
− | <code># | + | <code># mv CoRM-master/ CoRM</code><br /> |
+ | <code># chown apache:apache /webapps/CoRM/ -R</code><br /> | ||
== Configuration du socle logiciel == | == Configuration du socle logiciel == | ||
=== Serveur Web === | === Serveur Web === | ||
− | Ajouter les lignes suivantes | + | Ajouter les lignes suivantes en toute fin du fichier de configuration du serveur web.<br /> |
+ | '''Attention ceci est un exemple de code, il faut bien copier/coller le code généré par l'installation de Passenger !''' | ||
<code># vi /etc/httpd/conf/httpd.conf</code><br /> | <code># vi /etc/httpd/conf/httpd.conf</code><br /> | ||
− | <code>LoadModule passenger_module /usr/local/ | + | <code>LoadModule passenger_module /usr/local/share/gems/gems/passenger-4.0.57/buildout/apache2/mod_passenger.so</code><br /> |
<code><IfModule mod_passenger.c></code><br /> | <code><IfModule mod_passenger.c></code><br /> | ||
− | <code>PassengerRoot /usr/local/ | + | <code>PassengerRoot /usr/local/share/gems/gems/passenger-4.0.57</code><br /> |
− | <code>PassengerDefaultRuby /usr | + | <code>PassengerDefaultRuby /usr/bin/ruby</code><br /> |
<code></IfModule></code><br /> | <code></IfModule></code><br /> | ||
− | + | ||
==== VHOST ==== | ==== VHOST ==== | ||
+ | |||
+ | On crée ici un fichier VHOST. | ||
+ | |||
<code># vi /etc/httpd/conf.d/my_CoRM_Apps.conf</code><br /> | <code># vi /etc/httpd/conf.d/my_CoRM_Apps.conf</code><br /> | ||
− | <code><VirtualHost | + | <code><VirtualHost ADRESSE_IP_DU_SERVEUR:80></code><br /> |
<code> ServerName www.domain.tld</code><br /> | <code> ServerName www.domain.tld</code><br /> | ||
<code> # !!! Be sure to point DocumentRoot to 'public'!</code><br /> | <code> # !!! Be sure to point DocumentRoot to 'public'!</code><br /> | ||
Ligne 165 : | Ligne 168 : | ||
<code> <Directory /webapps/CoRM/public></code><br /> | <code> <Directory /webapps/CoRM/public></code><br /> | ||
<code> # This relaxes Apache security settings.</code><br /> | <code> # This relaxes Apache security settings.</code><br /> | ||
− | <code> AllowOverride all</code><br /> | + | <code> #AllowOverride all</code><br /> |
+ | <code> Require all granted</code><br /> | ||
<code> # MultiViews must be turned off.</code><br /> | <code> # MultiViews must be turned off.</code><br /> | ||
<code> Options -MultiViews</code><br /> | <code> Options -MultiViews</code><br /> | ||
Ligne 187 : | Ligne 191 : | ||
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. | 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># | + | <code># cp /webapps/CoRM/config/database.yml.example /webapps/CoRM/config/database.yml</code><br /> |
− | <code># | + | |
+ | <code># vi /webapps/CoRM/config/database.yml</code><br /> | ||
− | |||
<code>development:</code><br /> | <code>development:</code><br /> | ||
<code> adapter: postgresql</code><br /> | <code> adapter: postgresql</code><br /> | ||
Ligne 217 : | Ligne 221 : | ||
=== Fichier de sécurité === | === Fichier de sécurité === | ||
− | <code># cp application.yml.default application.yml</code><br /> | + | <code># cp /webapps/CoRM/config/application.yml.default /webapps/CoRM/config/application.yml</code><br /> |
− | <code># vi application.yml</code><br /> | + | <code># vi /webapps/CoRM/config/application.yml</code><br /> |
<code>CORM_SECRET_TOKEN: </code><br /><code>64a4aa0d52e1611fe17027ad78e5b55a1495fc2770b2fdb2e570eea6fc2c2c031f7de0e07ea4d2a8fce30237c696d92072ec7c94b7020a19bc52ba1734c09743 </code><br /> | <code>CORM_SECRET_TOKEN: </code><br /><code>64a4aa0d52e1611fe17027ad78e5b55a1495fc2770b2fdb2e570eea6fc2c2c031f7de0e07ea4d2a8fce30237c696d92072ec7c94b7020a19bc52ba1734c09743 </code><br /> | ||
<code>DEVISE_SECRET_KEY: </code><br /><code>48af28f68a5a821b2e0c9f404130d8c566d47d43883c3460108137110013af4993ddc79f73f66e49c28ff866c329ffbe05aa7239f2b5d840c2b81471691ad9dc </code><br /> | <code>DEVISE_SECRET_KEY: </code><br /><code>48af28f68a5a821b2e0c9f404130d8c566d47d43883c3460108137110013af4993ddc79f73f66e49c28ff866c329ffbe05aa7239f2b5d840c2b81471691ad9dc </code><br /> | ||
Ligne 226 : | Ligne 230 : | ||
== Initialisation de l'application == | == Initialisation de l'application == | ||
<code># cd /webapps/CoRM</code><br /> | <code># cd /webapps/CoRM</code><br /> | ||
+ | <code># gem install debugger-ruby_core_source</code><br /> | ||
<code># bundle install</code><br /> | <code># bundle install</code><br /> | ||
+ | <code># bundle update rake</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># bundle exec rake assets:precompile:all RAILS_ENV=production</code><br /> | ||
− | <code># | + | <code># chown apache:apache /webapps/CoRM/log/production.log</code><br /> |
+ | <code># systemctl restart httpd.service</code><br /> | ||
== Premier lancement == | == Premier lancement == | ||
À ce stade vous devez visualiser cette page si vous pointez votre navigateur sur votre serveur. | À ce stade vous devez visualiser cette page si vous pointez votre navigateur sur votre serveur. | ||
− | [[Fichier: | + | [[Fichier:Interface CoRM.png|center|thumb|400px|Premier démarrage]] |
+ | |||
+ | == Configuration de l'application == | ||
+ | === Création du compte Administrateur === | ||
+ | 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 ! | ||
+ | [[Fichier:Interfaces Compte.png|center|thumb|400px|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. | ||
+ | |||
+ | [[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 11 août 2015 à 16:12
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 1.9.3 ;
- 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
Présrequis :
# yum install curl-devel openssl-devel zlib-devel apr-devel apr-util-devel readline-devel gcc gcc-c++ wget unzip vim -y
Pour des questions de simplicité, nous allons désactiver SELINUX puis IPTABLES :
# vi /etc/selinux/config
SELINUX=disabled
Cette commande permet l’arrêt du firewall IpTables et l’empêche de se relancer après 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
# postgresql-setup 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 (via RVM)
# gpg2 --keyserver hkp://keys.gnupg.net --recv-keys 409B6B1796C275462A1703113804BB82D39DC0E3
# curl -sSL https://get.rvm.io | bash -s stable
# source /etc/profile.d/rvm.sh
# rvm install 1.9.3
# rvm use 1.9.3 --default
Tester la version :
# ruby --version
ruby 1.9.3p551 (2014-11-13 revision 48407) [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/coller le code de configuration du serveur apache !
Dans mon exemple :
LoadModule passenger_module /usr/local/share/gems/gems/passenger-4.0.57/buildout/apache2/mod_passenger.so
<IfModule mod_passenger.c>
PassengerRoot /usr/local/share/gems/gems/passenger-4.0.57
PassengerDefaultRuby /usr/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 en toute fin du fichier de configuration du serveur web.
Attention ceci est un exemple de code, il faut bien copier/coller le code généré par l'installation de Passenger !
# vi /etc/httpd/conf/httpd.conf
LoadModule passenger_module /usr/local/share/gems/gems/passenger-4.0.57/buildout/apache2/mod_passenger.so
<IfModule mod_passenger.c>
PassengerRoot /usr/local/share/gems/gems/passenger-4.0.57
PassengerDefaultRuby /usr/bin/ruby
</IfModule>
VHOST
On crée ici un fichier VHOST.
# vi /etc/httpd/conf.d/my_CoRM_Apps.conf
<VirtualHost ADRESSE_IP_DU_SERVEUR: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
Require all granted
# 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.
# cp /webapps/CoRM/config/database.yml.example /webapps/CoRM/config/database.yml
# vi /webapps/CoRM/config/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 /webapps/CoRM/config/application.yml.default /webapps/CoRM/config/application.yml
# vi /webapps/CoRM/config/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
# gem install debugger-ruby_core_source
# bundle install
# bundle update rake
# rake db:setup RAILS_ENV=production
# bundle exec rake assets:precompile:all RAILS_ENV=production
# chown apache:apache /webapps/CoRM/log/production.log
# systemctl restart httpd.service
Premier lancement
À ce stade vous devez visualiser cette page si vous pointez votre navigateur sur votre serveur.
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 !
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.
Puis affecter leur rôle adéquat.
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.