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