CMS Shopker для создания интернет-магазина с использованием Symfony 5.x, Angular 11+, MongoDB 4+.
CMS Shopker можно установить на обычный shared-хостинг или VDS. Пока довольно сложно найти shared-хостинг с MongoDB, но они есть. Также можно использовать удаленный сервер базы данных MongoDB, например MongoDB Atlas.
Установка
- Скачать ZIP-архив с официального сайта и загрузить его на сервер в корневую директорию сайта (не публичную).
- Распаковать архив. Для этого можно использовать файловый менеджер, который обычно есть в панеле хостинга.
- Проверить настройки веб-сервера. Если нет возможности настроить Nginx или Apache, нужно обратиться в службу поддержки хостинга.
Скрытое содержимое. Вам нужно войти или зарегистрироваться.
Пример конфигурации для Nginx:
где example.com - ваше доменное имя. Для редиректа с субдомена www добавить в самом верху ещё один блок "server":
Пример содержимого файла .htaccess для сервера Apache:
Файл .htaccess должен находиться в папке public.
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;
}
NGINX:
server {
server_name www.example.com;
return 301 $scheme://example.com$request_uri;
}
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>
Обычно на shared-хостинге достаточно в настройках домена указать путь до публичной папки public или переименовать эту папку (дать название, которое указано в настройках домена). Если имя публичной папки изменено, то нужно открыть конфигурационный файл /config/parameters.yaml и отредактировать название папки в параметре app.web_dir_path.
- Если на сервере не используется авторизация по пользователю и паролю для 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%'
Код:
server: '%mongodb_uri%'
- Открыть в браузере адрес сайта. Если кофигурация (шаг 4) изменялась до открытия страницы, то нужно очистить кэш - удалить папку /var/cache/prod.
Заполнить поля на странице установки и нажать кнопку "Установить". - Если все данные введены верно, то в базу данных будет добавлено всё необходимое, а также тестовые данные магазина.
Bash скрипт для установки приложения на сервере.
Создать файл "shopker-install.sh" с таким содержимым:
Файл может быть размещен в домашней папке пользователя или в папке, в которой Вы хотите установить приложение.
Установить права на запуск: 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"
Создать файл "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"