Installation du PGI OpenERP 7.0 sur Debian Squeeze et CentOS 6.4

OpenERP est un PGI (Progiciel de Gestion Intégré) Open Source dont le développement a commencé il y a maintenant 14 ans par Fabien Pinckaers (pinky) pour les business de son père, et plus tard de son oncle.
OpenERP
Développé avec Python et utilisant le SGBD libre PostGreSQL, le logiciel est aujourd’hui très abouti et plusieurs grandes entreprises l’ont implémenté; il peut très facilement être installé et configuré sur plusieurs distributions de Linux, dont Debian.

Les principaux modules présents sont la gestion:

  • des ventes,
  • de la gestion de relation client (CRM),
  • de projet,
  • d’entrepôt,
  • de la production,
  • de la comptabilité et
  • des ressources humaines.

Processus d’installation sur Debian Squeeze

Mettre à jour les paquets

sudo apt-get update

Installer la base de données PostGreSQL

sudo apt-get install postgresql

Créer un utilisateur pour la base de données

su - postgres -c "createuser --createdb --no-createrole --no-superuser openerp"
echo "ALTER USER openerp WITH PASSWORD 'MonMotDePasse';ALTER USER postgres WITH PASSWORD 'MonMotDePasse';" | su postgres -c psql

Ajouter le dépôt OpenERP

echo "deb http://nightly.openerp.com/7.0/nightly/deb/ ./" >> /etc/apt/sources.list

Mettre à jour la base de données des paquets

aptitude update && aptitude && upgrade && aptitude clean

Installer OpenERP

aptitude install openerp
Accepter le Package en tapant ‘Yes’ et en validant sur le clavier, toutes les dépendances seront installées.

Accéder à OpenERP via le navigateur

http://127.0.0.1:8069

Installation sur CentOS 6.3 ou 6.4

L’installation ici est moins automatique que sous Debian, heureusement dans le domaine des logiciels libres le partage d’expérience d’expertise nous permet d’avancer relativement vite! Je vous conseille ce simple script de Mario Gielissen (http://www.openworx.nl) :

#!/bin/sh
# Modified script from Carlos E. Fonseca Zorrilla
yum -y install wget unzip
rpm -ivh http://dl.fedoraproject.org/pub/epel/6/i386/epel-release-6-8.noarch.rpm
rpm -ivh http://yum.pgrpms.org/9.2/redhat/rhel-6-i386/pgdg-centos92-9.2-6.noarch.rpm
yum -y install python-psycopg2 python-lxml PyXML python-setuptools libxslt-python pytz \
python-matplotlib python-babel python-mako python-dateutil python-psycopg2 \
pychart pydot python-reportlab python-devel python-imaging python-vobject \
hippo-canvas-python mx python-gdata python-ldap python-openid \
python-werkzeug python-vatnumber pygtk2 glade3 pydot python-dateutil \
python-matplotlib pygtk2 glade3 pydot python-dateutil python-matplotlib \
python python-devel python-psutil python-docutils make\
automake gcc gcc-c++ kernel-devel byacc flashplugin-nonfree poppler-utils pywebdav\
yum -y install postgresql92-libs postgresql92-server postgresql92
service postgresql-9.2 initdb
chkconfig postgresql-9.2 on
service postgresql-9.2 start
su - postgres -c "createuser --superuser openerp"
cd /tmp
wget http://gdata-python-client.googlecode.com/files/gdata-2.0.17.zip
unzip gdata-2.0.17.zip
rm -rf gdata-2.0.17.zip
cd gdata*
python setup.py install
cd /tmp
adduser openerp
DIR="/var/run/openerp /var/log/openerp"
for NAME in $DIR
do
if [ ! -d $NAME ]; then
mkdir $NAME
chown openerp.openerp $NAME
fi
done
rm -rf openerp*
wget http://nightly.openerp.com/7.0/nightly/src/openerp-7.0-latest.tar.gz
tar -zxvf openerp-7.0-latest.tar.gz --transform 's!^[^/]\+\($\|/\)!openerp\1!'
cd openerp
python setup.py install
rm -rf /usr/local/bin/openerp-server
cp openerp-server /usr/local/bin
cp install/openerp-server.init /etc/init.d/openerp
cp install/openerp-server.conf /etc
chown openerp:openerp /etc/openerp-server.conf
chmod u+x /etc/init.d/openerp
chkconfig openerp on
service openerp start

Voilà, c’est tout! Profitez de toutes les fonctionnalités de l’application!

10 useful SQL queries to save time with WordPress

Le CMS (Content Management System) WordPress utilise le système de gestion de base de données MySQL dans 99,9% de cas, et occupe plus de 60% de part de marché des CMS devant Drupal (mon préféré…) et Joomla.
WordpressDrupalJoomla
Toutes les informations de WordPress (paramètres, billets, pages, commentaires, catégories, tags, etc.) sont stockées dans la base de données, qui est bien plus lisible et compréhensible que la base de données de Joomla qui à mon humble avis est une “usine à gaz”. Vous pouvez suivre ce lien pour en savoir un peu plus sur la structure de la base de données de WordPress.

La façon la plus simple d’exécuter une requête SQL est d’utiliser PHPMyAdmin. Si vous avez installé WordPress avec succès c’est que vous avez certainement l’adresse du serveur MySQL, le login et le mot de passe; si vous ne connaissez pas l’URL demandez à votre hébergeur, presque tous les hébergeurs PHP/MySQL ont ce logiciel installé sur leurs serveurs (il est en effet facile d’utilisation et vous évite de taper les commandes shell de Linux et autres).

Connaître quelques commandes SQL de base est très important et pourrait vous faire gagner beaucoup de temps. Par exemple vous changez d’adresse URL (ça peut arriver!) ou transférez le site que vous avez développé en local vers le serveur en ligne, 30 pages et 50 billets génèrent en moyenne 400 lignes dans la table wp_posts de votre BD, s’il faut modifier ligne par ligne, comptez le temps que ça prendra… et si vous aviez 100 pages et 300 billets…

I. Vous changez l’URL ou transférez votre site local

1. Changer l’URL et la page d’accueil du site

UPDATE wp_options SET option_value = replace(option_value, 'http://www.AcienURL.com', 'http://www.NouvelURL.com') WHERE option_name = 'home' OR option_name = 'siteurl';

2. Changer l’URL de chaque page et billet

UPDATE wp_posts SET guid = REPLACE (guid, 'http://www.AcienURL.com', 'http://www.NouvelURL.com');

3. Changer l’URL dans le contenu des pages et billets

UPDATE wp_posts SET post_content = REPLACE (post_content, 'http://www.AcienURL.com', 'http://www.NouvelURL.com');

II. Commandes d’administration

4. Changer le nom d’utilisateur par défaut Admin

UPDATE wp_users SET user_login = 'NouvelAdministrauetr' WHERE user_login = 'Admin';

5. Changer le mot de passe de l’utilisateur jtouzi

UPDATE wp_users SET user_pass = MD5('NouveauMotPasse') WHERE user_login = 'jtouzi';

6. Assigner tous les articles écrits par l’auteur auteurA à l’auteur auteurB

La première chose à faire est de trouver les ID-auteur, par exemple pour l’auteur auteurA tapez
SELECT ID FROM wp_users WHERE user_login = 'auteurA' LIMIT 1; Assignez ensuite les articles avec la commande:
UPDATE wp_posts SET post_author = 'ID-auteurB' WHERE post_author = 'ID-auteurA';

7. Supprimer toutes les révisions

Lorsque vous éditez un article dans WordPress, par mesure de prudence plusieurs copies sont sauvegardées, ce qui surcharge votre base de données et peut ralentir le chargement des pages. Si vous êtes certains que les versions publiées en ligne sont les bonnes et que vous ne risquez pas de revenir à une version antérieure, supprimez les révisions!
DELETE a,b,c FROM wp_posts a
LEFT JOIN wp_term_relationships b ON (a.ID = b.object_id)
LEFT JOIN wp_postmeta c ON (a.ID = c.post_id)
WHERE a.post_type = 'revision'

Source de cette requête

7. Supprimer les Posts Meta

Lorsque l’on installe les plugins, plusieurs données sont sauvegardées dans la table wp_postmeta; lorsque l’on en désinstalle, ces données ne sont pas toujours supprimées, ce qui peut ralentir le traitement de données et surcharger votre BD. Une fois que vous connaissez la clé Méta du plugin exécutez la commande:
DELETE FROM wp_postmeta WHERE meta_key = 'CleMeta';

8. Afficher la liste des emails des commentateurs

SELECT DISTINCT comment_author_email FROM wp_comments;
Vous pouvez ensuite utiliser l’option exporter de PHPMyAdmin pour les sauvegarder en fichier PDF ou SQL (en vue de les ajouter à votre Newsletter par exemple)

9. Supprimer tous les Pingbacks et tous les Spams

DELETE FROM wp_comments WHERE comment_type = 'pingback' OR comment_approved = 'spam';

10. Identifier les tags non utilisés

Si vous avez utilisé une requête SQL pour supprimer quelques anciens articles (par exemple DELETE FROM wp_posts WHERE post_date < '2009-12-12 12:00:00'), ce que les tags qui leur avaient été assignés restent dans la base de données, et faussent votre nuage de tags. Pour résoudre de ce problème, exécutez
SELECT * From wp_terms wt
INNER JOIN wp_term_taxonomy wtt ON wt.term_id=wtt.term_id WHERE wtt.taxonomy='post_tag' AND wtt.count=0;

Formation PHP/MySQL et Webmastering avancé

php_mysql

Du 17 au 20 avril 2013 j’anime une formation sur le Webmastering et la programmation d’applications Web.

Véritable chef d’orchestre, le Webmaster est désormais l’acteur incontournable des différents sites Web de l’organisation. Il doit être capable de repérer les stratégies des différents acteurs impliqués dans la conception d’un site et d’harmoniser leurs différentes logiques.

Public concerné

Développeurs, Webmasters ou futurs Webmasters, ou personnes souhaitant acquérir, actualiser ou entretenir des connaissances.

Pré-requis

Maîtriser parfaitement la micro-informatique et Internet en tant qu’utilisateur. Des notions de HTML et de CSS sont un plus.

Durée et coût

La formation dure quatre jours, et coûte 395.000 BIF (trois cent quatre vingt quinze mille francs burundais) par participant, avec une possibilité de réduction si vous êtes 02 ou plus.

Objectifs

Ce séminaire a pour objectif :

  • acquérir les bases du langage PHP et du système de gestion de bases de données MySQL
  • acquérir les compétences spécifiques liées à la structuration des contenus, à l’ergonomie et au design d’un site
  • pratiquer les outils principaux pour créer des pages Web
  • savoir dialoguer avec les différents intervenants internes de l’entreprise et les prestataires.

Programme provisoire non détaillé

  • Le métier de Webmaster
    • Compétences nécessaires
    • Le Cahier des Charges dans un projet Web
    • Hébergement de site Web
    • Principaux langages (HTML, JavaScript, CSS, PHP)
    • Principaux protocoles web (FTP, HTTP, SMTP)
    • Les CMS (Content Management System)
  • Les bases du langage HTML
  • Les bases des feuilles de styles CSS et du JavaScript
  • Le langage PHP
    • Fonctions de base
    • Intégration de PHP dans le HTML
    • Interaction entre PHP et le SGBD MySQL (connexion à la base, sélection, insertion, modification et suppression de données)
    • Notions de Cookies et de Sessions
  • Le SGBD MySQL
    • Définition
    • Installation et administration
    • Présentation et utilisation de PHPMyAdmin
  • Les CMS
    • Définition
    • Principaux CMS et choix d’un CMS dans son projet
    • Installation et personnalisation d’un CMS

Installation de Alfresco Community avec MySQL sur Ubuntu Server

Alfresco with MySQL

Alfresco with MySQL

Le leader Open Source de la gestion et d’archivage électronique de documents (GED) Alfresco est-il encore à présenter ? Si oui ben faites un tour sur le site de Alfresco : http://www.alfresco.com.

Pendant que vous y êtes, téléchargez la dernière version de Alfresco Community (à l’heure actuelle c’est la 4.2.c) pour Linux 64 bits sur la page : http://wiki.alfresco.com/wiki/Download_and_Install_Alfresco.
Lien direct vers le téléchargement : https://process.alfresco.com/ccdl/?file=release/community/build-04576/alfresco-community-4.2.c-installer-linux-x64.bin. Copier le fichier alfresco-community-4.2.c-installer-linux-x64.bin dans /opt.

Depuis la version 4.0 (je pense…), Alfresco utilise par défaut le SGBD PostGreSQL (qui n’est pas mal!) et donc son connecteur, du moment que nous souhaitons utiliser le SGBD MySQL il faut télécharger la dernière version de son connecteur (la 5.1.24 à l’heure actuelle) sur cette page http://dev.mysql.com/downloads/connector/j/, le dé-zipper et copier le fichier mysql-connector-java-5.1.24-bin.jar dans le dossier /opt.

1. Installation

Si votre serveur n’a pas été installé avec l’option MySQL Server coché, installé le tout simplement avec la commande : sudo apt-get install mysql-server. Pour plus de sécurité tapez un mot de passe d’administration de la base de données.

Dans la suite je suppose que la base de données qui habritera notre GED sera alfresco et que le nom d’utilisateur d’administration de la base de données sera alfrescouser (il est déconseillé d’utiliser le compte root, qui gère toutes les bases de données du serveur, dans les applications particulières, toujours créer un compte d’administration par application).

1.1 Connexion à MySQL en ligne de commandes

Ouvrir le terminal, taper mysql -u root -p et entrez le mot de passe d’administration

1.2 Création de la base de données

CREATE DATABASE alfresco DEFAULT CHARACTER SET utf8 COLLATE utf8_bin;

1.3 Création de l’utilisateur qui gérera la BD

CREATE USER 'alfrescouser'@'localhost' IDENTIFIED BY 'motDePasseAlfrescouser';

1.4 Attribution des droits

GRANT ALL ON alfresco.* TO 'alfrescouser'@'localhost' IDENTIFIED BY 'motDePasseAlfrescouser' WITH GRANT OPTION;

1.5 Installation

cd /opt
sudo ./alfresco-community-4.2.c-installer-linux-x64.bin

Choisir l’option “Avancé” afin de remplir les paramètres de la base de données et renseignez les champs. Spécifiez les paramètres suivants pour la base de données:

Driver: org.gjt.mm.mysql.Driver
URL: jdbc:mysql://localhost/alfresco?useUnicode=yes&characterEncoding=UTF-8

Lorsque vous l’aurez spécifié et que le processus d’installation aura commencé, copiez le fichier mysql-connector-java-5.1.24-bin.jar précédemment téléchargé dans /opt/alfresco/tomcat/lib

C’est tout, ou presque… à la fin de l’installation si vous regardez votre base de données, vous constaterez qu’elle est vide, c’est au premier lancement de la GED (http://localhost:8080/share) que la BD est constitué, ceci prend un temps et “bouffe” toute votre CPU!

2. Problèmes rencontrés

2.1 Preview de documents (.doc, .pdf, .flv, .mp3)

J’ai constaté qu’il y a quelques librairies qu’il faut installer: libsm6, libxrender1 et libxinerama1 dans mon cas (sudo apt-get install libsm6, libxrender1, libxinerama1). Il peut en avoir d’autres, afin de connaître toutes les librairies manquantes tapez la commande dans le terminal : /opt/alfresco/libreoffice/program/soffice -nofirststartwizard -nologo -headless -accept=socket,host=localhost,port=8100,urp;StarOffice.ServiceManager
Il faut aussi penser à changer le ctl.sh du fichier de configuration en openoffice_ctl.sh pour LibreOffice.

2.2 Problème de CPU

Alfresco me prenait plus de 150% de CPU! Il faut dans ce cas adapter le “stack size -Xss” dans JAVA_OPTS (/opt/alfresco/tomcat/setenv.sh) en fonction des capacités de votre serveur.

2.3 Démarrage du service CIFS, service oh combien important!

Dans mon cas il m’a fallu installer Samba sudo apt-get install samba smbfs, puis modifier les ports comme suit dans le fichier fichier-servers.properties situé ici : /opt/alfresco/tomcat/webapps/alfresco/WEB-INF/classes/alfresco/subsystems/
fileServers/default/file-servers.properties

cifs.tcpipSMB.port=1445
cifs.netBIOSSMB.sessionPort=1139
cifs.netBIOSSMB.namePort=1137
cifs.netBIOSSMB.datagramPort=1138

Redémarrez Alfresco avec service alfresco restart, pour vérifier que le service CIFS a bien démarré tapez telnet localhost 1445

J’ai ensuite modifié les règles iptables comme suit (lisez cet article pour en savoir plus)
sudo su
echo 1 > /proc/sys/net/ipv4/ip_forward
modprobe iptable_nat
iptables -F
iptables -t nat -F
iptables -P INPUT ACCEPT
iptables -P FORWARD ACCEPT
iptables -P OUTPUT ACCEPT
iptables -t nat -A PREROUTING -p tcp --dport 445 -j REDIRECT --to-ports 1445
iptables -t nat -A PREROUTING -p tcp --dport 139 -j REDIRECT --to-ports 1139
iptables -t nat -A PREROUTING -p udp --dport 137 -j REDIRECT --to-ports 1137
iptables -t nat -A PREROUTING -p udp --dport 138 -j REDIRECT --to-ports 1138

3. Pour aller plus loin…

3.1 Personnaliser le design de Afresco Share

Choisissez tout d’abord le thème qui vous plaît dans l’espace d’administration, puis modifiez les CSS et les images en fonction de vos besoins, tout se trouve dans /opt/alfresco/tomcat/webapps/share/themes/{themeChoisi}/

3.2 Changer le File System Name et configurer le dossier par défaut

Le File System Name par défaut est Alfresco, ce qui est souvent embêtant. Ceci se trouve par défaut à la racine de notre système GED, les utilisateurs qui se connectent via FTP, CIFS ou même NFS ont donc plusieurs clics à faire avant d’arriver à l’espace documentaire de leur site. Dans mes projets j’ai presque toujours eu à créer un seul site pour les utilisateurs, il faut donc qu’ils arrivent directement à l’espace documentaire…
Pour personnaliser ceci modifier le Server properties file path en fonction de vos besoins: /opt/alfresco/tomcat/webapps/alfresco/WEB-INF/classes/alfresco/subsystems/fileServers/default/file-servers.properties

3.3 Personnaliser les messages mails générés par Alfresco

Vous voulez vos propres mots et vos propres liens dans les messages générés par votre système, eh ben rien de plus normal! Modifiez les fichiers nécessaires dans /opt/alfresco/tomcat/webapps/alfresco/WEB-INF/classes/alfresco/messages/

3.4 Couplage Alfresco <==> Liferay pour réaliser un portail Intranet complet

Alfresco est une application de gestion et d’archivage électronique de documents. Plusieurs fonctionnalités de travail collaboratif ont été ajoutées dans les dernières versions, et l’interface Alfresco Share nous permet déjà de faire pas mal de choses. Seulement ceci reste très loin des fonctionnalités que l’on attend d’un portail Intranet ou Extranet comme Liferay. Heureusement il est possible de coupler les deux applications afin d’avoir un système abouti de portail collaboratif. Lire ce tutoriel d’intégration de Liferay 6.1 et Alfresco 4.2 pour voir comment le mettre sur pied.

Que sont les CLOM (MOOC) et quelles en sont les différences fondamentales avec les REL (OER)?

Les années 2000 ont été marquées par l’essor des REL (Ressources Éducatives Libres) ou OER en anglais (Open Educational Resources). Plusieurs universités de renom, notamment dans le monde anglo-saxon, se sont lancées dans leur production, des dizaines de milliers de ressources ont été ainsi créées sur Internet. Depuis 2008/2009 le monde francophone essaie tant bien que mal de suivre le pas dans la production de ces ressources d’enseignement, je dirai plutôt d’apprentissage.

Depuis l’année dernière un autre mouvement, pas loin de celui des REL, a vu le jour aux Etats Unis, plus précisément à New York : Les CLOM, entendez par là Cours en Ligne Ouverts aux Masses, ou MOOC en anglais (Massive Open Online Courses). Il fût d’ailleurs l’un des évènements dominants dans le monde de l’enseignement supérieur en 2012, (lire cet article du New York Times : The Year of the MOOC).

1. Les CLOM en 5 points

  1. Les CLOM sont des cours en ligne visant une participation à grande échelle (en masse),
  2. Ils doivent être hébergés sur des sites facilement accessible et d’utilisation facile comme des wikis, des blogs,
  3. Les activités de cours peuvent inclure des vidéos, les commentaires sur les forums de discussion et les blogs ; ces commentaires peuvent aussi être postés depuis les plateformes de médias sociaux (Twitter, Facebook, etc.),
  4. Les instructeurs peuvent utiliser les médias sociaux pour favoriser la participation collaborative et l’apprentissage d’égal à égal,
  5. Les participants pouvant provenir de divers horizons et de tous âges, un cours peut bénéficier d’une riche diversité d’idées.

2. Différences fondamentales entre les CLOM et les REL

Ressources Éducatives Libres Cours en Ligne Ouverts aux Masses
La plupart des matériaux peuvent être modifiés et redistribués Modification des CLOM impossible
Ressources éducatives gratuites, avec souvent des syllabus et des grandes lignes, mais pas de cours complets Les cours sont complets, avec un début et une fin (comme un parcours normal de formation quoi…)
Pas de participation de la faculté ou même des enseignants. En effet les universités ou facultés publient des ressources pour l’usage du public, et c’est presque tout Participation de la faculté, et assez souvent des professeurs assistants

3. Ce que je pense en ce moment précis…

  • Un peu déçu par le 1er point, l’une des caractéristiques principales des REL est la production collaborative de contenus éducatifs, ce qui démocratise l’enseignement et l’apprentissage, il y a en effet cette possibilité pour les enseignants d’adapter les ressources aux réalités locales,
  • Les MOOC ne sont autre chose que le “eLearning traditionnel”, à la seule différence qu’ici les cours sont ouverts au public. Cependant la possibilité d’avoir une attestation de participation ou même un diplôme de l’institut/université (moyennant bien-sûr finances) me paraît être une grande avancée dans l’éducation.

Automatic Backup of MySQL Database to Amazon S3. Use of Object Expiration to Delete Old Backups

The importance of backing up a database needs no further demonstration.

The following will create daily, weekly and monthly backups for our database and copy them to an Amazon S3 Bucket (MyBucketName) in MyBucketName/Daily, MyBucketName/Weekly and MyBucketName/Monthly folders respectively.

To control the cost of our backup solution, we will set expiration to each file to remove them from S3 automatically after 15 days for daily, 60 for weekly and 180 for monthly backups.

Lifecycle rules can also be used to delete files or transfer them into Amazon Glacier. The lifecycle rule could be to delete files under MyBucketName/Daily after 15 days, in MyBucketName/Weekly after 60 days, and MyBucketName/Monthly after 180 days [1].

In this tutorial we will use AWS Command Line Interface [2], with its high-level S3 commands [3]. Another tool like ‘s3cmd’ can also be used [4].

1. Install and configure AWS Command Line Interface

$ sudo yum install awscli or $ sudo apt-get install awscli for Ubuntu/Debian
$ aws configure
You will need to enter your AWS Access Key ID and AWS Secret Key, other parameters can be ignored, I recommend setting a default region.

2. Write scripts for backups

We will create three scripts to dump the database, name it todaysdate.sql and copy it to Amazon S3.

2.1. Script for daily backup – DailyBackupDB.sh

#!/bin/bash

NOW="$(date +'%m-%d-%Y')"
EXPIRES="$(date +'%m-%d-%Y' --date='15 days')"
mysqldump -uUSER -pPASSWORD database | gzip > /path/to/databasebackups/$NOW.sql.gz
aws s3 cp /path/to/databasebackups/$NOW.sql.gz s3://MyBucketName/Daily/$NOW.sql.gz --expires $EXPIRES --region YourRegion

2.2. Script for weekly backup – WeeklyBackupDB.sh

#!/bin/bash

NOW="$(date +'%m-%d-%Y')"
EXPIRES="$(date +'%m-%d-%Y' --date='60 days')"
mysqldump -uUSER -pPASSWORD database | gzip > /path/to/databasebackups/$NOW.sql.gz
aws s3 cp /path/to/databasebackups/$NOW.sql.gz s3://MyBucketName/Weekly/$NOW.sql.gz --expires $EXPIRES --region YourRegion

2.3. Script for weekly backup – MonthlyBackupDB.sh

#!/bin/bash

NOW="$(date +'%M-%Y')"
EXPIRES="$(date +'%m-%d-%Y' --date='180 days')"
mysqldump -uUSER -pPASSWORD database | gzip > /path/to/databasebackups/$NOW.sql.gz
aws s3 cp /path/to/databasebackups/$NOW.sql.gz s3://MyBucketName/Monthly/$NOW.sql.gz --expires $EXPIRES --region YourRegion

The three scripts above can be optimized to a single.

3. Make the scripts executable

$ sudo chmod +x DailyBackupDB.sh
$ sudo chmod +x WeeklyBackupDB.sh
$ sudo chmod +x MonthlyBackupDB.sh

4. Run CRON tasks to automate the backup process

Cron tasks for daily, weekly and monthly backups respectively:
$ sudo nano crontab -e
Add the following lines:
0 0 * * * root /path/to/script/DailyBackupDB.sh # Run every day at midnight
0 0 * * 0 root /path/to/script/WeeklyBackupDB.sh # Run every Sunday at midnight
0 0 1 * * root /path/to/script/MonthlyBackupDB.sh # Run every 1st of the month at midnight

And that is all… you have a cost-effective and reliable backup solution…

Links:
[1] – Objects lifecycle management
[2] – AWS Command Line Interface
[3] – AWS high-level S3 commands
[4] – s3cmd tool

Installing Alfresco Community With MySQL on Ubuntu Server on AWS EC2 With Content Stored on Amazon S3

Alfresco On AWS

Alfresco On AWS

At the top of almost every Linux distribution, the Debian-based Ubuntu surpasses all other Linux server distributions – from its simple installation to its excellent hardware discovery to its world-class commercial support.
Amazon Web Services is indisputably the largest cloud service provider.
MySQL is the world’s most popular open source database.
Alfresco is the world’s leading open-source alternative for document management and collaboration.

The purpose of this tutorial is to see how to set up an Enterprise Content Management system using these ‘world class tools’. The best way for Alfresco to interact with Amazon S3 is to use Alfresco S3 Connector, however this tool is available only for Alfresco Enterprise Edition. Since this tutorial is based on Alfresco Community, we will use a workaround.
Also there are several Alfresco AMIs in AWS Community AMIs, you can choose one of them if you want to make things simply, however they generally don’t have the latest version.

In an upcoming tutorial, we will see how to use Alfresco Enterprise Edition with Amazon RDS (PostGreSQL), Amazon EC2 (CentOS instance) and Amazon S3 (Alfresco S3 Connector).

For more information about Amazon Web Service and Alfresco, have a look at:

1. Parameters used in this tutorial

  • Linux Distribution and version: Ubuntu Server 14.04
  • Database: MySQL
  • Database Name: alfresco
  • Database username: alfrescouser
  • S3 Bucket name: myalfrescodata

2. Configure your Ubuntu Server, and create an Amazon S3 Bucket

For this tutorial I used an AMI in North Virginia Region (ubuntu-trusty-14.04-amd64-server-20140926 – AMI ID: ami-0070c468), and launched a t2.medium instance (4 GB memory). In security group associated with the intance I opened required Ports: SSH (22), FTP (21), Tomcat Server (8080), Tomcat SSL (8443) and LibreOffice (8100).

Create an Amazon S3 Bucket

For performance and cost reasons, it’s better to create the bucket in the same region as your EC2 instance, indeed you have a low latency and transferring data from an EC2 instance to a S3 Bucket in the same AWS Region is free of cost. You can create your S3 Bucket using AWS S3 Console or AWS CLI (Command Line Interface). By default AWS CLI is installed only on Amazon Linux AMIs. To install AWS CLI run:
$ sudo apt-get install awscli
Configure AWS CLI
$ aws configure
AWS Access Key ID [None]: MyAWSAccessKeyIdHere
AWS Secret Access Key [None]: MyAWSSecretKeyHere
Default region name [None]: us-east-1
Default output format [None]:

Create the Bucket:
$ aws s3 mb s3://myalfrescodata --region us-east-1
make_bucket: s3://myalfrescodata/

3. Install Alfresco Community 5.0.a with MySQL

Install and configure MySQL Server

$ sudo apt-get install mysql-server
$ mysql -u root -p
$ CREATE DATABASE alfresco DEFAULT CHARACTER SET utf8 COLLATE utf8_bin;
$ CREATE USER 'alfrescouser'@'localhost' IDENTIFIED BY 'alfrescouserPassword';
$ GRANT ALL ON alfresco.* TO 'alfrescouser'@'localhost' IDENTIFIED BY 'alfrescouserPassword' WITH GRANT OPTION;

Download Alfresco Community 5.0.a

$ wget http://dl.alfresco.com/release/community/5.0.a-build-00023/alfresco-community-5.0.a-installer-linux-x64.bin
$ sudo +x alfresco-community-5.0.a-installer-linux-x64.bin

By default Alfresco uses PostGreSQL as database, in order to use MySQL database, download its connector for Java and unzip the file (the last version is 5.1.33):
$ wget http://ftp.kaist.ac.kr/mysql/Downloads/Connector-J/mysql-connector-java-5.1.33.zip
$ sudo apt-get install unzip
$ sudo unzip mysql-connector-java-5.1.33.zip

Install Alfresco Community 5.0.a

$ sudo ./alfresco-community-5.0.a-installer-linux-x64.bin
Find below my settings:

—————————————————————
Installation Type

[1] Easy – Installs servers with the default configuration
[2] Advanced – Configures server ports and service properties.: Also choose optional components to install.
Please choose an option [1] : 2

—————————————————————
Select the components you want to install; clear the components you do not want
to install. Click Next when you are ready to continue.

Java [Y/n] :Y
PostgreSQL [Y/n] :N
Alfresco : Y (Cannot be edited)
SharePoint [Y/n] :Y
Web Quick Start [y/N] :Y
Google Docs Integration [Y/n] :Y
LibreOffice [Y/n] :Y
Is the selection above correct? [Y/n]:Y

—————————————————————
Installation folder

Please choose a folder to install Alfresco Community
Select a folder [/opt/alfresco-5.0.a]: /opt/alfresco

Have a look at JDBC URL and Driver here.

JDBC URL: [jdbc:postgresql://localhost/alfresco]: jdbc:mysql://localhost/alfresco?useUnicode=yes&characterEncoding=UTF-8
JDBC Driver: [org.postgresql.Driver]: org.gjt.mm.mysql.Driver
Database name: [alfresco]:alfresco
Username: []: alfrescouser
Password: :
Verify: :

—————————————————————
Tomcat Port Configuration
Please enter the Tomcat configuration parameters you wish to use.
Web Server domain: [127.0.0.1]: xx.xx.xx.xx
Tomcat Server Port: [8080]:
Tomcat Shutdown Port: [8005]:
Tomcat SSL Port [8443]:
Tomcat AJP Port: [8009]:

—————————————————————
Alfresco FTP Port
Please choose a port number to use for the integrated Alfresco FTP server.
Port: [21]:

—————————————————————
Alfresco RMI Port
Please choose a port number for Alfresco to use to execute remote commands.
Port: [50500]:

—————————————————————
Admin Password
Please give a password to use for the Alfresco administrator account.
Admin Password: :
Repeat Password: :

—————————————————————
Install as a service
You can optionally register Alfresco Community as a service. This way it will
automatically be started every time the machine is started.
Install Alfresco Community as a service? [Y/n]:Y

—————————————————————
LibreOffice Server Port
Please enter the port that the LibreOffice Server will listen to by default.
LibreOffice Server Port [8100]:

—————————————————————
Setup is now ready to begin installing Alfresco Community on your computer.
Do you want to continue? [Y/n]: Y

Once the install process started, copy MySQL Connector for Java in /opt/alfresco/tomcat/lib in a new SSH windows.


$ cp mysql-connector-java-5.1.33/mysql-connector-java-5.1.33-bin.jar /opt/alfresco/tomcat/lib

—————————————————————
Please wait while Setup installs Alfresco Community on your computer.

Installing
0% ______________ 50% ______________ 100%
#######################################

—————————————————————
Setup has finished installing Alfresco Community on your computer.

It is almost everything… at the end of the installation MySQL database is empty, the first launch of Alfresco takes some time, it creates DB tables and default data (http://MyPublicIPAddress:8080/share). These data are stored on EC2 EBS Volume, now we will see how to migrate these data in our Amazon S3 bucket.

4. Move ‘alf_data’ from EBS to S3

There is an Alfresco connector that provides a mechanism to store content in Amazon S3, however this connector is only available for Alfresco Enterprise users. If you are using the Community edition and would like to store your data only in Amazon S3, the only way to process at the moment is to mount the bucket as filesystem on your server.

Amazon does not recommend mounting an S3 bucket as a filesystem.

Mounting Amazon S3 Bucket as filesystem on our server

Install, Configure, and test s3fs-fuse

$ sudo apt-get update
$ sudo apt-get install build-essential gcc libfuse-dev fuse libcurl4-openssl-dev libxml2-dev mime-support build-essential libcurl4-openssl-dev
$ wget http://s3fs.googlecode.com/files/s3fs-1.63.tar.gz
$ sudo tar -xvzf s3fs-1.63.tar.gz
$ cd s3fs-1.63/
$ sudo ./configure --prefix=/usr
$ sudo make
$ sudo make install
$ sudo nano vi /etc/passwd-s3fs

Fill this file as follows: MyAWSAccessKeyId:MyAWSSecretKey
$ sudo chmod 600 /etc/passwd-s3fs
Create a directory to mount S3 bucket
$ sudo mkdir /mnt/myalfrescodata
Mount the s3 bucket
$ sudo s3fs myalfrescodata /mnt/myalfrescodata
Check if the S3 bucket is mounted
$ sudo df -h
You will note 256T of size, this is normal…
To mount automatically at boot, at this line to your /etc/fstab
$ nano /etc/fstab
s3fs#myalfrescodata /mnt/myalfrescodata fuse allow_other,_netdev,nosuid,nodev,url=https://s3.amazonaws.com 0 0

Move “alf_data” from EBS to S3

Stop Alfresco server
$ service alfresco stop
Copy “alf_data” to “/mnt/myalfrescodata”
$ sudo cp -R /opt/alfresco/alf_data/ /mnt/myalfrescodata
Change “dir.root” from “/opt/alfresco/alf_data” to “/mnt/myalfrescodata” in Alfresco global properties
$ sudo nano /opt/alfresco/tomcat/shared/classes/alfresco-global.properties
Start Alfresco Server
$ service alfresco start

That is ALL. Your Alfresco data are stored in your Amazon S3 Bucket.

For some tips in configuring Alfresco (CIFS, CPU, previews, etc.) have a look at this blog post.

Seminar on Cloud Computing and Open Source

I just facilitated a seminar on Cloud Computing and Free Softwares. The aims of the seminar was to present the Cloud Computing and the Open Source softwares, and which solutions can be used in the Africa Context (especially with our bad bandwidth). Around 125 participants, coming from public administrations (presidence, 1st vice-presidence, independant national electoral commission, national assembly, ministries of defense, Finance and education, IDEC, etc.), private companies (LEO Burundi, radios, Multinational Consulting Group, etc.) and NGO (FORSC, ADEPAE, Swiss cooperation, etc.) attend the seminar. Find bellow the program, the three presentations and some pictures.

Program

  • 14h00 – 14h30′ : Accueil des participants autour d’un café offert
  • 14h30′ – 15h00 : Le Cloud Computing – On en parle beaucoup mais qu’est-ce que c’est ? (Exemple de Google Apps)
  • 15h00 – 15h30′ : Les Logiciels Libres – Quels avantages ? Quels inconvénients ? Comparatif Windows/Linux
  • 15h30′ – 17h00′ : Présentation de quelques « domaines de maturité » des logiciels Open Source :
    • L’Administration de réseaux LAN (serveur Linux)
    • La Gestion Electronique et l’Archivage de Documents (GED)
    • La messagerie d’entreprise et le travail collaboratif
    • Le portail intranet d’entreprise
    • La sauvegarde de données informatiques
    • Le Monitoring IT
    • La création de sites web Internet
    • La gestion de bibliothèque
  • 17h00 – 17h30′ : Séance de Questions/Réponses
  • 17h30′ – 18h00 : Remplissage du formulaire et fin du séminaire

Presentations

Some pictures

Couple Alfresco & Liferay : Meilleur outil pour la gestion électronique de documents et de publications en mode collaboratif ?

De plus en plus d’organisations internationales, d’entreprises privées et administrations publiques sont confrontées à la complexification générale de la gestion de l’information :

  • inflation du nombre de documents, de données, de publications ;
  • hétérogénéité croissante des formats d’entrée (papier, multimédia, web, etc.) ;
  • multiplication des supports de restitution (web, e-mails, imprimantes, scanners, etc.) ;
  • diversification des cibles d’échanges internes et externes (salariés, partenaires, fournisseurs, clients, organismes publics, etc.).

Face à l’accroissement de ces contenus numériques, le besoin de leur meilleure acquisition, de leur meilleure gestion, de leur meilleur partage, et d’une maîtrise du coût de stockage et de publication ne cesse de croître ; ceci exige d’accorder une attention particulière à la bonne acquisition et au bon archivage de ces contenus, ainsi qu’aux processus opérationnels qu’il implique. Ces évolutions incitent les structures à améliorer leur gestion de contenus.

Le développement des technologies de l’Information et de la Communication, notamment le Web 2.0 apporte des solutions abouties pour automatiser la gestion de tout ceci.

Alfresco Liferay Integration

Alfresco, dont la première version Open Source est sortie en fin 2005, paraît être à nos jours le meilleur outil de gestion électronique de documents (GED) libre ; ses fonctionnalités, sa stabilité et sa robustesse ne sont plus à démontrer.

Quant à Liferay, le portail Open Source qui a changé le concept de portail, notamment en ajoutant de nouvelles fonctionnalités, en intégrant les outils du Web 2.0 et en démontrant que les outils Open Source étaient aussi meilleurs que leurs équivalents propriétaires (sinon plus), est aujourd’hui la meilleure solution de portail Open Source.

Le point commun à ces deux outils est qu’ils sont Open Source, mieux encore ils utilisent les standards ouverts, dont l’importance n’est plus à démontrer.

L’intégration d’Alfresco à Liferay donne un outil abouti de gestion électronique de documents et de publications de façon collaborative. Cette combinaison allie un système de gestion de contenu robuste à un portail puissant et très extensible, solution complète de portail Intranet ou Extranet.

Anyway je suis très excité par cette collaboration entre Liferay et Alfresco, vous aussi j’espère! Ce tutoriel montre une façon de faire interagir les deux applications assez facilement.

Application du Cadre de compétences de l’UNESCO en TIC pour les enseignants en Angola

Une série de formations sur le Cadre de compétences en TIC pour les enseignants de l’UNESCO étaient organisées cette semaine à Luanda (Angola). Les quatre ateliers d’une journée avaient pour objet d’assister les instituts angolais de formation des enseignants dans la conception de programmes de formation autour des technologies de l’information et de la communication (TIC).

Les quatre ateliers étaient organisés pour présenter le projet de l’UNESCO de Cadre de compétences en TIC pour les enseignants aux acteurs travaillant dans le domaine des TIC dans l’éducation :

  • un atelier sur le cadre d’orientation du Cadre de compétences, le 8 août 2011 au ministère de l’Enseignement supérieur, de la Science et de la Technologie ;
  • deux ateliers sur les principes de mise en œuvre du Cadre de compétences : le premier, le 9 août 2011 à l’Institut national de recherche et développement de l’éducation et le second, le 10 août 2011 au Centre national des technologies de l’information ;
  • un atelier sur les modules standard du Cadre de compétences en coopération avec l’Institut international de l’UNESCO pour le renforcement des capacités en Afrique (IIRCA), le 11 août 2011 à l’Institut national de formation professionnelle.

Plusieurs initiatives sont en cours pour améliorer la qualité de l’enseignement en Angola. La reconnaissance de l’importance des TIC dans le développement des compétences professionnelles des Angolais en fait partie. Le projet de l’UNESCO de Cadre de compétences peut aider l’Angola à adopter des politiques efficaces en matière de TIC dans l’éducation, spécifiquement conçues pour les enseignants. Le projet de l’UNESCO comporte trois volets :

  • définition d’un socle de compétences technologiques pour les enseignants du primaire et du secondaire, intégré dans le cadre d’un cursus cohérent ;
  • reconnaissance internationale du socle de compétences ;
  • incitations pour que les prestataires de cours demandent l’agrément selon les conditions définies par l’UNESCO.

L’expérience angolaise en matière de développement des compétences en TIC des enseignants peut à son tour aider d’autres pays à faire un bon usage des principes du Cadre de compétences de l’UNESCO, dans un esprit de collaboration mutuelle reposant sur la Stratégie intégrée pour l’amélioration du système éducatif en Angola (2001-2015).