Projet

Général

Profil

Déploiement » Historique » Version 3

Jonathan Schaeffer, 10/09/2015 10:02

1 1 Jonathan Schaeffer
h1. Prérequis du serveur
2
3
h2. Système
4
5
Linux. Les extraits de commande sont faits sous Debian.
6
7
h3. Utilisateur dédié
8
9
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.
10
11
<pre>
12
useradd assistat -m -U
13
</pre>
14
15
h3. Environnement Ruby et Rails
16
17
On va faire un environnement ruby complet pour cet utilisateur, avec RVM.
18
19
Installation de RVM, en tant qu'utilisateur @assistats@ :
20
21
<pre>
22
apt-get install curl
23
\curl -sSL https://get.rvm.io | bash
24
rvm install 2.1
25
rvm --default use 2.1
26
</pre>
27
28
Installation de rails :
29
30
<pre>
31
gem install rails
32
</pre>
33
34
h3. Librairies nécessaires
35
36
Pour installer l'interfaçage entre rails et postgresql, on a besoin d'une librairie de développement :
37
38
apt-get install libpq-dev
39
40
h2. Services
41
42
h3. Postgresql
43
44
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.
45
46
Par la suite, la base s'appellera @assistatsdb@ et l'utilisateur @assistats_web@
47
48
h3. Node.js
49
50 2 Jonathan Schaeffer
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 :
51 1 Jonathan Schaeffer
52 2 Jonathan Schaeffer
<pre>
53 1 Jonathan Schaeffer
curl -sL https://deb.nodesource.com/setup | bash -
54 2 Jonathan Schaeffer
</pre>
55 1 Jonathan Schaeffer
56
h3. Apache2
57
58 2 Jonathan Schaeffer
Installation d'Apache2 :
59
60
<pre>
61
apt-get install apache2
62
</pre>
63
64 1 Jonathan Schaeffer
h3. Phusion Passenger
65
66 2 Jonathan Schaeffer
Passenger est installé avec les paquets officiels du dépôt de Phusion :
67
68
<pre>
69
apt-key adv --keyserver keyserver.ubuntu.com --recv-keys 561F9B9CAC40B2F7
70
echo "deb https://oss-binaries.phusionpassenger.com/apt/passenger wheezy main" > /etc/apt/sources.list.d/passenger.list
71
apt-get update && apt-get install libapache2-mod-passenger
72
passenger-install-apache2-module
73
</pre>
74
75 1 Jonathan Schaeffer
h1. Déploiement
76
77
h2. Récupération de l'application
78
79 2 Jonathan Schaeffer
<pre>
80
su - assistats
81
git clone git://tucuxi.univ-brest.fr/assistats
82
cd assistats
83
bundle install
84
</pre>
85
86 1 Jonathan Schaeffer
h2. Configuration
87 2 Jonathan Schaeffer
Configurer l'accès à la base de données dans le fichier @config/database.yml@
88 1 Jonathan Schaeffer
89 2 Jonathan Schaeffer
<pre>
90
production:
91
  adapter: postgresql
92
  database: assistatsdb
93
  host: localhost
94
  username: assistats_web
95
  password: xXXXXXxxxXX
96
  encoding: utf8
97
</pre>
98
99 1 Jonathan Schaeffer
h3. Secret
100
101 2 Jonathan Schaeffer
Génération d'un secret pour rails :
102
103
rake secret
104
105
On colle la sortie dans le fichier @config/secrets.yml@
106
107 1 Jonathan Schaeffer
h3. Base de données
108
109 2 Jonathan Schaeffer
Création du schéma
110
<pre>
111
RAILS_ENV=production rake db:migrate
112
</pre>
113
114 1 Jonathan Schaeffer
h3. Assets
115
116 3 Jonathan Schaeffer
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.
117
118 1 Jonathan Schaeffer
<pre>
119 3 Jonathan Schaeffer
$ RAILS_ENV=production rake assets:precompile RAILS_RELATIVE_URL_ROOT=/assistats
120 2 Jonathan Schaeffer
</pre>
121
122 1 Jonathan Schaeffer
h2. Conifguration Apache2
123 2 Jonathan Schaeffer
124
Dans le fichier de configuration d'apache, on ajoute dans le virtualhost souhaité la config suivante :
125
<pre>
126
        Alias /assistats /var/www/assistats/public
127
        <Location /assistats>
128
                PassengerBaseURI /assistats
129
                PassengerAppRoot /var/www/assistats
130
                PassengerRuby /home/assistat/.rvm/gems/ruby-2.1.2/wrappers/ruby
131
#               RailsEnv production
132
        </location>
133
        <Directory /var/www/assistats/public>
134
                Allow from all
135
                Options -MultiViews
136
        </Directory>
137
</pre>
138
139
et un lien symbolique : @/var/www/assistats -> /home/assistat/assistats@