Project Installation

Version 205 (Paul Carensac, 08/04/2016 12:02 pm)

1 1 Etienne Pallier
h1. Project Installation
2 1 Etienne Pallier
3 6 Etienne Pallier
4 189 Etienne Pallier
This page describes the installation phase of the Pyros software
5 189 Etienne Pallier
6 189 Etienne Pallier
7 11 Etienne Pallier
Project Development page : [[Project Development]]
8 11 Etienne Pallier
9 6 Etienne Pallier
HOWTO Format Redmine Wiki : http://www.redmine.org/projects/redmine/wiki/FrRedmineWikiFormatting
10 6 Etienne Pallier
11 193 Etienne Pallier
{{toc}}
12 6 Etienne Pallier
13 6 Etienne Pallier
14 3 Etienne Pallier
---
15 3 Etienne Pallier
16 170 Etienne Pallier
---
17 170 Etienne Pallier
18 178 Etienne Pallier
h2. %{margin-left:0px; font-weight:bold; font-size:25px;  display:block; color:red;}DATABASE SCHEMA (v0.2.1)%
19 4 Etienne Pallier
20 4 Etienne Pallier
21 192 Etienne Pallier
{{thumbnail(PYROS_PDM_v021.png, size=2000, title=Pyros data model)}}
22 4 Etienne Pallier
23 4 Etienne Pallier
24 4 Etienne Pallier
---
25 5 Etienne Pallier
26 170 Etienne Pallier
---
27 170 Etienne Pallier
28 177 Etienne Pallier
h2. %{margin-left:0px; font-weight:bold; font-size:25px;  display:block; color:red;}I - PREREQUISITES%
29 177 Etienne Pallier
30 181 Paul Carensac
Pyros needs some prerequisites : 
31 177 Etienne Pallier
32 1 Etienne Pallier
* Python 3
33 181 Paul Carensac
* RabbitMQ
34 177 Etienne Pallier
* (optional) a Mysql Database server (but you can use Sqlite instead, with no installation)
35 177 Etienne Pallier
36 177 Etienne Pallier
37 177 Etienne Pallier
---
38 177 Etienne Pallier
39 177 Etienne Pallier
h3. Install Python3 + pip + virtualenv (only if necessary)
40 177 Etienne Pallier
41 177 Etienne Pallier
_If Python 3 is already installed on your computer, skip this section_
42 177 Etienne Pallier
43 177 Etienne Pallier
44 177 Etienne Pallier
 * Linux (CentOS 7.1, main target): (python35 not yet available as rpm)
45 177 Etienne Pallier
<pre>
46 177 Etienne Pallier
$ sudo yum update yum
47 177 Etienne Pallier
$ sudo yum update kernel
48 177 Etienne Pallier
$ sudo yum update
49 1 Etienne Pallier
50 1 Etienne Pallier
$ sudo yum install python34
51 1 Etienne Pallier
$ python3.4 -V
52 1 Etienne Pallier
Python 3.4.3
53 1 Etienne Pallier
54 1 Etienne Pallier
$ sudo yum install python34-devel
55 1 Etienne Pallier
(needed for python package mysqlclient)
56 1 Etienne Pallier
57 1 Etienne Pallier
$ sudo yum update python-setuptools
58 1 Etienne Pallier
$ easy_install --version
59 1 Etienne Pallier
setuptools 0.9.8
60 1 Etienne Pallier
$ sudo easy_install pip
61 1 Etienne Pallier
$ pip --version
62 1 Etienne Pallier
pip 8.1.1 from /usr/lib/python2.7/site-packages/pip-8.1.1-py2.7.egg (python 2.7)
63 1 Etienne Pallier
64 1 Etienne Pallier
$ sudo pip install virtualenv
65 1 Etienne Pallier
$ virtualenv --version
66 1 Etienne Pallier
15.0.1
67 1 Etienne Pallier
68 1 Etienne Pallier
Necessary for "lxml" python package:
69 1 Etienne Pallier
$ sudo yum install libxml2 libxml2-devel
70 1 Etienne Pallier
$ sudo yum install libxslt libxslt-devel
71 1 Etienne Pallier
72 1 Etienne Pallier
</pre>
73 1 Etienne Pallier
74 1 Etienne Pallier
75 1 Etienne Pallier
 * Linux (Ubuntu) :
76 1 Etienne Pallier
<pre>
77 1 Etienne Pallier
$ sudo add-apt-repository ppa:fkrull/deadsnakes
78 1 Etienne Pallier
$ sudo apt-get update
79 1 Etienne Pallier
$ sudo apt-get install python3.5
80 1 Etienne Pallier
81 1 Etienne Pallier
$ sudo apt-get install python3.5-dev
82 1 Etienne Pallier
(needed for python package mysqlclient)
83 1 Etienne Pallier
84 1 Etienne Pallier
$ sudo pip install virtualenv
85 1 Etienne Pallier
</pre>
86 1 Etienne Pallier
87 1 Etienne Pallier
88 1 Etienne Pallier
 * Mac OS X :
89 1 Etienne Pallier
90 1 Etienne Pallier
  * From binary (Mac OS native application)
91 1 Etienne Pallier
(TODO:)
92 1 Etienne Pallier
93 1 Etienne Pallier
  * From MacPort
94 1 Etienne Pallier
95 1 Etienne Pallier
   * a) install macport
96 1 Etienne Pallier
(TODO:)
97 1 Etienne Pallier
98 1 Etienne Pallier
   * b) install the "port" python35
99 1 Etienne Pallier
<pre>
100 1 Etienne Pallier
$ sudo port install python35
101 1 Etienne Pallier
</pre>
102 1 Etienne Pallier
103 1 Etienne Pallier
104 202 Paul Carensac
 * Windows (tested with Windows 7 & 10) :
105 1 Etienne Pallier
<pre>
106 1 Etienne Pallier
Go to https://www.python.org/downloads/windows/ , choose the wanted version
107 1 Etienne Pallier
On the wanted version’s page, download Windows x86 executable installer
108 1 Etienne Pallier
109 1 Etienne Pallier
Run the executable
110 1 Etienne Pallier
    * On the first page, check "Add python3.5 to PATH"
111 1 Etienne Pallier
    * Choose "Install now" option
112 1 Etienne Pallier
113 1 Etienne Pallier
Open cmd (windows + R, cmd) :
114 1 Etienne Pallier
 $ python -m pip install --upgrade pip
115 1 Etienne Pallier
 $ pip install virtualenv
116 1 Etienne Pallier
</pre>
117 200 Paul Carensac
118 200 Paul Carensac
---
119 200 Paul Carensac
120 200 Paul Carensac
h3. Install a database server (only if necessary)
121 200 Paul Carensac
122 200 Paul Carensac
_If the MySql database server is already installed on your computer, skip this section_
123 200 Paul Carensac
124 200 Paul Carensac
By default, Pyros uses Mysql, but this implies that you have to install the Mysql database server...
125 200 Paul Carensac
126 200 Paul Carensac
Thus, to make things easier, avoid Mysql installation by using Sqlite instead as the database server (which will need no installation at all) :
127 200 Paul Carensac
128 200 Paul Carensac
=> *For this, just edit the file PYROS/src/pyros/settings.py and set MYSQL variable to False, and that's it. You can go to next section*
129 200 Paul Carensac
130 200 Paul Carensac
Now, if you really want to use Mysql (which is the default), you will need to install it (only if not already installed), so keep reading.
131 200 Paul Carensac
132 200 Paul Carensac
_(Skip this if you are using Sqlite instead of MySql)_
133 200 Paul Carensac
134 200 Paul Carensac
 * Linux Ubuntu
135 200 Paul Carensac
<pre>
136 200 Paul Carensac
First, update your system:
137 200 Paul Carensac
$ sudo apt-get update
138 200 Paul Carensac
139 200 Paul Carensac
$ sudo apt-get install mysql-server
140 200 Paul Carensac
$ sudo apt-get install mysql-client
141 200 Paul Carensac
142 200 Paul Carensac
$ sudo apt-get install libmysqlclient-dev
143 200 Paul Carensac
(needed for python package mysqlclient)
144 200 Paul Carensac
</pre>
145 200 Paul Carensac
146 200 Paul Carensac
 * Linux CentOS : cf https://www.howtoforge.com/apache_php_mysql_on_centos_7_lamp#-installing-mysql-
147 200 Paul Carensac
<pre>
148 200 Paul Carensac
First, update your system:
149 200 Paul Carensac
$ sudo yum update yum
150 200 Paul Carensac
$ sudo yum update kernel
151 200 Paul Carensac
$ sudo yum update
152 200 Paul Carensac
153 200 Paul Carensac
$ sudo yum install mariadb-server 
154 200 Paul Carensac
$ sudo yum install mariadb
155 200 Paul Carensac
156 200 Paul Carensac
$ sudo yum install mariadb-devel
157 200 Paul Carensac
(needed for python package mysqlclient)
158 200 Paul Carensac
159 200 Paul Carensac
$ sudo systemctl start mariadb.service
160 200 Paul Carensac
161 200 Paul Carensac
$ sudo systemctl enable mariadb.service
162 200 Paul Carensac
=> Created symlink from /etc/systemd/system/multi-user.target.wants/mariadb.service to /usr/lib/systemd/system/mariadb.service.
163 200 Paul Carensac
164 200 Paul Carensac
$ sudo mysql_secure_installation
165 200 Paul Carensac
</pre>
166 200 Paul Carensac
167 200 Paul Carensac
 * Mac OS X
168 200 Paul Carensac
Install XAMPP
169 200 Paul Carensac
(but you could also use the pre-installed Mac OS MySql, or install MySql from macport)
170 200 Paul Carensac
<pre>
171 200 Paul Carensac
TODO:
172 200 Paul Carensac
</pre>
173 200 Paul Carensac
174 201 Paul Carensac
 * Windows (tested with Windows 7 & 10)
175 200 Paul Carensac
176 200 Paul Carensac
<pre>
177 200 Paul Carensac
Download and install the newest version on https://dev.mysql.com/downloads/installer/
178 200 Paul Carensac
179 200 Paul Carensac
Once installed, launch MySQL Installer. Clic on 'Add...' on the right.
180 200 Paul Carensac
In MySQLServers section, choose the newest, then clic on next.
181 200 Paul Carensac
Install and configure the server (just follow the installation guide).
182 200 Paul Carensac
183 200 Paul Carensac
Then launch mysql (via the Windows menu).
184 200 Paul Carensac
</pre>
185 200 Paul Carensac
186 177 Etienne Pallier
187 1 Etienne Pallier
---
188 181 Paul Carensac
189 181 Paul Carensac
h3. Install RabbitMQ
190 181 Paul Carensac
191 181 Paul Carensac
RabbitMQ is a message queue server used by Celery to handle tasks queues.
192 181 Paul Carensac
193 181 Paul Carensac
 * Ubuntu (the server is automatically started) :
194 181 Paul Carensac
<pre>
195 181 Paul Carensac
$ sudo apt-get install rabbitmq-server
196 181 Paul Carensac
</pre>
197 183 Paul Carensac
198 195 Etienne Pallier
 * CentOS :
199 195 Etienne Pallier
<pre>
200 195 Etienne Pallier
$ sudo yum install rabbitmq-server
201 196 Etienne Pallier
202 196 Etienne Pallier
Installation :
203 196 Etienne Pallier
 rabbitmq-server                                                           noarch                          3.3.5-17.el7
204 196 Etienne Pallier
Installation pour dépendances :
205 196 Etienne Pallier
 erlang-asn1                                                               x86_64                          R16B-03.16.el7
206 195 Etienne Pallier
</pre>
207 195 Etienne Pallier
208 183 Paul Carensac
 * MacOS :
209 183 Paul Carensac
<pre>
210 194 Etienne Pallier
With MacPort:
211 194 Etienne Pallier
$ sudo port install rabbitmq-server
212 194 Etienne Pallier
--->  Installing erlang @18.2.1_1+hipe+ssl
213 194 Etienne Pallier
...
214 194 Etienne Pallier
--->  Installing rabbitmq-server @3.5.7_0
215 194 Etienne Pallier
--->  Activating rabbitmq-server @3.5.7_0
216 194 Etienne Pallier
...
217 183 Paul Carensac
</pre>
218 183 Paul Carensac
219 183 Paul Carensac
 * Windows :
220 191 Paul Carensac
221 191 Paul Carensac
  * Take the wanted Erlang version at http://www.erlang.org/downloads and install it (required)
222 191 Paul Carensac
  * Take the wanted RabbitMQ version at https://www.rabbitmq.com/install-windows.html and install it. Then the server will run automatically
223 191 Paul Carensac
224 191 Paul Carensac
225 177 Etienne Pallier
226 177 Etienne Pallier
---
227 177 Etienne Pallier
228 179 Etienne Pallier
h2. %{margin-left:0px; font-weight:bold; font-size:25px;  display:block; color:red;}II - GET THE PYROS SOFTWARE%
229 5 Etienne Pallier
230 125 Etienne Pallier
h3. Authenticate to https://gitlab.irap.omp.eu/epallier/pyros
231 125 Etienne Pallier
232 125 Etienne Pallier
In order to get this software, you must first authenticate on the IRAP gitlab.
233 125 Etienne Pallier
234 125 Etienne Pallier
For this, just go to https://gitlab.irap.omp.eu/epallier/pyros
235 125 Etienne Pallier
and either sign in with your LDAP account (if you are from IRAP),
236 125 Etienne Pallier
or register via the "Sign up" form.
237 5 Etienne Pallier
238 113 Etienne Pallier
h3. Software structure
239 5 Etienne Pallier
240 156 Paul Carensac
Once you have fetched the project, you should obtain AT LEAST this structure:
241 5 Etienne Pallier
242 5 Etienne Pallier
<pre>
243 5 Etienne Pallier
244 5 Etienne Pallier
PYROS/
245 5 Etienne Pallier
├── install/
246 5 Etienne Pallier
│   └── REQUIREMENTS.txt
247 5 Etienne Pallier
│   └── INSTALLATION.txt
248 5 Etienne Pallier
├── public/
249 5 Etienne Pallier
│   └── static/
250 5 Etienne Pallier
├── src/
251 5 Etienne Pallier
│   ├── manage.py
252 5 Etienne Pallier
│   ├── pyros/
253 5 Etienne Pallier
│   │   ├── __init__.py
254 5 Etienne Pallier
│   │   ├── __pycache__
255 5 Etienne Pallier
│   │   ├── settings.py
256 5 Etienne Pallier
│   │   ├── urls.py
257 5 Etienne Pallier
│   │   └── wsgi.py
258 5 Etienne Pallier
│   └── pyrosapp/
259 5 Etienne Pallier
│       ├── __init__.py
260 5 Etienne Pallier
│       ├── admin.py
261 5 Etienne Pallier
│       ├── apps.py
262 5 Etienne Pallier
│       ├── migrations
263 5 Etienne Pallier
│       ├── models.py
264 5 Etienne Pallier
│       ├── tests.py
265 5 Etienne Pallier
│       └── views.py
266 5 Etienne Pallier
267 1 Etienne Pallier
268 1 Etienne Pallier
</pre>
269 1 Etienne Pallier
270 112 Etienne Pallier
h3. Browse the code (from gitlab)
271 111 Etienne Pallier
272 111 Etienne Pallier
https://gitlab.irap.omp.eu/epallier/pyros/tree/master
273 111 Etienne Pallier
274 203 Paul Carensac
h3. You can download it (static version, not synchronized)
275 111 Etienne Pallier
276 114 Etienne Pallier
You can download the current version of the software.
277 114 Etienne Pallier
278 115 Etienne Pallier
Go to https://gitlab.irap.omp.eu/epallier/pyros/tree/master
279 115 Etienne Pallier
280 115 Etienne Pallier
Click on "Download zip" on the up right hand corner.
281 115 Etienne Pallier
282 115 Etienne Pallier
Double-click on it to unzip it.
283 115 Etienne Pallier
284 115 Etienne Pallier
You should get a "pyros.git" folder.
285 115 Etienne Pallier
286 116 Etienne Pallier
In this documentation, this software folder will be referenced as "PYROS".
287 115 Etienne Pallier
288 118 Etienne Pallier
(you can rename "pyros.git" as "PYROS" if you want : "mv pyros.git PYROS")
289 114 Etienne Pallier
290 203 Paul Carensac
h3. (Windows developers only) : Get git for Windows
291 1 Etienne Pallier
292 203 Paul Carensac
 * Download git at https://git-scm.com/download/win
293 203 Paul Carensac
 * Run setup (keep default configurations)
294 203 Paul Carensac
 * Once installed, open cmd
295 203 Paul Carensac
<pre>
296 203 Paul Carensac
$ git config --global http.sslVerify false
297 203 Paul Carensac
</pre>
298 203 Paul Carensac
299 203 Paul Carensac
You can now use your git from the cmd or the graphic client !
300 203 Paul Carensac
301 203 Paul Carensac
h3. (Developers only) Get it from GIT (dynamic version, synchronized)
302 203 Paul Carensac
303 122 Etienne Pallier
(If you are using Windows, you must first get the git software, see below "Get git for Windows")
304 122 Etienne Pallier
305 114 Etienne Pallier
By getting the software from git, you will get a dynamically synchronized version,
306 114 Etienne Pallier
which means that you will be able to update your version as soon as a new version is available
307 114 Etienne Pallier
(with the command : "git pull").
308 111 Etienne Pallier
309 111 Etienne Pallier
* From Eclipse : See below, section "NOTES FOR ECLIPSE USERS"
310 111 Etienne Pallier
311 111 Etienne Pallier
* From the terminal
312 5 Etienne Pallier
313 5 Etienne Pallier
<pre>
314 5 Etienne Pallier
git clone https://gitlab.irap.omp.eu/epallier/pyros.git PYROS
315 1 Etienne Pallier
</pre>
316 86 Etienne Pallier
317 86 Etienne Pallier
_(or also : git clone git@gitlab.irap.omp.eu:epallier/pyros.git PYROS)_
318 5 Etienne Pallier
319 5 Etienne Pallier
If you ever get this error message :
320 1 Etienne Pallier
<pre>
321 1 Etienne Pallier
fatal: unable to access 'https://gitlab.irap.omp.eu/epallier/pyros.git/': Peer's certificate issuer has been marked as not trusted by the user.
322 122 Etienne Pallier
</pre>
323 122 Etienne Pallier
324 122 Etienne Pallier
Then, type this command (and then run again the git clone command):
325 121 Paul Carensac
<pre>
326 121 Paul Carensac
$ git config --global http.sslVerify false
327 121 Paul Carensac
</pre>
328 121 Paul Carensac
329 1 Etienne Pallier
(Also, the first time you get the project, it will ask you for a login and password)
330 121 Paul Carensac
331 168 Etienne Pallier
This creates a PYROS/ folder containing the project (with a .git/ subfolder for synchronization with the git repository)
332 168 Etienne Pallier
333 168 Etienne Pallier
334 169 Etienne Pallier
335 169 Etienne Pallier
336 169 Etienne Pallier
---
337 169 Etienne Pallier
338 169 Etienne Pallier
---
339 169 Etienne Pallier
340 186 Paul Carensac
h2. %{margin-left:0px; font-weight:bold; font-size:25px;  display:block; color:red;}III - INSTALLATION OF NEEDED PROJECT DEPENDENCIES%
341 166 Etienne Pallier
342 186 Paul Carensac
---
343 186 Paul Carensac
344 186 Paul Carensac
h3. Install Comet
345 186 Paul Carensac
346 186 Paul Carensac
Comet is a broker to receive and send VOEvents (https://github.com/jdswinbank/Comet/tree/py3)
347 187 Paul Carensac
You MUST have your virtualenv activated (*source venv_py3_pyros/bin/activate* in your 'private/' directory)
348 186 Paul Carensac
Documentation is available here : http://comet.readthedocs.io/en/stable/installation.html
349 186 Paul Carensac
350 186 Paul Carensac
 * Ubuntu :
351 186 Paul Carensac
352 186 Paul Carensac
<pre>
353 186 Paul Carensac
# You can do this anywhere on your computer
354 1 Etienne Pallier
$ git clone https://github.com/jdswinbank/Comet.git
355 1 Etienne Pallier
$ cd Comet
356 1 Etienne Pallier
$ (sudo ?) python setup.py install
357 1 Etienne Pallier
358 1 Etienne Pallier
# Now you can test it, no failure are expected, please contact the dev team for help
359 1 Etienne Pallier
$ trial comet
360 1 Etienne Pallier
</pre>
361 1 Etienne Pallier
362 1 Etienne Pallier
363 1 Etienne Pallier
 * MacOS :
364 1 Etienne Pallier
<pre>
365 1 Etienne Pallier
TODO:
366 1 Etienne Pallier
</pre>
367 1 Etienne Pallier
368 1 Etienne Pallier
 * Windows :
369 1 Etienne Pallier
<pre>
370 1 Etienne Pallier
TODO:
371 1 Etienne Pallier
</pre>
372 190 Paul Carensac
373 190 Paul Carensac
---
374 190 Paul Carensac
375 190 Paul Carensac
Install the needed Project dependencies and the database (within a Python virtual environment)
376 190 Paul Carensac
377 190 Paul Carensac
Go into the PYROS/install/ folder and Run the install_requirements.sh script.
378 190 Paul Carensac
379 190 Paul Carensac
(You will be prompted to enter a username, an email, and a password for the superuser)
380 190 Paul Carensac
381 190 Paul Carensac
* Mac and Linux:
382 190 Paul Carensac
<pre>
383 190 Paul Carensac
./install_requirements.sh
384 190 Paul Carensac
</pre>
385 190 Paul Carensac
386 190 Paul Carensac
* Windows:
387 190 Paul Carensac
<pre>
388 190 Paul Carensac
install_requirements_windows.bat
389 190 Paul Carensac
</pre>
390 190 Paul Carensac
391 190 Paul Carensac
_If something goes wrong, install manually each package (see section "MANUAL INSTALLATION OF PYTHON PACKAGES, ONE BY ONE")_
392 186 Paul Carensac
393 98 Etienne Pallier
394 9 Etienne Pallier
---
395 9 Etienne Pallier
396 9 Etienne Pallier
h3. (Eclipse only) Set the Python3 virtual environment as the project interpreter
397 9 Etienne Pallier
398 65 Etienne Pallier
See below, in section "NOTES FOR ECLIPSE USERS"
399 9 Etienne Pallier
400 1 Etienne Pallier
---
401 1 Etienne Pallier
402 170 Etienne Pallier
---
403 170 Etienne Pallier
404 17 Etienne Pallier
h2. %{margin-left:0px; font-weight:bold; font-size:25px;  display:block; color:red;}IV - TEST%
405 17 Etienne Pallier
406 108 Etienne Pallier
407 90 Etienne Pallier
(Tests are classes declared in all apps' test.py file. The test classes inherit from django.test.TestCase)
408 17 Etienne Pallier
409 17 Etienne Pallier
You can run the tests suite, just to be sure that the software is well installed.
410 17 Etienne Pallier
411 19 Etienne Pallier
h3. From Terminal
412 19 Etienne Pallier
413 19 Etienne Pallier
414 1 Etienne Pallier
<pre>
415 1 Etienne Pallier
416 205 Paul Carensac
$ cd PYROS/src/scripts
417 20 Etienne Pallier
418 205 Paul Carensac
$ ./test_all_usual
419 94 Etienne Pallier
Ran 5 tests in 0.093s
420 21 Etienne Pallier
OK
421 17 Etienne Pallier
</pre>
422 19 Etienne Pallier
423 160 Paul Carensac
h3. From Eclipse
424 1 Etienne Pallier
425 77 Etienne Pallier
See below, in section "NOTES FOR ECLIPSE USERS"
426 25 Paul Carensac
427 25 Paul Carensac
428 160 Paul Carensac
h3. Custom commands
429 27 Paul Carensac
430 25 Paul Carensac
$ [./manage.py] test app.tests                           # Run tests for the application 'app'
431 25 Paul Carensac
$ [./manage.py] test app.tests.ModelTests                # Run test methods declared in the class app.tests.ModelTests
432 25 Paul Carensac
$ [./manage.py] test app.tests.ModelTests.test_method    # Only run the method test_method declared in app.tests.ModelTests
433 33 Etienne Pallier
434 33 Etienne Pallier
435 1 Etienne Pallier
---
436 1 Etienne Pallier
437 170 Etienne Pallier
---
438 170 Etienne Pallier
439 92 Etienne Pallier
h2. %{margin-left:0px; font-weight:bold; font-size:25px;  display:block; color:red;}V - RUN%
440 75 Etienne Pallier
441 109 Etienne Pallier
442 75 Etienne Pallier
* From the terminal
443 75 Etienne Pallier
444 75 Etienne Pallier
<pre>
445 75 Etienne Pallier
446 95 Etienne Pallier
$ cd PYROS/
447 1 Etienne Pallier
448 158 Paul Carensac
$ ./pyrosrun server
449 93 Paul Carensac
</pre>
450 75 Etienne Pallier
451 158 Paul Carensac
Now, go to "http://localhost:8000/admin" in your browser
452 91 Etienne Pallier
453 158 Paul Carensac
(and login as "pyros" with the password 'DjangoPyros')
454 105 Etienne Pallier
455 91 Etienne Pallier
(Ctrl-c to stop)
456 91 Etienne Pallier
457 91 Etienne Pallier
458 75 Etienne Pallier
459 106 Etienne Pallier
* From Eclipse : see below, in section "NOTES FOR ECLIPSE USERS"
460 75 Etienne Pallier
461 75 Etienne Pallier
462 1 Etienne Pallier
---
463 1 Etienne Pallier
464 170 Etienne Pallier
---
465 170 Etienne Pallier
466 33 Etienne Pallier
h2. %{margin-left:0px; font-weight:bold; font-size:25px;  display:block; color:red;}NOTES FOR ECLIPSE USERS%
467 35 Etienne Pallier
468 35 Etienne Pallier
0) Install Eclipse (if necessary)
469 35 Etienne Pallier
470 35 Etienne Pallier
Get the Eclipse version for Php
471 35 Etienne Pallier
472 35 Etienne Pallier
Install the plug-in pydev (via install new software, add http://pydev.org/updates)
473 35 Etienne Pallier
474 35 Etienne Pallier
Install the django template editor (via install new software, add http://eclipse.kacprzak.org/updates)
475 35 Etienne Pallier
476 35 Etienne Pallier
1) Deactivate CA certificate verification
477 35 Etienne Pallier
478 35 Etienne Pallier
Window -> Preferences -> Team -> git -> configuration -> Add entry
479 35 Etienne Pallier
480 35 Etienne Pallier
Key = http.sslVerify
481 35 Etienne Pallier
Value = false
482 35 Etienne Pallier
483 35 Etienne Pallier
2) Fetch the project
484 35 Etienne Pallier
485 35 Etienne Pallier
File/Import project from git
486 35 Etienne Pallier
487 35 Etienne Pallier
Select repository source: Clone URI: https://gitlab.irap.omp.eu/epallier/pyros.git
488 35 Etienne Pallier
489 35 Etienne Pallier
Directory: 
490 35 Etienne Pallier
par défaut, il propose : /Users/epallier/git/pyros
491 35 Etienne Pallier
mais on peut le mettre ailleurs (c'est ce que j'ai fait)
492 35 Etienne Pallier
493 35 Etienne Pallier
initial branch: master
494 35 Etienne Pallier
remote name: origin
495 35 Etienne Pallier
496 35 Etienne Pallier
Import as general project
497 35 Etienne Pallier
498 35 Etienne Pallier
Project name: PYROS
499 35 Etienne Pallier
500 35 Etienne Pallier
501 35 Etienne Pallier
3) Configure the project
502 35 Etienne Pallier
503 35 Etienne Pallier
The project is created. Now, you have to set it as a «PyDev » and a « Django » project.
504 35 Etienne Pallier
505 35 Etienne Pallier
clic droit sur le projet / PyDev / set as a PyDev project
506 35 Etienne Pallier
507 35 Etienne Pallier
clic droit sur le projet / PyDev / set as a Django project
508 35 Etienne Pallier
509 35 Etienne Pallier
clic droit sur le projet : on doit maintenant avoir un sous-menu Django
510 35 Etienne Pallier
511 35 Etienne Pallier
clic droit sur le dossier src / PyDev / set as source folder (add to PYTHONPATH)
512 35 Etienne Pallier
513 35 Etienne Pallier
clic droit sur projet / Properties / Pydev-Django :
514 35 Etienne Pallier
  - Django manage.py : src/manage.py
515 35 Etienne Pallier
  - Django settings module : pyros.settings
516 35 Etienne Pallier
517 35 Etienne Pallier
518 35 Etienne Pallier
4) Set Code style
519 35 Etienne Pallier
520 35 Etienne Pallier
Window/Preferences : Pydev / Editor
521 35 Etienne Pallier
- Auto Imports : uncheck « Do auto import »
522 35 Etienne Pallier
- Code style:
523 35 Etienne Pallier
	- Locals … : camelCase
524 35 Etienne Pallier
	- Methods : camelCase() with first lower
525 35 Etienne Pallier
- Code style / Code Formatter: activer « use autopep8.py for code formatting »
526 35 Etienne Pallier
- Tabs : Tab length : 4
527 35 Etienne Pallier
528 67 Etienne Pallier
5) Now, once the Python3 virtual environment is installed (see above),
529 66 Etienne Pallier
set it in Eclipse as the project interpreter:
530 66 Etienne Pallier
531 68 Etienne Pallier
Right clic on the project / Properties / PyDev - Interpreter/Grammar :
532 66 Etienne Pallier
Grammar version : 3
533 66 Etienne Pallier
534 66 Etienne Pallier
Interpreter : click on « click here to configure an interpreter not listed »
535 66 Etienne Pallier
536 66 Etienne Pallier
click on « New... » :
537 66 Etienne Pallier
- Interpreter name : venv_py35_pyros
538 66 Etienne Pallier
- Interpreter executable : click on « Browse »
539 66 Etienne Pallier
	Select your virtualenv python35 executable (private/venv_py35_pyros/bin/python3.5)
540 66 Etienne Pallier
	click OK
541 66 Etienne Pallier
542 66 Etienne Pallier
*Now, a last thing to do so that Pydev finds Django:*
543 66 Etienne Pallier
544 66 Etienne Pallier
In the Python interpreters list, select your virtual env (venv_py35_pyros)
545 66 Etienne Pallier
546 66 Etienne Pallier
Click on the tab "Libraries"
547 66 Etienne Pallier
548 66 Etienne Pallier
clic on 'New folder', then select your virtualenv's lib/python3.5/site-packages folder
549 66 Etienne Pallier
550 66 Etienne Pallier
OK
551 66 Etienne Pallier
552 66 Etienne Pallier
Interpreter: select now venv_py35_pyros from the list
553 66 Etienne Pallier
554 66 Etienne Pallier
OK
555 62 Etienne Pallier
556 78 Etienne Pallier
6) Test
557 1 Etienne Pallier
558 78 Etienne Pallier
* Right-clic on the project / Django / Run Django tests
559 78 Etienne Pallier
560 78 Etienne Pallier
* Right-clic on the project / Django / Custom command / ...
561 78 Etienne Pallier
562 78 Etienne Pallier
563 78 Etienne Pallier
7) Run
564 70 Etienne Pallier
565 70 Etienne Pallier
Right clic on project -> Django/Custom command/runserver
566 70 Etienne Pallier
567 70 Etienne Pallier
Error on Ubuntu :
568 70 Etienne Pallier
569 70 Etienne Pallier
<pre>
570 70 Etienne Pallier
571 70 Etienne Pallier
Traceback (most recent call last):
572 70 Etienne Pallier
  File "/home/carens_p/git/pyros/src/manage.py", line 8, in <module>
573 70 Etienne Pallier
    from django.core.management import execute_from_command_line
574 70 Etienne Pallier
ImportError: No module named 'django'
575 70 Etienne Pallier
576 70 Etienne Pallier
</pre>
577 70 Etienne Pallier
578 70 Etienne Pallier
Project -> Properties -> Pydev interpreter -> Clic here to configure an interpreter not listed
579 70 Etienne Pallier
580 70 Etienne Pallier
select venv_py35_pyros
581 70 Etienne Pallier
582 70 Etienne Pallier
In Libraries, clic on 'New folder', then select your virtualenv's lib/python3.5/site-packages folder.
583 70 Etienne Pallier
584 70 Etienne Pallier
OK -> re-select venv_py35_pyros in 'Interpreter' dropdown menu
585 70 Etienne Pallier
586 70 Etienne Pallier
Then right clic on project -> Django/Custom command/runserver
587 70 Etienne Pallier
588 70 Etienne Pallier
check http://localhost:8000/
589 70 Etienne Pallier
590 70 Etienne Pallier
591 62 Etienne Pallier
---
592 62 Etienne Pallier
593 62 Etienne Pallier
---
594 62 Etienne Pallier
595 81 Etienne Pallier
h2. %{margin-left:0px; font-weight:bold; font-size:25px;  display:block; color:red;}MANUAL INSTALLATION OF PYTHON PACKAGES ONE BY ONE%
596 81 Etienne Pallier
597 172 Etienne Pallier
*Follow these steps only if the previous guided and nearly automatic installation did not work for you*
598 100 Etienne Pallier
599 172 Etienne Pallier
600 174 Etienne Pallier
h3. (Only if using Mysql) Create the database "pyros" and the pyros user
601 174 Etienne Pallier
602 174 Etienne Pallier
Only if you are using Mysql, you need to create an empty database "pyros"
603 174 Etienne Pallier
(which will be filled automatically by django)
604 174 Etienne Pallier
605 174 Etienne Pallier
<pre>
606 174 Etienne Pallier
$ mysql -u root -p
607 174 Etienne Pallier
(enter your root password)
608 174 Etienne Pallier
609 174 Etienne Pallier
$ mysql> create database if not exists pyros;
610 174 Etienne Pallier
</pre>
611 174 Etienne Pallier
612 174 Etienne Pallier
The user creation depends on your MySQL version :
613 174 Etienne Pallier
614 174 Etienne Pallier
 * 5.7 and above :
615 174 Etienne Pallier
<pre>
616 174 Etienne Pallier
$ mysql> DROP USER IF EXISTS pyros;
617 174 Etienne Pallier
$ mysql> CREATE USER 'pyros' IDENTIFIED BY 'DjangoPyros';
618 174 Etienne Pallier
$ mysql> GRANT ALL PRIVILEGES ON pyros.* TO pyros;
619 174 Etienne Pallier
</pre>
620 174 Etienne Pallier
621 174 Etienne Pallier
 * under 5.7 :
622 174 Etienne Pallier
<pre>
623 174 Etienne Pallier
$ mysql> GRANT USAGE ON *.* TO 'pyros';
624 174 Etienne Pallier
$ mysql> DROP USER 'pyros';
625 174 Etienne Pallier
$ mysql> CREATE USER 'pyros' IDENTIFIED BY 'DjangoPyros';
626 174 Etienne Pallier
$ mysql> GRANT ALL PRIVILEGES ON pyros.* TO pyros;
627 174 Etienne Pallier
</pre>
628 174 Etienne Pallier
629 174 Etienne Pallier
If none of these solution work, check on the internet to create a user named pyros with the password DjangoPyros.
630 174 Etienne Pallier
631 100 Etienne Pallier
h3. Create a Python3 virtual environment dedicated to the project (inside the project folder)
632 100 Etienne Pallier
633 100 Etienne Pallier
<pre>
634 100 Etienne Pallier
635 100 Etienne Pallier
$ mkdir private/
636 100 Etienne Pallier
637 100 Etienne Pallier
$ cd private/
638 100 Etienne Pallier
639 100 Etienne Pallier
$ which python3.5 ("where python" for windows)
640 100 Etienne Pallier
/opt/local/bin/python3.5
641 100 Etienne Pallier
642 100 Etienne Pallier
$ virtualenv venv_py35_pyros -p /opt/local/bin/python3.5
643 100 Etienne Pallier
=> creates a venv_py35_pyros/ folder inside PYROS/private/
644 100 Etienne Pallier
645 100 Etienne Pallier
</pre>
646 100 Etienne Pallier
647 100 Etienne Pallier
648 100 Etienne Pallier
---
649 100 Etienne Pallier
650 100 Etienne Pallier
h3. Activate the python virtual environment (from inside the project)
651 100 Etienne Pallier
652 100 Etienne Pallier
<pre>
653 100 Etienne Pallier
654 100 Etienne Pallier
$ pwd
655 100 Etienne Pallier
.../PYROS/private
656 100 Etienne Pallier
657 100 Etienne Pallier
$ source ./venv_py35_pyros/bin/activate (venv_py35_pyros/Scripts/activate on Windows)
658 100 Etienne Pallier
659 100 Etienne Pallier
</pre>
660 100 Etienne Pallier
661 100 Etienne Pallier
---
662 100 Etienne Pallier
663 100 Etienne Pallier
h3. Install needed python packages
664 100 Etienne Pallier
665 81 Etienne Pallier
Check that the virtual environment is activated
666 81 Etienne Pallier
<pre>
667 81 Etienne Pallier
$ python -V
668 81 Etienne Pallier
Python 3...
669 81 Etienne Pallier
670 81 Etienne Pallier
$ which pip
671 81 Etienne Pallier
.../PYROS/venv_py35_pyros/bin/pip
672 81 Etienne Pallier
</pre>
673 81 Etienne Pallier
674 81 Etienne Pallier
675 81 Etienne Pallier
Upgrade pip to last version available:
676 81 Etienne Pallier
<pre>
677 81 Etienne Pallier
$ pip install --upgrade pip
678 81 Etienne Pallier
Collecting pip
679 81 Etienne Pallier
  Downloading pip-8.1.1-py2.py3-none-any.whl (1.2MB)
680 81 Etienne Pallier
Installing collected packages: pip
681 81 Etienne Pallier
  Found existing installation: pip 7.1.2
682 81 Etienne Pallier
    Uninstalling pip-7.1.2:
683 81 Etienne Pallier
      Successfully uninstalled pip-7.1.2
684 81 Etienne Pallier
Successfully installed pip-8.1.1
685 81 Etienne Pallier
686 81 Etienne Pallier
Upgrade wheel to last version available:
687 81 Etienne Pallier
$ pip install --upgrade wheel
688 81 Etienne Pallier
Collecting wheel
689 81 Etienne Pallier
  Downloading wheel-0.29.0-py2.py3-none-any.whl (66kB)
690 81 Etienne Pallier
Installing collected packages: wheel
691 81 Etienne Pallier
  Found existing installation: wheel 0.24.0
692 81 Etienne Pallier
    Uninstalling wheel-0.24.0:
693 81 Etienne Pallier
      Successfully uninstalled wheel-0.24.0
694 81 Etienne Pallier
Successfully installed wheel-0.29.0
695 81 Etienne Pallier
696 81 Etienne Pallier
</pre>
697 81 Etienne Pallier
698 81 Etienne Pallier
Go into the install/ folder:
699 81 Etienne Pallier
<pre>
700 81 Etienne Pallier
$ cd .../PYROS/install/
701 81 Etienne Pallier
</pre>
702 81 Etienne Pallier
703 84 Etienne Pallier
Install all the needed python packages at once:
704 85 Etienne Pallier
<pre>
705 1 Etienne Pallier
$ pip install -r REQUIREMENTS.txt
706 85 Etienne Pallier
</pre>
707 84 Etienne Pallier
708 84 Etienne Pallier
If something goes wrong, install them one by one:
709 62 Etienne Pallier
710 62 Etienne Pallier
  * *Install Django* :
711 62 Etienne Pallier
<pre>
712 62 Etienne Pallier
$ pip install django
713 62 Etienne Pallier
Collecting django
714 62 Etienne Pallier
  Downloading Django-1.9.4-py2.py3-none-any.whl (6.6MB)
715 62 Etienne Pallier
Installing collected packages: django
716 62 Etienne Pallier
Successfully installed django-1.9.4
717 62 Etienne Pallier
718 62 Etienne Pallier
$ pip install django-admin-tools
719 62 Etienne Pallier
Collecting django-admin-tools
720 62 Etienne Pallier
  Downloading django_admin_tools-0.7.2-py2.py3-none-any.whl (289kB)
721 62 Etienne Pallier
Installing collected packages: django-admin-tools
722 62 Etienne Pallier
Successfully installed django-admin-tools-0.7.2
723 62 Etienne Pallier
724 62 Etienne Pallier
$ pip install django-debug-toolbar
725 62 Etienne Pallier
Collecting django-debug-toolbar
726 62 Etienne Pallier
  Downloading django_debug_toolbar-1.4-py2.py3-none-any.whl (212kB)
727 62 Etienne Pallier
Requirement already satisfied (use --upgrade to upgrade): Django>=1.7 in ./venv_py35_pyros/lib/python3.5/site-packages (from django-debug-toolbar)
728 62 Etienne Pallier
Collecting sqlparse (from django-debug-toolbar)
729 62 Etienne Pallier
  Downloading sqlparse-0.1.19.tar.gz (58kB)
730 62 Etienne Pallier
Building wheels for collected packages: sqlparse
731 62 Etienne Pallier
  Running setup.py bdist_wheel for sqlparse ... done
732 62 Etienne Pallier
  Stored in directory: /Users/epallier/Library/Caches/pip/wheels/7b/d4/72/6011bb100dd5fc213164e4bbee13d4e03261dd54ce6a5de6b8
733 62 Etienne Pallier
Successfully built sqlparse
734 62 Etienne Pallier
Installing collected packages: sqlparse, django-debug-toolbar
735 62 Etienne Pallier
Successfully installed django-debug-toolbar-1.4 sqlparse-0.1.19
736 62 Etienne Pallier
737 62 Etienne Pallier
$ pip install django-extensions
738 62 Etienne Pallier
Collecting django-extensions
739 62 Etienne Pallier
  Downloading django_extensions-1.6.1-py2.py3-none-any.whl (202kB)
740 62 Etienne Pallier
Collecting six>=1.2 (from django-extensions)
741 62 Etienne Pallier
  Downloading six-1.10.0-py2.py3-none-any.whl
742 62 Etienne Pallier
Installing collected packages: six, django-extensions
743 62 Etienne Pallier
Successfully installed django-extensions-1.6.1 six-1.10.0
744 62 Etienne Pallier
745 62 Etienne Pallier
$ pip install django-suit
746 62 Etienne Pallier
Collecting django-suit
747 62 Etienne Pallier
  Downloading django-suit-0.2.18.tar.gz (587kB)
748 62 Etienne Pallier
Building wheels for collected packages: django-suit
749 62 Etienne Pallier
  Running setup.py bdist_wheel for django-suit ... done
750 62 Etienne Pallier
  Stored in directory: /Users/epallier/Library/Caches/pip/wheels/12/8b/9a/e02ab0ad9229881638aa040d47d77c8f562999533811927d41
751 62 Etienne Pallier
Successfully built django-suit
752 62 Etienne Pallier
Installing collected packages: django-suit
753 62 Etienne Pallier
Successfully installed django-suit-0.2.18
754 62 Etienne Pallier
755 62 Etienne Pallier
</pre>
756 62 Etienne Pallier
757 62 Etienne Pallier
  * *Install the django boostrap css package* :
758 62 Etienne Pallier
<pre>
759 62 Etienne Pallier
$ pip install django-bootstrap3
760 62 Etienne Pallier
</pre>
761 62 Etienne Pallier
(==> 'bootstrap3' is then to be added as an application in settings.py -> INSTALLED_APPS)
762 62 Etienne Pallier
763 62 Etienne Pallier
  * *Install the web application server gunicorn (will be used in production instead of the dev django web server)* :
764 62 Etienne Pallier
<pre>
765 62 Etienne Pallier
$ pip install gunicorn
766 62 Etienne Pallier
Collecting gunicorn
767 62 Etienne Pallier
  Downloading gunicorn-19.4.5-py2.py3-none-any.whl (112kB)
768 62 Etienne Pallier
Installing collected packages: gunicorn
769 62 Etienne Pallier
Successfully installed gunicorn-19.4.5
770 62 Etienne Pallier
</pre>
771 62 Etienne Pallier
772 62 Etienne Pallier
  * *Install the python mysql client* (not needed if you want to use sqlite):
773 62 Etienne Pallier
<pre>
774 62 Etienne Pallier
$ pip install mysqlclient
775 62 Etienne Pallier
...
776 62 Etienne Pallier
</pre>
777 62 Etienne Pallier
778 146 Etienne Pallier
   * => If issue under Mac OS X:
779 62 Etienne Pallier
<pre>
780 62 Etienne Pallier
$ pip install mysqlclient
781 62 Etienne Pallier
Collecting mysqlclient
782 62 Etienne Pallier
  Downloading mysqlclient-1.3.7.tar.gz (79kB)
783 62 Etienne Pallier
Building wheels for collected packages: mysqlclient
784 62 Etienne Pallier
  Running setup.py bdist_wheel for mysqlclient ... error
785 62 Etienne Pallier
786 62 Etienne Pallier
  ----------------------------------------
787 62 Etienne Pallier
  Failed building wheel for mysqlclient
788 62 Etienne Pallier
  Running setup.py clean for mysqlclient
789 62 Etienne Pallier
Failed to build mysqlclient
790 62 Etienne Pallier
Installing collected packages: mysqlclient
791 62 Etienne Pallier
  Running setup.py install for mysqlclient ... done
792 62 Etienne Pallier
Successfully installed mysqlclient-1.3.7
793 62 Etienne Pallier
794 62 Etienne Pallier
BOUH !!!
795 1 Etienne Pallier
796 152 Etienne Pallier
=> Need to upgrade wheel:
797 146 Etienne Pallier
798 62 Etienne Pallier
$ pip install --upgrade wheel
799 62 Etienne Pallier
Collecting wheel
800 62 Etienne Pallier
  Downloading wheel-0.29.0-py2.py3-none-any.whl (66kB)
801 62 Etienne Pallier
Installing collected packages: wheel
802 62 Etienne Pallier
  Found existing installation: wheel 0.24.0
803 62 Etienne Pallier
    Uninstalling wheel-0.24.0:
804 62 Etienne Pallier
      Successfully uninstalled wheel-0.24.0
805 62 Etienne Pallier
Successfully installed wheel-0.29.0
806 62 Etienne Pallier
807 153 Etienne Pallier
YES !!!
808 1 Etienne Pallier
809 154 Etienne Pallier
Only if necessary, you can reinstall mysqlclient:
810 153 Etienne Pallier
$ pip uninstall mysqlclient
811 62 Etienne Pallier
$ pip install mysqlclient
812 62 Etienne Pallier
Collecting mysqlclient
813 62 Etienne Pallier
  Using cached mysqlclient-1.3.7.tar.gz
814 62 Etienne Pallier
Building wheels for collected packages: mysqlclient
815 62 Etienne Pallier
  Running setup.py bdist_wheel for mysqlclient ... done
816 62 Etienne Pallier
  Stored in directory: /Users/epallier/Library/Caches/pip/wheels/9b/06/50/d11418c26cf8f2156b13d4363b5afde8e7e75ebb8540d0228d
817 62 Etienne Pallier
Successfully built mysqlclient
818 62 Etienne Pallier
Installing collected packages: mysqlclient
819 62 Etienne Pallier
Successfully installed mysqlclient-1.3.7
820 62 Etienne Pallier
821 1 Etienne Pallier
</pre>
822 62 Etienne Pallier
823 146 Etienne Pallier
   * => If issue under Windows
824 62 Etienne Pallier
<pre>
825 62 Etienne Pallier
Same message as the issue for Mac.
826 146 Etienne Pallier
827 204 Paul Carensac
=> Need to install wheel manually :
828 62 Etienne Pallier
829 62 Etienne Pallier
Go to http://www.lfd.uci.edu/~gohlke/pythonlibs/#mysqlclient to download the newest mysqlclient wheel
830 62 Etienne Pallier
831 62 Etienne Pallier
$ pip install path\to\mysqlclient\wheel
832 62 Etienne Pallier
833 154 Etienne Pallier
(No need to redo "pip install mysqlclient")
834 62 Etienne Pallier
</pre>
835 163 Paul Carensac
836 163 Paul Carensac
  * *Install the julian day converter* :
837 163 Paul Carensac
<pre>
838 163 Paul Carensac
$ pip install jdcal
839 163 Paul Carensac
</pre>
840 182 Paul Carensac
841 188 Paul Carensac
  * *Install Celery and dependencies* :
842 182 Paul Carensac
<pre>
843 182 Paul Carensac
$ pip install celery
844 1 Etienne Pallier
$ pip install django-celery
845 188 Paul Carensac
$ pip install Twisted==16.0.0
846 188 Paul Carensac
</pre>
847 188 Paul Carensac
848 188 Paul Carensac
  * *Install django test without migrations (compulsory to use the prod DB for tests)* :
849 188 Paul Carensac
<pre>
850 188 Paul Carensac
$ pip install django-test-without-migrations==0.4
851 188 Paul Carensac
</pre>
852 188 Paul Carensac
853 188 Paul Carensac
  * *Install voevent parser* :
854 188 Paul Carensac
<pre>
855 188 Paul Carensac
$ pip install voevent-parse==0.9.5
856 188 Paul Carensac
</pre>
857 188 Paul Carensac
858 188 Paul Carensac
859 188 Paul Carensac
  * *Install other dependencies (useful ? TBC)* :
860 188 Paul Carensac
<pre>
861 188 Paul Carensac
$ pip install amqplib==1.0.2
862 188 Paul Carensac
$ pip install pluggy==0.3.1
863 188 Paul Carensac
$ pip install py==1.4.31
864 182 Paul Carensac
</pre>