PrestaShop (AlmaLinux 8)

PrestaShop (AlmaLinux 8)

  • Операционна система: almalinux 8

Описание

PrestaShop е безплатна онлайн платформа за електронна търговия, която предоставя инструменти за създаване и управление на онлайн магазини. С PrestaShop можете да създавате красиви и функционални онлайн магазини, като избирате от широка гама от теми и добавки, които ви позволяват да персонализирате външния вид и функционалността на магазина си. Възможностите на PrestaShop включват управление на инвентара, обработка на плащания, маркетингови кампании, анализ на продажбите и много други. PrestaShop е с отворен код, което означава, че можете да модифицирате и разширявате платформата, за да отговори на конкретните ви нужди.

Включен софтуер

Пакет Версия
PrestaShop latest
Docker 3.20.10
Docker compose 2.12.2
containerd.io 1.6.10

Първоначално стартиране на услугата

Това приложение използва Docker, за да осигури по-бързо стартиране на прилежащия софтуер (PrestaShop) и директно започване на употребата му. По този начин се елиминира нуждата от запознаване със спецификите му по отношение на конфигурация и инсталация. За да започнете директна работа с приложението, единственото, което трябва да направите е да посетите IP адреса, който е назначен за виртуалната Ви машина в бразура си, за да видите новата си PrestaShop инсталация.

Забележка: По подразбиране, PrestaShop може да се достъпи директно по IP адрес. За да започнете да използвате PrestaShop с реалния си домейн, първо трябва да насочите въпросния домейн към IP адреса си и да промените настройките за това от къде се отваря PrestaShop през неговия административен панел.

Бързи настройкии и често задавани въпроси

  • Входът в клауд услугата се извършва посредством SSH ключ или парола, която сте посочили.
  • Docker е инсталиран според препоръките от официалната docker документация.
  • Стандартните команди docker и docker compose са вече достъпни в това приложение.
  • При първо стартиране на виртуалната машина, отнема няколко минути, преди да се стартира Docker контейнер, съдържащ PrestaShop.
  • PRESTASHOP data е настроена да бъде persistent и се намира в /opt/prestashop/data/. MariaDB също е persistent и съхранява базите си данни в /opt/mariadb/data/.
  • Потребителят за достъп до PrestaShop административния панел е admin, а паролата е P@ssw0rd!.

Забележка: По подразбиране, PRESTASHOP_HOST е настроен да бъде първият адрес на виртуалната машина. Целта е да разполагете с достъп веднага след стартиране на машината. За да започнете да използвате PrestaShop с реалния си домейн, първо трябва да насочите въпросния домейн към IP адреса си и да промените настройките за това от къде се отваря PrestaShop през неговия административен панел.

Използване на собствен SSL сертификат

В това приложение, което осигурява целия нужен софтуерен стек, нужен за да задвижи PrestaShop, е включен и уебсървър Apache. Ако желаете да ползвате собствен SSL сертификат, то моля, прочетете как да направите тези настройки в документацията ни за Apache за AlmaLinux 8.

Допълнителни настройки при Docker

Допълнителнителните настройки за PrestaShop, които можете да променяте и които се контролират директно от Docker са зададени като променливи стойности в конфигурационния файл /opt/docker-prestashop/docker-compose.yml:

Забележка: След промяна на която и да е от стойностите, трябва да пресъздадете Docker контейнерите, върху който работи приложението. За повече информация, моля, прочетете секцията за пресъздаване на Docker контейнери.

PrestaShop конфигурационни опции

Генерални опции

  • АPACHE_HTTP_PORT_NUMBER: HTTP порт, използван от Apache. Default: 8080
  • APACHE_HTTPS_PORT_NUMBER: HTTPS порт, използван от Apache. Default: 8443
  • PRESTASHOP_FIRST_NAME: PrestaShop име на потребителя. Default: Admin
  • PRESTASHOP_LAST_NAME: PrestaShop фамилия на потребителя. Default: User
  • PRESTASHOP_PASSWORD: PrestaShop парола за административен панел. Default: P@ssw0rd!
  • PRESTASHOP_EMAIL: PrestaShop email. Default: user@example.com
  • PRESTASHOP_HOST: PrestaShop хостнейм/адрес.
  • PRESTASHOP_ENABLE_HTTPS: Дали да се ползва HTTPS по подразбиране. Default: no.
  • PRESTASHOP_EXTERNAL_HTTP_PORT_NUMBER: Порт, използван от PrestaShop за достъп отвън използвайки HTTP протокол. Използва се и за вътрешни пътища в PrestaShop. Default 80.
  • PRESTASHOP_EXTERNAL_HTTPS_PORT_NUMBER: Порт, използван от PrestaShop за достъп отвън използвайки HTTPS протокол. Използва се и за вътрешни пътища в PrestaShop. Default 443.
  • PRESTASHOP_COOKIE_CHECK_IP: Дали да се проверява IP адреса в cookie или не. Default: yes.
  • PRESTASHOP_COUNTRY: Държава по подразбиране в магазина. Default: bg.
  • PRESTASHOP_LANGUAGE: Език по подразбиране в магазина (iso код). Default: en.
  • PRESTASHOP_SKIP_BOOTSTRAP: Дали да се пропусне първоначален bootstrapping на PrestaShop. Default: no

Използване на вече съществуваща база данни

  • PRESTASHOP_DATABASE_HOST: Хостнейм на MariaDB сървър. Default: mariadb
  • PRESTASHOP_DATABASE_PORT_NUMBER: Порт, използван от MariaDB сървъра. Default: 3306
  • PRESTASHOP_DATABASE_NAME: Име на базата данни, което PrestaShop ще използва за връзка. Default: bitnami_prestashop
  • PRESTASHOP_DATABASE_USER: Потребител за базата данни, което PrestaShop ще използва за връзка. Default: bn_prestashop
  • PRESTASHOP_DATABASE_PASSWORD: Парола на потребителя за базата данни, което PrestaShop ще използва за връзка. Без defaults.
  • PRESTASHOP_DATABASE_PREFIX: Префикс на таблиците в базата данни. Default: ps_
  • ALLOW_EMPTY_PASSWORD: Използва се за връзка към базата данни с празни пароли. Default: no

SMTP конфигурационни опции

  • PRESTASHOP_SMTP_HOST: SMTP хост.
  • PRESTASHOP_SMTP_PORT: SMTP порт.
  • PRESTASHOP_SMTP_USER: SMTP потребител.
  • PRESTASHOP_SMTP_PASSWORD: SMTP парола.

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-prestashop/docker-compose.yml с текстов редактор и намерете следния фрагмент:

  prestashop:
    image: docker.io/bitnami/prestashop:8
    ports:
      - '80:8080'
      - '443:8443'
    environment:
      - PRESTASHOP_HOST=localhost
      - PRESTASHOP_DATABASE_HOST=mariadb
      - PRESTASHOP_DATABASE_PORT_NUMBER=3306
      - PRESTASHOP_DATABASE_USER=prestashop
      - PRESTASHOP_DATABASE_NAME=prestashop
      - ALLOW_EMPTY_PASSWORD=yes
      - PRESTASHOP_PASSWORD=P@ssw0rd!
      - PRESTASHOP_EMAIL=admin@example.com
      - PRESTASHOP_FIRST_NAME=Admin
      - PRESTASHOP_LAST_NAME=User
    volumes:
      - '/opt/prestashop/data/:/bitnami/prestashop'

Редактирайте го, така че да изглежда по следния начин:

  prestashop:
    image: docker.io/bitnami/prestashop:8
    ports:
      - '80:8080'
      - '443:8443'
    environment:
      - PRESTASHOP_HOST=localhost
      - PRESTASHOP_DATABASE_HOST=mariadb
      - PRESTASHOP_DATABASE_PORT_NUMBER=3306
      - PRESTASHOP_DATABASE_USER=prestashop
      - PRESTASHOP_DATABASE_NAME=prestashop
      - ALLOW_EMPTY_PASSWORD=yes
      - PRESTASHOP_PASSWORD=P@ssw0rd!
      - PRESTASHOP_EMAIL=admin@example.com
      - PRESTASHOP_FIRST_NAME=Admin
      - PRESTASHOP_LAST_NAME=User
    volumes:
      - '/opt/prestashop/data/:/bitnami/prestashop'
      - '/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-prestashop/
docker compose up -d

Издаване на сертификати с Letsencrypt

Ако желаете, винаги можете да издадете и безплатни сертификати от Letsencrypt. За целта, моля следвайте следните стъпки:

Стъпка 1 - инсталиране на нужните пакети

Влезте в сървъра си, като добиете root права и изпълнете следните команди:

dnf install -y epel-release
dnf install -y certbot

Стъпка 2 - издаване на сертификата

Моля имайте предвид, че за да бъде издаден безплатен сертификат, то е нужно да можете да верифицирате по някакъв начин собствеността на домейна си. Letsencrypt предоставя няколко възможности за верификация на домейните ви, в този пример ще използваме верификация чрез стартиране на временен уеб сървър.

За целта, спрете временно контейнера с командата docker stop docker-prestashop-prestashop-1. Важно: Изпълнявайки тази стъпка, сайтът ви ще спре да работи временно. Уверете се, че искате да изпълните това действие във време, когато най-малко ще афектира потребителите ви.

Издайте сертификата с командата certbot certonly --standalone --preferred-challenges http -d example.com, като замените "example.com" с домейна, който сте насочили към IP адреса на Cloud сървъра си.

Стъпка 3 - поставете новите сертификати в конфигурацията

Отворете docker конфигурационния файл /opt/docker-prestashop/docker-compose.yml с текстов редактор и намерете следния фрагмент:

  prestashop:
    image: docker.io/bitnami/prestashop:8
    ports:
      - '80:8080'
      - '443:8443'
    environment:
      - PRESTASHOP_HOST=localhost
      - PRESTASHOP_DATABASE_HOST=mariadb
      - PRESTASHOP_DATABASE_PORT_NUMBER=3306
      - PRESTASHOP_DATABASE_USER=prestashop
      - PRESTASHOP_DATABASE_NAME=prestashop
      - ALLOW_EMPTY_PASSWORD=yes
      - PRESTASHOP_PASSWORD=P@ssw0rd!
      - PRESTASHOP_EMAIL=admin@example.com
      - PRESTASHOP_FIRST_NAME=Admin
      - PRESTASHOP_LAST_NAME=User
    volumes:
      - '/opt/prestashop/data/:/bitnami/prestashop'

Редактирайте го, така че да изглежда по следния начин:

  prestashop:
    image: docker.io/bitnami/prestashop:8
    ports:
      - '80:8080'
      - '443:8443'
    environment:
      - PRESTASHOP_HOST=localhost
      - PRESTASHOP_DATABASE_HOST=mariadb
      - PRESTASHOP_DATABASE_PORT_NUMBER=3306
      - PRESTASHOP_DATABASE_USER=prestashop
      - PRESTASHOP_DATABASE_NAME=prestashop
      - ALLOW_EMPTY_PASSWORD=yes
      - PRESTASHOP_PASSWORD=P@ssw0rd!
      - PRESTASHOP_EMAIL=admin@example.com
      - PRESTASHOP_FIRST_NAME=Admin
      - PRESTASHOP_LAST_NAME=User
    volumes:
      - '/opt/prestashop/data/:/bitnami/prestashop'
      - '/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-prestashop/
docker compose up -d

Стъпка 5 (опционално) - автоматично подновяване на сертификата

Автоматичното подновяване може да бъде организирано чрез cron. Можете да зададете следната cron конфигурация, за да се случи автматичното подновяване:

# Automated Letsencrypt renewal
0 0 * * * /usr/bin/certbot renew --pre-hook 'docker stop docker-prestashop-prestashop-1' --post-hook 'chown 1001:1001 /etc/letsencrypt/archive/example.com/ -R; docker start docker-prestashop-prestashop-1'

Разбира се, можете да промените времето на изпълнение, когато пожелаете. В горният пример, тази задача ще се изпълнява всеки ден в 00:00 часа.

Работа с Docker

Организацията на това приложение е осъществена изцяло посредством Docker. По този начин можем да Ви предоставим готови приложения по-бързо. Освен това, конфигурацията им е по-гъвкава и е доста контролируема. За да можете да го контролирате това приложение обаче, е нужно да знаете някой базови Docker функционалности и особености.

Рестартиране на всички услуги

Рестартирането на базата данни и Docker контейнера, който съдържа самия PrestaShop, заедно с останалия софтуер, може да бъде извършено по два начина:

  1. Чрез рестартиране на цялата виртуална машина
  2. Рестартиране на Docker контейнерите, което е по-бързия вариант. За целта, достъпете машината си чрез SSH, и изпълнете следните команди:
sudo su -
cd /opt/docker-prestashop
docker compose restart

Пресъздаване на Docker контейнери

Пресъздаването може да се наложи, в случай че сме променяли конфигурацията в docker-compose.yml. При тази ситуация, трябва да следвате следните стъпки:

cd /opt/docker-prestashop
docker compose stop
docker compose up -d

Проверка на статуса на Docker приложението

За да направите проверка, трябва да изпълните следните команди:

sudo su -
docker ps -a

Моля, обърнете внимание на колоната STATUS. Тя трябва да показва от колко време работи услугата, например Up X minutes. Ако статуса е Restarting, то трябва да се провери какво не е наред с приложението. В такъв случай, можете да направите проверка, като проследите логовете на приложението по следния начин:

  1. Вземете името на приложението, което можете да видите в колоната NAMES от изходния код на командата docker ps -a. Вижте логовете с командата docker logs <NAME>, Където е името на контейнера.

Промяна на настройки

Описаните настройки в секцията Допълнителни настройки при Docker могат да бъдат нагласяни в docker-compose.yml файла. Пътят до него е описан отново в тази секция. За да промените настройка, отворете конфигурационния файл и обърнете внимание на секцията environment, намираща се под prestashop. Всяка една конфигурационна опция трябва да бъде описана на нов ред с тире отпред по следния примерен начин:

    environment:
      - PRESTASHOP_FIRST_NAME=admin
      - PRESTASHOP_PASSWORD=P@ssw0rd!

Моля, обърнете внимание, че трябва да се спазва и правилната индентация (брой празно място), тъй като това е важно за конфигурационни файлове от тип yaml.