Installer Asqatasun sur un serveur CENTOS v7 avec une base de données MariaDB dockerisée

asqatasun
centos
mariadb
Tags: #<Tag:0x00007fe7b52efc30> #<Tag:0x00007fe7b52efaa0> #<Tag:0x00007fe7b52ef780>

#1

Quelques instructions pour installer Asqatasun sur un serveur CENTOS V7 avec une base des données MariaDB dockerisée.

Ce n’est pas très bien formaté…mes excuses

Installer

Packages tomcat

Installer packages tomcat suivants :

tomcat-7.0.76-6.el7.noarch
tomcat-admin-webapps-7.0.76-6.el7.noarch
tomcat-servlet-3.0-api-7.0.76-6.el7.noarch
tomcat-lib-7.0.76-6.el7.noarch
tomcat-el-2.2-api-7.0.76-6.el7.noarch
tomcat-javadoc-7.0.76-6.el7.noarch
tomcat-jsp-2.2-api-7.0.76-6.el7.noarch
tomcat-docs-webapp-7.0.76-6.el7.noarch
tomcat-webapps-7.0.76-6.el7.noarch	

Package XVFB

Installer le package XVFB pour CENTOS:

yum install xorg-x11-server-Xvfb

Librairies Java pour Mysql

Installer les librairies JAVA pour Mysql

yum install mysql-connector-java
sudo ln -s /usr/share/java/mysql-connector-java.jar /usr/share/tomcat/lib/mysql-connector-java.jar

Librairie libgtk

Installer la librairie libgtk :

yum install gtk2-devel-2.24.31-1.el7.x86_64	

autrement firefox plante :

XPCOMGlueLoad error for file /logiciels/firefox-31.4.0esr/libxul.so:
libgtk-x11-2.0.so.0: cannot open shared object file: No such file or directory

Firefox ESR 31.4

Installer firefox (en root)

mkdir /logiciels/sources
cd /logiciels/sources
wget http://download.cdn.mozilla.net/pub/mozilla.org/firefox/releases/31.4.0esr/linux-x86_64/en-US/firefox-31.4.0esr.tar.bz2
tar xvfj firefox-31.4.0esr.tar.bz2 .. extraction dans /logiciels/firefox-31.4.0esr
mv firefox firefox-31.4.0esr
ln -s firefox-31.4.0esr firefox

Services

Service Xvfb

Création du service Xvfb (root)

vi /etc/systemd/system/xvfb.service
     [Unit]
     Description=virtual frame buffer X server for display 99
     After=network.target
     
     [Service]
     ExecStart=/usr/bin/Xvfb :99 -screen 1 1024x768x24 -nolisten tcp
     
     [Install]
     WantedBy=multi-user.target
systemctl enable xvfb.service
systemctl list-unit-files | grep xvfb
     xvfb@.service   enabled

systemctl start xvfb.service
systemctl status xvfb.service
     xvfb.service - virtual frame buffer X server for display :99
     Loaded: loaded (/etc/systemd/system/xvfb@.service; enabled; vendor preset: disabled)
     Active: active (running) since Mon 2018-09-10 10:38:16 CEST; 58s ago

ps ax | grep -i xvfb
     13101 ?        Ss     0:00 /usr/bin/Xvfb :99 -screen 1 1024x768x24 -nolisten tcp
     13200 pts/6    S+     0:00 grep --color=auto -i xvfb

Base de données MariaDB dockerisée

Configurer Mariadb

en root

  • Installer docker-ce sur le serveur qui va héberger le conteneur de BDD (serveur_bdd_docker), dans mon cas: docker-ce-17.06.2.ce-1.el7.centos.x86_64
  • se connecter sur le serveur qui va héberger le conteneur de BDD pour la base de données Asqatasun
  • créer un conteneur Docker de BDD pour Asqatasun, ceci présuppose :
    • l’upload d’une image docker pour mariadb, dans l’example plateforme-dev-bdd-template
    • les données initiales plus arborescence sous forme de fichier tar (backup-volume-plateforme-dev-bdd.tar)
# Création du volume pour les données
docker volume create vol-plateforme-asqatasun-bdd 

# Création du conteneur
docker run -d -v vol-plateforme-asqatasun-bdd:/appli/mariadb/mariadb_10.2 --network reseau-projet --ip 172.18.0.3 -it --privileged --name plateforme-asqatasun-bdd -h plateforme-asqatasun-bdd  -p dbportinstal:3306/tcp plateforme-dev-bdd-template 

# Initialiser l'arborescence de la BDD
docker run -it --volumes-from plateforme-asqatasun-bdd -v /home/docker:/backup plateforme-dev-bdd-template tar xvf /backup/backup-volume-plateforme-dev-bdd.tar

en user docker

# se connecter à l'instance MariaDb du conteneur
docker exec -it plateforme-asqatasun-bdd bash
su - mysql
PATH="$PATH:/logiciels/mariadb_10.2/bin"
mysql -h 127.0.0.1 -P 3306 -u root -p
-- Créer l'utilisateur
CREATE USER 'asqatasun'@'%' IDENTIFIED BY PASSWORD '*461C39BF6D6678800707CC0F906D93EC9978272E';
    --  Ce mot de passe chiffré correspond au mot de passe: asqatasun

-- Créer la DB et ajouter les ACL
CREATE DATABASE IF NOT EXISTS `asqatasundb` DEFAULT CHARACTER SET utf8;
GRANT ALL PRIVILEGES ON asqatasundb.*  TO 'asqatasun'@'%';
GRANT SUPER ON *.* TO 'asqatasun'@'%' IDENTIFIED BY 'asqatasun';
FLUSH PRIVILEGES;
    
-- Vérifier les ACL 
show GRANTS for 'asqatasun'@'%';

-- Si erreur (**) : supprimer la DB + l'utilisateur et recommencer
DROP DATABASE `asqatasundb`;
DROP USER 'asqatasun'@'%';

Tester l’accès depuis le serveur asqatasun

mysql -u asqatasun -pasqatasun asqatasundb -h serveur_bdd_docker -P dbportinstal
    Welcome to the MariaDB monitor.  (...)

Mails avec Poxfix

Paramétrer POSFIX pour les mails

# Ajouter à /etc/postfix/main.cf
vi /etc/postfix/main.cf 
    smtp_sasl_auth_enable = yes
    smtpd_sasl_auth_enable = yes
    smtp_sasl_security_options = noanonymous
    smtp_sasl_tls_security_options = noanonymous
    smtp_sasl_password_maps = hash:/etc/postfix/sasl_passwd
    smtp_use_tls = yes
    smtp_tls_note_starttls_offer = yes
    smtp_sasl_mechanism_filter = login, plain
   
# Créer le fichier /etc/postfix/sasl_passwd
vi /etc/postfix/sasl_passwd
    mrelay-pr-app-79-1.enedis.oper comptemail:password
    
# Activer la configuration
postmap /etc/postfix/sasl_passwd
systemctl restart postfix

# Tester 
echo "Test de message" | mail -s "Essai Postfix" adresse_mail_test

Proxy avec Apache

Paramétrer Apache pour le proxy (dans mon cas j’ai un serveur proxy)

# Asqatasun
ProxyPass /asqatasun/ http://localhost:8080/asqatasun/
ProxyPassReverse /asqatasun/ http://localhost:8080/asqatasun/   
# Rédemarrer Apache
systemctl restart httpd

Installation d’Asqatasun

# en root
su

# Téléchargement 
cd /logiciels/sources
wget http://download.asqatasun.org/asqatasun-latest.tar.gz
cp ./asqatasun-latest.tar.gz ../
cd ../
tar -xzf ./asqatasun-4.0.3.i386.tar.gz
cd /logiciels/asqatasun-4.0.3.i386

# Modifier le fichier /logiciels/asqatasun-4.0.3.i386/install/web-app/conf/asqatasun.conf
# et mettre à jour jdbc.url=jdbc:mysql://$SQL_SERVER_URL:30406/$DATABASE_NAME
# avec le port qui convient(dbportinstal) dans cet exemple
# ----> Enlever les options de debug et activer le serveur local de smtp:
		#130919
		#isAllowedToSendKrashReport=true
		#krashReportMailList=support@asqatasun.org
		isAllowedToSendKrashReport=false	
		#130919
		smtp.host=localhost		

Modification des scrips SQL de la distribution d’asqatasun
pour la prise en compte du paramètre --database-port.

  • PROCEDURE_contract_create.sh
  • ASQA_contract_create_SEO.sh
  • ASQA_contract_create_A11Y_RGAA3.sh
  • ASQA_contract_create_A11Y_RGAA3_openbar.sh
  • tg-create-user.sh
  • tg-set-user-admin.sh
# Lancer l'installation	
./install.sh --database-user     asqatasun               \
             --database-passwd   asqatasun               \
             --database-db       asqatasundb             \
             --database-host     serveur_bdd_docker      \
             --database-port     dbportinstal                   \
             --tomcat-user       tomcat                  \
             --asqa-admin-email  mail_admin_asqatasun    \
             --asqa-admin-passwd pwd_admin_asqatasun     \
             --display-port      :99                     \
             --tomcat-webapps /var/lib/tomcat/webapps    \
             --asqatasun-url http://localhost:8080/asqatasun/    \
             --firefox-esr-binary-path /logiciels/firefox-31.4.0esr/firefox

Pour revenir en arrière si besoin, lancer

rm -f /usr/share/tomcat/.gconf 
rm -f /usr/share/tomcat/.java 
rm -f /usr/share/tomcat/.cache
rm -f /usr/share/tomcat/.dbus
rm -f /usr/share/tomcat/.mozilla
rm -f /usr/share/tomcat/.gnome2 
rm -f /usr/share/tomcat/.gnome2_private 
rm -f /etc/default/tomcat
/logiciels/asqatasun-4.0.3.i386/install/uninstall.sh -c /etc/asqatasun -p
    # le script de suppression de BDD ne fonctionne pas,
    # il faut lancer les commandes citées dans **

Configurer les options de démarrage pour Tomcat
pour prendre en compte asqatun autrement asquatun ne démarra pas:

vi /usr/share/tomcat/conf/tomcat.conf et ajouter à la fin du fichier
	JAVA_OPTS="-Xms512M -Xmx2048M -DconfDir=file:///etc/asqatasun -DlogDir=/var/log/asqatasun -Dwebdriver.firefox.bin=/logiciels/firefox-31.4.0esr/firefox -Ddisplay=:99"
	
# Rédémarrer Tomcat, important sinon erreur de l'adquisition du display 
#       ---> Caused by: org.openqa.selenium.WebDriverException: Failed to connect to binary FirefoxBinary(/logiciels/firefox-31.4.0esr/firefox) on port 7055; process output follows: (process:29366): GLib-CRITICAL **: g_slice_set_config: assertion 'sys_page_size == 0' failed Error: cannot open display: :99
su - tomcat
systemctl restart tomcat
  • Vérifier que Tomcat est vivant : https://serveur_tomcat/
  • dans la partie applications vérifier qu’asqatasun est démarré
  • Accéder à Asqatasun: https://serveur_tomcat/asqatasun/
  • Se connecter avec le compte crée dans ./install.sh …

Pour lancer un test un mode Scénario il faut enregistrer un scénario au format Json avec Selenium Builder puis l'importer dans un prjet d'audit dans Asqatasun
 Installer la version Firefox 31 ESR: https://ftp.mozilla.org/pub/firefox/releases/31.4.0esr/win32/fr/Firefox%20Setup%2031.4.0esr.exe
 Installer le plugin Selenium Builder V2.3.5 pour Firefox: https://github.com/Tanaguru/Download/raw/master/selenium-builder-2.3.5.xpi
Enregistrer les actions dans un site

Résumé:
Logs: /var/log/asqatasun/asqatasun.log
Conf:
/etc/asqatasun/asqatasun.conf
Paramétrage Tomcat pour asqatasun :/usr/share/tomcat/conf/tomcat.conf
SMTP:
/etc/postfix/main.cf
/etc/postfix/sasl_passwd
Pour debugger les logs asqatasun depuis tomcat
cp -p /var/lib/tomcat/webapps/asqatasun/WEB-INF/classes/log4j.properties /var/lib/tomcat/webapps/asqatasun/WEB-INF/classes/log4j.properties.orig
vi /var/lib/tomcat/webapps/asqatasun/WEB-INF/classes/log4j.properties
log4j.logger.org.asqatasun.crawler=INFO
log4j.logger.org.asqatasun.service=INFO


Erreur audit scénario : "Unable to locate element"
#2

C’est génail ! Merci @yeponte pour ce partage !

Est-ce que tu te sens de faire une Pull Request en mettant tout ça dans un fichier Install-CENTOS.md dans https://github.com/Asqatasun/Asqatasun/tree/develop/documentation/en/10_Install_doc/Asqatasun ?


#3

Merci @yeponte pour ton partage très détaillé.
Plusieurs personnes ont cherché à faire ce type d’installation et quelques une ont semble t’il réussi. Toutefois, aucun partage précis du processus d’installation sur Centos n’avait été fait. Donc big up !

j’ai commencé à reformater un peu ton message pour faciliter la lecture.

questions :

  1. pour le conteneur Docker MariaDB, je n’ai pas bien compris “les données initiales plus arborescence sous forme de fichier tar ( backup-volume-plateforme-dev-bdd.tar )”. Que contient ce fichier tar ?

  2. la configuration “enlever les options de debug et activer le serveur local de smtp” doit pouvoir se faire après l’installation d’Asqatasun en modifiant le /etc/asqatasun/asqatasun.conf ?

  3. "Modification des scrips SQL de la distribution d’asqatasun pour la prise en compte du paramètre –database-port

    • oui, nous sommes intéressés par les scripts modifiés (par mail ou sur Github)
    • ces modifications pourraient-elles être intégrées aux scripts officiels pour rendre ce type d’installation plus facile ?
  4. Pourrais-tu préciser “pour debugger les logs asqatasun depuis tomcat” ?


#4

Bonjour Fabrice.
Oui effectivement le détail pour une install sur une distrib CENTOS manquait, et j’ai galéré surtout pour faire marcher Asqatasun avec Tomcat. Même si c’est indiqué dans l’instal, il faut insister sur le fait d’installer Asqatasun avec l’utilisateur qui lance le service TOMCAT. Je lançait Tomcat en root et Asqatasun ne démarrait même pas, aucune log dans /var/log/asqatasun/asqatasun.log, rien…

  • pour le conteneur Docker MariaDB…en fait j’ai crée mes propres images Docker. J’utilise 2 conteneurs pour la BDD, le premier ne contient que les binaires et la configuration. Le deuxième contient l’arborescence des data/logs avec une initialisation de la BDD. L’idée est de découper la partie BDD des données qui sont montées dans un volume spécifique vol-plateforme-asqatasun-bdd. Ce volume est crée avec la première commande run. Ce choix n’est pas obligatoire, on peut parfaitement installer le premier conteneur et créer l’arborescence à la main pour initialiser la base.
    Une autre possibilité est de prendre directement une image mariadb de docker, il suffit de lancer la commande docker pull mariadb…(https://hub.docker.com/r/_/mariadb/)…D’ailleurs ce choix est peut être le plus simple.
  • je l’ai fait avant ainsi lors de l’install /install.sh --database-user asqatasun … le fichier de config est déployé avec les modifs…si on le fait après il faut modifier le fichier déployé, dans mon cas dans /etc/asqatasun/asqatasun.conf
  • oui je peux les fournir, je n’arrive pas à trouver ton mail…Par contre ils n’ont été testés qu’avec une base Mariadb,
  • J’ai eu beacoup de mal pour faire auditer un scénario à cause du problème tout bête de connexion du serveur Asqatasun au serveur ou se trouvait le site à auditer. Du coup j’ai voulu regarder les logs de Tomcat en mode debug, Pour cela, dans mon install Tomcat, il suffit de modifier le paramètre INFO à DEBUG, dans le fichier /var/lib/tomcat/webapps/asqatasun/WEB-INF/classes/log4j.properties=DEBUG…et de relancer Tomcat.

Cordialement
Yeponte


#5

Bonjour @yeponte,

merci pour toutes ces précisions.

pour le mail, tu trouveras cela ici : https://github.com/Asqatasun

question complémentaire :
pourquoi utiliser une DB dans un conteneur Docker et ne pas utiliser une DB directement sur le même serveur CentOS ou sur un autre serveur ?


#6

Bonjour @Fabrice
Cela s’explique par une question simplicité liée à mes environnements. J 'avais déjà une image Mariadb est cela me résultait plus simple d’utiliser un conteneur de cette image que d’installer une DB.