Installer Etherpad


vider une note: supprimer le contenu, aller http://epad.recit.org/ep/admin/padinspector et retirer le slider, ça enlève la possibilité de revenir dans l'historique.


Note: installation ci-dessous est réalisée sur un vserver.

Entretient:
  • supprimer les fichiers logs (dans data)
  • pour jouer avec phpmyadmin, démarrer apache dans le vetherpad et aller au http://epad.recit.org:8080/



script vérification si etherpad fonctionne
#!/bin/bash
service=run-local.sh

if (( $(ps -ef | grep -v grep | grep $service | wc -l) > 0 ))
then
echo "$service is running!!!"
else
/etc/init.d/$service start
fi

#!/bin/bash
service=run-local.sh

if (( $(ps -ef | grep -v grep | grep $service | wc -l) == 0 ))
then
cd /root/etherpad/trunk/etherpad/
sh bin/run-local.sh &
echo "on redemarre etherpad"
fi


Notes migration vers Precise


Le répertoire etherpad contient tout pour rouler sur un autre serveur, il faut juste installer libmysql-java sun-java6-jdk sun-java6-jre sun-java6-bin


Installer la version mst (copie du répertoire etherpad)
apt-get install mysql-server-5.1 mercurial sun-java6-jdk sun-java6-jre sun-java6-bin libmysql-java scala

création BDD etherpad
ajustement fichier config etherpad.localdev-default.properties pour rouler sur port, accès BDD, etc.
démarrer avec sh bin/run-local.sh & (dans au dessus du répertoire bin)

Migration
Création du vserver à partir de vcampus
Installation paquet libmysql-java sun-java6-jdk sun-java6-jre sun-java6-bin
java est nécessaire pour rouler etherpad (scala n'est pas nécessaire, seulement pour comilation je crois).
Copie fichiers /etc hosts hostname resolv.conf apache2 postfix/main.cf
Copie www (pour sql)
Copie du répertoire /root/etherpad
Ajout ces 2 lignes dans /etc/init.d/rc.local (pour démarrage au boot)
cd /root/etherpad/trunk/etherpad/
sh bin/run-local.sh &
Arrêter vetherpad
Déplacer /var/lib/mysql/ vers le nouveau serveur
chown mysql:mysql mysql/ -R
mettre le init dans le /etc/vservers/.../apps
Renommer les vservers et démarrer le nouveau vetherpad
Ne pas démarrer apache au boot
Tester

  • Pour retour: on ramène /var/lib/mysql, on enlève le /etc.../apps/init/style du vserver, on redonneles droits à mysql sur la BDD, on renommer et redémarre.
    • style contient le mot plain



Fichier ibdata trop gros: http://dba.stackexchange.com/questions/16747/mysql-clean-ibdata1




Installation avec source deb <- des notes de tests


Les sources: http://code.google.com/p/etherpad/
Suivre ces étapes: https://wiki.ubuntu.com/Etherpad

Autres références:


Fork:

Site utilisant Etherpad:


Voir pour export: un patch: http://karteek.selfdabba.com/post/301488675/etherpad-opensourced

Pour la compilation des jar

Attention au /etc/hosts, il doit contenir une ligne comme celle-ci:
127.0.0.1 localhost

la commande hostname doit donner le bon nom de machine: etherpad.recit.org

le répertoire /tmp du vserver doit avoir plus de 16Mo d'espace, on change alors le fichier /etc/vservers/nomvserver/fstab pour ajouter des Mo dans le fichier. ON redémarre le vserver.

Après la compilation


Proxypass (retirer le port 9000): pour que le apache entête travaille bien pour ne pas avoir port à mettre le fichier .conf ressemble à ceci:
<VirtualHost 192.168.1.192:80>
  ServerName epad.recit.org
ServerAlias *.epad.recit.org
  ServerAdmin pierres@recitmst.qc.ca
ServerSignature Off 
  ProxyPass / http://192.168.1.198:9000/
	ProxyPassReverse / http://192.168.1.198:9000/
ProxyRequests Off
ProxyPreserveHost on 

	<Directory />
Options FollowSymLinks MultiViews
AllowOverride All
Order allow,deny
Allow from all 
	</Directory>

	# Possible values include: debug, info, notice, warn, error, crit,
	# alert, emerg.
	#LogLevel error

</VirtualHost>



Le fichier de config de etherpad ressemble à ceci (/etc/etherpad.localdev-default.properties)
ajstdlibHome = ../infrastructure/framework-src/modules
appjetHome = ./data/appjet
devMode = false
etherpad.adminPass = unbonmotdepasse
etherpad.fakeProduction = false
etherpad.isProduction = true
etherpad.SQL_JDBC_DRIVER = com.mysql.jdbc.Driver
etherpad.SQL_JDBC_URL = jdbc:mysql://localhost:3306/etherpad
etherpad.SQL_PASSWORD = motpassemysql
etherpad.SQL_USERNAME = utilisateurmysql
listen = 9000
logDir = ./data/logs
modulePath = ./src
transportPrefix = /comet
transportUseWildcardSubdomains = true
useVirtualFileRoot = ./src


Ajouter dans /etc/init.d/rc.local du vserver les lignes suivantes pour que etherpad démarre avec le vserver (le répertoire de etherpad se trouve dans /home/epad):

cd /home/epad/etherpad/trunk/etherpad/
sh bin/run-local.sh &




Compte Pro


http://groups.google.com/group/etherpad-open-source-discuss/browse_thread/thread/aad77dd4c875402d/602656f3ad8b76e9?#602656f3ad8b76e9

Des modifications pour faire fonctionner la version pro
> function getRequestSuperdomain() {
>   var parts = request.domain.split('.');
>   parts.reverse();
>   if (parts[0] == ".") {
>     parts.shift();
>   }
>   return [parts[2],parts[1], parts[0]].join('.');



http://groups.google.com/group/etherpad-open-source-discuss/browse_thread/thread/3d9f264921533285
renderFramed('pro/pro_home.ejs', {
    isEvaluation: licensing.isEvaluation(),
//    evalExpDate: licensing.getLicense().expiresDate,
    account: getSessionProAccount(),
    isPNE: pne_utils.isPNE(),
    pneVersion: pne_utils.getVersionString(),
    livePads: livePads,
    recentPads: recentPads,
    renderRecentPads: renderRecentPads,
    renderLivePads: renderLivePads,
    orgName: r.orgName
  }); 

dans src/etherpad/control/pro_signup_control.js

+    response.redirect('http://'+subdomain+'.epad.recit.org/ep/finish-activation');
+  //  response.redirect('http://'+subdomain+"."+request.host+'/ep/finish-activation'); enleve par pl, cause prob pour la partie pro


 

Sources modifiées


Après avoir une installation fonctionnelle, on peut traduire en utilisant le répertoire /src ci-dessous. Attention, il y a des endroits où j'ai dû entrer l'adresse de mon installation à la dure (epad.recit.org). À modifier donc pour votre installation.


Commande pour la création d'un patch (appliquer mes changements sur un répertoire src original):
diff -burN src src_0.1 >src_patch.diff
patch -p 1 < src_patch.diff (placer le .diff dnas le répertoire src à patcher)

Voici le fichier .diff du répertoire src contenant l'interface à traduire:

Voici le répertoire src que j'utilise, il contient les images traduites, les fichiers traduits pour l'interface. J'ai copié la licence dans ce répertoire, j'y ai mis le .diff de mes modifications afin de respecter la licence apache.


Les fichiers de configuration où epad.recit.org est inscrit à la dure (depuis /etherpad/trunk/etherpad/src/):
  • mains.js
  • etherpad/global.js
  • static/crossdomain.xml
  • etherpad/control/pro_signup_control.js
  • etherpad/pro/pro_utils.js



Fondation Etherpad.org


Les sources de Google ont été modifiées par ce groupe. Voici ce que j'ai pris de ces sources.

Ajout de couleurs


Pour avoir plus de choix de couleurs, 3 fichiers à modifier.

/etherpad/global.js, /static/css/pad2_ejs.css et /templates/pad/pad_body2.ejs

Des diff
diff -burN epad_8couleurs/globals.js epad_32couleurs/globals.js
--- epad_8couleurs/globals.js	2010-03-12 17:44:23.000000000 -0500
+++ epad_32couleurs/globals.js	2010-04-16 07:45:59.000000000 -0400
@@ -19,8 +19,8 @@
 //----------------------------------------------------------------
 
 var COMETPATH = "/comet";
-
-var COLOR_PALETTE = ['#ffc6c6','#ffe2bf','#fffcbf','#cbffb3','#b3fff1','#c6e7ff','#dcccff','#ffd9fb'];
+//var COLOR_PALETTE = ['#ffc6c6','#ffe2bf','#fffcbf','#cbffb3','#b3fff1','#c6e7ff','#dcccff','#ffd9fb'];
+var COLOR_PALETTE = ['#ffc7c7','#fff1c7','#e3ffc7','#c7ffd5','#c7ffff','#c7d5ff','#e3c7ff','#ffc7f1','#ff8f8f','#ffe38f','#c7ff8f','#8fffab','#8fffff','#8fabff','#c78fff','#ff8fe3','#d97979','#d9c179','#a9d979','#79d991','#79d9d9','#7991d9','#a979d9','#d979c1','#d9a9a9','#d9cda9','#c1d9a9','#a9d9b5','#a9d9d9','#a9b5d9','#c1a9d9','#d9a9cd'];
 
 function isProduction() {
   return (appjet.config['etherpad.isProduction'] == "true");
@@ -29,6 +29,8 @@
 var SUPERDOMAINS = {
   'localbox.info': true,
   'localhost': true,
+
+  'epad.recit.org': true,
   'etherpad.com': true
 };
 
diff -burN epad_8couleurs/pad2_ejs.css epad_32couleurs/pad2_ejs.css
--- epad_8couleurs/pad2_ejs.css	2010-03-11 10:14:06.000000000 -0500
+++ epad_32couleurs/pad2_ejs.css	2010-04-16 07:54:14.000000000 -0400
@@ -245,7 +245,7 @@
 #myswatch { width: 100%; height: 100%; background: transparent;/*...initially*/ }
 #mycolorpicker {
   background: url(/static/img/jun09/pad/colorpicker.gif) no-repeat left top;
-  width: 232px; height: 76px;
+  width: 232px; height: 140px;
   position: absolute;
   left: 13px; top: 13px; z-index: 101;
   display: none;/*...initially*/
@@ -258,6 +258,33 @@
 #mycolorpicker .n6 { left: 148px; }
 #mycolorpicker .n7 { left: 175px; }
 #mycolorpicker .n8 { left: 202px; }
+#mycolorpicker .n9  { left: 13px; top: 34px ! important;}
+#mycolorpicker .n10 { left: 40px; top: 34px ! important;}
+#mycolorpicker .n11 { left: 67px; top: 34px ! important;}
+#mycolorpicker .n12 { left: 94px; top: 34px ! important;}
+#mycolorpicker .n13 { left: 121px; top: 34px ! important;}
+#mycolorpicker .n14 { left: 148px; top: 34px ! important;}
+#mycolorpicker .n15 { left: 175px; top: 34px ! important;}
+#mycolorpicker .n16 { left: 202px; top: 34px ! important;}
+
+#mycolorpicker .n17  { left: 13px; top: 56px ! important;}
+#mycolorpicker .n18 { left: 40px; top: 56px ! important;}
+#mycolorpicker .n19 { left: 67px; top: 56px ! important;}
+#mycolorpicker .n20 { left: 94px; top: 56px ! important;}
+#mycolorpicker .n21 { left: 121px; top: 56px ! important;}
+#mycolorpicker .n22 { left: 148px; top: 56px ! important;}
+#mycolorpicker .n23 { left: 175px; top: 56px ! important;}
+#mycolorpicker .n24 { left: 202px; top: 56px ! important;}
+
+#mycolorpicker .n25  { left: 13px; top: 78px ! important;}
+#mycolorpicker .n26 { left: 40px; top: 78px ! important;}
+#mycolorpicker .n27 { left: 67px; top: 78px ! important;}
+#mycolorpicker .n28 { left: 94px; top: 78px ! important;}
+#mycolorpicker .n29 { left: 121px; top: 78px ! important;}
+#mycolorpicker .n30 { left: 148px; top: 78px ! important;}
+#mycolorpicker .n31 { left: 175px; top: 78px ! important;}
+#mycolorpicker .n32 { left: 202px; top: 78px ! important;}
+
 #mycolorpicker .pickerswatchouter {
   border: 1px solid white;
   width: 15px; height: 15px; position: absolute;
@@ -272,10 +299,10 @@
 }
 #mycolorpicker .picked { border: 1px solid #666 !important; }
 #mycolorpicker .picked .pickerswatch { border: 1px solid #666; }
-#mycolorpickersave { position: absolute; left: 14px; top: 42px;
+#mycolorpickersave { position: absolute; left: 14px; top: 102px;
   width: 47px; height: 0; padding-top: 20px; overflow: hidden;
   cursor: pointer; }
-#mycolorpickercancel { position: absolute; left: 87px; top: 42px;
+#mycolorpickercancel { position: absolute; left: 87px; top: 102px;
   width: 44px; height: 0; padding-top: 20px; overflow: hidden;
   cursor: pointer; }
 #myusernameform { margin-left: 35px; }
diff -burN epad_8couleurs/pad_body2.ejs epad_32couleurs/pad_body2.ejs
--- epad_8couleurs/pad_body2.ejs	2010-03-26 16:43:01.000000000 -0400
+++ epad_32couleurs/pad_body2.ejs	2010-04-16 07:48:19.000000000 -0400
@@ -187,7 +187,7 @@
         </div><!-- /savedrevs close -->
       </div>
     </div><!-- /savedrevs-wrapper -->
-    <div id="revision-notifier"><span class="label">Saved:</span> <span class="name">Revision 1</span></div>
+    <div id="revision-notifier"><span class="label">Enregistre:</span> <span class="name">Revision 1</span></div>
     <div id="options-wrapper" class="dbpanel-wrapper">
       <div id="options-panel" class="dbpanel-panel">
         <div class="dbpanel-leftedge"><!-- --></div>
@@ -307,7 +307,8 @@
       </div>
       
       <div id="myuser">
-        <div id="mycolorpicker">
+<div id="mycolorpicker">
+         <div> 
           <div class="pickerswatchouter n1"><div class="pickerswatch"><!-- --></div></div>
           <div class="pickerswatchouter n2"><div class="pickerswatch"><!-- --></div></div>
           <div class="pickerswatchouter n3"><div class="pickerswatch"><!-- --></div></div>
@@ -316,8 +317,35 @@
           <div class="pickerswatchouter n6"><div class="pickerswatch"><!-- --></div></div>
           <div class="pickerswatchouter n7"><div class="pickerswatch"><!-- --></div></div>
           <div class="pickerswatchouter n8"><div class="pickerswatch"><!-- --></div></div>
-          <div id="mycolorpickersave">Save</div>
-          <div id="mycolorpickercancel">Cancel</div>
+	 </div><div>
+           <div class="pickerswatchouter n9"><div class="pickerswatch"><!-- --></div></div>
+           <div class="pickerswatchouter n10"><div class="pickerswatch"><!-- --></div></div>
+           <div class="pickerswatchouter n11"><div class="pickerswatch"><!-- --></div></div>
+           <div class="pickerswatchouter n12"><div class="pickerswatch"><!-- --></div></div>
+           <div class="pickerswatchouter n13"><div class="pickerswatch"><!-- --></div></div>
+           <div class="pickerswatchouter n14"><div class="pickerswatch"><!-- --></div></div>
+           <div class="pickerswatchouter n15"><div class="pickerswatch"><!-- --></div></div>
+           <div class="pickerswatchouter n16"><div class="pickerswatch"><!-- --></div></div>
+         </div><div>
+           <div class="pickerswatchouter n17"><div class="pickerswatch"><!-- --></div></div>
+           <div class="pickerswatchouter n18"><div class="pickerswatch"><!-- --></div></div>
+           <div class="pickerswatchouter n19"><div class="pickerswatch"><!-- --></div></div>
+           <div class="pickerswatchouter n20"><div class="pickerswatch"><!-- --></div></div>
+           <div class="pickerswatchouter n21"><div class="pickerswatch"><!-- --></div></div>
+           <div class="pickerswatchouter n22"><div class="pickerswatch"><!-- --></div></div>
+           <div class="pickerswatchouter n23"><div class="pickerswatch"><!-- --></div></div>
+           <div class="pickerswatchouter n24"><div class="pickerswatch"><!-- --></div></div>
+         </div><div>
+           <div class="pickerswatchouter n25"><div class="pickerswatch"><!-- --></div></div>
+           <div class="pickerswatchouter n26"><div class="pickerswatch"><!-- --></div></div>
+           <div class="pickerswatchouter n27"><div class="pickerswatch"><!-- --></div></div>
+           <div class="pickerswatchouter n28"><div class="pickerswatch"><!-- --></div></div>
+           <div class="pickerswatchouter n29"><div class="pickerswatch"><!-- --></div></div>
+           <div class="pickerswatchouter n30"><div class="pickerswatch"><!-- --></div></div>
+           <div class="pickerswatchouter n31"><div class="pickerswatch"><!-- --></div></div>
+           <div class="pickerswatchouter n32"><div class="pickerswatch"><!-- --></div></div>
+         </div>
+	  <div id="mycolorpickersave">Save</div>          <div id="mycolorpickercancel">Cancel</div>
         </div>
         <div id="myswatchbox"><div id="myswatch"><!-- --></div></div>
         <div id="myusernameform"><input type="text" id="myusernameedit" disabled="disabled" /></div>



Trucs


Pour insérer un epad.recit.org dans une page web, on inscrit le code comme ceci:

<iframe height="800" src="http://epad.recit.org/uVLljSYNLh" width="100%"></iframe>

Où uVLljSYNLh est le nom de la note à insérer.

Un billet pour les trucs: http://recit.org/index.php/2010/04/16/inserer_un_epad_dans_une_page_web

Effacer le clavardage
http://groups.google.com/group/etherpad-open-source-discuss/browse_thread/thread/fb893133ec68605c
  • So to summarize, best method for clearing pad chat is just to change the JSON string from numChatMessages:XX to numChatMessages:0
    • dans la table PAD_META trouver avec le nom de la note numChatMessages en éditant leJSON, et mettre à 0.


Trou de sécurité


http://groups.google.com/group/etherpad-open-source-discuss/browse_thread/thread/05c4bee6ebe27078%20%3E


Optimisation


  • Diminuer le nombre de connexion par note à 16
  • config maxThreads=100 pour diminuer le nombre de processus java démarré (pstree, passé de 300 + à 40)
  • On peut passer le nombre de RAm dans la commande, ex.: ./bin/run-local.sh 128M
  • dans bin/run-local.sh on peut ajuster le nombre de ram de notre machine. 1G par défaut.

Apache travaille très fort (je suis en proxypass vers le port 9000 de l'application etherpad). J'ai ajusté les variables suivantes afin qu'il tienne le coup devant plusieurs dizaines de connections en mpeme temps:
  • KeepAliveTimeout? 5
  • Timeout 15
  • ServerLimit? 1000
  • MinSpareServers? 70
  • MaxSpareServers? 300
  • MaxRequestsPerChild? 50

Avec ces valeurs, j'ai moins de processus (le 121) apache de pris (ça semble se rafrâichir plus rapidement):
init─┬─apache2───121*[apache2]

ce nombre monte en flèche avec plus de 20 personnes sur epad. Mais avec ma dernière config, ça semble moins sensible.


La swap est également moins solicité (200 Mo), ce qui devrait être corrigé avec l'ajout de ram sous peu. A suivre...




Problème mail après déménagement de serveur.

ajouté dans /etc/proprieties de etherpad la ligne smtpServer = 172.30.2.52:25

dans postfix main.cf, ligne mynetworks = 172.30.2.52




Vider une page

dans /static/js/pad_savedrevs.js modifier la ligne

'<div class="sractions"><a class="srview" href="javascript:void(0)" target="_blank">voira</a></div>'+

par

'<div class="sractions"><a class="srview" href="javascript:void(0)" target="_blank">voira</a>| <a class="srrestore" href="javascript:void(0)">restaurer</a> </div>'+




bin/run-local.sh
Note: If you are running a machine or a VM with little RAM, you might encounter this message:
Error occurred during initialization of VM
Could not reserve enough space for object heap

If you see this error when you try to run the web server, it can be resolved by decreasing the size of the needed heap. Edit bin/run-local.sh and change the variable MXRAM from 1G to something smaller (256m should do the trick), then try running bin/run-local.sh again.



retirer l'accès à historique http://epad.recit.org/ep/admin/padinspector
inspecter la note, slider false
Il n'y a pas de commentaire sur cette page. [Afficher commentaires/formulaire]
 
IMP :: RSS :: HTML :: TXT :: Clone :: Historique :: Propriétaire : PierreLachance