CMS Shopker - Интернет магазин

  • Автор темы Автор темы VICHNEWKA
  • Дата начала Дата начала

VICHNEWKA

Разрушитель (V)
Сообщения
112
Реакции
58
Баллы
4 172
Screenshot_115.pngScreenshot_116.png
Screenshot_117.pngScreenshot_118.png
Screenshot_119.pngScreenshot_120.png
CMS Shopker для создания интернет-магазина с использованием Symfony 5.x, Angular 11+, MongoDB 4+.
CMS Shopker можно установить на обычный shared-хостинг или VDS. Пока довольно сложно найти shared-хостинг с MongoDB, но они есть. Также можно использовать удаленный сервер базы данных MongoDB, например MongoDB Atlas.

Установка
  1. Скачать ZIP-архив с официального сайта и загрузить его на сервер в корневую директорию сайта (не публичную).
  2. Распаковать архив. Для этого можно использовать файловый менеджер, который обычно есть в панеле хостинга.
  3. Проверить настройки веб-сервера. Если нет возможности настроить Nginx или Apache, нужно обратиться в службу поддержки хостинга.
Скрытое содержимое. Вам нужно войти или зарегистрироваться.

Пример конфигурации для Nginx:
NGINX:
server {
    listen 80;

    server_name example.com;
    root /var/www/shopker/public;
    
    client_max_body_size 250m;

    location / {
        try_files $uri /index.php$is_args$args;
    }

    location ~ ^/(index|check)\.php(/|$) {
        fastcgi_pass unix:/run/php/php7.3-fpm.sock;
        fastcgi_split_path_info ^(.+\.php)(/.*)$;
        include fastcgi_params;
        fastcgi_param SCRIPT_FILENAME $realpath_root$fastcgi_script_name;
        fastcgi_param DOCUMENT_ROOT $realpath_root;
        internal;
    }
    
    location ~ \.php$ {
        return 404;
    }
    
    location = /favicon.ico {
        log_not_found off;
        access_log off;
    }

    location = /robots.txt {
        allow all;
        log_not_found off;
        access_log off;
    }

    location ~ /\. {
        deny all;
    }

    error_log /var/log/nginx/shopker_error.log;
    access_log /var/log/nginx/shopker_access.log;
}
где example.com - ваше доменное имя. Для редиректа с субдомена www добавить в самом верху ещё один блок "server":
NGINX:
server {
    server_name www.example.com;
    return 301 $scheme://example.com$request_uri;
}
Пример содержимого файла .htaccess для сервера Apache:
Apache-конфиг:
<IfModule mod_rewrite.c>
    Options -MultiViews
    RewriteEngine On
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteRule ^(.*)$ index.php [QSA,L]
</IfModule>

<IfModule !mod_rewrite.c>
    <IfModule mod_alias.c>
        RedirectMatch 302 ^/$ /index.php/
    </IfModule>
</IfModule>
Файл .htaccess должен находиться в папке public.

Обычно на shared-хостинге достаточно в настройках домена указать путь до публичной папки public или переименовать эту папку (дать название, которое указано в настройках домена). Если имя публичной папки изменено, то нужно открыть конфигурационный файл /config/parameters.yaml и отредактировать название папки в параметре app.web_dir_path.

  1. Если на сервере не используется авторизация по пользователю и паролю для MongoDB, то нужно открыть конфигурационный файл /config/packages/doctrine_mongodb.yaml и отредактировать настройки подключения к БД для doctrine_mongodb и doctrine_cache. Пример: Заменить строку
Код:
server: 'mongodb://%mongodb_user%:%mongodb_password%@%mongodb_server%:%mongodb_port%'
на такую:

Код:
server: 'mongodb://%mongodb_server%:%mongodb_port%'
На некоторых хостингах для авторизации на сервере БД необходимо указать полный URI подключения. В этом случае использовать:

Код:
server: '%mongodb_uri%'
  1. Открыть в браузере адрес сайта. Если кофигурация (шаг 4) изменялась до открытия страницы, то нужно очистить кэш - удалить папку /var/cache/prod.
    Заполнить поля на странице установки и нажать кнопку "Установить".
  2. Если все данные введены верно, то в базу данных будет добавлено всё необходимое, а также тестовые данные магазина.
Для установки на выделенном сервере или VDS для удобства можно использовать Bash скрипт для установки. Он скачает архив приложения, распакует его и установит необходимые права доступа на файлы и папки.

Bash скрипт для установки приложения на сервере.
Создать файл "shopker-install.sh" с таким содержимым:
Код:
#!/bin/bash

DIR="$(pwd)"
DOMAIN_NAME="shopker.localhost"
DOWNLOAD_URL=""
DOWNLOAD_FILENAME="shopker-latest.zip"
OWNER_USER="www-data"
OWNER_GROUP="www-data"
LOG_FILE_PATH="$DIR""/install-shopker.log"
GREEN="\e[32m"
RED="\e[31m"
GRAY="\e[2m"
BLUE="\e[94m\e[1m"
NC="\e[0m"

if [ "$1" == "-h" ]; then
    echo -e "$NC"
    echo -e "${BLUE}Использование: ./$(basename "$0") \"{DOWNLOAD_URL}\" \"{DOMAIN_NAME}\""
    echo -e "$NC"
    exit 0
fi

if [ -n "$1" ]; then
    DOWNLOAD_URL="$1"
fi

if [ -z "$DOWNLOAD_URL" ]; then
    echo -e "$NC"
    echo -e "Укажите URL для скачивания архива с файлами приложения. \"./$(basename "$0") -h\" - для справки"
    echo -e "$NC"
    exit 0
fi

if [ -n "$2" ]; then
    DOMAIN_NAME="$2"
    DIR="/var/www/""$DOMAIN_NAME"
fi

echo ""
echo -e "${BLUE}=== УСТАНОВКА SHOPKER ==="
echo -e "$NC"
read -n1 -r -p "Нажмите клавишу ENTER для продолжения..." key
echo ""

if [ "$key" = '' ]; then

    if [ ! -d "$DIR" ]; then
        mkdir "$DIR"
    fi

    echo -e "${GRAY}...Скачивание архива..."
    echo -e "$NC"

    if [ ! -f "$DIR"/"$DOWNLOAD_FILENAME" ]; then

        if wget -O "$DOWNLOAD_FILENAME" "$DOWNLOAD_URL" >> "$LOG_FILE_PATH" 2>> "$LOG_FILE_PATH"; then
            echo -e "${GREEN}Скачивание прошло успешно!"
            echo -e "$NC"
        else
            echo -e "${RED}ERROR: Невозможно скачать файл."
            echo -e "$NC"
            exit 1
        fi

    else
        echo -e "${GREEN}Файл уже загружен. Следующий шаг..."
        echo -e "$NC"
    fi

    echo -e "${GRAY}...Установка UNZIP..."
    echo -e "$NC"

    UNZIP_PATH=$(command -v unzip)

    if [ ! -f "$UNZIP_PATH" ]; then
        apt install -y unzip >> "$LOG_FILE_PATH" 2>> "$LOG_FILE_PATH";
        echo -e "${GREEN}Готово."
        echo -e "$NC"
    else
        echo -e "${GREEN}UNZIP уже установлен. Следующий шаг..."
        echo -e "$NC"
    fi

    echo -e "${GRAY}...Распаковка архива..."
    echo -e "$NC"

    if unzip "$DOWNLOAD_FILENAME" -d "$DIR" >> "$LOG_FILE_PATH" 2>> "$LOG_FILE_PATH"; then
        echo -e "${GREEN}Распаковка прошла успешно!"
        echo -e "$NC"
    else
        echo -e "${RED}ОШИБКА: Невозможно распаковать архив."
        echo -e "$NC"
        exit 1
    fi

    echo -e "${GRAY}...Настройка прав доступа..."
    echo -e "$NC"

    chown -R "$OWNER_USER":"$OWNER_GROUP" "$DIR"
    find "$DIR" -type d -exec chmod 755 {} \;
    find "$DIR" -type f -exec chmod 644 {} \;

    echo -e "${GREEN}Теперь Вы можете открыть сайт в браузере и продолжить установку."
    echo -e "$NC"

else
    echo ""
    echo -e "${RED}ОТМЕНЕНО"
    echo -e "$NC"
fi
Файл может быть размещен в домашней папке пользователя или в папке, в которой Вы хотите установить приложение.

Установить права на запуск: sudo chmod +x shopker-install.sh

Использование: ./shopker-install.sh "{ССЫЛКА_ДЛЯ_СКАЧИВАНИЯ}" "{ИМЯ_ДОМЕНА}"

ИМЯ_ДОМЕНА - опционально. Если указано имя домена, то файл ZIP будет загружен и распакован в папку /var/www/{ИМЯ_ДОМЕНА}. Если не указано, то в текущую папку.

Справка: ./shopker-install.sh -h

Пример: ./shopker-install.sh "https://ИМЯ_ДОМЕНА.ru/digital_goods/my_purchases_download/14?email=xxx@xxx.com&sc=xxxxxx" "mydomain.com"
 
Назад
Верх