Z Magento 1 użyłem narzędzia do wdrażania, które pobrało repozytorium GIT, uruchomiłem polecenia podobne modman deploy-all
i upewniłem się, że var
katalog jest zapisywalny. Do tego .gitignore
użyłem tego, który działał całkiem dobrze.
A co z Magento 2 ?
Co gitignore działa najlepiej, jak wdrożyć projekt i jakie polecenie należy uruchomić przed i po wdrożeniu. Czekamy na informacje od społeczności.
Pytanie pozostanie otwarte przez dłuższy czas
Odpowiedzi:
Kroki poniżej opisują, jak skonfigurować środowisko do tworzenia niestandardowych modułów, a nie do produkcji.
Inicjalizacja projektu
Utwórz projekt za pomocą następującego polecenia:
composer create-project --repository-url=https://repo.magento.com/ magento/project-community-edition .
Weź to .gitignore i umieść w katalogu głównym projektu. Prawie wszystkie podstawowe pliki / katalogi są już dodane do katalogu głównego
.gitignore
, ale lepiej również dodać następujące 2/update
i/phpserver
(wystarczy dodać te 2 wiersze do .gitignore)app/code/VendorName/ModuleName
), teraz będziesz mieć tylko swój własny kod w repozytorium gitInstalacja Magento
Zainstaluj Magento za pomocą wiersza poleceń, np .:
${project_root}/bin/magento setup:install \ --db-host=localhost \ --db-name=magento \ --db-user=root \ --backend-frontname=admin \ --base-url=http://base.url.goes.here/ \ --language=en_US \ --timezone=America/Chicago \ --currency=USD \ --admin-lastname=Admin \ --admin-firstname=Admin \ [email protected] \ --admin-user=admin \ --admin-password=123123q \ --cleanup-database \ --use-rewrites=1
Włącz zadanie cron indeksatorów, np. Na Ubuntu:
echo "* * * * * php ${project_root}/bin/magento cron:run &" | crontab -u www-data -
default
trybie, a wszystkie brakujące treści zostaną automatycznie wygenerowane na pierwsze żądanie. Nie trzeba więc uruchamiać kompilatora ani instalować zawartości statycznej[opcjonalnie] Jeśli używasz PHP Storm, uruchom następujące polecenie, aby włączyć obsługę XSD:
bin/magento dev:urn-catalog:generate .idea/misc.xml
źródło
vendor
, w tymmagento2-base
, które są tylko szkieletem nowego projektu. Nie wiem, dlaczego ten krok nie jest skonfigurowany do automatycznego wykonywania przez kompozytora, spróbuje się dowiedzieć. Jeśli chodzi o.gitignore
kopiowanie z innego repozytorium, jest już dyskutowane, jak wyeliminować / uprościć ten krok.magento2-base
do katalogu głównego nie jest już konieczne (tylko zweryfikowane), wydaje się być ostatnio naprawione. Usunięto ten krok z odpowiedzi.W przypadku inicjalizacji i instalacji postępuj zgodnie z instrukcjami Alexa dla większości kroków, tylko różnice, które poleciłbym:
Konfiguracja Git
Przechowuj tylko następujące pliki w repozytorium Git:
Do niestandardowego kodu projektu używaj także oddzielnych modułów, które dołączasz do kompozytora. Zarządzanie tym kompozytorem jest łatwiejsze, ponieważ możesz zablokować określoną wersję / wydanie, które chcesz wdrożyć. Zmusza to również do korzystania z tego samego podejścia w przypadku modułów wewnętrznych i zewnętrznych.
Rozlokowanie
Podczas programowania aktualizujesz moduły w swoim środowisku (dev / test) poleceniem:
Spowoduje to zaktualizowanie pliku composer.lock do wersji zainstalowanych w tej instalacji.
Podczas przemieszczania / produkcji wstępnej / produkcji możesz utworzyć / zainstalować tę samą konfigurację za pomocą polecenia:
Spowoduje to zainstalowanie wszystkich tych samych modułów, które są używane w dev / test, aby upewnić się, że testowanie przed opublikowaniem do produkcji odbywa się przy użyciu tych samych wersji modułów, z którymi jest rozwijany.
Po instalacji uruchom następujące polecenia:
Spowoduje to zaktualizowanie bazy danych (aktualizacji schematu i danych), wygenerowanie konfiguracji DI i wdrożenie wszystkich plików widoku statycznego.
źródło
Re .gitignore, 2.2. Oficjalna odpowiedź Magento brzmi: „config.php przechodzi do git, env.php nie”.
Patrzymy na wtyczki kompozytora, takie jak Mediawiki, aby zbliżyć wewnętrznego programistę do rozwoju rozszerzeń i stron klientów. Wciąż odkrywam, jeszcze nie ostateczne.
Bardzo podobało mi się używanie typu repozytorium Composer „Path” ze ścieżką
../othergitrepo/app/code/*/*
pobierania modułów, ale używa on dowiązań symbolicznych, które nie działają tak dobrze w środowiskach programistów korzystających z Unison lub podobnego.źródło
stosujemy inne podejście, które nie wymaga osobnego kompilacji serwer / proces , rozwijamy się lokalnie jak w produkcji
następnie zatwierdzamy wszystkie pliki niezbędne do produkcji . następnie po prostu wdrażamy zestawy zmian na serwerze i uruchamiamy polecenie aktualizacji.
przejście do wersji odpowiedniej do programowania, ale działającej również w trybie produkcyjnym było trudną częścią i wciąż nie jest idealne, ale teraz mamy przepis, który działa.
Powodem jest to, że chcemy mieć 100% kontroli nad tym, jaki kod zostanie wprowadzony do produkcji. ponieważ magento2 generuje mnóstwo kodu, musimy uruchomić go lokalnie, aby móc zrozumieć wszystkie efekty i móc debugować jak podczas produkcji.
Zdaję sobie sprawę, że nie tyle wielu ludzi zaleca, ale dla nas działa najlepiej.
kroki konfiguracji interfejsu użytkownika
Aby te skrypty działały, ustaw sklep w trybie produkcyjnym w env.php i skonfiguruj motyw
dev/tools/grunt/configs/themes.js
. (następujące kroki zostały umieszczone w ansible playbook)var/cache
var/view_preprocessed
pub/static/*
(nie usuwaj .htaccess)var/composer_home
php bin/magento cache:flush
php bin/magento setup:static-content:deploy %your_languages%
pub/static/frontend
php bin/magento dev:source-theme:deploy --locale="%your_language%" --theme="%your_theme%" css/styles-m css/styles-l css/email css/email-inline
grunt less:your_theme
kroki backend / di-setup
var/cache
var/generation
var/composer_home
var/di
php bin/magento cache:flush
php bin/magento setup:di:compile
źródło
Powinieneś też zignorować te pliki
/app/etc/config.php
/app/etc/env.php
/.idea/workspace.xml // phpstorm
źródło