Русский | English | Español | 中文 | Français | Deutsch |
---|---|---|---|---|---|
Русский | English | Español | 中文 | Sélectionné | Deutsch |
- Nginx 1.26.1
- PHP 8.3.9
- Composer 2.7.7
- PostgreSQL 16.3
- npm 10.8.2
Ce projet implémente une boutique en ligne utilisant Symfony v6.4.9. Certaines fonctionnalités sont réalisées avec Vue 2.6 pour le panier et le panneau d'administration.
- Changement de langue
- Commandes console :
php bin/console app:add-user
- création d'utilisateurphp bin/console app:update-slug-product
- mise à jour du slug du produit
- inscription des visiteurs ;
- compte personnel ;
- récupération de mot de passe ;
- traitement des commandes avec notifications par email ;
- possibilité de s'authentifier et/ou de s'inscrire en utilisant : Yandex, Google, GitHub ou VKontakte.
- gestion des commandes et des utilisateurs ;
- création de catégories ;
- création de produits ;
- création de commandes.
- Cloner le dépôt :
git clone [email protected]:yaleksandr89/symfony-shop.git
. - Renommer
.env-example
en.env
:- Configurer
ADMIN_EMAIL
/MAILER_DSN
, sinon la récupération de mot de passe et l'inscription ne fonctionneront pas correctement. - Configurer
OAUTH_GOOGLE_ID
/OAUTH_GOOGLE_SECRET
- sinon l'authentification via Google ne fonctionnera pas. - Configurer
OAUTH_YANDEX_CLIENT_ID
/OAUTH_YANDEX_CLIENT_SECRET
- sinon l'authentification via Yandex ne fonctionnera pas. - Configurer
OAUTH_VK_CLIENT_ID
/OAUTH_VK_CLIENT_SECRET
- sinon l'authentification via VKontakte ne fonctionnera pas. - Configurer
OAUTH_GITHUB_EN_CLIENT_ID
/OAUTH_GITHUB_SECRET
- sinon l'authentification via GitHub ne fonctionnera pas (localisation : en). - Configurer
OAUTH_GITHUB_RUS_CLIENT_ID
/OAUTH_GITHUB_RUS_CLIENT_SECRET
- sinon l'authentification via GitHub ne fonctionnera pas (localisation : ru). - Configurer
SITE_BASE_HOST
/SITE_BASE_SCHEME
- sinon les liens générés pour l'inscription, la récupération de mot de passe et les emails seront incorrects. - Configurer
APP_TIMEZONE
- spécifie le fuseau horaire utilisé par le projet. Par défaut,APP_TIMEZONE=Europe/Moscow
, si vous souhaitez utiliser le fuseau horaire défini dansphp.ini
, laissez cette variable vide.
- Configurer
- Exécutez :
composer i && npm i && npm run build
. - Créez la base de données :
php bin/console doctrine:database:create
ousymfony doctrine:database:create
(si symfony cli est installé).- Le projet utilise
uuid_generate_v4
(SGBD PostgreSQL), donc avant la migration, connectez-vous à la base de données et exécutez :- Connectez-vous à la base de données choisie (
\c NOM DE LA BASE CRÉÉE
). CREATE EXTENSION "uuid-ossp";
.- Pour vérifier, exécutez
SELECT uuid_generate_v4();
- si un uuid est généré, vous pouvez procéder aux migrations.
- Connectez-vous à la base de données choisie (
- Le projet utilise
- Exécutez les migrations :
php bin/console doctrine:migrations:migrate
ousymfony doctrine:migrations:migrate
(si symfony cli est installé). - Exécutez :
php bin/console assets:install
ousymfony console assets:install
(si symfony cli est installé). - À ce stade, la partie frontend du site devrait fonctionner, mais pour accéder à l'admin, vous devez créer un utilisateur. Vous pouvez le faire via la commande créée :
php bin/console app:add-user
ousymfony console app:add-user
(si symfony cli est installé).- Indiquez l'email.
- Indiquez le mot de passe (il ne sera pas affiché lors de la saisie).
- Indiquez le rôle, pour l'admin, vous pouvez indiquer
ROLE_SUPER_ADMIN
(rôles disponibles :ROLE_SUPER_ADMIN
,ROLE_ADMIN
,ROLE_USER
).
Pour envoyer certains emails (récupération de mot de passe, confirmation de compte), Symfony Messenger est utilisé, donc vous devez exécuter la commande dans le terminal symfony console messenger:consume async -vv
. L'exécution manuelle de la commande est appropriée au stade des tests, mais une fois vérifiée, il est recommandé de :
- attacher la commande à
cron
- configurer
supervisor
Exemple de configuration à placer dans /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=
- aprèsphp
, spécifiez le chemin de la console et, après un espace, la commande à ajouteruser=
- spécifiez l'utilisateur actuelnumprocs=
- nombre de processus à créer
Les autres options peuvent rester inchangées. Exemple de configuration du site officiel.
Le projet est couvert par différents types de tests (groupés par #[Group(name: '{name}')]
) :
- tests unitaires
- tests d'intégration
- tests fonctionnels
- tests fonctionnels-panther
- tests fonctionnels-selenium
Les groupes de tests 1 à 3 doivent s'exécuter sans problème php ./vendor/bin/phpunit --testdox --group unit --group integration --group functional
. Pour les deux derniers groupes, des problèmes peuvent survenir en raison de l'absence de chromedriver - moteur chrome ou geckodriver - moteur firefox.
Ces erreurs sont faciles à corriger, il suffit de télécharger le moteur : https://chromedriver.chromium.org/downloads (choisir en fonction de la version de Chrome). Vous pouvez essayer d'utiliser les moteurs que j'ai placés dans le répertoire drivers/ du projet, mais si les versions du moteur et du navigateur installé diffèrent, des erreurs peuvent survenir. Comment installer le moteur globalement dans le système (linux) : https://bangladroid.wordpress.com/2016/08/10/how-to-install-chrome-driver-in-linux-mint-selenium-webdriver/
Ensuite, avant de commencer les tests, vous devez lancer selenium avec la commande :
java -jar bin/selenium-server-4.22.0.jar standalone
java -jar bin/selenium-server-standalone-3.141.59.jar
(ne nécessite pas le paramètre standalone, mais la version est plus ancienne)
Nécessite la présence de Java, qui peut être installé sur Ubuntu avec la commande : sudo apt install openjdk-21-jdk
, la version peut varier - je prends toujours la dernière version.
Deployer 7 ist ein Tool zur Automatisierung des Bereitstellungsprozesses von Anwendungen. Es ermöglicht das Definieren von Aufgaben und Sequenzen von Aktionen zum Bereitstellen von Code auf entfernten Servern. Dieses Repository verwendet Deployer 7 zur Automatisierung von Bereitstellungen.
Um Deployer 7 zu verwenden, müssen Sie die Datei deploy.php
konfigurieren. Benennen Sie deploy-example.php in deploy.php
um, überprüfen Sie die bereitgestellten Kommentare und füllen Sie die Datei gemäß Ihren Anforderungen aus. Es ist zwingend erforderlich, den Abschnitt // Hosts
auszufüllen:
// Hosts
host('...')
->setHostname('...')
->setPort('...')
->setRemoteUser('...')
->setIdentityFile('~/.ssh/....pub')
->set('labels', ['stage' => 'prod'])
->set('branch', '...')
->set('deploy_path', '...');
Verwendung
Zum Bereitstellen führen Sie php deployer7.phar
deploy in der Konsole aus. Ein erfolgreicher Bereitstellungsprozess sieht etwa so aus:
- 08.07.2023 - fichier de configuration
.circleci
supprimé. Cessation de fonctionnement en Russie : https://support.circleci.com/hc/en-us/articles/360043679453-CircleCI-Terms-of-Service-Violation-Sanctioned-Country - 08.07.2023 - Symfony mis à jour vers la dernière version à cette date,
6.3.1
- 17.07.2024 - Symfony mis à jour vers la version
6.4.9
- 17.07.2024 - Tests unitaires mis à jour vers la version 11, refactorisation des tests eux-mêmes
- Ajout de la configuration pour nginx et supervisor, ainsi que diverses traductions pour README.md