Мagento е платформа за електронна търговия с отворен код, която позволява на различни типове бизнеси да създават и управляват онлайн магазини. Предлага голям набор от функционалности и опции за персонализация, което я прави популярен избор както за малки, така и за големи бизнеси.
Magento (AlmaLinux 8)
- Операционна система: almalinux 8
Описание
Включен софтуер
Пакет | Версия |
---|---|
Magento | latest |
Docker | 3.20.10 |
Docker compose | 2.12.2 |
containerd.io | 1.6.10 |
Първоначално стартиране на услугата
Това приложение използва Docker, за да осигури по-бързо стартиране на прилежащия софтуер (Magento) и директно започване на употребата му. По този начин се елиминира нуждата от запознаване със спецификите му по отношение на конфигурация и инсталация. За да започнете директна работа с приложението, единственото, което трябва да направите е да посетите IP адреса, който е назначен за виртуалната Ви машина в бразура си, за да видите новата си Magento инсталация.
Забележка: По подразбиране, Magento може да се достъпи директно по IP адрес. За да започнете да използвате Magento с реалния си домейн, първо трябва да насочите въпросния домейн към IP адреса си и да промените настройките за това от къде се отваря Magento през неговия административен панел.
Бързи настройкии и често задавани въпроси
- Входът в клауд услугата се извършва посредством SSH ключ или парола, която сте посочили.
- Docker е инсталиран според препоръките от официалната docker документация.
- Стандартните команди
docker
иdocker compose
са вече достъпни в това приложение. - При първо стартиране на виртуалната машина, отнема няколко минути, преди да се стартира Docker контейнер, съдържащ Magento.
- Magento data е настроена да бъде persistent и се намира в
/opt/magento/data/
. MariaDB също е persistent и съхранява базите си данни в/opt/mariadb/data/
. - Потребителят за достъп до Magento административния панел е
admin
, а паролата еP@ssw0rd!
.
Забележка: По подразбиране, MAGENTO_HOST е настроен да бъде първият адрес на виртуалната машина. Целта е да разполагете с достъп веднага след стартиране на машината. За да започнете да използвате Magento с реалния си домейн, първо трябва да насочите въпросния домейн към IP адреса си и да промените настройките за това от къде се отваря Magento през неговия административен панел.
Допълнителни настройки при Docker
Допълнителнителните настройки за Magento, които можете да променяте и които се контролират директно от Docker са зададени като променливи стойности в конфигурационния файл /opt/docker-magento/docker-compose.yml
:
Забележка: След промяна на която и да е от стойностите, трябва да пресъздадете Docker контейнера, върху който работи приложението. За повече информация, моля, прочетете секцията за пресъздаване на Docker контейнери.
Magento конфигурационни опции
Генерални опции
- АPACHE_HTTP_PORT_NUMBER: HTTP порт, използван от Apache. Default: 8080
- APACHE_HTTPS_PORT_NUMBER: HTTPS порт, използван от Apache. Default: 8443
- MAGENTO_EXTERNAL_HTTP_PORT_NUMBER: Порт, използван от Magento за достъп отвън използвайки HTTP протокол. Използва се и за вътрешни пътища в Magento. Default: 80
- MAGENTO_EXTERNAL_HTTPS_PORT_NUMBER: Порт, използван от Magento за достъп отвън използвайки HTTPS протокол. Използва се и за вътрешни пътища в Magento. Default: 443
- MAGENTO_USERNAME: Magento потребител за достъп. Default: admin
- MAGENTO_PASSWORD: Magento парола за потребителя. Default: P@ssw0rd!
- MAGENTO_EMAIL: Magento email. Default: admin@example.com
- MAGENTO_FIRST_NAME: Magento име на потребителя. Default: FirstName
- MAGENTO_LAST_NAME: Magento фамилия на потребителя. Default: LastName
- MAGENTO_HOST: Magento домейн или IP адрес. Default: Current IP address, taken dynamically
- MAGENTO_MODE: Magento мод. Валидни стоности: default, production, developer. Default: default
- MAGENTO_EXTRA_INSTALL_ARGS: Допълнителни параметри, които да се добавят към командата 'setup:install' при първоначална инсталация. Без default стойности
- MAGENTO_ADMIN_URL_PREFIX: URL префикс за достъп до административния панел на Magento. Default: admin
- MAGENTO_ENABLE_HTTPS: Дали да се използва SSL за достъп до Magento Store. Валидни стоности: yes, no. Default: no
- MAGENTO_ENABLE_ADMIN_HTTPS: Дали да се използва SSL за достъп до Magento административния панел. Валидни стоности: yes, no. Default: no
- MAGENTO_DEPLOY_STATIC_CONTENT: Дали да се деплойва статично съдържание по време на инициализация, за да се оптимизира първоначалнано зареждане на страниците. Default: no
- MAGENTO_KEEP_STATIC: Дали да се запази съдържанието на директорията 'pub/static' по време на първоначална инициализация. Default: no
- MAGENTO_SKIP_REINDEX: Дали да се пропусне реиндексирането на Magento по време на първоначална инициализация. Default: no
- MAGENTO_SKIP_BOOTSTRAP: Дали да се пропусне първоначален bootstrapping на Magento. Default: no
HTTP cache server
- MAGENTO_ENABLE_HTTP_CACHE: Дали да се включи допълнителен HTTP кеширащ сървър за Magento (напр. Varnish). Default: no
- MAGENTO_HTTP_CACHE_BACKEND_HOST: Хостнейм на кеширащия HTTP бекенд. Без default стойности
- MAGENTO_HTTP_CACHE_BACKEND_PORT_NUMBER: Порт на кеширащия HTTP бекенд. Без default стойности
- MAGENTO_HTTP_CACHE_SERVER_HOST: Сървърен хоснейм на кеширащ HTTP бекенд. Без default стойности
- MAGENTO_HTTP_CACHE_SERVER_PORT_NUMBER: Порт на сървърния кеширащ HTTP бекендe. Без default стойности
Търсачки
- MAGENTO_SEARCH_ENGINE: Търсачка на Magento. Default: elasticsearch7
- MAGENTO_ELASTICSEARCH_HOST: Сървърен хост на Elasticsearch, ако се използва Elasticsearch за търсчка. Default: elasticsearch
- MAGENTO_ELASTICSEARCH_PORT_NUMBER: Сървърен портн на Elasticsearch, ако се използва Elasticsearch за тъесчка. Default: 9200
- MAGENTO_ELASTICSEARCH_USE_HTTPS: Дали да се достъпва Elasticsearch сървърът с 'https://' представка. Default: no
- MAGENTO_ELASTICSEARCH_ENABLE_AUTH: Дали да се включи допълнителна аутентикация за конекции към Elasticsearch сървъра. Default: no
- MAGENTO_ELASTICSEARCH_USER: Потребител за достъп до Elasticsearch, ако се използва Elasticsearch за търсачка и е включена допълнителна аутентикация. Без default стойности
- MAGENTO_ELASTICSEARCH_PASSWORD: Потребителска парола за достъп до Elasticsearch, ако се използва Elasticsearch за тъесчка и е включена допълнителна аутентикация. Без default стойности
Конфигурация на бази данни
- MAGENTO_DATABASE_HOST: Хостнейм за връзка с MariaDB или MySQL сървър. Default: mariadb
- MAGENTO_DATABASE_PORT_NUMBER: Порт за връзка с MariaDB или MySQL сървър. Default: 3306
- MAGENTO_DATABASE_NAME: Име на база данни, които Magento ще използва за връзка с MariaDB или MySQL сървър. Default: magento
- MAGENTO_DATABASE_USER: Потребител, който Magento ще използва за връзка с MariaDB или MySQL сървър. Default: magento
- MAGENTO_DATABASE_PASSWORD: Парола за база данни, които Magento ще използва за връзка с MariaDB или MySQL сървър. Без default стойности.
- MAGENTO_ENABLE_DATABASE_SSL: Дали да се използва SSL за връзка с база данни. Default: no
- MAGENTO_VERIFY_DATABASE_SSL: Дали да се врифицира валидността на SSL сертификата Whether при връзка с база данни. Default: yes
- MAGENTO_DATABASE_SSL_CERT_FILE: Път към сертификационния файл. Без default стойности
- MAGENTO_DATABASE_SSL_KEY_FILE: Път към ключа за сертификата. Без default стойности
- MAGENTO_DATABASE_SSL_CA_FILE: Път към файла, съдържащ CA bundle/Intermediate chain-а. Без default стойности
- ALLOW_EMPTY_PASSWORD: Използва се за връзка към базата данни с празни пароли. Default: no
PHP конфигурационни опции
- PHP_ENABLE_OPCACHE: Включване на OPcache за PHP. Default: yes
- PHP_EXPOSE_PHP: Показване на HTTP header в PHP. Без default.
- PHP_MAX_EXECUTION_TIME: Максимално време за изпълнение на PHP скриптовете. Без default.
- PHP_MAX_INPUT_TIME: Maximum input време за PHP скриптовете. Без default.
- PHP_MAX_INPUT_VARS: Максимален брой променливи PHP скриптовете. Без default.
- PHP_MEMORY_LIMIT: Лимит на паметта за PHP скриптовете. Default: 512M
- PHP_POST_MAX_SIZE: Максимален размер на PHP POST заявки. Без default.
- PHP_UPLOAD_MAX_FILESIZE: Максимален обем за качване на файлове за PHP PHP скриптовете. Без default.
SSL сертификати
Използване на собствени (платени) SSL сертификати
Ако вече разполагате с готови, валидни сертификати, трябва да направите няколко модификации върху конфигурацията, преди да можете да ги използвате. За да постигнете това, моля следвайте следните стъпки:
Стъпка 1 - поставяне на сертификатите
Създайте директория, където сертификатите ще се съхраняват:
mkdir /opt/certs/
Копирайте сертификатите в директорията, която създадохте току-що и модифицирайте техните права:
chown 1001:1001 /opt/certs/ -R
Стъпка 2 - модифицирайте Docker конфигурацията
Отворете docker конфигурационния файл /opt/docker-magento/docker-compose.yml
с текстов редактор и намерете следния фрагмент:
magento:
image: docker.io/bitnami/magento:2
ports:
- '80:8080'
- '443:8443'
environment:
- MAGENTO_HOST=localhost
- MAGENTO_DATABASE_HOST=mariadb
- MAGENTO_DATABASE_PORT_NUMBER=3306
- MAGENTO_DATABASE_USER=magento
- MAGENTO_DATABASE_NAME=magento
- ELASTICSEARCH_HOST=elasticsearch
- ELASTICSEARCH_PORT_NUMBER=9200
- ALLOW_EMPTY_PASSWORD=yes
- MAGENTO_USERNAME=admin
- MAGENTO_PASSWORD=P@ssw0rd!
- MAGENTO_EMAIL=admin@example.com
- MAGENTO_ADMIN_URL_PREFIX=admin
volumes:
- '/opt/magento/data/:/bitnami/magento'
Редактирайте го, така че да изглежда по следния начин:
magento:
image: docker.io/bitnami/magento:2
ports:
- '80:8080'
- '443:8443'
environment:
- MAGENTO_HOST=localhost
- MAGENTO_DATABASE_HOST=mariadb
- MAGENTO_DATABASE_PORT_NUMBER=3306
- MAGENTO_DATABASE_USER=magento
- MAGENTO_DATABASE_NAME=magento
- ELASTICSEARCH_HOST=elasticsearch
- ELASTICSEARCH_PORT_NUMBER=9200
- ALLOW_EMPTY_PASSWORD=yes
- MAGENTO_USERNAME=admin
- MAGENTO_PASSWORD=P@ssw0rd!
- MAGENTO_EMAIL=admin@example.com
- MAGENTO_ADMIN_URL_PREFIX=admin
volumes:
- '/opt/magento/data/:/bitnami/magento'
- '/opt/certs/cert.pem:/opt/bitnami/apache/conf/bitnami/certs/server.crt'
- '/opt/certs/privkey.pem:/opt/bitnami/apache/conf/bitnami/certs/server.key'
Обърнете внимание, че /opt/certs/cert.pem
е пътя до сертификата, а /opt/certs/privkey.pem
е пътя до частния ключ. Можете да именувате файловете и директоряита както пожелаете, но трябва да са посочени правилно в конфигурацията
Стъпка 3 - рестартирайте Docker контейнерите
cd /opt/docker-magento/
docker compose up -d
Издаване на сертификати с Letsencrypt
Ако желаете, винаги можете да издадете и безплатни сертификати от Letsencrypt. За целта, моля следвайте следните стъпки:
Стъпка 1 - инсталиране на нужните пакети
Влезте в сървъра си, като добиете root права и изпълнете следните команди:
dnf install -y epel-release
dnf install -y certbot
Стъпка 2 - издаване на сертификата
Моля имайте предвид, че за да бъде издаден безплатен сертификат, то е нужно да можете да верифицирате по някакъв начин собствеността на домейна си. Letsencrypt предоставя няколко възможности за верификация на домейните ви, в този пример ще използваме верификация чрез стартиране на временен уеб сървър.
За целта, спрете временно контейнера с командата docker stop docker-magento-magento-1
. Важно: Изпълнявайки тази стъпка, сайтът ви ще спре да работи временно. Уверете се, че искате да изпълните това действие във време, когато най-малко ще афектира потребителите ви.
Издайте сертификата с командата certbot certonly --standalone --preferred-challenges http -d example.com
, като замените "example.com" с домейна, който сте насочили към IP адреса на Cloud сървъра си.
Стъпка 3 - поставете новите сертификати в конфигурацията
Отворете docker конфигурационния файл /opt/docker-magento/docker-compose.yml
с текстов редактор и намерете следния фрагмент:
magento:
image: docker.io/bitnami/magento:2
ports:
- '80:8080'
- '443:8443'
environment:
- MAGENTO_HOST=localhost
- MAGENTO_DATABASE_HOST=mariadb
- MAGENTO_DATABASE_PORT_NUMBER=3306
- MAGENTO_DATABASE_USER=magento
- MAGENTO_DATABASE_NAME=magento
- ELASTICSEARCH_HOST=elasticsearch
- ELASTICSEARCH_PORT_NUMBER=9200
- ALLOW_EMPTY_PASSWORD=yes
- MAGENTO_USERNAME=admin
- MAGENTO_PASSWORD=P@ssw0rd!
- MAGENTO_EMAIL=admin@example.com
- MAGENTO_ADMIN_URL_PREFIX=admin
volumes:
- '/opt/magento/data/:/bitnami/magento'
Редактирайте го, така че да изглежда по следния начин:
magento:
image: docker.io/bitnami/magento:2
ports:
- '80:8080'
- '443:8443'
environment:
- MAGENTO_HOST=localhost
- MAGENTO_DATABASE_HOST=mariadb
- MAGENTO_DATABASE_PORT_NUMBER=3306
- MAGENTO_DATABASE_USER=magento
- MAGENTO_DATABASE_NAME=magento
- ELASTICSEARCH_HOST=elasticsearch
- ELASTICSEARCH_PORT_NUMBER=9200
- ALLOW_EMPTY_PASSWORD=yes
- MAGENTO_USERNAME=admin
- MAGENTO_PASSWORD=P@ssw0rd!
- MAGENTO_EMAIL=admin@example.com
- MAGENTO_ADMIN_URL_PREFIX=admin
volumes:
- '/opt/magento/data/:/bitnami/magento'
- '/etc/letsencrypt/live/example.com/cert.pem:/opt/bitnami/apache/conf/bitnami/certs/server.crt'
- '/etc/letsencrypt/live/example.com/privkey.pem:/opt/bitnami/apache/conf/bitnami/certs/server.key'
С тази модификация оказвате, че "свързвате" външните сертификати, издадени от Letsencrypt с конфигурацията, която се намира вътре в docker контейнера. Заменете "example.com" с името на домейна си. След като подмените конфигурацията, е нужно да поправите правата на сертификатите с командата chown 1001:1001 /etc/letsencrypt/archive/example.com/ -R
, като отново замените "example.com" с името на домейна си.
Стъпка 4 - стартиране на услугите
Тъй като временно е спрян docker контейнера, то трябва да се приложи новата конфигурация и да го стартираме. Моля изпълнете следните команди:
cd /opt/docker-magento/
docker compose up -d
Стъпка 5 (опционално) - автоматично подновяване на сертификата
Автоматичното подновяване може да бъде организирано чрез cron. Можете да зададете следната cron конфигурация, за да се случи автматичното подновяване:
# Automated Letsencrypt renewal
0 0 * * * /usr/bin/certbot renew --pre-hook 'docker stop docker-magento-magento-1' --post-hook 'chown 1001:1001 /etc/letsencrypt/archive/example.com/ -R; docker start docker-magento-magento-1'
Разбира се, можете да промените времето на изпълнение, когато пожелаете. В горният пример, тази задача ще се изпълнява всеки ден в 00:00 часа.
Работа с Docker
Организацията на това приложение е осъществена изцяло посредством Docker. По този начин можем да Ви предоставим готови приложения по-бързо. Освен това, конфигурацията им е по-гъвкава и е доста контролируема. За да можете да го контролирате това приложение обаче, е нужно да знаете някой базови Docker функционалности и особености.
Рестартиране на всички услуги
Рестартирането на базата данни и Docker контейнера, който съдържа самия Magento, заедно с останалия софтуер, може да бъде извършено по два начина:
- Чрез рестартиране на цялата виртуална машина
- Рестартиране на Docker контейнерите, което е по-бързия вариант. За целта, достъпете машината си чрез SSH, и изпълнете следните команди:
sudo su -
cd /opt/docker-magento
docker compose restart
Пресъздаване на Docker контейнери
Пресъздаването може да се наложи, в случай че сме променяли конфигурацията в docker-compose.yml
. При тази ситуация, трябва да следвате следните стъпки:
cd /opt/docker-magento
docker compose stop
docker compose up -d
Проверка на статуса на Docker приложението
За да направите проверка, трябва да изпълните следните команди:
sudo su -
docker ps -a
Моля, обърнете внимание на колоната STATUS
. Тя трябва да показва от колко време работи услугата, например Up X minutes
. Ако статуса е Restarting
, то трябва да се провери какво не е наред с приложението. В такъв случай, можете да направите проверка, като проследите логовете на приложението по следния начин:
- Вземете името на приложението, което можете да видите в колоната
NAMES
от изходния код на командатаdocker ps -a
. Вижте логовете с командатаdocker logs <NAME>
, Къдетое името на контейнера.
Промяна на настройки
Описаните настройки в секцията Допълнителни настройки при Docker могат да бъдат нагласяни в docker-compose.yml файла. Пътят до него е описан отново в тази секция. За да промените настройка, отворете конфигурационния файл и обърнете внимание на секцията environment
, намираща се под magento
. Всяка една конфигурационна опция трябва да бъде описана на нов ред с тире отпред по следния примерен начин:
environment:
- АPACHE_HTTP_PORT_NUMBER=8080
- APACHE_HTTPS_PORT_NUMBER=8443
Моля, обърнете внимание, че трябва да се спазва и правилната индентация (брой празно място), тъй като това е важно за конфигурационни файлове от тип yaml.