Demo serwisu porównywarki cen wykonane na frameworku Symfony. Zawiera podstawowe funkcjonalności do uruchomienia własnego serwisu.
- PHP 8.0+
- Dostęp do Search API (klucz OAuth) - kontakt z Nokaut.pl
- Opcjonalnie Memcached (wymagana wtyczka php-memcached)
Uruchamiamy konsolę i przechodzimy do katalogu, w którym chcemy umieścić projekt i pobieramy go z repozytorium (kropka na końcu jest istotna):
git clone [email protected]:nokaut/white-label-demo.git .
Tworzymy plik .env
poleceniem
cp .env.dist .env
W nim ustawiamy środowisko, w którym będzie działał serwis, domyślnie jest to dev
, jeśli chcemy uruchomić serwis w
produkcyjnie, zmieniamy wartość na prod
:
APP_ENV=prod
Wykonujemy instalację projektu Composer'em:
composer install
Podczas instalacji program poprosi nas o podanie parametrów. Zostawiamy domyślne (naciskając Enter) dla wszystkich parametrów oprócz:
-
api_token: - tu wprowadzamy token, który dostaniemy od Nokaut.pl
-
cache_enabled: - jeśli mamy zainstalowany memcached i chcemy używać cache wprowadzamy
true
w innym przyadku wprowadzamyfalse
-
memcache_url: - jeśli w poprzedni parametrze wprowadziliśmy
false
, naciskamy enter, jeślitrue
, musimy podać adres serwera memcached, jeśli memcached jest na tym samym serwerze co serwis, postawiamy domyślą wartośćlocalhost
-
memcache_port: - jeśli w parametrze
cache_enabled
wprowadziliśmyfalse
, naciskamy enter, jeślitrue
, musmy podać port serwera memcached, domyślnie memcached jest na porcie 11211 -
product_mode: - tryb widoku produktu, są dostępne dwie opcję
modal
,page
page
- ustawia produkt z ofertami jako osobną stronę, która będzie indeksowana przez wyszukiwarki takie jak Googlemodal
- produkt i jego oferty prezentowany jest w okienku typu modal, przez co nie jest indeksowany przez wyszukiwarki
-
site_host: - domena, na której będzie działał serwis, np.
porownywarka.co
-
site_scheme: - protokół, na którym będzie działał serwis, np.
http
lubhttps
-
site_name: - nazwa serwisu, będzie się wyświetlać między innymi na górze oraz w stopce strony
-
google_analytics_id: - identyfikator śledzenia dla Google Analytics (numer, który najcześciej zaczyna się od UA- np: UA-1234556-1, dostępny w zakładce Administracja w analytics.google.com dla danego projektu)
-
categories: - parametr odpowiadający za tematykę strony, wybieramy w nim ID-ki kategorii, które mają się znaleźć w serwisie, np:
'Kategorie I': #ta nazwa pojawi się w menu głównym - id kategorii 1 - id kategorii 2 ... 'Kategorie II': - id kategorii 3 - id kategorii 4 ....
Parametry można w każdej chwili zmienić w pliku config/packages/parameters.yml
Po uzupełnieniu lub zmianie parametrów wykonujemy polecenia:
php bin/console cache:clear --env=prod
php bin/console assets:install --symlink --relative public --env=prod
Następujące katalogi muszą mieć uprawnienia zapisu z poziomu skryptu PHP
var/cache/
var/log/
Domena w konfiguracji serwera WWW musi być ustawiona na katalog:
<ścieżka do katalgu z projektem>/public/
Po zainstalowaniu projektu możemy uruchomić go lokalnie w trybie deweloperskim, wchodzimy do katalogu gdzie jest projekt i wykonujemy polecenie:
symfony serve
Dostaniemy informację Server running on http://127.0.0.1:8000
i teraz możemy przejść do przeglądarki wpisując w adres http://localhost:8000/
- ujrzymy nasz serwis.
Uwaga: pliki CSS, JavaScript i obrazki trzymane są w katalogu public/
.
docker-compose build
docker-compose up
W nowym okienku konsoli przechodzimy do katalogu aplikacji, wchodzimy na kontener aplikacji.
docker-compose exec php bash
Konfigurujemy i instalujemy zależności.
composer install
Aplikacja dostępna będzie w przeglądarce (np. Chrome) pod adresem: http://127.0.0.1:8000
Aby wygenerować mapę witryny w formacie XML, należy w katalogu aplikacji wejść do kontenera poprzez polecenie:
docker-compose exec php bash
I wykonać polecenie:
bin/console presta:sitemaps:dump
Mapa witryny zostanie wygenerowane w katalogu public/
, z indeksem w pliku sitemap.xml.
Aby uruchomić testy, należy w katalogu aplikacji wejść do kontenera poprzez polecenie:
docker-compose exec php bash
I wykonać polecenie:
bin/phpunit
Możesz wykonać testy jednostkowe dla konkretnego pliku, np.:
bin/phpunit tests/Controller/DefaultControllerTest.php
Albo też wyłączyć grupę testów, np.:
bin/phpunit --exclude-group=integration
Wykonałem wszystkie polecenia na swoim komputerze i strona działa, ale gdy wrzuciłem na serwer cały katalog strona przestała działać
Należy wykonać polecenia:
php bin/console cache:clear --env=prod
Jeśli na twoim serwerze nie masz możliwości zalogowania się do konsoli i wykonania powyższych poleceń usuń zawartość katalogów, ale same katalogi pozostaw:
var/cache/
var/log/
Sprawdź również, czy powyższe katalogi mają prawo zapisu z serwera www.