Installer Etherpad
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/
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)
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
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)
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
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.cfCopie 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 vetherpadsh bin/run-local.sh &
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 du vserver, on renommer et redémarre.
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:
http://ielashi.com/?p=96
https://wiki.ubuntu.com/Etherpad
ttp://code.google.com/p/etherpad/wiki/Instructions
http://pauleira.com/13/installing-etherpad/
http://michaelwenzl.de/dw/it:etherpad
http://groups.google.com/group/etherpad-open-source-discuss
http://karteek.selfdabba.com/post/301488675/etherpad-opensourced
http://matthew.mceachen.us/blog/howto-install-etherpad-on-ubuntu-9-10-811.html
http://www.jordanhollinger.com/2010/02/13/deploying-your-own-etherpad-on-ubuntu
http://www.webdevonlinux.fr/2010/03/installer-etherpad-sur-votre-serveur/
http://matthew.mceachen.us/blog/howto-install-etherpad-on-ubuntu-9-10-811.html
https://wiki.ubuntu.com/Etherpad
ttp://code.google.com/p/etherpad/wiki/Instructions
http://pauleira.com/13/installing-etherpad/
http://michaelwenzl.de/dw/it:etherpad
http://groups.google.com/group/etherpad-open-source-discuss
http://karteek.selfdabba.com/post/301488675/etherpad-opensourced
http://matthew.mceachen.us/blog/howto-install-etherpad-on-ubuntu-9-10-811.html
http://www.jordanhollinger.com/2010/02/13/deploying-your-own-etherpad-on-ubuntu
http://www.webdevonlinux.fr/2010/03/installer-etherpad-sur-votre-serveur/
http://matthew.mceachen.us/blog/howto-install-etherpad-on-ubuntu-9-10-811.html
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 &
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)
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>'+
Il n'y a pas de commentaire sur cette page.
[Afficher commentaires/formulaire]


