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.