Docker projet Magento 1.9 sous Windows

Ceci n’est pas un article à proprement parler, mais un mémo que je laisse visible car cela peut intéresser d’autres personnes.

Afin de me débarrasser d’un stack WAMP vieillissant et peu évolutif pour mes développements par Docker, je publie ci-dessous mon projet Magento 1.9, pour ceux, comme moi qui maintienne encore cet ancien CMS e-commerce.


Répertoire du projet

Il s’agit d’un stack LAMP classique : Apache, PHP 5.6, MySQL 5.7, PHPMyAdmin et memcached. Il y a 4 conteneurs. Niveau arborescence, mon projet Docker Magento 1.9 ressemble à ceci :

projet_mage19/
	confs/
	db_data/
	magento_data/
	mysql/
		conf.d/
	docker-compose.yml
	Dockerfile
  • confs : php.ini
  • db_data : les données MySQL
  • magento_data : le site Magento
  • mysql/conf.d : my.cnf

docker-compose.yml

La partie « command » du conteneur « db » permet d’avoir le my.cnf en lecture seule, sinon il est ignoré par MySQL.

version: "3.9"

services:
  db:
    image: mysql:5.7
    volumes:
      - ./db_data:/var/lib/mysql
      - ./mysql/conf.d/:/usr/local/mysqlconf
    restart: always
    environment:
      MYSQL_ROOT_PASSWORD: password_root_mysql
      MYSQL_DATABASE: nom_database
      MYSQL_USER: nom_utilisateur
      MYSQL_PASSWORD: password_utilisateur
    command: >
      bash -c "

      cp /usr/local/mysqlconf/*.cnf /etc/mysql/conf.d/ && chmod 644 /etc/mysql/conf.d/*.cnf && /entrypoint.sh mysqld
      "
    
  mage19:
    depends_on:
      - db
    build: .
    volumes:
      - ./magento_data:/var/www/html
    ports:
      - "80:80"
    restart: always
    stdin_open: true
    tty: true
    extra_hosts:
      - monsitemagento.local:127.0.0.1
    hostname: monsitemagento.local
    domainname: local
    
  phpmyadmin:
    image: phpmyadmin
    restart: always
    ports:
      - 8080:80
    environment:
      - PMA_ARBITRARY=1
      
  memcached:
    image: bitnami/memcached:latest
    ports:
      - 11211:11211
    environment:
      - MEMCACHED_CACHE_SIZE=512
      
volumes:
  db_data: {}
  magento_data: {}
  confs: {}

Dockerfile

FROM php:5.6-apache

EXPOSE 80

RUN apt-get update -qq && \
    apt-get install -qy \
	libmemcached-dev \
	zlib1g-dev \
    git \
    gnupg \
    unzip \
    zip \
	&& pecl install memcached-2.2.0 \
    && docker-php-ext-enable memcached

ADD https://github.com/mlocati/docker-php-extension-installer/releases/latest/download/install-php-extensions /usr/local/bin/

RUN chmod +x /usr/local/bin/install-php-extensions && \
    install-php-extensions \
	dom \
	hash \
	iconv \
	pcre \
	simplexml \
	mbstring \
	zip \
        gd \
	pdo \
	pdo_mysql \
	memcached
	
COPY confs/php.ini /usr/local/etc/php/conf.d/app.ini
	
RUN a2enmod rewrite
RUN service apache2 restart

my.cnf

[mysqld]
query_cache_type = 1
query_cache_size = 512M
query_cache_limit = 256M

tmp_table_size = 256M
max_heap_table_size = 256M
read_buffer_size = 128M
read_rnd_buffer_size = 128M
bulk_insert_buffer_size = 64M

myisam_sort_buffer_size = 128M
myisam_max_sort_file_size = 256M
myisam_repair_threads = 2

key_buffer_size = 256M
max_allowed_packet = 256M
table_open_cache = 1024
sort_buffer_size = 8M
thread_cache_size = 8

innodb_log_buffer_size = 32M
innodb_log_file_size = 32M
innodb_log_files_in_group = 2
innodb_flush_log_at_trx_commit = 0
innodb_buffer_pool_size = 1024M

php.ini

date.timezone = Europe/Paris

memory_limit = 1024M
max_execution_time=600

magic_quotes_gpc = off

opcache.enable = 1
opcache.enable_cli = 1
opcache.memory_consumption = 256M
opcache.revalidate_freq = 0
apc.enable_cli = On

upload_max_filesize = 16M
post_max_size = 16M

realpath_cache_size = 4096k
realpath_cache_ttl = 7200

display_errors = Off
display_startup_errors = Off

Démarrer les conteneurs avec docker-compose

Pour accéder au site via http://monsitemagento.local ne pas oublier d’ajouter une ligne dans le fichier hosts :

127.0.0.1       monsitemagento.local

Puis, dans un terminal, dans le répertoire projet_mage19 :

docker-compose up -d

Kit évolution Ryzen 7 chipset B550

Il y a très très longtemps, j’avais fait un billet sur mon retour dans le monde du PC après quelques années chez Apple. Quelques années ont passé et il était temps de muscler ma machine qui commencait sérieusement à peiner pour le montage vidéo.


Ma configuration

Je suis donc parti sur un kit évolution MOBO + CPU + RAM, en AMD – Intel étant de plus en plus à la ramasse. Le reste, j’ai déjà et je garde pour l’instant.

Dans mes recherches j’étais parti sur une carte mère X570 pour le full support PCIe 4.0, mais au final je me suis rendu compte qu’un chipset B550 ferait amplement l’affaire.

Voici ma configuration actuelle :

Pour ce que je garde :

Exclure un répertoire de l’authentification HTTP

Vous avez un site avec une authentification HTTP fournie par un serveur Apache 2.4, mais vous voudriez exclure un de ses répertoires pour qu’il soit accessible sans avoir besoin de s’authentifier avec un nom d’utilisateur et mot de passe. Le cas typique en ce qui me concerne est de pouvoir renouveler un certificat Let’s Encrypt d’un site protégé par une authentification HTTP basique.


La partie HTTP authentication basic de base ressemble à ça :

<Directory "/var/www/html">
	AuthType Basic
	AuthName "Basic Authentication"
	AuthUserFile /etc/httpd/.htpasswd
	require valid-user
</Directory>

Pour ajouter un répertoire en liste blanche de cette authentification, dans mon cas le chemin /var/www/html/.well-known/acme-challenge/ il suffit d’ajouter une directive Directory avec l’option Satisfy Any :

<Directory "/var/www/html/.well-known/acme-challenge/">
	Satisfy Any
</Directory>

Et voilà.

Impossible de démarrer Elasticsearch après un downgrade

Je suis en train de préparer la migration d’un boutique sous Magento 1.9 vers Magento 2.3 et une des grandes nouveautés de cette version est la prise en charge en natif du moteur de recherche Elasticsearch.


J’ai installé la dernière version stable d’ES pour CentOS 7, soit la version 7.5, mais j’ai rencontré des problèmes avec Magento 2.3.3, car celui-ci ne prend en charge officiellement que la version 6 d’ES. J’ai donc downgradé ce dernier en version 6.8.6, mais un nouveau problème est survenu : impossible de démarrer le moteur de recherche.

Je n’ai plus le message d’erreur exact rencontré dans le fichier de log /var/log/elasticsearch/elasticsearch.log, mais c’était quelque chose comme :

failed to open /var/lib/elasticsearch/node/0

Après quelque recherche, il s’avère que lors de la mise à jour vers une version plus ancienne, le répertoire data doit être supprimé pour que la version 6 fonctionne et démarre correctement.

Ainsi après la suppression de la version 7.x avec yum remove elasticsearch, il faut supprimer le répertoire /var/lib/elasticsearch, puis installer la version 6.x. Et là, plus de problème, ES démarre et fonctionne.

Pour installer Elasticsearch sous CentOS ou tout autre distribution, c’est ici : https://www.elastic.co/guide/en/elastic-stack/current/index.html