1 .. -*- coding: utf-8 -*- |
|
2 |
|
3 =================================== |
|
4 Creation de votre premiere instance |
|
5 =================================== |
|
6 |
|
7 |
|
8 Qu'est-ce qu'une instance? |
|
9 ========================== |
|
10 |
|
11 Une instance CubicWeb consiste en un dossier situe dans ``~/etc/cubicweb.d`` |
|
12 qui permettra de lancer une application web. Une instance est cree a partir |
|
13 d'un ou plusieurs cubes. |
|
14 |
|
15 Nous recommandons de ne pas definir de schema, entites ou vues dans l'instance |
|
16 meme si cela est possible dans un but de re-utilisabilite des entities et de leurs |
|
17 vues. Nous conseillons plutot de developper des cubes qui pourront par la suite |
|
18 etre utilises dans d'autres instances (approche modulaire). |
|
19 |
|
20 L'instance n'est qu'un conteneur referrant a des cubes et a des parametres |
|
21 des configuration de l'application web. |
|
22 |
|
23 Qu'est-ce qu'un cube? |
|
24 ===================== |
|
25 |
|
26 Un cube definit des entities, leur vues, leur schemas et leur workflow |
|
27 dans un repertoire independant situe dans ``/path/to/forest/cubicweb/cubes/``. |
|
28 |
|
29 Lors de la creation d'une instance, vous avez la possibilite de lister |
|
30 le ou les cubes que votre instance va utiliser. Utiliser un cube signifie |
|
31 avoir a disposition dans votre instance les entites definies dans le schema |
|
32 de votre cube ainsi que les vues et les workflows. |
|
33 |
|
34 |
|
35 .. note:: |
|
36 Les commandes utilisees ci-apres sont detaillees dans la section |
|
37 dediee a :ref:`cubicweb-ctl`. |
|
38 |
|
39 |
|
40 Création d'un cube |
|
41 ================== |
|
42 |
|
43 Commençons par créer un squelette qui nous servira de base au développement de |
|
44 notre cube ou application :: |
|
45 |
|
46 cd ~/hg |
|
47 |
|
48 cubicweb-ctl newtemplate moncube |
|
49 |
|
50 # répondre aux questions |
|
51 cd moncube |
|
52 hg init |
|
53 hg add . |
|
54 hg ci |
|
55 |
|
56 A partir de là si tout va bien, votre cube devrait être affiché par |
|
57 `cubicweb-ctl list` dans la section *Available components*, si ce n'est pas le cas |
|
58 revoir la section :ref:`ConfigurationEnv`. |
|
59 |
|
60 |
|
61 Pour utiliser un cube, il faut le mentionner dans la variable |
|
62 __use__ du fichier __pkginfo__ de l'application. Cette variable |
|
63 contrôle à la fois le packaging de l'application (dépendances gérées |
|
64 par les utilitaires système comme les outils APT) et les composants |
|
65 effectivement utilisables lors de la création de la base |
|
66 (import_erschema('Moncomposant') ne fonctionne pas sinon). |
|
67 |
|
68 FIXME - need example code :: |
|
69 |
|
70 __use__ = ('blog', 'file') |
|
71 |
|
72 Création d'une instance de développement |
|
73 ======================================== |
|
74 |
|
75 Maintenant que nous avons notre squelette de modèle, on peut en créer une |
|
76 instance afin de voir ce que tout ça donne dans un simple navigateur web. |
|
77 Nous allons utiliser une configuration `all-in-one` afin de simplifier les |
|
78 choses :: |
|
79 |
|
80 cubicweb-ctl create -c all-in-one moncube moninstance |
|
81 |
|
82 Une série de questions vont être posées, la réponse par défaut est généralement |
|
83 suffisante. Vous pourrez de toute façon modifier la configuration par la suite |
|
84 en éditant les fichiers générés. Lorsqu'un login/mot de passe d'accès au sgbd |
|
85 vous est demandé, il est recommandé d'utiliser l'utilisateur créé lors de la |
|
86 :ref:`ConfigurationPostgres`. |
|
87 |
|
88 Il est important de distinguer ici l'utilisateur utilisé pour accéder au sgbd, |
|
89 et l'utilisateur utilisé pour s'authentifier dans l'application cubicweb. Lorsque |
|
90 l'application cubicweb démarre, elle utilise le login/mot de passe sgdb pour |
|
91 récupérer le schéma et gérer les transactions bas-niveau. En revanche, lorsque |
|
92 `cubicweb-ctl create` vous demande un login/mot de passe `manager` pour cubicweb, il |
|
93 s'agit d'un utilisateur qui sera créé dans l'application `cubicweb` pour pouvoir |
|
94 s'y connecter dans un premier temps et l'administrer. Il sera par la suite possible |
|
95 de créer des utilisateurs différents pour l'application. |
|
96 |
|
97 A l'issue de cette commande, la définition de votre instance se trouve dans |
|
98 *~/etc/cubicweb.d/moninstance/*. Pour la lancer, il suffit de taper :: |
|
99 |
|
100 cubicweb-ctl start -D moninstance |
|
101 |
|
102 L'option `-D` indique le *debug mode* : l'instance ne passe pas en mode serveur |
|
103 et ne se déconnecte pas du terminal, ce qui simplifie le dépannage en cas de non |
|
104 démarrage de l'instance. Vous pouvez ensuite allez voir ce que ça donne en |
|
105 pointant votre navigateur sur l'url `http://localhost:8080` (le n° de port |
|
106 dépend de votre configuration). Pour vous authentifier vous pouvez utiliser le |
|
107 login/mot de passe administrateur que vous avez spécifié lors de la création de |
|
108 l'instance. |
|
109 |
|
110 Pour arrêter l'instance, un Ctrl-C dans la fenêtre où vous l'avez lancé |
|
111 suffit. Si l'option `-D` a été omise, il faut taper :: |
|
112 |
|
113 cubicweb-ctl stop moninstance |
|
114 |
|
115 Voilà, tout est en place pour démarrer le développement du modèle... |
|
116 |
|
117 |
|
118 Utilisation de cubicweb-liveserver |
|
119 ---------------------------------- |
|
120 |
|
121 Afin de tester rapidement un nouveau cube, on peut également |
|
122 utiliser le script `cubicweb-liveserver` qui permet de créer une |
|
123 application en mémoire (utilisant une base de données SQLite par |
|
124 défaut) et la rendre accessible via un serveur web:: |
|
125 |
|
126 cubicweb-ctl live-server moncomposant |
|
127 |
|
128 ou bien, pour utiliser une base de données existante (SQLite ou postgres):: |
|
129 |
|
130 cubicweb-ctl live-server -s monfichier_sources moncomposant |
|
131 |
|