[Pet project] Интернет-магазин
MIT License
Русский | English | Español | 中文 | Français | Deutsch |
---|---|---|---|---|---|
Выбран | English | Español | 中文 | Français | Deutsch |
Этот проект реализует интернет магазин с использованием Symfony v6.4.9. Часть функционала выполнена на Vue 2.6 для корзины и административной панели.
php bin/console app:add-user
- создание пользователяphp bin/console app:update-slug-product
- обновление слага продуктаgit clone [email protected]:yaleksandr89/symfony-shop.git
..env-example
в .env
:
ADMIN_EMAIL
/ MAILER_DSN
иначе не будет работать функционал восстановления пароля, а также процесс регистрации пользователя будет отрабатывать не до конца.OAUTH_GOOGLE_ID
/ OAUTH_GOOGLE_SECRET
- иначе не будет работать авторизация через Google.OAUTH_YANDEX_CLIENT_ID
/ OAUTH_YANDEX_CLIENT_SECRET
- иначе не будет работать авторизация через Яндекс.OAUTH_VK_CLIENT_ID
/ OAUTH_VK_CLIENT_SECRET
- иначе не будет работать авторизация через Вконтакте.OAUTH_GITHUB_EN_CLIENT_ID
/ OAUTH_GOOGLE_SECRET
- иначе не будет работать авторизация через Github (локаль локали: en).OAUTH_GITHUB_RUS_CLIENT_ID
/ OAUTH_GITHUB_RUS_CLIENT_SECRET
- иначе не будет работать авторизация через Github (локаль локали: ru).SITE_BASE_HOST
/ SITE_BASE_SCHEME
- иначе будут формироваться не корректные ссылки при регистрации, восстановлении пароле и ссылки которые находятся в письмах.APP_TIMEZONE
- указывает временную зону, которую будет использовать проект. По умолчанию APP_TIMEZONE=Europe/Moscow
, если хотите использовать временную зону указанную в php.ini
- оставьте эту переменную пустой.composer i && npm i && npm run build
.php bin/console doctrine:database:create
либо symfony doctrine:database:create
(если установлена symfony cli).
uuid_generate_v4
(используемая СуБД postgresql), поэтому перед миграцией, подключитесь к БД и выполните:
\c ИМЯ СОЗДАННОЙ БД
).CREATE EXTENSION "uuid-ossp";
.SELECT uuid_generate_v4();
- если в ответ сгенерировался uuid можно приступать к миграциям.php bin/console doctrine:migrations:migrate
либо symfony doctrine:migrations:migrate
(если установлена symfony cli).php bin/console assets:install
либо symfony console assets:install
(если установлена symfony cli).php bin/console app:add-user
либо symfony console app:add-user
(если установлена symfony cli).ROLE_SUPER_ADMIN
(Доступные роли: ROLE_SUPER_ADMIN
,ROLE_ADMIN
,ROLE_USER
).Для отправки некоторых писем (восстановление пароля, подтверждение учетной записи) используется Symfony Messenger, поэтому необходимо запустить команду в терминале symfony console messenger:consume async -vv
. Ручной запуск команды - целесообразен на этапе тестирования, когда все будет проверенно желательно или:
cron
supervisor
Пример конфига, который необходимо разместить /etc/supervisor/conf.d/messenger-worker.conf
:
;/etc/supervisor/conf.d/messenger-worker.conf
[program:messenger-consume]
command=php /path/to/your/app/bin/console messenger:consume async --time-limit=3600
user=ubuntu
numprocs=2
startsecs=0
autostart=true
autorestart=true
process_name=%(program_name)s_%(process_num)02d
command=
- после php
указать путь до консоли и через пробел, команду, которую надо добавитьuser=
- указать текущего пользователяnumprocs=
- количество процессов, которые будут созданыОстальные опции можно оставить без изменений. Пример конфига с официального сайта.
Проект покрыт тестами различных типов (разбиты по группам #[Group(name: '{name}')]
):
Группы тестов 1. - 3. должны запускать без каких либо проблем php ./vendor/bin/phpunit --testdox --group unit --group integration --group functional
. По последним двум группам
в процессе тестирования могут возникнуть проблемы из-за отсутствия установленного chromedriver - движок chrome или geckodriver - движок firefox.
Исправить данные баги легко, для этого нужно:
После этого, перед началом тестирования, предварительно, нужно запустить selenium командой:
java -jar bin/selenium-server-4.22.0.jar standalone
java -jar bin/selenium-server-standalone-3.141.59.jar
(не требует указания параметра standalone, но версия более старая)Требует наличия java, в Ubuntu можно установить командой: sudo apt install openjdk-21-jdk
, версия может отличаться - ставлю всегда последнюю
Deployer 7 - это инструмент для автоматизации процесса деплоя приложений. Он позволяет определить задачи и последовательности действий для развертывания кода на удаленных серверах. В данном репозитории используется Deployer 7 для автоматизации деплоя.
Для использования Deployer 7 вам потребуется настроить файл deploy.php
. Для этого переименуйте deploy-example.php в deploy.php
, посмотрите оставленные комментарии и заполните файл согласно вашим потребностям. К обязательному заполнению относится раздел //hosts
// Hosts
host('...')
->setHostname('...')
->setPort('...')
->setRemoteUser('...')
->setIdentityFile('~/.ssh/....pub')
->set('labels', ['stage' => 'prod'])
->set('branch', '...')
->set('deploy_path', '...');
Для запуска в консоли выполните php deployer7.phar deploy
, результат успешного деплоя будет выглядеть примерно так:
.circleci
. Перестал работать в России: https://support.circleci.com/hc/en-us/articles/360043679453-CircleCI-Terms-of-Service-Violation-Sanctioned-Country
6.3.1
6.4.9