การตั้งค่าการพัฒนา Magento


23

คำถามนี้มุ่งสู่การตั้งค่าสภาพแวดล้อมการพัฒนา ฉันมีข้อกำหนดเฉพาะบางประการ:

  1. ฉันต้องการใช้โซลูชันของฉันภายใต้ Linux, Windows และ Mac OS เนื่องจากผู้คนในทีมของเราใช้ระบบปฏิบัติการเหล่านี้ทั้งหมด (เช่นนักพัฒนาส่วนหน้าใช้ Windows / Mac ผู้พัฒนาส่วนใหญ่ใช้ Linux)
  2. ฉันต้องใช้ modman
  3. ฉันต้องใช้นักแต่งเพลง
  4. ฉันต้องใช้ Github รวมถึงที่เก็บ Git ส่วนตัวของฉัน
  5. ฉันต้องการ IDE ที่เหมาะสมเช่น Netbeans หรือ PHP Storm
  6. ฉันต้องการประสิทธิภาพที่ดีมาก

การตั้งค่าปัจจุบันของฉันคือภาพ Ubuntu เสมือนจริงภายใน Virtualbox ทั้งสาม OS สามารถเรียกใช้ Virtualbox ได้ดังนั้นคะแนน 1) - 5) จะพึงพอใจ

อย่างไรก็ตามในปัจจุบันฉันไม่พอใจกับ 6) นี่เป็นเรื่องจริงโดยเฉพาะอย่างยิ่งเมื่อเรียกใช้โซลูชันจากภายใน Ubuntu 12.04 Virtualbox ดูเหมือนว่าเสถียรและตอบสนองได้ดีกว่าใน Windows 7 อย่างไรก็ตามหลาย ๆ คนในทีมของเราใช้ลีนุกซ์ดังนั้นฉันอยากจะปรับปรุงวิธีแก้ปัญหา

ใครบ้างมีการตั้งค่าที่เปรียบเทียบได้ใน VMware หรือแม้กระทั่ง docker.io และสามารถรายงานว่ามันทำงานมีเสถียรภาพมากขึ้น? หรือใครมีโซลูชัน / ความคิดที่เทียบเคียงได้


เป็นคำถามที่ดี! เรายังได้ทำงานในการตั้งค่าที่คล้ายกัน แต่ยังไม่ได้วางลงในเวิร์กโฟลว์ปกติของเรา รอคอยที่จะได้คำตอบ
Anna Völkl

แค่ความคิดสั้น ๆ : มันจะเป็นไปไม่ได้ที่จะทำงานโดยไม่มี VM บน Linux และเพียงแค่ติดตั้งทุกอย่างที่ทำงานใน VM โดยตรงหรือไม่ หรือคุณใช้ VM หนึ่งรายการสำหรับหนึ่งโครงการ
Anna Völkl

คุณกำลังใช้งาน VM headless หรือใช้ GUI หรือไม่? และคุณจะซิงโครไนซ์ระบบไฟล์ VM Image กับระบบโฮสต์ได้อย่างไร แชร์โฟลเดอร์? แซมบ้า? (ฉันสมมติว่า IDE ทำงานบนโฮสต์ไม่ใช่ VM) ที่สามารถสร้างความแตกต่างใหญ่
Vinai

@ AnnaVölklใช่มันเป็นไปได้ แต่มันจะทำลายข้อได้เปรียบบางอย่าง เช่นทุกครั้งที่คุณอัพเดตอิมเมจพื้นฐานผู้ใช้ Linux ทั้งหมดจะต้องอัพเดตการเปลี่ยนแปลงด้วยตนเอง นอกจากนี้หากคุณต้องการนำกล่องของคุณจากคอมพิวเตอร์เครื่องหนึ่งไปยังอีกเครื่องหนึ่ง (เช่นทำงานที่บ้านหรือที่อื่น ๆ ) สิ่งต่างๆจะยากขึ้นกว่าเดิมมาก
mpaepper

1
อย่างที่แอนนาพูดว่า: เรากำลังทำอะไรแบบนี้ เราใช้ Vagrant เพื่อสร้างอิมเมจ VM และนี่ใช้งานได้ค่อนข้างดี อย่างที่คุณพูดประสิทธิภาพ (เกี่ยวกับความเร็วของไฟล์ I / O ในโฟลเดอร์แชร์) เป็นสิ่งสำคัญที่เราต้องดำเนินการก่อนที่จะเปลี่ยน สำหรับระบบโฮสต์ Linux ที่ใช้ร่วมกันNFSอาจช่วยได้ ปัญหาใหญ่ของเราคือนักพัฒนาส่วนใหญ่ของเราใช้ระบบโฮสต์ Windows และตรงข้ามกับลิงค์ประสิทธิภาพ Windows ไม่ดีเลย ฉันได้ยินเรื่องนี้จากคนอื่นตอนนี้ไม่ใช่แค่เรา
Matthias Zeis

คำตอบ:


8

ฉันใช้คนจรจัด, คอมไพล์และสร้างสคริปต์ใน phing เครื่องรันคนทำงานฐานข้อมูลและเว็บเซิร์ฟเวอร์ git ใช้ในเครื่องเพื่อติดตามการเปลี่ยนแปลงในส่วนขยายของฉันและสร้างสคริปต์ที่ใช้เพื่ออัปเดต/var/wwwไดเรกทอรีบนเครื่องคนจรจัดของฉัน

พิงค์

ส่วนที่น่าสนใจที่สุดน่าจะเป็น phing ซึ่งทำงานเหมือน modman + ผู้แต่งสำหรับฉัน มันมีเป้าหมายไม่กี่ที่กำหนดรวมถึงการสร้างการติดตั้งและติดตั้ง

สร้างเป้าหมายดาวน์โหลดรุ่นหนึ่งของวีโอไอพี (ระบุไว้ในการสร้างการตั้งค่า) จากเว็บเซิร์ฟเวอร์ภายในและดึงมันลงไปในการสร้างไดเรกทอรี จากนั้นเรียกใช้เป้าหมายอื่น ๆ ที่อนุญาตให้ตั้งค่าไฟล์และล้างแคช จากนั้นจะสร้าง symlink ไปยังไฟล์ทั้งหมดในไดเรกทอรีต้นทาง ผลก็คือทำให้ฉันพร้อมที่จะใช้ไฟล์ทั้งหมดในไดเรกทอรีสร้าง หากไฟล์วีโอไอพีหลักอยู่ในไดเรกทอรีสร้างแล้วก็ข้ามการดาวน์โหลดและเพียงแค่อัปเดต symlink ดังนั้นฉันใช้เป้าหมายนี้เพื่อสร้างสภาพแวดล้อมใหม่ทุกครั้งที่ฉันต้องอัปเดต symlink สำหรับไดเรกทอรีต้นทางเครื่องพเนจรอยู่ใน/vagrant/src(โฟลเดอร์ที่ใช้ร่วมกัน) /var/wwwและสร้างไดเรกทอรี

การดาวน์โหลดเป้าหมายการติดตั้งและนำเข้าการถ่ายโอนข้อมูลฐานข้อมูลสำหรับเวอร์ชันคุณภาพเยี่ยม จากนั้นเรียกใช้เป้าหมายการตั้งค่า

การตั้งค่าเป้าหมายเพียงแค่สร้างไฟล์ local.xml กับการตั้งค่าทั้งหมด

ใน บริษัท ของฉันเราใช้การทดสอบหน่วยและเครื่องมือ CI ดังนั้นวิธีนี้ในการสร้างสภาพแวดล้อมแบบวีโอไอพีทำให้เราสามารถทดสอบส่วนขยายของเราในเวอร์ชันวีโอไอพีที่แตกต่างกันและรันด้วยและไม่ต้องติดตั้ง

ฉันได้สร้าง "ทางลัด" บนเครื่องคนเร่ร่อนซึ่งทำให้เข้าถึงการสร้างได้ง่ายขึ้น ตัวอย่างเช่นการสร้างโครงการฉันต้องการเพียงพิมพ์vagrant ssh -c magebuildและมันจะเรียกใช้ phing ใน/vagrantไดเรกทอรีโดยอัตโนมัติ

จากนั้นฉันได้กำหนดคำสั่งนี้ให้กับการรวมคีย์บางอย่างใน PHPStorm IDE ของฉันและตอนนี้ฉันสามารถสร้างโปรเจ็กต์ใหม่ได้เพียงแค่กด Alt + B ใน IDE ของฉัน แต่เนื่องจากฉันใช้ symlink จึงไม่ได้ใช้งานบ่อยนัก

คนจรจัด

กล่องสำหรับคนพเนจรเป็นกล่องของตัวเองกับ Ubuntu 12.04 บนกระดานจริง ๆ แล้วมันแค่มาตรฐาน 12.04 ที่แม่นยำพร้อมซอฟต์แวร์ทั้งหมดที่ติดตั้ง + ทางลัดและการกำหนดค่าบางอย่าง ในไฟล์คนจรจัดฉันใส่เพียงแค่การตั้งค่าการส่งต่อพอร์ตเครือข่ายส่วนตัวเพื่อให้สามารถใช้ xDebug และสร้างทางลัดในการกำหนด

GIT

ใน Git ฉันจะติดตามเฉพาะไฟล์นามสกุลของฉันสำหรับพิงค์และbuild.xml Vagrantfileดังนั้นทุกคนที่ต้องการสร้างสภาพแวดล้อมก็สามารถโคลนพื้นที่เก็บข้อมูลและเรียกใช้คนพเนจร จากนั้นเขาจะทำให้ VM ทำงานพร้อมทำงาน กระบวนการทั้งหมดนี้ใช้เวลา 1-2 นาที หากคุณต้องการที่จะสร้างโครงการในประเทศ (โดยไม่ใช้ VM) phing build installคุณสามารถเรียกใช้


2

ปัจจุบันสภาพแวดล้อมการพัฒนาของฉันคือ 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

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.