doc/book/en/03-02-create-instance.en.txt
changeset 98 f756ead5746a
parent 93 9c919a47e140
child 106 fa179de1a787
equal deleted inserted replaced
96:c1d04b2fa8c6 98:f756ead5746a
     1 .. -*- coding: utf-8 -*-
     1 .. -*- coding: utf-8 -*-
     2 
     2 
     3 ===================================
     3 ===============================
     4 Creation de votre premiere instance
     4 Creation of your first instance
     5 ===================================
     5 ===============================
       
     6 
       
     7 What is an instance?
       
     8 ====================
       
     9 
       
    10 A `CubicWeb` instance is a directory in ``~/etc/cubicweb.d``
       
    11 which enables us to run a web application. An instance is based on
       
    12 one or more cubes.
       
    13 
       
    14 An instance is a container that refers to cubes and configuration 
       
    15 parameters for your web application.
       
    16 
       
    17 We recommand not to define schema, entities or views in the instance
       
    18 file system itself but in the cube, in order to maintain re-usability of
       
    19 entities and their views. We strongly recommand to develop cubes which
       
    20 could be used in other instances (modular approach).
     6 
    21 
     7 
    22 
     8 Qu'est-ce qu'une instance?
    23 What is a cube?
     9 ==========================
    24 ===============
    10 
    25 
    11 Une instance CubicWeb consiste en un dossier situe dans ``~/etc/cubicweb.d``
    26 A cube defines entities, their views, their schems and workflows
    12 qui permettra de lancer une application web. Une instance est cree a partir
    27 in an independant directory located in ``/path/to/forest/cubicweb/cubes/``.
    13 d'un ou plusieurs cubes.
       
    14 
    28 
    15 Nous recommandons de ne pas definir de schema, entites ou vues dans l'instance 
    29 When an instance is created, you list one or more cubes that your instance
    16 meme si cela est possible dans un but de re-utilisabilite des entities et de leurs
    30 will use. Use a cube means having the entities defined in your cube's schema
    17 vues. Nous conseillons plutot de developper des cubes qui pourront par la suite
    31 available in your instance as well as their views and workflows.
    18 etre utilises dans d'autres instances (approche modulaire).
       
    19 
    32 
    20 L'instance n'est qu'un conteneur referrant a des cubes et a des parametres
    33 .. note::
    21 des configuration de l'application web.
    34    The commands used below are more detailled in the section dedicated to 
    22 
    35    :ref:`cubicweb-ctl`.
    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 
    36 
    34 
    37 
    35 .. note::
    38 Create a cube
    36    Les commandes utilisees ci-apres sont detaillees dans la section
    39 =============
    37    dediee a :ref:`cubicweb-ctl`.
       
    38 
    40 
    39 
    41 Let's start by creating the cube environment in which we will develop ::
    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 
    42 
    46   cd ~/hg
    43   cd ~/hg
    47 
    44 
    48   cubicweb-ctl newtemplate moncube
    45   cubicweb-ctl newcube mycube
    49 
    46 
    50   # répondre aux questions
    47   # answer questions 
    51   hg init moncube
    48   hg init moncube
    52   cd moncube
    49   cd mycube
    53   hg add .
    50   hg add .
    54   hg ci
    51   hg ci
    55 
    52 
    56 A partir de là si tout va bien, votre cube devrait être affiché par
    53 If all went well, you should see the cube you just create in the list
    57 `cubicweb-ctl list` dans la section *Available components*, si ce n'est pas le cas
    54 returned by `cubicweb-ctl list` in the section *Available components*,
    58 revoir la section :ref:`ConfigurationEnv`.
    55 and if it is not the case please refer to :ref:`ConfigurationEnv`.
       
    56 
       
    57 To use a cube, you have to list it in the variable ``__use__``
       
    58 of the file ``__pkginfo__.py`` of the instance.
       
    59 This variable is used for the instance packaging (dependencies
       
    60 handled by system utility tools such as APT) and the usable cubes
       
    61 at the time the base is created (import_erschema('MyCube') will
       
    62 not properly work otherwise).
       
    63 
       
    64 Instance creation
       
    65 =================
       
    66 
       
    67 Now that we created our cube, we can create an instance to view our
       
    68 application in a web browser. To do so we will use a `all-in-on` 
       
    69 configuration to simplify things ::
       
    70 
       
    71   cubicweb-ctl create -c all-in-one mycube myinstance
       
    72 
       
    73 .. note::
       
    74   Please note that we created a new cube for a demo purpose but
       
    75   you could have use an existing cube available in our standard library
       
    76   such as blog or person by example.
       
    77 
       
    78 A serie of questions will be prompted to you, the default answer is usually
       
    79 sufficient. You can anyway modify the configuration later on by editing
       
    80 configuration files. When a user/psswd is requested to access the database
       
    81 please use the login you create at the time you configured the database
       
    82 (:ref:`ConfigurationPostgres`).
       
    83 
       
    84 It is important to distinguish here the user used to access the database and
       
    85 the user used to login to the cubicweb application. When a `CubicWeb` application
       
    86 starts, it uses the login/psswd for the database to get the schema and handle
       
    87 low transaction [FIXME - bas niveau]. But, when ``cubicweb-ctl create`` asks for
       
    88 a manager login/psswd of `CubicWeb`, it refers to an application user you will
       
    89 use during the development to administrate your web application. It will be 
       
    90 possible, later on, to create others users for your final web application.
       
    91 
       
    92 When this command is completed, the definition of your instance is
       
    93 located in *~/etc/cubicweb.d/moninstance/*. To launch it, you just type ::
       
    94 
       
    95   cubicweb-ctl start -D myinstance
       
    96 
       
    97 The option `-D` specify the *debug mode* : the instance is not running in
       
    98 server mode and does not disconnect from the termnial, which simplifies debugging
       
    99 in case the instance is not properly launched. You can see how it looks by
       
   100 visiting the URL `http://localhost:8080` (the port number depends of your 
       
   101 configuration). To login, please use the cubicweb administrator login/psswd you 
       
   102 defined when you created the instance.
       
   103 
       
   104 To shutdown the instance, Crtl-C in the terminal window is enough.
       
   105 If you did not use the option `-D`, then type ::
       
   106 
       
   107   cubicweb-ctl stop myinstance
       
   108 
       
   109 This is it! All is settled down to start developping your data model...
    59 
   110 
    60 
   111 
    61 Pour utiliser un cube, il faut le mentionner dans la variable
   112 Usage of `cubicweb-liveserver`
    62 __use__ du fichier __pkginfo__ de l'application. Cette variable
   113 ------------------------------
    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 
   114 
    68 Création d'une instance de développement
   115 To quickly test a new cube, you can also use the script `cubicweb-liveserver`
    69 ========================================
   116 which allows to create an application in memory (use of SQLite database by 
       
   117 default) and make it accessible through a web server ::
    70 
   118 
    71 Maintenant que nous avons notre squelette de modèle, on peut en créer une
   119   cubicweb-ctl live-server mycube
    72 instance afin de voir ce que tout ça donne dans un simple navigateur web.
       
    73 Nous allons utiliser une configuration `all-in-one` afin de simplifier les
       
    74 choses ::
       
    75 
   120 
    76   cubicweb-ctl create -c all-in-one moncube moninstance
   121 or by using an existing database (SQLite or Postgres)::
    77 
   122 
    78 Une série de questions vont être posées, la réponse par défaut est généralement
   123   cubicweb-ctl live-server -s myfile_sources mycube
    79 suffisante. Vous pourrez de toute façon modifier la configuration par la suite
       
    80 en éditant les fichiers générés. Lorsqu'un login/mot de passe d'accès au sgbd
       
    81 vous est demandé, il est recommandé d'utiliser l'utilisateur créé lors de la
       
    82 :ref:`ConfigurationPostgres`.
       
    83 
   124 
    84 Il est important de distinguer ici l'utilisateur utilisé pour accéder au sgbd,
       
    85 et l'utilisateur utilisé pour s'authentifier dans l'application cubicweb. Lorsque
       
    86 l'application cubicweb démarre, elle utilise le login/mot de passe sgdb pour
       
    87 récupérer le schéma et gérer les transactions bas-niveau. En revanche, lorsque
       
    88 `cubicweb-ctl create` vous demande un login/mot de passe `manager` pour cubicweb, il
       
    89 s'agit d'un utilisateur qui sera créé dans l'application `cubicweb` pour pouvoir
       
    90 s'y connecter dans un premier temps et l'administrer. Il sera par la suite possible
       
    91 de créer des utilisateurs différents pour l'application.
       
    92 
       
    93 A l'issue de cette commande, la définition de votre instance se trouve dans
       
    94 *~/etc/cubicweb.d/moninstance/*. Pour la lancer, il suffit de taper ::
       
    95 
       
    96   cubicweb-ctl start -D moninstance
       
    97 
       
    98 L'option `-D` indique le *debug mode* : l'instance ne passe pas en mode serveur
       
    99 et ne se déconnecte pas du terminal, ce qui simplifie le dépannage en cas de non
       
   100 démarrage de l'instance. Vous pouvez ensuite allez voir ce que ça donne en
       
   101 pointant votre navigateur sur l'url `http://localhost:8080` (le n° de port
       
   102 dépend de votre configuration). Pour vous authentifier vous pouvez utiliser le
       
   103 login/mot de passe administrateur que vous avez spécifié lors de la création de
       
   104 l'instance.
       
   105 
       
   106 Pour arrêter l'instance, un Ctrl-C dans la fenêtre où vous l'avez lancé
       
   107 suffit. Si l'option `-D` a été omise, il faut taper ::
       
   108 
       
   109   cubicweb-ctl stop moninstance
       
   110 
       
   111 Voilà, tout est en place pour démarrer le développement du modèle...
       
   112 
       
   113 
       
   114 Utilisation de cubicweb-liveserver
       
   115 ----------------------------------
       
   116 
       
   117 Afin de tester rapidement un nouveau cube, on peut également
       
   118 utiliser le script `cubicweb-liveserver` qui permet de créer une
       
   119 application en mémoire (utilisant une base de données SQLite par
       
   120 défaut) et la rendre accessible via un serveur web::
       
   121 
       
   122   cubicweb-ctl live-server moncomposant
       
   123 
       
   124 ou bien, pour utiliser une base de données existante (SQLite ou postgres)::
       
   125 
       
   126   cubicweb-ctl live-server -s monfichier_sources moncomposant
       
   127