Redmine ******* Introduction ============ Redmine est une application web Open Source de gestion complète de projet en mode web, développé en Ruby sur la base du framework Ruby on Rails. Redmine est basé sur des modules et des plugins, chacun pouvant être activé séparément Principales fonctionnalités : * gestion multi-projets, * gestion fine des droits utilisateurs définis par des rôles, * gestion de groupes d'utilisateurs, * rapports de bogues (bugs), demandes d'évolutions, * Wiki multi-projets, * forums multi-projets, * news accessibles par RSS / ATOM, * notifications par courriel (mail), * gestion de feuilles de route, GANTT, calendrier, historique, * intégration avec divers suivis de versions : SVN, CVS, Mercurial, Git, Bazaar & Darcs, * identification possible via LDAP, * multilingue (25 langues disponibles pour la 0.7.0), * support de plusieurs bases de données : MySQL, PostgreSQL ou SQLite. les modules par défaut: * Suivi des demandes * Suivi du temps passé * Publication d'annonces * Publication de documents * Publication de fichiers * Wiki * Dépôt de sources * Forums de discussion * Calendrier * Gantt les points fort, à mon avis de redmine sont: * hautement personnalisable et paramétrable: on peut tout gérer via une interface sobre et efficace (utilisation ou non de module, de plugin) * multiplateforme et multibase * multi-projets et sous projets: tout les projets peuvent être gérés dans un seul outil avec des règles communes * gestion de documents * gestion fine des droits:on génère des membres, des rôles ayant des droits et pour chaque projets on associe membre et rôle. La gestion des rôles va jusqu'à l'autorisation des statuts par rôle (un key user pour avoir le droit de placer le statut nouveau ou clotûré) * gestion propre des rôles et des statuts (il existe des rôles et des statuts lors de l'initialisation de la base mais on peut tout reparamétré) * utilisation de champs personnalisables dans les demandes et les catégories (on peut facilement ajouter des notions à remplir dans les demandes) * suivi des demandes par mail (création de demande par mail aussi) le point faible: même si l'outil est open source toutes créations ou modifications impose de fortes connaissances en: * SGBD * HTML * CSS * Javascript * Ruby * framework Rails cela fait beaucoup Installation ============ Cette installation ce fait sous windows mais elle est transposable sous linux L'architecture est la suivante: - appli redmine - sgbd postgresql - serveur web webrick on télécharge sur le net: - **rubyinstaller-1.8.6-p398.exe** via http://rubyinstaller.org/ - **redmine-1.0.4.zip** via http://rubyforge.org/frs/?group_id=1850 - **postgresql-9.0.1-1-windows.exe** via http://www.postgresql.org/download/windows .. note:: pour l'installation sous linux, le principe reste le même il faut installer ruby, un SGBD puis les différents modules de rails * installation de ruby par rubyinstaller-1.8.6-p398 dans C:\ruby186 * décompression de redmine-1.0.4.zip dans C:/users/faoustin/redmine * modification du fichier C:/users/faoustin/redmine/config/database.yml.example en C:/users/faoustin/redmine/config/database.yml contenant .. code-block:: bash production: adapter: postgresql database: redmine host: localhost username: redmine password: my_password encoding: utf8 schema_search_path: public * installation de postgresql 9.0 via postgresql-9.0.1-1-windows.exe * création d'une base redmine .. code-block:: sql CREATE ROLE redmine LOGIN ENCRYPTED PASSWORD 'my_password' NOINHERIT VALID UNTIL 'infinity'; CREATE DATABASE redmine WITH ENCODING='UTF8' OWNER=redmine; * puis dans une console installation des modules manquants .. code-block:: bash gem install i18n -v=0.4.2 gem install rails -v=2.3.5 -- installe plusieurs module dont rack en version 1.0.1 gem install postgres-pr * dans une console paramétrage de redmine .. code-block:: bash cd C:\users\faoustin\redmine rake generate_session_store set RAILS_ENV=production --création des tables de la base rake db:migrate --intégration des données de base (choisir le mode fr) rake redmine:load_default_data -- lancement du server webrick ruby script/server webrick -e production * consulter redmine sur http://127.0.0.1:3000/, vous pouvez vous connecter en **admin** password **admin** .. note:: il est possible de passer dans la commande gem la notion de proxy, par exemple gem install rails -v=2.3.5 -p http://proxy-ancenis.terrena.fr:8080 .. note:: pour changer le port il faut lancer la commande ruby script/server webrick avec le paramètre *-p 3001* par exemple puis modifier Général\Nom d'hôte et chemin dans la partie configuration de redmine .. warning:: l'environnement development permet surtout de ne pas utiliser de cache pour webrick Au niveau serveur web on peut aussi utiliser **mongrel** qui est écrit en C et ruby On peut aussi associer mongrel +: * apache, dans ce cas apache n'est qu'un proxy qui envoie toute les demandes sur le serveur mongrel. (http://nlakkakula.wordpress.com/2008/11/24/10-steps-for-deploying-your-ruby-on-rails-application-on-a-windows-server-2008-apache-mongrel-cluster/) * nginx , dans ce cas nginx n'est qu'un proxy (http://www.maximegaillard.com/1945-mongrel-et-nginx-deploiement-de-ruby-on-rails.html) liste des plugins * http://www.redmine.org/wiki/redmine/Plugin_list * http://www.redmine.org/plugins passage à la version 1.3 ======================== l'installation est identique mais des versions de softs changent: * ruby 1.8.7 http://rubyforge.org/frs/download.php/72085/rubyinstaller-1.8.7-p302.exe puis :: gem install rails -v=2.3.14 gem install i18n -v=0.4.2 gem install rack -v=1.1.1 or gem install rack -v=1.1.2 gem install postgres-pr installation de redmine en tant que service =========================================== Il est possible sous windows *XP* de créer un service windows qui va lancer le server webrick de votre application. dans notre cas: * ruby est installé içi C:/Ruby187 * redmine est installé dans D:/redmine Pour cela: * télécharger le ressource kit qui se trouve à cette adresse http://www.microsoft.com/downloads/details.aspx?familyid=9d467a69-57ff-4ae7-96ee-b18c4790cffd&displaylang=en * créer le service redmine .. code-block:: bash "C:/Program Files/Windows Resource Kits/Tools/"Instsrv.exe redmine "C:/Program Files/Windows Resource Kits/Tools/srvany.exe" * modifier la clé de registre "HKEY_LOCAL_MACHINE/SYSTEM/ControlSet001/Services/redmine" .. figure:: data/20101216_1.jpg .. figure:: data/20101216_2.jpg * créer des dépendances avec d'autres services si besoin (ex le service de la base de donnée) .. figure:: data/20101228_1.jpg * lancer le service .. figure:: data/20101216_3.jpg * arrêt / lancement des services en ligne de commande * créer le service redmine .. code-block:: bash Net stop redmine Net start redmine .. note:: le changement de theme et l'utilisation de prism (mozilla) permet d'avoir l'aspect d'une application standalone .. warning:: il est possible de suivre en tant réel les logs du service en fessant .. code-block:: bash tail -f log\production.log installation de redmine sous debian6 ==================================== Comme souvent cela est plus facile et plus rapide. Nous allons installer Redmine avec un serveur apache pour cela: .. code-block:: bash apt-get install vim postgresql apt-get install apache2 libapache2-mod-passenger apt-get install redmine redmine-pgsql librmagick-ruby .. note:: lors de l'installation de redmine laisser apt créer et configurer la base postgresql Nous allons configurer apache .. code-block:: bash cp /usr/share/doc/redmine/examples/apache2-passenger-alias.conf /etc/apache2/sites-available/redmine.conf vim /etc/apache2/sites-available/redmine.conf modifier le fichier /etc/apache2/sites-available/redmine ainsi * remplacer "VirtualHost localhost" par `"VirtualHost *:80"` * décommenter Servername pour indiquer par exemple ServerName myservdeb02.myprop.fr On vérifie les hôtes apache actuellement activé: .. code-block:: bash root@vps102:~# ls -la /etc/apache2/sites-enabled/ total 8 drwxr-xr-x 2 root root 4096 Aug 8 14:09 . drwxr-xr-x 7 root root 4096 Aug 8 14:09 .. lrwxrwxrwx 1 root root 26 Aug 8 14:09 000-default -> ../sites-available/default on voit que default est actuellement activer, il faut donc le désactiver et activer redmine, activer le module rewrite et relancer apache .. code-block:: bash a2dissite default a2ensite redmine. a2enmod rewrite /etc/init.d/apache2 reload et voila il suffit maintenant de ce connecter sur http://myservdeb02.myprop.fr/redmine !!! .. note:: la config de redmine est sur /etc/redmine/default/database.yml installation de la dernière version de redmine ============================================== test réalisé sous Debian7.4 :: apt-get install postgresql postgresql-server-dev-all apache2 subversion rake ruby-dev rubygems librmagick-ruby libopenssl-ruby libpgsql-ruby libapache2-mod-passenger imagemagick libmagickwand-dev libxslt-dev libxml2-dev gem install -v=3.2.13 rails gem install -v=2.35.1 selenium-webdriver gem install rmagick gem install -v=2.0.2 jquery-rails gem install -v=1.0.9 coderay gem install -v=1.5.0 fastercsv gem install -v=3.0.0 builder gem install -v=0.3.1 net-ldap gem install -v=2.3.0 ruby-openid gem install rack-openid gem install pg gem install yard gem install -v=3.3.2 shoulda gem install redcarpet gem install -v=0.13.3 mocha gem install -v=2.0.0 capybara gem install -v=1.5.9 nokogiri création de la base postgresql :: su postgres psql postgres=# CREATE ROLE redmine LOGIN ENCRYPTED PASSWORD 'redmine' NOINHERIT VALID UNTIL 'infinity'; postgres=# CREATE DATABASE redmine WITH ENCODING='UTF8' OWNER=redmine TEMPLATE template0; postgres=# \q exit modifier /etc/postgresql/9.1/main/postgresql.conf pour listen '*' et port 5432 :: cd /tmp svn co http://redmine.rubyforge.org/svn/branches/2.3-stable redmine-2.3 mv redmine-2.3/ /var/lib/redmine cd /var/lib/redmine :: echo "production: adapter: postgresql database: redmine host: localhost port: username: redmine password: redmine encoding: utf8 schema_search_path: public" > config/database.yml :: bundle install --without test production rake generate_secret_token RAILS_ENV=production rake db:migrate RAILS_ENV=production rake redmine:load_default_data ln -s /var/lib/redmine/public /var/www/redmine chown -R www-data:www-data /var/www/redmine chmod -R 777 files log tmp public/plugin_assets echo "RailsBaseURI /redmine" > /etc/apache2/sites-available/redmine a2ensite redmine /etc/init.d/apache2 restart installation de l'envoi des emails ================================== .. code-block:: bash cd /etc/redmine/default cp /usr/share/redmine/config/email.yml.example . mv email.yml.example email.yml vi email.yml /etc/init.d/apache2 restart on doit trouver dans email.yml par exemple :: production: delivery_method: :smtp smtp_settings: address: srvxxxx1 port: 25 domain: myprop-group.com authentication: :login user_name: "informatiquepz" password: "informatique" intégration ldap ================ .. figure:: data/20120628_01.png installation d'un plugin ======================== redmine_wiki_notes ------------------ juste décompresser l'archive et l'installer dans le repertoire plugin http://www.github.com/dseifert/redmine_wiki_notes et ajouter dans wiki_syntax.html :: Wiki Note Image{{note(text)}} Image{{important(text)}} Image{{warning(text)}} Image{{tip(text)}} todo ---- Nous allons installer un plugin qui fait la gestion de todo * télécharger et décompresser la plugin à l'url http://www.redmine.org/boards/3/topics/4070 (prendre la branche 'master') * renommer le repertoire du plugin en 'redmine_todos_plugin' * arreter redmine (ex sous windows) .. code-block:: bash net stop redmine * sauvegarder votre base de donnée (ici la base ce nomme redmine) .. code-block:: bash pg_dump redmine > fichier_de_sortie * placer le répertoire 'redmine_todos_plugin' dans 'vendor\plugins' * lancer dans une console à la racine de votre projet redmine .. code-block:: bash rake db:migrate_plugins RAILS_ENV=production * redémarrer redmine .. code-block:: bash net start redmine * connecter vous en admin et allez voir si le plugin est bien présent + paramètres utilisateurs si besoin Graphviz -------- Il est possible d'ajouter un plugin qui permet de créer des graphiques **graphviz** à la voler * télécharger et installer graphviz depuis http://graphviz.org/ * ajouter dans votre path le répertoire d'installation des binaires de graphviz (pour windows uniquement) * télécharger et décompresser la plugin à l'url http://www.assembla.com/wiki/show/mochaco-public/Mochaco_Graphviz_plugin * arreter redmine (ex sous windows) .. code-block:: bash net stop redmine * sauvegarder votre base de donnée (ici la base ce nomme redmine) .. code-block:: bash pg_dump redmine > fichier_de_sortie * placer le répertoire 'mochaco_graphviz' dans 'vendor\plugins' .. note:: il n'est pas utile pour ce plugin de lancer un db:migrate_plugins car le plugin n'a pas d'impact sur la base * redémarrer redmine .. code-block:: bash net start redmine * connecter vous en admin et allez voir si le plugin est bien présent + paramètres .. figure:: data/20110107_5.jpg il suffit par la suite d'utiliser la macro graphviz ainsi .. code-block:: bash {{graphviz(dot, digraph sample{ a -> b -> c; b -> d; a [label="URL link", URL="http://www.redmine.org"]; b [label="Wiki link", URL="[[WikiSamplePage]]"]; } )}} Mise en place fonctionnelle =========================== Mon expérience me permet de mettre en avant une démarche d'installation * n'autoriser qu'un accès à redmine qu'avec une authentification obligatoire * définir les rôles et leurs droits * définir les différents statuts d'une demande d'évo (ex demande / analyse / dev / test info / test utilisateur / clos / supprimé) * définir les champs à ajouter pour les demandes * qu'avons nous besoins pour résoudre une demande de modification et à quel niveau * quelle donnée pour la supervision (ex site, demandeur, ...) * identification des reports * définir les champs à ajouter pour les projets (ex enveloppe budgétaire) * créer les projets et sous projets (par défaut pour moi personne ne peut créer de projet hors mis l'admin, un chef de projet peut créer des sous projet) * créer membres et les lier aux projets avec leurs rôles respectifs Ajout de statistique ==================== Il est souvent intéressant d'avoir sur la page d’accueil de redmine (la page welcome) des infos de statistique comme: * nombre de ticket ouvert/fermé/encours pour une période de temps * répartition des tickets par projet * répartition des tickets par contributeur * ... Il existe des plugins qui permettent de faire des graphiques mais je les trouve lourd et souvent pas adapté à une visualisation rapide. Il est possible par contre de modifier la page welcome en y intégrant des graphiques qui seront calculés régulièrement via un crontab et l'utilisation open-flash-chart exemple de fichier python permettant de générer des graphiques pyofc.py .. code-block:: python version = '0.1' author = 'Frederic Aoustin' description = 'generate data for open flash chart' class Chart: def __init__(self, file, cursor): try: self._desc = cursor.description self._data = cursor.fetchall() self._file = open(file,'w') except Exception as e: raise Exception, 'Error in chart, %s' % e def generate(self): pass class PieChart(Chart): """cursor: | |title| |lb1|val1 | |lb2|val2 | |lb3|val3 | """ txt = """&bg_colour=#FDFDFD& &pie=60,#505050,{font-size: 12px; color: #404040;}& &values=%(values)s& &pie_labels=%(labels)s& &colours=#5E83BF,#C11B01,#D2D2FB,#B0C101,#d01f3c,#356aa0,#C79810,#80a033,#9933CC,#CC3399& """ def __init__(self, file, cursor): Chart.__init__(self, file, cursor) def generate(self): id = {} id['labels'] = ','.join([str(item[0]) for item in self._data]) id['values'] = ','.join([str(item[1]) for item in self._data]) self._file.write(self.txt % id) self._file.close() class BarSketchChart(Chart): """cursor: | |y1 |y2 | |lb1|val1|val4| |lb2|val2|val5| |lb3|val3|val6| """ txt = """&x_label_style=11,#303030,2& &y_label_style=11,#303030& &y_ticks=0,10,1& &x_labels=%(labels)s& &y_min=0& &y_max=%(max_value)s& &bg_colour=#FDFDFD& &x_grid_colour=#FDFDFD& &y_grid_colour=#FDFDFD& """ txt2 = """&bar_sketch%(cnt)s=55,6,%(color)s,#000000,%(name)s,10& &values%(cnt)s=%(values)s& """ color = ["#5E83BF","#9933CC","#80a033","#C11B01","#CC3399","#D2D2FB","#B0C101","#d01f3c","#356aa0","#C79810","#80a033","#9933CC","#CC3399"] def __init__(self, file, cursor): Chart.__init__(self, file, cursor) def generate(self): id = {} id['labels'] = ','.join([str(item[0]) for item in self._data]) ln = len(self._desc)-1 m = [] for i in self._data: for j in i[1:]: m.append(j) id['max_value'] = max(m) st = self.txt % id k=1 for i in range(1,ln+1): id = {} id['values'] = ','.join([str(item[i]) for item in self._data]) id['name'] = self._desc[i][0] id['color'] = self.color[i] id['max_value'] = max(m) if k == 1: id['cnt'] = '' else: id['cnt']='_%s' % k st = st + self.txt2 % id k = k+1 self._file.write(st) self._file.close() class BarGlassChart(BarSketchChart): """cursor: | |y1 |y2 | |lb1|val1|val4| |lb2|val2|val5| |lb3|val3|val6| """ txt2 = """&bar_glass%(cnt)s=55,%(color)s,,%(name)s,10& &values%(cnt)s=%(values)s& """ def __init__(self, file, cursor): BarSketchChart.__init__(self, file, cursor) class LineHollowChart(BarSketchChart): """cursor: | |y1 |y2 | |lb1|val1|val4| |lb2|val2|val5| |lb3|val3|val6| """ txt2 = """&line_hollow%(cnt)s=2,%(color)s,%(name)s,10,4& &values%(cnt)s=%(values)s& """ def __init__(self, file, cursor): BarSketchChart.__init__(self, file, cursor) class AreaHollowChart(BarSketchChart): """cursor: | |y1 |y2 | |lb1|val1|val4| |lb2|val2|val5| |lb3|val3|val6| """ txt2 = """&area_hollow%(cnt)s=2,3,25,%(color)s,%(name)s,10,%(color)s& &values%(cnt)s=%(values)s& """ def __init__(self, file, cursor): BarSketchChart.__init__(self, file, cursor) redminegraph.py (faire un sh pour le mettre dans un crontab) .. code-block:: python import psycopg2 import pyofc link = {'query1':{ 'con' : "dbname='redmine_default' host='127.0.0.1' port=5432 user='postgres' password='postgres'", 'query':"""SELECT MOIS, CREATED , TERMINATED, (SELECT SUM(B.CREATED) FROM ZZ_SYNTHESE_MOIS AS B WHERE B.MOIS <= A.MOIS) - (SELECT SUM(B.TERMINATED) FROM ZZ_SYNTHESE_MOIS AS B WHERE B.MOIS <= A.MOIS) AS OPEN FROM ZZ_SYNTHESE_MOIS AS A """, 'chart':'LineHollowChart', 'file':'/usr/share/redmine/public/graph1.txt' }, 'query2':{ 'con' : "dbname='redmine_default' host='127.0.0.1' port=5432 user='postgres' password='postgres'", 'query':""" SELECT WEEK, CREATED , TERMINATED, (SELECT SUM(B.CREATED) FROM ZZ_SYNTHESE_WEEK AS B WHERE B.WEEK <= A.WEEK) - (SELECT SUM(B.TERMINATED) FROM ZZ_SYNTHESE_WEEK AS B WHERE B.WEEK <= A.WEEK) AS OPEN FROM ZZ_SYNTHESE_WEEK AS A""", 'chart':'LineHollowChart', 'file':'/usr/share/redmine/public/graph2.txt' }, 'query3':{ 'con' : "dbname='redmine_default' host='127.0.0.1' port=5432 user='postgres' password='postgres'", 'query':"""select * from (select projects.name AS PROJECT, count(*) *100 / (select count(*) from issues where to_char(issues.created_on, 'YYYY/WW') > to_char(current_timestamp - interval '12 weeks', 'YYYY/WW') )AS CREATED from issues, projects WHERE issues.project_id = projects.id and to_char(issues.created_on, 'YYYY/WW') > to_char(current_timestamp - interval '12 weeks', 'YYYY/WW') group by projects.name) as A where CREATED >0""", 'chart':'PieChart', 'file':'/usr/share/redmine/public/graph3.txt' }, 'query4':{ 'con' : "dbname='redmine_default' host='127.0.0.1' port=5432 user='postgres' password='postgres'", 'query':"""select * from (select projects.name AS PROJECT, count(*) *100 / (select count(*) from issues where to_char(issues.created_on, 'YYYY/MM') > to_char(current_timestamp - interval '12 months', 'YYYY/MM') )AS CREATED from issues, projects WHERE issues.project_id = projects.id and to_char(issues.created_on, 'YYYY/MM') > to_char(current_timestamp - interval '12 months', 'YYYY/MM') group by projects.name) as A where CREATED > 0""", 'chart':'PieChart', 'file':'/usr/share/redmine/public/graph4.txt' }, } for i in link.keys(): connect = psycopg2.connect(link[i]['con']) cursor = connect.cursor() cursor.execute(link[i]['query']) if link[i]['chart']=='PieChart': pyofc.PieChart(link[i]['file'],cursor).generate() if link[i]['chart']=='BarSketchChart': pyofc.BarSketchChart(link[i]['file'],cursor).generate() if link[i]['chart']=='BarGlassChart': pyofc.BarGlassChart(link[i]['file'],cursor).generate() if link[i]['chart']=='LineHollowChart': pyofc.LineHollowChart(link[i]['file'],cursor).generate() if link[i]['chart']=='AreaHollowChart': pyofc.AreaHollowChart(link[i]['file'],cursor).generate() cursor.close() connect.close() création des vues dans redmine .. code-block:: sql CREATE VIEW ZZ_SYNTHESE_WEEK (WEEK,CREATED, TERMINATED ) AS SELECT WEEK, SUM(CREATED) AS CREATED , SUM(TERMINATED) AS TERMINATED FROM( select to_char(created_on, 'YYYY/WW') AS WEEK, count(*) AS CREATED, 0 AS TERMINATED from issues WHERE to_char(created_on, 'YYYY/WW') > to_char(current_timestamp - interval '12 weeks', 'YYYY/WW') group by WEEK union select to_char(updated_on, 'YYYY/WW') AS WEEK, 0 AS CREATED, count(*) AS TERMINATED from issues, issue_statuses where status_id= issue_statuses.id and issue_statuses.is_closed = TRUE and to_char(updated_on, 'YYYY/WW') > to_char(current_timestamp - interval '12 weeks', 'YYYY/WW') group by WEEK) AS A GROUP BY WEEK ORDER BY WEEK; CREATE VIEW ZZ_SYNTHESE_MOIS (MOIS,CREATED, TERMINATED ) AS SELECT MOIS, SUM(CREATED) AS CREATED , SUM(TERMINATED) AS TERMINATED FROM( select to_char(created_on, 'YYYY/MM') AS MOIS, count(*) AS CREATED, 0 AS TERMINATED FROM issues WHERE to_char(created_on, 'YYYY/MM') > to_char(current_timestamp - interval '12 months', 'YYYY/MM') group by MOIS union select to_char(updated_on, 'YYYY/MM') AS MOIS, 0 AS CREATED, count(*) AS TERMINATED from issues, issue_statuses where status_id= issue_statuses.id and issue_statuses.is_closed = TRUE and to_char(updated_on, 'YYYY/MM') > to_char(current_timestamp - interval '12 months', 'YYYY/MM') group by MOIS) AS A GROUP BY MOIS ORDER BY MOIS; modification de welcome\index.rhtml ::

sur les 12 dernieres semaines
Sur les 12 derniers mois
<% content_for :header_tags do %> <%= auto_discovery_link_tag(:atom, {:controller => 'news', :action => 'index', :key => User.current.rss_key, :format => 'atom'}, :title => "#{Setting.app_title}: #{l(:label_news_latest)}") %> <%= auto_discovery_link_tag(:atom, {:controller => 'projects', :action => 'activity', :key => User.current.rss_key, :format => 'atom'}, :title => "#{Setting.app_title}: #{l(:label_activity)}") %> <% end %> <% content_for :header_tags do %> <%= auto_discovery_link_tag(:atom, {:controller => 'news', :action => 'index', :key => User.current.rss_key, :format => 'atom'}, :title => "#{Setting.app_title}: #{l(:label_news_latest)}") %> <%= auto_discovery_link_tag(:atom, {:controller => 'projects', :action => 'activity', :key => User.current.rss_key, :format => 'atom'}, :title => "#{Setting.app_title}: #{l(:label_activity)}") %> <% end %> sauvegarde ========== Il faut sauvegarder la base, le code redmine mais aussi les fichiers joints lors de l'utilisation, et les envoyer sur un autre serveur Dans cette exemple on envoie la sauvegarde sur un serveur zrvpzdev (serveur windows) qui possède un dossier partagé nommé REDMINE :: su - postgres -c "pg_dump redmine_default" > redmine_default.sql tar -cjf redmine_db.tar.gz redmine_default.sql tar -cjf redmine_varlib.tar.gz /var/lib/redmine tar -cjf redmine_usrshare.tar.gz /usr/share/redmine smbclient //myservdev/REDMINE -U administrateur%Numeid@1525$ -c 'put redmine_db.tar.gz' smbclient //myservdev/REDMINE -U administrateur%Numeid@1525$ -c 'put redmine_varlib.tar.gz' smbclient //myservdev/REDMINE -U administrateur%Numeid@1525$ -c 'put redmine_usrshare.tar.gz' su - postgres -c "vacuumdb --full --analyze redmine_default" .. note:: si vous êtes dans un domaine il faut modifier le fichier /etc/samba/smb.conf pour mettre workgroup=myprop par exemple reste à faire ============= * installé redmine avec apache sous windows * optimiser l'utilisation de postgresql + sauvegarde automatique * voir les plugins qui manque (stat + todolist) * integration d'un outil de design * modification en masse * création d'une page mes activités (multi-projet) avec filtre (projet / user/ date) todolist * generation de rss * rôle sur la validation des taches d'autres (valider les tâches des autres) * validation des taches doit entrainer des "maj" dans la demande * filtre dans les taches (projet assigné) * design * suppression du choix de la demande