ปัจจุบันสภาพแวดล้อมการพัฒนาของฉันคือ Ubuntu v12.04 กับ VMWare ฉันทำงานภายใน VM เต็มไปด้วย GUI เต็มรูปแบบและใช้ไฟล์ร่วมกันใน Ubuntu เท่านั้นหากฉันต้องการเข้าถึงไฟล์จากโฮสต์ระบบปฏิบัติการของฉันซึ่งเป็น Windows 7 โดยปกติแล้วฉันจะเข้าถึงและแมปไดรฟ์เครือข่ายผ่าน IP ภายในของ VM ผ่าน NAT สำหรับการเชื่อมต่อกับ VM การใช้โซลูชันอื่น ๆ พิสูจน์แล้วว่าช้ากว่ามากเช่น Shared Folders ของ VMWare ฉันปิดใช้งานการตั้งค่า VMWare Image แล้ว อย่างไรก็ตามฉันติดตั้งเครื่องมือ VMWare เพื่อให้ง่ายต่อการคัดลอก / พาสต้าไปยังเครื่องโฮสต์ของฉันและในทางกลับกัน
ดังที่ Matthias Zeis ชี้ให้เห็นอย่างระมัดระวังในการเลือกโฟลเดอร์เครือข่าย / แชร์กับ VM ของคุณเพราะบางคนจะพิสูจน์ว่ามีปัญหา
ฉันเป็นผู้ใช้ VirtualBox ก่อนหน้านี้ แต่พบว่า VMWare มีเสถียรภาพมากขึ้นและทำงานได้อย่างยอมรับได้ (อย่างน้อยสำหรับฉัน) อย่างไรก็ตามฉันจะทำการทดสอบของคุณเองเพื่อให้เหมาะกับความต้องการและข้อกำหนดของคุณมากที่สุด Vagrant ใช้ VirtualBox
IDE:
ผมใช้ Netbeans ค่อนข้างกว้างขวางเป็น IDE ของฉันเลือก แต่ได้ย้ายตั้งแต่วิธีการแก้ปัญหาที่มีน้ำหนักเบามากขึ้นเป็นSublime Text 2 ฉันไม่ค่อยจะเปิด Netbeans เป็นหลักสำหรับ X-Debug และ Refactoring ง่ายขึ้น Netbeans, PHPStorm, Eclipse และอื่น ๆ ล้วนเป็น IDE ของ Java และสามารถทำให้หิวได้
ฮาร์ดแวร์:
หากต้องการเพิ่มมากขึ้นฮาร์ดแวร์จะมีบทบาทสำคัญในการทำงานเสมอ (ชัดเจน) หากนักพัฒนาของคุณยังคงใช้แผ่นดิสก์ HDD ฉันจะมองหาการลงทุนใน SSD สำหรับพวกเขา เนื่องจาก Magento มีไฟล์ / โฟลเดอร์จำนวนมากมากมันจะช่วยเร่งความเร็วในการพัฒนาของนักพัฒนาได้อย่างมาก ในขณะที่กำลังพัฒนา: ด้วยการแคชทั้งหมดและในขณะที่เพียงแค่สำรวจโครงสร้างโฟลเดอร์ใน SVN / GIT หรือ IDE ของคุณ การให้ VM ของคุณเพียงพอ RAM ก็มีความสำคัญเช่นกัน
เครื่องโฮสต์ของฉัน: พื้นที่ไดรฟ์ซัมซุง SSD 512GB, Win7 (64 บิต), 8GB RAM, i7 2.4GHz (8 แกน)
เครื่อง VM ของฉัน: Samsung SSD พื้นที่ไดรฟ์ 30GB, Ubuntu 12.04 (32 บิต), RAM 3GB, i7 (จัดสรร 4 คอร์)
คำถามที่ถาม:
คำถามที่ยิ่งใหญ่ที่สุดคือการสร้างอิมเมจสำหรับนักพัฒนา VM หนึ่งรูปที่มีน้ำหนักเบาและสามารถนำกลับมาใช้ใหม่ได้หลายโครงการหรือเพื่อสร้างอิมเมจต่อโครงการ ก่อนหน้านี้ฉันพยายามทำ VMs ที่เล็กกว่าในแต่ละโครงการ แต่การกำหนดค่าใหม่ตลอดเวลาเพื่อให้สอดคล้องกับเวิร์กโฟลว์การพัฒนาของฉันกลายเป็นเรื่องน่าเบื่อมากเกินไปและตอนนี้ใช้ VM ที่ใหญ่กว่านี้
การบำรุงรักษา OS, IDE, LAMP Stack, อัปเดต / การกำหนดค่า ฯลฯ อาจกลายเป็นเรื่องน่าเบื่อหาก VM หลายรายการต่อโครงการเป็นเส้นทางที่เลือก ในที่สุดนำไปสู่การพัฒนาอีกต่อไปเวลา (และเวลาที่เลวร้ายยิ่งที่ไม่สามารถเรียกเก็บเงินได้สำหรับการตั้งค่าสภาพแวดล้อมท้องถิ่น)
สิ่งนี้พิสูจน์ได้ว่ามีประโยชน์เช่นกันเนื่องจากฉันสามารถเข้าถึงไฟล์โครงการอื่น ๆ ได้อย่างรวดเร็วโดยไม่จำเป็นต้องเปิด VM ใหม่และหั่นฮาร์ดแวร์โฮสต์ของฉันให้มากขึ้น ข้อเสียคือฉันต้องการให้แต่ละโครงการถูกปิดเสียงจากโครงการอื่น ๆ เพื่อป้องกันปัญหาที่ไม่คาดคิดกับสภาพแวดล้อม (เช่น. php.ini, my.cnf, httpd.conf เป็นต้น) จนถึงการแลกเปลี่ยนการมีโครงการทั้งหมดที่เข้าถึงได้ง่ายได้พิสูจน์แล้วว่ามีประโยชน์มากกว่า
อีกครั้งนี้ขึ้นอยู่กับความต้องการและความต้องการของคุณเพื่อประเมินพวกเขาก่อนมือ
ข้อเสนอแนะ:
ซึ่งนำไปสู่ข้อเสนอแนะ รับข้อมูลจากนักพัฒนาของคุณให้มากที่สุด ในที่สุดความต้องการของพวกเขาจะต้องพบและปัญหาของพวกเขาเข้าใจก่อนที่วิธีการแก้ปัญหาที่เหมาะสมสามารถตั้งค่าและวาง ทุกคนมีเวิร์กโฟลว์ที่แตกต่างกันและไม่ใช่ทุกคนที่ทำงานในระบบปฏิบัติการที่คุณอาจเลือกเพื่อการพัฒนา กฎง่ายๆของฉันคือให้นักพัฒนาเลือกระบบปฏิบัติการและ IDE ที่พวกเขาสบายที่สุดและจะทำงานได้ดีที่สุด ดังนั้นแม้แต่ linux ที่ไม่มีหัวเตียงที่มีน้ำหนักเบา VM ก็อาจเป็นประโยชน์ต่อความต้องการของพวกเขา แต่เห็นได้ชัดว่าสามารถเรียกใช้ในเรื่องของการแชร์โฟลเดอร์ข้ามเครือข่ายท้องถิ่นระหว่าง Host และ VM
ความน่าเชื่อถือ:
ฉันยังได้คิดในการเก็บ VM Image ของฉันในสิ่งที่ต้องการ Dropbox เพื่อให้ฉันสามารถเข้าถึงได้ตลอดเวลาที่ฉันต้องการ เนื่องจากบริการอย่าง Dropbox เปรียบเทียบบิตของสิ่งที่เก็บไว้มันจึงดูสมเหตุสมผลที่ซิงค์ที่ฉันเปลี่ยนเท่านั้นจะซิงค์ อย่างไรก็ตามสิ่งนี้ได้รับการพิสูจน์แล้วว่าไม่เป็นอย่างที่ฉันเชื่อว่ามันเกี่ยวข้องกับการบันทึกไฟล์อิมเมจภายในและฉันจะรอทั้งวันทั้งคืนเพื่อให้ VM ของฉันทำการซิงค์
หมายเหตุ:
ยิ่งมีพื้นที่ไดรฟ์ที่จัดสรรให้กับ VM มากเท่าไหร่ภาพก็จะยิ่งใหญ่ขึ้นเท่านั้นโปรดระลึกไว้เสมอเมื่อทำการกระจายภาพไปยังนักพัฒนาซอฟต์แวร์ของคุณ โหลดไฟล์โปรเจ็กต์ต่อโปรเจคต่อหนึ่งหน้าอาจมากเกินไปและฉันจะปล่อยให้ผู้พัฒนาแต่ละรายตั้งค่าหลังจากพวกเขามีภาพที่สร้างขึ้น
Ashley Schroder มีบทความที่ค่อนข้างเก่าซึ่งเป็นบทอ่านที่ดีรวมถึงความคิดเห็นบางส่วนของ Fooman และ Colin
หวังว่าสิ่งนี้จะช่วยให้มีความเข้าใจในรายการปัญหาของคุณในรายการ # 6