Bonjour,
Tout d’abord merci pour tout votre travail sur Dokos c’est génial comme outil !
J’ai le projet de développer une extension à Dokos pour les besoins de mon asso. Pour ça j’ai voulu créer une VM Debian 10 avec à l’intérieur Dokos pour travailler en local (vu qu’il n’y a pas encore de version Docker stable pour Dokos). Pour l’installation de Dokos j’ai eu divers problèmes que j’ai pu résoudre, mais je suis tombé sur une erreur que je n’arrive pas à résoudre :
TASK [bench : setup config] **************\*\***************\*\***************\*\***************
task path: /tmp/.bench/bench/playbooks/roles/bench/tasks/main.yml:53
<127.0.0.1> ESTABLISH LOCAL CONNECTION FOR USER: root
<127.0.0.1> EXEC /bin/sh -c 'echo ~root && sleep 0'
<127.0.0.1> EXEC /bin/sh -c '( umask 77 && mkdir -p "`echo /var/tmp`"&& mkdir /var/tmp/ansible-tmp-1664465784.1725156-29554-106470440794952 && echo ansible-tmp-1664465784.1725156-29554-106470440794952="`echo /var/tmp/ansible-tmp-1664465784.1725156-29554-106470440794952`" ) && sleep 0'
Using module file /usr/local/lib/python3.7/dist-packages/ansible/modules/commands/command.py
<127.0.0.1> PUT /root/.ansible/tmp/ansible-local-26078_zpjn0d2/tmp_yi8jg8n TO /var/tmp/ansible-tmp-1664465784.1725156-29554-106470440794952/AnsiballZ_command.py
<127.0.0.1> EXEC /bin/sh -c 'setfacl -m u:dokos:r-x /var/tmp/ansible-tmp-1664465784.1725156-29554-106470440794952/ /var/tmp/ansible-tmp-1664465784.1725156-29554-106470440794952/AnsiballZ_command.py && sleep 0'
<127.0.0.1> EXEC /bin/sh -c 'sudo -H -S -n -u dokos /bin/sh -c '"'"'echo BECOME-SUCCESS-frsiqghosdcuytxnrqymnebdqufftotn ; /usr/bin/python3 /var/tmp/ansible-tmp-1664465784.1725156-29554-106470440794952/AnsiballZ_command.py'"'"' && sleep 0'
<127.0.0.1> EXEC /bin/sh -c 'rm -f -r /var/tmp/ansible-tmp-1664465784.1725156-29554-106470440794952/ > /dev/null 2>&1 && sleep 0'
fatal: [localhost]: FAILED! => {
"changed": true,
"cmd": [
"bench",
"setup",
"config"
],
"delta": "0:00:01.197805",
"end": "2022-09-29 17:36:27.190648",
"invocation": {
"module_args": {
"\_raw_params": "bench setup config",
"\_uses_shell": false,
"argv": null,
"chdir": "/home/dokos/dokos-bench",
"creates": "/home/dokos/dokos-bench/sites/common_site_config.json",
"executable": null,
"removes": null,
"stdin": null,
"stdin_add_newline": true,
"strip_empty_ends": true,
"warn": true
}
},
"msg": "non-zero return code",
"rc": 1,
"start": "2022-09-29 17:36:25.992843",
"stderr": "Traceback (most recent call last):\n File \"/usr/local/bin/bench\", line 8, in <module>\n sys.exit(cli())\n File \"/usr/local/lib/python3.7/dist-packages/bench/cli.py\", line 70, in cli\n cmd_from_sys = get_cmd_from_sysargv()\n File \"/usr/local/lib/python3.7/dist-packages/bench/utils/**init**.py\", line 559, in get_cmd_from_sysargv\n if sys_argv.index(arg) == 0 and arg in Bench(\".\").apps:\n File \"/usr/local/lib/python3.7/dist-packages/bench/bench.py\", line 66, in **init**\n self.apps = BenchApps(self)\n File \"/usr/local/lib/python3.7/dist-packages/bench/bench.py\", line 171, in **init**\n self.initialize_apps()\n File \"/usr/local/lib/python3.7/dist-packages/bench/bench.py\", line 269, in initialize_apps\n self.apps.remove(\"frappe\")\nValueError: list.remove(x): x not in list",
"stderr_lines": [
"Traceback (most recent call last):",
" File \"/usr/local/bin/bench\", line 8, in <module>",
" sys.exit(cli())",
" File \"/usr/local/lib/python3.7/dist-packages/bench/cli.py\", line 70, in cli",
" cmd_from_sys = get_cmd_from_sysargv()",
" File \"/usr/local/lib/python3.7/dist-packages/bench/utils/__init__.py\", line 559, in get_cmd_from_sysargv",
" if sys_argv.index(arg) == 0 and arg in Bench(\".\").apps:",
" File \"/usr/local/lib/python3.7/dist-packages/bench/bench.py\", line 66, in __init__",
" self.apps = BenchApps(self)",
" File \"/usr/local/lib/python3.7/dist-packages/bench/bench.py\", line 171, in __init__",
" self.initialize_apps()",
" File \"/usr/local/lib/python3.7/dist-packages/bench/bench.py\", line 269, in initialize_apps",
" self.apps.remove(\"frappe\")",
"ValueError: list.remove(x): x not in list"
],
"stdout": "",
"stdout_lines": []
}
PLAY RECAP ******************\*\*******************\*\*\*******************\*\*******************
localhost : ok=67 changed=13 unreachable=0 failed=1 skipped=72 rescued=0 ignored=0
Traceback (most recent call last):
File "install.py", line 656, in <module>
install_bench(args)
File "install.py", line 299, in install_bench
run_playbook("site.yml", sudo=True, extra_vars=extra_vars)
File "install.py", line 454, in run_playbook
success = subprocess.check_call(
File "/usr/local/lib/python3.8/subprocess.py", line 364, in check_call
raise CalledProcessError(retcode, cmd)
subprocess.CalledProcessError: Command '['ansible-playbook', '-c', 'local', 'site.yml', '-vvvv', '-e', '@/tmp/extra_vars.json', '--become', '--become-user=dokos']' returned non-zero exit status 2.
Voici mon process d’installation pour arriver à ce problème :
sudo apt update
sudo apt install -y spice-vdagent spice-webdavd # Permet de faire des copie et colle entre machine virtuelle et host
# Installation de Python 3.8
sudo apt-get install -y wget build-essential libreadline-gplv2-dev libncursesw5-dev libssl-dev libsqlite3-dev tk-dev libgdbm-dev libc6-dev libbz2-dev libffi-dev zlib1g-dev liblzma-dev
wget https://www.python.org/ftp/python/3.8.0/Python-3.8.0.tar.xz
tar xf Python-3.8.0.tar.xz
cd Python-3.8.0
./configure --enable-optimizations
sudo make altinstall
/usr/local/bin/python3.8 -m pip install --upgrade pip
# Ajout des sources pour installer MariaDB 10.4 a la place de MariaDB 10.3 (qui est installee par defaut si on change pas les sources de APT)
sudo apt-get install -y software-properties-common dirmngr
wget https://mariadb.org/mariadb_release_signing_key.asc
sudo apt-key add mariadb_release_signing_key.asc
sudo add-apt-repository 'deb [arch=amd64] http://nyc2.mirrors.digitalocean.com/mariadb/repo/10.4/debian buster main'
sudo apt update
# Installation de Dokos
sudo apt install -y python3-pip
sudo apt install -y build-essential python3-setuptools
sudo apt-get install -y python3-venv
sudo adduser dokos
sudo usermod -aG sudo dokos
su - dokos
export LC_ALL=C.UTF-8
wget https://gitlab.com/dokos/docli/raw/master/bench/install.py
# Premiere tentative d'installation
# -> on va normalement avoir un probleme pendant l'installation car expernet rajoute un fichier de configuration pour MariaDB afin de modifier le formatage du texte. Le formatage de MariaDB par défaut est le latin1 alors que le fichier de configuration rajouté par epernext spécifie le utf8mb4_unicode_ci pour collation-server (collation-server = utf8mb4_unicode_ci) mais ce fichier ne configuration ne change pas le character-set-server = utf8 en character-set-server = utf8mb4 ce qui pose problème pour lancer le serveur
sudo python3 install.py --production --verbose --user dokos
# Si on a une erreur durant l'installation avec MariaDB on modifie le fichier de configuration general
# On modif les lignes dans le fichier my.cnf avec les valeurs suivantes
sudo nano /etc/mysql/my.cnf
# Lignes a modifier
character-set-server = utf8mb4
collation-server = utf8mb4_unicode_ci
# On retente l'installation
sudo python3 install.py --production --verbose --user dokos
# -> Maintenant on tombe normalmemt sur l'erreur dont je parle dans le post
sudo bench setup production dokos # -> Je n'ai jamais reussi Ă arriver Ă cette Ă©tape
Voici diverses erreurs que j’ai pu avoir :
-
La version Python 3 (3.7.3) installée par défaut sur Debian n’est pas suffisante pour l’installation il est nécessaire d’installer Python 3.8.
-
La version de MariaDB qui est dans apt est trop ancienne 10.3 (ou moins je sais plus exactement) au lieu de 10.4 nécessaire à l’installation.
-
Un problème de configuration dans les fichiers de MariaDB au niveau du formatage :
expernet rajoute un fichier de configuration pour MariaDB afin de modifier le formatage du texte. Le formatage de MariaDB par défaut est le latin1
alors que le fichier de configuration rajouté par epernext spécifie le utf8mb4_unicode_ci
pour collation-server
(collation-server = utf8mb4_unicode_ci
) mais ce fichier ne configuration ne change pas le character-set-server = utf8
en character-set-server = utf8mb4 ce qui pose problème pour lancer le serveur
Est-ce-que vous auriez des indices ou des solutions pour résoudre ce problème ?
Je fais de grosse bêtises dans l’installation ?
Merci par avance à ceux qui ont lu jusqu’au bout et à ceux qui me répondront
Bonne journée
Florian V.