Magento 1에서는 GIT 저장소를 가져 와서 명령을 실행 modman deploy-all하고 var디렉토리를 쓸 수 있는지 확인 하는 배포 도구를 사용했습니다 . 를 들어 .gitignore내가 사용 이 하나 꽤 잘했다.
그러나 마 젠토 2는 어떻습니까?
gitignore가 가장 잘 작동하는 것, 프로젝트 배포 방법 및 배포 전후 실행 명령은 무엇입니까? 커뮤니티의 통찰력을 기다리겠습니다.
질문은 꽤 오랫동안 열려있을 것입니다
Magento 1에서는 GIT 저장소를 가져 와서 명령을 실행 modman deploy-all하고 var디렉토리를 쓸 수 있는지 확인 하는 배포 도구를 사용했습니다 . 를 들어 .gitignore내가 사용 이 하나 꽤 잘했다.
그러나 마 젠토 2는 어떻습니까?
gitignore가 가장 잘 작동하는 것, 프로젝트 배포 방법 및 배포 전후 실행 명령은 무엇입니까? 커뮤니티의 통찰력을 기다리겠습니다.
질문은 꽤 오랫동안 열려있을 것입니다
답변:
아래 단계에서는 프로덕션이 아닌 사용자 정의 모듈 개발 환경을 설정하는 방법에 대해 설명합니다.
프로젝트 초기화
다음 명령을 사용하여 프로젝트를 작성하십시오.
composer create-project --repository-url=https://repo.magento.com/ magento/project-community-edition .
이 .gitignore를 가져 와서 프로젝트 루트에 넣으십시오. 거의 모든 핵심 파일 / 디렉토리는 이미 루트에 추가됩니다 .gitignore하지만,뿐만 아니라 다음 2를 추가하는 것이 좋습니다 /update과 /phpserver(단지 .gitignore 이러한 두 줄을 추가)
app/code/VendorName/ModuleName십시오) .git 저장소에 사용자 정의 코드 만 있습니다.마 젠토 설치
명령 행을 사용하여 Magento를 설치하십시오. 예 :
${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 \
--admin-email=admin@example.com \
--admin-user=admin \
--admin-password=123123q \
--cleanup-database \
--use-rewrites=1
Ubuntu에서 인덱서 cron 작업을 활성화하십시오.
echo "* * * * * php ${project_root}/bin/magento cron:run &" | crontab -u www-data -
default모드 에서 실행되며 누락 된 모든 콘텐츠는 처음 요청시 자동 생성됩니다. 따라서 컴파일러 또는 정적 컨텐츠 배포를 실행할 필요가 없습니다.[선택 사항] PHP Storm을 사용하는 경우 다음 명령을 실행하여 XSD 지원을 활성화하십시오.
bin/magento dev:urn-catalog:generate .idea/misc.xml
vendor) 포함한 모든 Magento 관련 파일을 다운로드 받았으며 magento2-base, 이는 새로운 프로젝트의 골격입니다. 이 단계가 작곡가가 자동으로 수행하도록 구성되지 않은 이유를 모르면 찾으려고 시도합니다. .gitignore다른 리포지토리에서 복사하는 것과 관련 하여 이미이 단계에서 제거 / 단순화하는 방법에 대해 논의 중입니다.
magento2-base는 루트에 복사 하는 것이 더 이상 필요하지 않습니다. 답변에서이 단계를 제거했습니다.
초기화 및 설치의 경우 대부분의 단계에 대한 Alex의 대답을 따르는 단계를 따르십시오.
힘내 구성
다음 파일 만 Git 저장소에 저장하십시오.
프로젝트 사용자 정의 코드의 경우 작곡가를 통해 포함 된 별도의 모듈도 사용하십시오. 배포하려는 특정 버전 / 릴리스를 잠글 수 있으므로 작곡가를 통해이 작업을보다 쉽게 관리 할 수 있습니다. 또한 내부 및 외부 모듈에 동일한 접근 방식을 사용해야합니다.
전개
개발하는 동안 다음 명령을 사용하여 환경 (dev / test)의 모듈을 업데이트하십시오.
composer update
그러면 해당 설치에 설치된 버전으로 composer.lock 파일이 업데이트됩니다.
스테이징 / 사전 프로덕션 / 프로덕션에서 다음 명령을 사용하여 동일한 설정을 생성 / 설치할 수 있습니다.
git pull
composer install
그러면 개발 / 테스트에서 사용 된 것과 동일한 모든 모듈이 설치되어 프로덕션에 게시하기 전에 테스트 할 때 개발 된 것과 동일한 모듈 버전으로 테스트를 수행합니다.
설치 후 다음 명령을 실행하십시오.
bin/magento setup:upgrade
bin/magento setup:di:compile (or setup:di:compile-multi-tenant)
bin/magento setup:static-content:deploy
그러면 데이터베이스 (스키마 및 데이터 업그레이드)가 업데이트되고 DI 구성이 생성되며 모든 정적 뷰 파일이 배포됩니다.
Re .gitignore, 2.2 이후 공식 Magento의 대답은 "config.php가 git로 들어가고 env.php는 그렇지 않습니다"입니다.
우리는 내부 개발을 확장 개발 및 고객 사이트에 더 가깝게하기 위해 Mediawiki와 같은 작성기 플러그인을보고 있습니다. 아직 최종 탐험이 아닌 아직 탐험 중입니다.
../othergitrepo/app/code/*/*모듈을 선택 하는 경로와 함께 Composer "Path"리포지토리 유형을 사용하는 것이 좋았지 만 Unison 또는 이와 유사한 것을 사용하는 개발 환경에서는 제대로 작동하지 않는 심볼릭 링크를 사용합니다.
별도의 빌드 서버 / 프로세스를 포함하지 않는 다른 접근 방식을 실행하고 프로덕션 에서처럼 로컬로 개발합니다.
그런 다음 프로덕션에 필요한 모든 파일 을 커밋합니다 . 그런 다음 변경 세트 를 서버에 배치 하고 upgrade 명령을 실행하십시오.
개발에 적합하지만 생산 모드에서 실행되는 버전에 도달하는 것은 까다로운 부분이며 여전히 완벽하지는 않지만 이제는 작동하는 레시피를 얻었습니다.
그 이유는 우리가 생산하는 코드를 100 % 제어하기를 원하기 때문입니다. magento2는 많은 양의 코드를 생성하므로 모든 효과를 이해하고 프로덕션 에서처럼 디버깅 할 수 있도록 로컬에서 실행해야합니다.
나는 이것이 많은 사람들이 권장하는 것이 아니라 우리에게 가장 효과적이라는 것을 알고 있습니다.
프런트 엔드 설정 단계
이 스크립트가 작동하려면 env.php에서 상점을 생산 모드로 설정하고에서 테마를 설정하십시오 dev/tools/grunt/configs/themes.js. (다음 단계는 훌륭한 플레이 북에 들어갔습니다)
var/cachevar/view_preprocessedpub/static/*(.htaccess를 삭제하지 마십시오)var/composer_homephp bin/magento cache:flushphp bin/magento setup:static-content:deploy %your_languages%pub/static/frontendphp bin/magento dev:source-theme:deploy --locale="%your_language%" --theme="%your_theme%" css/styles-m css/styles-l css/email css/email-inlinegrunt less:your_theme백엔드 / di-setup 단계
var/cachevar/generationvar/composer_homevar/diphp bin/magento cache:flushphp bin/magento setup:di:compile이 파일들도 무시해야합니다
/app/etc/config.php
/app/etc/env.php
/.idea/workspace.xml // phpstorm