Thiết lập phát triển Magento


23

câu hỏi này hướng tới việc thiết lập môi trường phát triển. Tôi có một số yêu cầu cụ thể:

  1. Tôi muốn có thể sử dụng giải pháp của mình trong Linux, Windows và Mac OS, vì những người trong nhóm của chúng tôi sử dụng tất cả các HĐH này (ví dụ: các nhà phát triển giao diện người dùng sử dụng Windows / Mac, các nhà phát triển phía sau chủ yếu sử dụng Linux)
  2. Tôi cần sử dụng modman
  3. Tôi cần sử dụng nhà soạn nhạc
  4. Tôi cần sử dụng Github cũng như kho Git riêng của mình
  5. Tôi cần một IDE thích hợp như Netbeans hoặc PHP Storm
  6. Tôi muốn hiệu suất rất tốt

Thiết lập hiện tại của tôi là một hình ảnh Ubuntu được ảo hóa trong Virtualbox. Cả ba hệ điều hành đều có thể chạy Virtualbox, vì vậy điểm 1) - 5) đều hài lòng.

Tuy nhiên, hiện tại, tôi không hoàn toàn hài lòng với 6). Điều này đặc biệt đúng khi chạy giải pháp từ trong Ubuntu 12.04. Virtualbox có vẻ ổn định hơn và phản hồi nhanh hơn trong Windows 7. Tuy nhiên, nhiều người trong nhóm của chúng tôi đang sử dụng Linux, vì vậy tôi muốn cải thiện giải pháp.

Có ai có một thiết lập tương đương trong VMWare hoặc thậm chí là docker.io và có thể báo cáo liệu nó có chạy ổn định hơn không? Hoặc có ai có giải pháp / ý tưởng so sánh khác?


câu hỏi hay chúng tôi cũng đang làm việc với một thiết lập tương tự nhưng chưa đưa nó vào quy trình làm việc thường xuyên của chúng tôi. mong chờ câu trả lời.
Anna Völkl

chỉ là một ý tưởng nhanh: không thể hoạt động mà không có VM trên Linux và chỉ cần cài đặt trực tiếp mọi thứ chạy trong VM? hoặc bạn sử dụng một VM cho một dự án?
Anna Völkl

Bạn đang chạy VM không đầu hoặc với GUI? Và làm thế nào để bạn đồng bộ hóa hệ thống tập tin VM Image với hệ thống máy chủ? Thư mục chia sẻ? Samba? (Tôi giả sử IDE đang chạy trên máy chủ chứ không phải VM). Điều đó có thể tạo ra một sự khác biệt lớn.
Vinai

@ AnnaVölkl vâng, điều đó là có thể, nhưng nó sẽ phá hủy một số lợi thế. Ví dụ, bất cứ khi nào bạn cập nhật hình ảnh cơ sở, tất cả người dùng Linux sẽ phải cập nhật thủ công các thay đổi. Ngoài ra, nếu bạn muốn đưa hộp của mình từ máy tính này sang máy tính khác (ví dụ: làm việc ở nhà hoặc ở nơi khác), mọi thứ khó khăn hơn nhiều.
mpaepper

1
Như Anna đã nói: chúng tôi cũng đang làm việc như thế này. Chúng tôi đang sử dụng Vagrant để xây dựng hình ảnh VM và điều này đang hoạt động khá tốt. Như bạn nói, hiệu suất (liên quan đến tốc độ của tệp I / O trong các thư mục dùng chung) là điều chính chúng ta phải làm việc trước khi chuyển đổi. Đối với hệ thống máy chủ Linux, cổ phiếu NFS có thể giúp đỡ. Vấn đề lớn của chúng tôi là hầu hết các nhà phát triển của chúng tôi sử dụng các hệ thống máy chủ Windows và ngược lại với liên kết, hiệu suất của Windows không tốt chút nào. Tôi đã nghe điều này từ những người khác nhau, không chỉ chúng tôi.
Matthias Zeis

Câu trả lời:


8

Tôi sử dụng vagrant, git và một số tập lệnh xây dựng trên phing. Máy vagrant chạy cơ sở dữ liệu và máy chủ web, git được sử dụng cục bộ để theo dõi các thay đổi trong tiện ích mở rộng của tôi và tập lệnh xây dựng được sử dụng để cập nhật /var/wwwthư mục trên máy vagrant của tôi (thực ra nó được sử dụng ở mọi nơi tôi cần để xây dựng môi trường).

Phing

Có lẽ phần thú vị nhất là phing, hoạt động như modman + nhà soạn nhạc cho tôi. Nó có một vài mục tiêu được xác định bao gồm xây dựng, thiết lập và cài đặt.

Các build tải mục tiêu phiên bản nhất định của Magento (quy định tại build config) từ máy chủ web nội bộ và giải nén nó vào thư mục build. Sau đó chạy các mục tiêu khác có quyền thiết lập cho các tệp và dọn sạch bộ đệm. Sau đó, nó tạo ra các liên kết tượng trưng cho tất cả các tệp trong thư mục nguồn. Kết quả là tôi nhận được tất cả các tệp sẵn sàng để sử dụng trong thư mục xây dựng của mình. Nếu các tệp lõi magento đã có trong thư mục xây dựng, nó sẽ bỏ qua việc tải xuống và chỉ cập nhật các liên kết tượng trưng, ​​vì vậy tôi sử dụng mục tiêu này để xây dựng lại môi trường mỗi khi tôi cần cập nhật các liên kết tượng trưng. Đối với /vagrant/srcthư mục nguồn máy vagrant nằm trong (thư mục dùng chung) và thư mục build là /var/www.

Các cài đặt mục tiêu tải và cơ sở dữ liệu nhập khẩu bãi cho phiên bản Magento nhất định. Sau đó chạy mục tiêu thiết lập.

Các thiết lập mục tiêu chỉ cần tạo một file local.xml với tất cả các thiết lập.

Trong công ty của tôi, chúng tôi sử dụng các công cụ kiểm tra đơn vị và CI, vì vậy cách này để xây dựng môi trường magento cho phép chúng tôi kiểm tra các tiện ích mở rộng của mình trên các phiên bản magento khác nhau và chạy nó có và không cần cài đặt.

Tôi đã tạo một "phím tắt" trên máy vagrant để đơn giản hóa việc truy cập để xây dựng. Ví dụ để xây dựng lại dự án tôi chỉ cần gõ vagrant ssh -c magebuildvà nó tự động chạy phing trong /vagrantthư mục.

Sau đó, tôi đã gán lệnh này cho một tổ hợp phím nhất định trong IDE PHPStorm của mình và bây giờ tôi có thể xây dựng lại dự án chỉ bằng cách nhấn Alt + B trong IDE của mình. Nhưng vì tôi sử dụng symlink nên nó không hoạt động thường xuyên.

Âm đạo

Một hộp dành cho người lang thang là hộp của riêng tôi với Ubuntu 12.04 trên tàu, thực tế nó chỉ là chuẩn 12.04 chính xác với tất cả các phần mềm được cài đặt sẵn + phím tắt và một số cấu hình. Trong tệp vagrant tôi chỉ đặt các cài đặt chuyển tiếp cổng, mạng riêng để có thể sử dụng xDebug và đặt phím tắt xây dựng theo quy định.

GIT

Trong git tôi chỉ theo dõi các tệp mở rộng của mình, build.xmlcho phing và Vagrantfile. Vì vậy, mọi người muốn tạo một môi trường chỉ có thể sao chép kho lưu trữ và chạy lên. Sau đó, anh ta sẽ đưa VM lên và chạy sẵn sàng để làm việc. Tất cả quá trình này mất 1-2 phút. Nếu bạn muốn xây dựng dự án cục bộ (không sử dụng VM), bạn có thể chạy phing build install.


2

Hiện tại môi trường phát triển của tôi là Ubuntu v12.04 với VMWare. Tôi hoạt động hoàn toàn bên trong VM, với GUI đầy đủ và chỉ sử dụng chia sẻ tệp samba trong Ubuntu nếu tôi cần truy cập các tệp từ hệ điều hành máy chủ của mình là Windows 7. Tôi thường truy cập và ánh xạ ổ đĩa mạng qua IP bên trong của VM thông qua NAT để kết nối với VM. Việc sử dụng các giải pháp khác được chứng minh là chậm hơn nhiều như Thư mục chia sẻ của VMWare. Tôi đã tắt tính năng này trong cài đặt VMWare Image. Tuy nhiên, tôi cài đặt các công cụ VMWare để cho phép sao chép / mì dễ dàng vào máy chủ của mình và ngược lại.

Như Matthias Zeis đã chỉ ra, hãy cẩn thận trong việc lựa chọn các thư mục mạng / chia sẻ với VM của bạn vì một số sẽ chứng minh có vấn đề.

Tôi là người dùng trước của VirtualBox nhưng thấy VMWare ổn định hơn và hoạt động có thể chấp nhận được (ít nhất là đối với tôi). Tuy nhiên tôi sẽ thực hiện các bài kiểm tra của riêng bạn để phù hợp nhất với nhu cầu và yêu cầu của bạn, tức là. Vagrant sử dụng VirtualBox.

IDE: Tôi đã sử dụng Netbeans khá rộng rãi như là lựa chọn IDE của tôi nhưng từ đó đã chuyển sang một giải pháp nhẹ hơn như Sublime Text 2 . Tôi hiếm khi sẽ mở Netbeans vì chủ yếu cho mục đích X-Debug và tái cấu trúc dễ dàng hơn. Netbeans, PHPStorm, Eclipse, v.v ... đều là các IDE dựa trên Java và có thể rất đói tài nguyên.

PHẦN CỨNG: Để thêm nhiều hơn, Phần cứng sẽ luôn là một vai trò quan trọng trong hiệu suất (rõ ràng). Nếu các nhà phát triển của bạn vẫn đang sử dụng đĩa cứng, tôi sẽ đầu tư vào SSD cho họ. Vì Magento có số lượng tệp / thư mục rất lớn, nó sẽ tăng tốc đáng kể hiệu năng của nhà phát triển. Trong khi phát triển: Với tất cả bộ nhớ đệm tắt và Trong khi chỉ cần duyệt qua cây thư mục trong SVN / GIT hoặc IDE của bạn. Cung cấp cho VM của bạn đủ RAM cũng quan trọng không kém.

Máy chủ của tôi: Samsung SSD 512GB Dung lượng ổ đĩa, Win7 (64 bit), RAM 8GB, i7 2.4GHz (8 lõi)

Máy VM của tôi: Samsung SSD, dung lượng ổ đĩa 30 GB, Ubuntu 12.04 (32 bit), RAM 3 GB, i7 (4 lõi được phân bổ).

CÂU HỎI THƯỜNG GẶP: Câu hỏi lớn nhất là, để tạo một Hình ảnh VM dành cho nhà phát triển có trọng lượng nhẹ và có thể tái sử dụng trên nhiều dự án hoặc để tạo Hình ảnh cho mỗi dự án. Trước đây tôi đã cố gắng thực hiện các máy ảo nhỏ hơn trên cơ sở từng dự án, tuy nhiên việc cấu hình lại liên tục với quy trình phát triển của tôi đã trở nên quá nhiều, và bây giờ sử dụng một máy ảo lớn hơn và cố gắng hết sức để giữ cho mỗi dự án được tách biệt nhất có thể.

Duy trì hệ điều hành, IDE, LAMP Stack, cập nhật / cấu hình, v.v. có thể trở thành một việc vặt nếu nhiều VM trên mỗi dự án là tuyến đường được chọn. Cuối cùng dẫn đến thời gian phát triển dài hơn (và thậm chí tệ hơn là thời gian không có hóa đơn cho các thiết lập môi trường địa phương).

Điều này cũng tỏ ra hữu ích, vì tôi đã nhanh chóng có thể truy cập các tệp dự án khác mà không cần phải mở VM mới và cắt phần cứng Máy chủ của tôi nhiều hơn. Nhược điểm là lý tưởng tôi muốn mỗi dự án bị loại bỏ khỏi các dự án khác để ngăn chặn mọi vấn đề không lường trước được với môi trường (ví dụ: php.ini, my.cnf, httpd.conf, v.v.). Cho đến nay sự đánh đổi của việc có tất cả các dự án dễ dàng truy cập đã chứng tỏ tài nguyên hơn.

Một lần nữa, điều này tùy thuộc vào yêu cầu và nhu cầu của bạn, vì vậy hãy đánh giá chúng trước khi ra tay.

PHẢN HỒI: Dẫn đến phản hồi. Nhận càng nhiều đầu vào từ các nhà phát triển của bạn càng tốt. Cuối cùng, các yêu cầu của họ cần được đáp ứng và các vấn đề của họ được hiểu trước khi một giải pháp thích hợp có thể được thiết lập và đưa ra. Mọi người đều có quy trình làm việc khác nhau và không phải ai cũng cảm thấy thoải mái khi làm việc trong HĐH mà bạn có thể chọn để phát triển. Nguyên tắc nhỏ của tôi là cho phép nhà phát triển chọn HĐH và IDE mà họ cảm thấy thoải mái nhất và sẽ hoạt động tốt nhất. Vì vậy, ngay cả một máy ảo linux không đầu nhẹ có thể chứng minh hữu ích cho nhu cầu của họ, nhưng rõ ràng có thể gặp phải vấn đề chia sẻ các thư mục trên mạng cục bộ giữa Máy chủ và VM.

PORTABILITY: Tôi cũng đã từng có ý tưởng giữ hình ảnh VM của mình trên một cái gì đó như Dropbox để tôi có thể dễ dàng truy cập nó bất cứ lúc nào tôi cần. Vì các dịch vụ như Dropbox so sánh từng bit của những gì được lưu trữ nên có vẻ hợp lý rằng chỉ các bit tôi đã thay đổi mới được đồng bộ hóa. Tuy nhiên, điều này đã chứng minh không phải là trường hợp như tôi tin rằng nó có liên quan đến nội bộ về cách lưu tệp hình ảnh và tôi sẽ đợi cả ngày / đêm chỉ để VM của tôi đồng bộ hóa.

GHI CHÚ: Không gian ổ đĩa được phân bổ cho VM càng lớn, Hình ảnh sẽ càng lớn, hãy ghi nhớ điều này khi phân phối Hình ảnh cho các nhà phát triển của bạn. Tải trước các tệp dự án của bạn cho mỗi dự án có thể là quá mức cần thiết và tôi sẽ để lại cho mỗi nhà phát triển để thiết lập sau khi họ có hình ảnh được tạo.

Ashley Schroder có một bài viết hơi cũ liên quan rất hay, cũng như một số bình luận của Fooman và Colin

Hy vọng rằng điều này sẽ giúp bạn hiểu rõ hơn về vấn đề được liệt kê của bạn, # 6.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.