마 젠토 개발 설정


23

이 질문은 개발 환경 설정에 관한 것입니다. 특정 요구 사항이 있습니다.

  1. Linux, Windows 및 Mac OS에서 내 솔루션을 사용할 수 있기를 원합니다. 팀원이 이러한 모든 OS를 사용하기 때문에 (예 : 프론트 엔드 개발자는 Windows / Mac을 사용하고, 백엔드 개발자는 대부분 Linux를 사용합니다)
  2. 나는 modman을 사용해야한다
  3. 작곡가를 사용해야합니다
  4. 개인 Git 리포지토리뿐만 아니라 Github도 사용해야합니다
  5. Netbeans 또는 PHP Storm과 같은 적절한 IDE가 필요합니다
  6. 나는 아주 좋은 성능을 원한다

현재 설정은 Virtualbox 내의 가상화 된 Ubuntu 이미지입니다. 세 가지 OS 모두 Virtualbox를 실행할 수 있으므로 포인트 1)-5)가 모두 충족됩니다.

그러나 현재 6)에 완전히 만족하지는 않습니다. 우분투 12.04에서 솔루션을 실행할 때 특히 그렇습니다. Virtualbox는 Windows 7에서 훨씬 안정적이고 반응이 좋은 것처럼 보이지만 팀의 많은 사람들이 Linux를 사용하고 있으므로 솔루션을 개선하고 싶습니다.

누구든지 VMWare 또는 비슷한 docker.io에서 비슷한 설정을 가지고 있으며 더 안정적인지 여부를보고 할 수 있습니까? 아니면 다른 비슷한 솔루션 / 아이디어가 있습니까?


좋은 질문! 또한 유사한 설정 작업을 수행했지만 아직 일반 워크 플로에 적용하지 않았습니다. 답변을 기대합니다.
Anna Völkl

간단한 아이디어 : Linux에서 VM없이 작업하고 VM에서 실행되는 모든 것을 직접 설치할 수는 없습니까? 또는 하나의 프로젝트에 하나의 VM을 사용합니까?
Anna Völkl

헤드리스 또는 GUI로 VM을 실행하고 있습니까? 그리고 VM 이미지 파일 시스템을 호스트 시스템과 어떻게 동기화합니까? 공유 폴더? 삼바? (IDE가 VM이 아닌 호스트에서 실행되고 있다고 가정합니다). 그것은 큰 차이를 만들 수 있습니다.
Vinai

@ AnnaVölkl 예, 가능하지만 장점 중 일부를 파괴합니다. 예를 들어 기본 이미지를 업데이트 할 때마다 모든 Linux 사용자는 수동으로 변경 사항을 업데이트해야합니다. 또한 상자를 한 컴퓨터에서 다른 컴퓨터로 가져 가려면 (예를 들어 집이나 다른 곳에서 일하는 경우) 훨씬 어렵습니다.
mpaepper

1
Anna가 말했듯이 : 우리는 이와 같은 일을하고 있습니다. 우리는 Vagrant를 사용하여 VM 이미지를 작성하고 있으며 꽤 잘 작동합니다. 말하자면, 공유 폴더의 파일 I / O 속도와 관련된 성능은 전환하기 전에 수행해야 할 주요 작업입니다. Linux 호스트 시스템의 경우 NFS 공유 가 도움이 될 수 있습니다. 우리의 큰 문제는 대부분의 개발자가 Windows 호스트 시스템을 사용하고 링크와 반대로 Windows 성능이 전혀 좋지 않다는 것입니다. 나는 지금 다른 사람들로부터 이것을 들었습니다. 우리만이 아닙니다.
Matthias Zeis

답변:


8

나는 phing에 vagrant, git 및 일부 빌드 스크립트를 사용합니다. vagrant machine run 데이터베이스 및 웹 서버, git은 내 확장의 변경 사항을 추적하는 데 로컬로 사용되었으며 /var/wwwvagrant machine의 디렉토리 를 업데이트하는 데 사용되는 스크립트를 작성 했습니다 (실제로 환경을 구축 해야하는 모든 곳에서 사용되었습니다).

아마도 가장 흥미로운 부분은 나에게 modman + composer처럼 작동하는 phing입니다. 빌드, 설정 및 설치를 포함하여 정의 된 대상이 거의 없습니다.

빌드 내부 웹 서버에서 대상 다운로드 (빌드 설정에 지정된) 젠토의 특정 버전 및 빌드 디렉토리에 압축을 풉니 다. 그런 다음 파일에 대한 권한을 설정하고 캐시를 정리하는 다른 대상을 실행하십시오. 그런 다음 소스 디렉토리의 모든 파일에 대한 심볼릭 링크를 만듭니다. 결과적으로 모든 파일을 빌드 디렉토리에서 사용할 수 있습니다. magento 코어 파일이 이미 빌드 디렉토리에있는 경우 다운로드를 건너 뛰고 심볼릭 링크 만 업데이트하므로 심볼릭 링크를 업데이트해야 할 때마다이 대상을 사용하여 환경을 다시 빌드하십시오. vagrant machine 소스 디렉토리의 경우 /vagrant/src(공유 폴더)에 있으며 빌드 디렉토리는 /var/www입니다.

특정 magento 버전 의 설치 대상 다운로드 및 가져 오기 데이터베이스 덤프. 그런 다음 setup target을 실행하십시오.

설치 대상은 모든 설정과 local.xml 파일을 만듭니다.

우리 회사에서는 단위 테스트 및 CI 도구를 사용하므로 이러한 방식으로 magento 환경을 구축하면 다양한 버전의 magento에서 확장 기능을 테스트하고 설치 여부에 관계없이 실행할 수 있습니다.

나는 유능한 기계에 "바로 가기"를 작성하여 빌드 액세스를 단순화했습니다. 예를 들어 프로젝트를 다시 빌드하려면 입력해야 vagrant ssh -c magebuild하며 /vagrant디렉토리 에서 자동으로 phing을 실행 합니다.

그런 다음 PHPStorm IDE에서 특정 키 조합에이 명령을 할당했으며 이제 IDE에서 Alt + B를 눌러 프로젝트를 다시 빌드 할 수 있습니다. 그러나 심볼릭 링크를 사용하기 때문에 실제로는 자주 작동하지 않습니다.

방랑자

우분투를위한 상자 우분투 12.04가 내장 된 내 상자입니다. 실제로 모든 소프트웨어가 사전 설치되어 있고 바로 가기와 일부 구성이있는 표준 정밀 12.04입니다. vagrant 파일에는 포트 전달 설정, 개인 네트워크가 xDebug를 사용하고 프로비저닝 바로 가기를 넣을 수 있도록했습니다.

GIT

git에서는 build.xmlphing 및에 대한 내 확장 파일 만 추적합니다 Vagrantfile. 따라서 환경을 만들려는 모든 사람은 리포지토리를 복제하고 방랑자를 실행할 수 있습니다. 그런 다음 VM을 시작하고 작동 준비를합니다. 이 모든 과정은 1-2 분이 걸립니다. VM을 사용하지 않고 로컬로 프로젝트를 빌드하려는 경우을 실행할 수 있습니다 phing build install.


2

현재 내 개발 환경은 VMWare가 설치된 Ubuntu v12.04입니다. 전체 GUI를 사용하여 VM 내부에서 완전히 작업하고 Windows 7 인 호스트 OS에서 파일에 액세스 해야하는 경우 우분투 내에서 samba 파일 공유 만 사용합니다. VM에 네트워킹하기 위해 NAT를 통한 VM 다른 솔루션을 사용하면 VMWare의 공유 폴더와 같이 훨씬 느려집니다. 내 VMWare 이미지 설정에서이 기능을 비활성화했습니다. 그러나 호스트 시스템에 쉽게 복사 / 파스타를 복사 할 수 있도록 VMWare 도구를 설치합니다.

Matthias Zeis가 지적했듯이 VM과 네트워킹 / 공유 폴더를 선택할 때 문제가 될 수 있으므로주의하십시오.

나는 VirtualBox의 이전 사용자 였지만 VMWare 가보다 안정적이며 성능이 뛰어납니다 (적어도 나를 위해). 그러나 귀하의 요구와 요구 사항에 가장 잘 맞는 자체 테스트를 수행합니다. Vagrant는 VirtualBox를 사용합니다.

IDE : 저는 선택한 IDE로 Netbeans를 상당히 광범위하게 사용하고 있었지만 Sublime Text 2 보다 가벼운 솔루션으로 옮겨 왔습니다 . 나는 주로 X-Debug 목적과 쉬운 리팩토링을 위해 Netbeans을 열지 않습니다. Netbeans, PHPStorm, Eclipse 등은 모두 Java 기반 IDE이며 리소스가 매우 고갈 될 수 있습니다.

하드웨어 : 더 추가하기 위해 하드웨어는 항상 성능의 핵심 역할입니다 (분명히). 개발자가 여전히 플래터 HDD를 사용하고 있다면 SSD에 투자하려고합니다. Magento는 파일 / 폴더가 매우 많기 때문에 개발자 성능을 크게 향상시킵니다. 개발 중 : 모든 캐싱을 해제하고 SVN / GIT 또는 IDE에서 폴더 트리를 순회하는 동안. VM에 충분한 RAM을 제공하는 것 역시 중요합니다.

내 호스트 컴퓨터 : Samsung SSD 512GB 드라이브 공간, Win7 (64 비트), 8GB RAM, i7 2.4GHz (8 코어)

내 VM 머신 : Samsung SSD, 30GB 드라이브 공간, Ubuntu 12.04 (32 비트), 3GB RAM, i7 (4 코어 할당).

물어볼 질문 : 가장 큰 문제는 여러 프로젝트에서 가볍고 재사용 가능한 개발자 VM 이미지 하나를 만들거나 프로젝트 당 이미지를 만드는 것입니다. 이전에는 프로젝트별로 작은 VM을 만들려고 노력했지만 개발 워크 플로에 따라 계속 재구성하는 것이 너무 번거로운 작업이었으며 이제 더 큰 VM을 사용하고 각 프로젝트를 가능한 한 격리 된 상태로 유지하기 위해 최선을 다합니다.

프로젝트 당 여러 VM이 선택된 경로 인 경우 OS, IDE, LAMP 스택, 업데이트 / 구성 등을 유지 관리하는 것이 번거로운 일이 될 수 있습니다. 궁극적으로 개발 시간이 길어지고 로컬 환경 설정에 대한 청구 불가능한 시간이 더 길어집니다.

새 VM을 열고 호스트 하드웨어를 더 많이 슬라이스 할 필요없이 다른 프로젝트 파일에 빠르게 액세스 할 수 있었기 때문에이 기능도 도움이되었습니다. 단점은 환경에 예기치 않은 문제 (예 : php.ini, my.cnf, httpd.conf 등)를 방지하기 위해 각 프로젝트를 다른 프로젝트에서 격리하려는 것이 이상적입니다. 지금까지 모든 프로젝트에 쉽게 액세스 할 수 있다는 트레이드 오프는보다 풍부한 리소스로 입증되었습니다.

다시 말하지만 이것은 귀하의 요구 사항에 달려 있으므로 미리 평가하십시오.

피드백 : 피드백으로 이어집니다. 개발자로부터 최대한 많은 정보를 얻으십시오. 궁극적으로 요구 사항을 충족하고 적절한 솔루션을 설정하고 적용하기 전에 문제를 이해해야합니다. 모든 사람이 서로 다른 워크 플로를 가지고 있으며, 개발을 위해 선택한 OS에서 모든 사람이 편안하게 작업 할 수있는 것은 아닙니다. 경험상 개발자는 가장 편하고 성능이 가장 좋은 OS와 IDE를 개발자가 선택할 수 있습니다. 따라서 가벼운 헤드리스 Linux VM도 필요에 따라 유용 할 수 있지만 호스트와 VM 사이의 로컬 네트워크를 통해 폴더를 공유하는 문제가 발생할 수 있습니다.

휴대 성 : VM 이미지를 Dropbox와 같은 곳에 보관하여 필요할 때 언제든지 쉽게 액세스 할 수 있도록하는 아이디어를 가지고 놀았습니다. Dropbox와 같은 서비스는 저장된 내용을 비트 단위로 비교하기 때문에 내가 변경 한 비트 만 동기화되는 것이 논리적으로 보였습니다. 그러나 이미지 파일이 저장되는 방식의 내부와 관련이 있다고 생각하기 때문에 이것은 사실이 아니었고 VM이 동기화 될 때까지 하루 종일 기다릴 것입니다.

참고 : VM에 할당 된 드라이브 공간이 클수록 이미지가 커지므로 개발자에게 이미지를 배포 할 때이 점을 명심하십시오. 프로젝트 당 프로젝트 파일을 프런트로드하는 것은 너무 과도 할 수 있으므로 생성 된 이미지를 만든 후에 각 개발자에게 설정하도록 남겨 두겠습니다.

Ashley Schroder는 Fooman과 Colin의 의견뿐만 아니라 잘 읽은 다소 오래된 관련 기사를 가지고 있습니다.

희망적으로 이것은 나열된 문제 항목 # 6에 대한 통찰력을 얻는 데 도움이되기를 바랍니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.