177 lines
5.5 KiB
Plaintext
177 lines
5.5 KiB
Plaintext
= Agenda du libre
|
||
|
||
Ceci est une application permettant de lister des évènements sur un calendier,
|
||
évènements proposés par tout un chacun mais nécessitant une modération avant
|
||
d'être affichés.
|
||
|
||
Cette application est disponible sous la license AGPL version 3 ou supérieure.
|
||
|
||
Elle est hébergée ici: https://git.framasoft.org/agenda-libre/agenda-libre-ruby
|
||
et visible ici: http://agendadulibre.org
|
||
|
||
La technologie repose sur "Ruby on Rails", version 4 ou supérieure.
|
||
|
||
Il existe aussi des projets équivalents
|
||
https://git.framasoft.org/agenda-libre/agenda-libre-php
|
||
https://bitbucket.org/mlhamel/agendadulibre
|
||
|
||
|
||
== Prérequis
|
||
|
||
Exemple d'installation pour Debian:
|
||
{{{
|
||
~ $ apt-get install sqlite3 libsqlite3-dev build-essential git libltdl-dev
|
||
~ $ apt-get install ruby ruby-dev bundler
|
||
}}}
|
||
|
||
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}}}.
|
||
|
||
Il faut de plus installer les paquets {{{zlib1g-dev}}} et {{{libsqlite3-dev}}}
|
||
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é
|
||
dans Debian, mais peut aussi s'installer depuis http://bundler.io, une version
|
||
récente de préférence).
|
||
|
||
Par exemple:
|
||
{{{
|
||
~ $ git clone git@git.framasoft.org:agenda-libre/agenda-libre-ruby.git
|
||
~ $ cd agenda-du-libre
|
||
~ $ bundle install --path vendor/bundle --without production
|
||
}}}
|
||
|
||
Dans le cas d'une installation en mode production, on utilisera plutôt
|
||
`--without test developement`.
|
||
|
||
|
||
== Base de données
|
||
|
||
La base de données peut être "sqlite3", "postgresql" ou "mysql2". Par défaut
|
||
sqlite3 est configurée, mais vous pouvez la modifier dans le fichier
|
||
`config/database.yml`.
|
||
|
||
/!\ 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
|
||
|
||
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';
|
||
}}}
|
||
|
||
---
|
||
|
||
Mettez en place le schéma comme ceci:
|
||
{{{
|
||
~ $ bundle exec rake db:setup [RAILS_ENV="production"]
|
||
}}}
|
||
|
||
|
||
== Lancement
|
||
|
||
=== En développement
|
||
|
||
Puis lancez rails (avec tests et vérifications de sécurité):
|
||
{{{
|
||
~ $ bundle exec guard
|
||
}}}
|
||
|
||
Vous pouvez finalement accéder à l'agenda dans un navigateur à l'URL suivante:
|
||
http://localhost:3000
|
||
|
||
Votre premier modérateur admin est identifié par "admin@example.com", son mot de
|
||
passe étant "password".
|
||
|
||
|
||
=== En production
|
||
|
||
{{{
|
||
~ # apt install libapache2-mod-passenger
|
||
~ # 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
|
||
|
||
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
|
||
|
||
Pour mettre à jour l'agenda du libre, il faut d'abord aller chercher la version de 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
|
||
changements qui auraient été effectués pour l'environnement donné et 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
|
||
}}}
|
||
|
||
== Discussions
|
||
|
||
https://kiwiirc.com/client/irc.freenode.net/agendadulibre
|
||
|
||
{{{
|
||
° ° °
|
||
\ | / \ | / \ | /
|
||
| | |
|
||
___ ___ ___
|
||
\ / \ / \ /
|
||
. \_|_/ .
|
||
\ | /
|
||
}}}
|