Skip to content
Extraits de code Groupes Projets
README.creole 5,39 ko
Newer Older
  • Learn to ignore specific revisions
  • = Agenda du libre
    
    echarp's avatar
    echarp a validé
    
    
    echarp's avatar
    echarp a validé
    Calendrier d'évènements, proposés par tout un chacun mais nécessitant une
    modération avant d'être affichés.
    
    echarp's avatar
    echarp a validé
    
    
    Cette application est disponible sous la license GNU AGPL version 3 ou supérieure.
    
    Elle est hébergée ici: https://git.framasoft.org/agenda-libre/agenda-libre-ruby
    
    echarp's avatar
    echarp a validé
    et utilisable notamment ici: https://www.agendadulibre.org
    
    echarp's avatar
    echarp a validé
    
    
    echarp's avatar
    echarp a validé
    La technologie repose sur "Ruby on Rails", version 5.2.
    
    echarp's avatar
    echarp a validé
    
    
    echarp's avatar
    echarp a validé
    Il existe d'autres projets équivalents
    
    https://git.framasoft.org/agenda-libre/agenda-libre-php
    
    echarp's avatar
    echarp a validé
    https://bitbucket.org/mlhamel/agendadulibre
    
    
    echarp's avatar
    echarp a validé
    Exemple d'installation pour Debian:
    
    ~ $ apt-get install sqlite3 libsqlite3-dev build-essential git libltdl-dev
    
    ~ $ apt-get install ruby ruby-dev bundler
    
    Siltaar's avatar
    Siltaar a validé
    Dans le cas d'une installation en mode production, dans un environnement comme
    Debian stable Jessie, il faut ajouter les dépôt {{{jessie-updates}}} et
    {{{jessie-backports}}} pour obtenir une version récente de {{{bundler}}}.
    
    Siltaar's avatar
    Siltaar a validé
    Il faut de plus installer les paquets {{{zlib1g-dev}}} et {{{libsqlite3-dev}}}
    
    Siltaar's avatar
    Siltaar a validé
    ou {{{libmysqlclient-dev}}}.
    
    == Code source
    
    Pour installer l'Agenda du libre, vous devrez récupérer le code source à l'aide
    de "git", puis installer les dépendances avec "bundler" (bundler est packagé
    
    Siltaar's avatar
    Siltaar a validé
    dans Debian, mais peut aussi s'installer depuis http://bundler.io, une version
    
    récente de préférence).
    
    echarp's avatar
    echarp a validé
    
    
    echarp's avatar
    echarp a validé
    Par exemple:
    {{{
    
    ~ $ git clone git@git.framasoft.org:agenda-libre/agenda-libre-ruby.git
    
    echarp's avatar
    echarp a validé
    ~ $ cd agenda-du-libre
    
    ~ $ bundle install --path vendor/bundle --without production
    
    echarp's avatar
    echarp a validé
    }}}
    
    echarp's avatar
    echarp a validé
    
    
    Siltaar's avatar
    Siltaar a validé
    Dans le cas d'une installation en mode production, on utilisera plutôt
    
    Siltaar's avatar
    Siltaar a validé
    `--without test developement`.
    
    == Base de données
    
    Siltaar's avatar
    Siltaar a validé
    La base de données peut être "sqlite3", "postgresql" ou "mysql2". Par défaut
    
    echarp's avatar
    echarp a validé
    sqlite3 est configurée, mais vous pouvez la modifier dans le fichier
    `config/database.yml`.
    
    echarp's avatar
    echarp a validé
    
    
    Siltaar's avatar
    Siltaar a validé
    /!\ En pratique, en 2017-03, PostgreSQL server ne parvenait pas à interprêter
    le fichier schema.rb généré automatiquement depuis une base fonctionnelle.
    
    
    === Dans le cas d'une installation MySQL
    
    Siltaar's avatar
    Siltaar a validé
    
    Il convient d'installer d'abord MySQL server sur sa machine :
    {{{
    ~ # apt install mysql-server
    }}}
    
    Il faut alors choisir un mot de passe pour l'utilisateur root, avec lequel on
    créera une nouvelle base pour le projet, ainsi qu'un utilisateur ayant les
    droits sur cette base :
    
    {{{
    ~ # mysql -u root -p
    mysql> CREATE DATABASE '<nouvelle_instance>';
    mysql> CREATE USER '<nouveau_user>' IDENTIFIED BY '<mot-de-passe>';
    mysql> GRANT ALL ON <nouvelle_instance>.* TO '<nouveau_user>'@'localhost';
    
    Siltaar's avatar
    Siltaar a validé
    }}}
    
    Siltaar's avatar
    Siltaar a validé
    ---
    
    echarp's avatar
    echarp a validé
    Mettez en place le schéma comme ceci:
    
    echarp's avatar
    echarp a validé
    {{{
    
    Siltaar's avatar
    Siltaar a validé
    ~ $ bundle exec rake db:setup [RAILS_ENV="production"]
    
    echarp's avatar
    echarp a validé
    }}}
    
    echarp's avatar
    echarp a validé
    
    
    == Lancement
    
    === En développement
    
    Puis lancez rails (avec tests et vérifications de sécurité):
    
    echarp's avatar
    echarp a validé
    {{{
    
    echarp's avatar
    echarp a validé
    }}}
    
    echarp's avatar
    echarp a validé
    
    
    Vous pouvez finalement accéder à l'agenda dans un navigateur à l'URL suivante:
    http://localhost:3000
    
    echarp's avatar
    echarp a validé
    Votre premier modérateur admin est identifié par "admin@example.com", son mot de
    
    passe étant "password".
    
    === En production
    
    
    {{{
    ~ # apt install libapache2-mod-passenger
    
    Siltaar's avatar
    Siltaar a validé
    ~ # vi /etc/apache2/sites-available/nouvelle_instance.conf
    <VirtualHost *:80>
      ServerName DOMAINE.NAME
      DocumentRoot /srv/<nouvelle_instance>/public
      SetEnv DATABASE_URL mysql2://<nouveau_user>@localhost/<nouvelle_instance>
      SetEnv SECRET_KEY_BASE <SECRET>
      SetEnv RAILS_ENV production
      RailsEnv production
      <Directory /srv/<nouvelle_instance>/public>
        Require all granted
      </Directory>
    </VirtualHost>
    ~ # a2ensite /etc/apache2/sites-available/nouvelle_instance.conf
    ~ # /etc/init.d/apache2 reload
    
    == Aide mémoire
    
    echarp's avatar
    echarp a validé
    
    Commande à utiliser en console rails pour créer plusieurs événements:
    {{{
    w = 0
    Event.create(elt.attributes.merge( { start_time: elt.start_time+w.week, end_time: elt.end_time+w.week } )).start_time; w = 1
    }}}
    
    Commande à utiliser pour précompiler les assets avant leur déploiement dans un environnement de production
    {{{
    bundle exec rake assets:precompile RAILS_ENV=assets
    }}}
    
    
    == Mise à jour
    
    echarp's avatar
    echarp a validé
    Pour mettre à jour l'agenda du libre, il faut d'abord aller chercher la version master la plus récente sur le git
    
    upstream (https://git.framasoft.org/agenda-libre/agenda-libre-ruby). Une fois cela fait, il faut y ré-appliquer les
    
    echarp's avatar
    echarp a validé
    changements qui auraient été effectués pour l'environnement donné, quelques conflits sont à prévoir. Le plus courant:
    
    
    {{{
    db/schema.rb: Ignorer les conflits. Prendre la version courante. Ce fichier est mis à jour à chaque migration et représente
    l'état actuel de la base de données sur le serveur courant. Il est recommandé de versioner de fichier, mais à moins d'avoir
    exactement le même type de base de données que les développeurs upstream, il va créer des conflits. Seule la dernière version
    du fichier peut être conservée sur la branche de travail.
    }}}
    
    
    Lors des mises à jour de l'agenda du libre à une version plus récente, les commandes suivantes sont nécessaires:
    
    {{{
    ~ $ bundle install --path vendor/bundle --without production
    ~ $ bundle exec rake db:migrate
    }}}
    
    Puis redémarrer avec:
    
    {{{
    ~ $ bundle exec rails s
    }}}
    
    
    
    https://kiwiirc.com/client/irc.freenode.net/agendadulibre
    
    
    echarp's avatar
    echarp a validé
    {{{
                             °           °           °
                           \ | /       \ | /       \ | /
                             |           |           |
                            ___         ___         ___
                          \     /     \     /     \     /
                             .         \_|_/         .
                                      \  |  /