ฉันรู้ว่าคำถามนี้เก่ากว่าเล็กน้อย แต่เนื่องจากฉันไม่เห็นว่านี่เป็นคำตอบที่นี่ฉันต้องการแบ่งปันสิ่งที่ฉันทำตามปกติสำหรับการตั้งค่าและการปรับใช้ตามไซต์ git เดียวและมันทำงานได้ดีจริงๆด้วยการทำงานจากหลาย ๆ อุปกรณ์สถานที่และกับนักพัฒนาหลายคน (ทุกแห่งมี repos ในพื้นที่ของตัวเองพวกเขาทำงานเพราะมันเป็นเรื่องธรรมดาสำหรับคอมไพล์)
ฉันสามารถแนะนำการตั้งค่าต่อไปนี้อย่างอบอุ่น:
นอกจากนี้ยังมีการอธิบายไว้ใน (หากคุณต้องการทรัพยากรที่สองเพื่อห่อหัวของคุณรอบ ๆ มัน):
มันใช้งานได้ (โดยมี repos อย่างน้อยสาม) โดย:
- วางเว็บไซต์บนโฮสต์สดภายใต้คอมไพล์
- สร้างพื้นที่เก็บข้อมูล gitใหม่บนโฮสต์สด
- จากนั้นแยกจากที่เก็บเปลือยไปยัง repit git การพัฒนาท้องถิ่นของคุณ
เมื่องานเสร็จแล้วคุณจะต้องกดกับ repo เปลือยระยะไกลที่คุณลอกแบบมา repo เปล่ามี hooks ที่จะซิงค์กับ repo สด (ในรหัสด้านบนเรียกว่าprime )
ในฐานะที่เป็น Wordpress การตั้งค่าเฉพาะใน repo ฉันมีสิ่งนี้.gitignore
:
# uploads are data, excluded from source tree
wp-content/uploads/
ส่วนที่เหลือรวม การกำหนดค่าปลั๊กอินและธีมที่ฉันเก็บไว้ภายใต้การควบคุมเวอร์ชัน / การกำหนดค่า สิ่งนี้ช่วยให้ฉันติดตามการเปลี่ยนแปลงและตรวจสอบรหัสได้ง่ายก่อนใช้งานจริง ฉันสามารถผสานกับต้นไม้ระยะไกลได้ง่ายขึ้นด้วยการเปลี่ยนแปลงของฉันเอง ที่เป็นประโยชน์อย่างยิ่งกับหลัก Wordpress ซึ่งมีอยู่ใน Github
วิธีนี้ใช้ได้ผลดีสำหรับ Wordpress ของฉันส่วนใหญ่ Repo เปลือยป้องกันคุณจากการผลักดันการเปลี่ยนแปลงที่ขัดแย้ง นอกจากนี้ยังซิงค์กับสำเนาระยะไกลก่อนที่จะอัปเดตเว็บไซต์สด ซึ่งหมายความว่าการอัปเดตไซต์สดนั้นทำได้อย่างรวดเร็ว เพราะตะขอคุณยังสามารถเรียกตะขอ Wordpress update ได้หลังจากนั้นถ้าต้องการ
หากยังไม่ได้ทดลองว่าสามารถปรับปรุงได้มากเพียงใดด้วย Github hooks แต่โดยปกติฉันไม่ต้องการใช้เพราะรหัสอยู่ภายใต้การควบคุมเวอร์ชันท้องถิ่นไม่ใช่ Github
ในการตั้งค่าระบบดังกล่าวเป็นครั้งแรกคุณควรใช้เวลาสักครู่เพื่อประเมินว่าคุณมีเครื่องมือทั้งหมดที่มีในโฮสต์ระยะไกลของคุณหรือไม่:
- การเข้าถึง SSH
- GIT
- ไดเรกทอรีส่วนตัวที่คุณสามารถวางไฟล์และไดเรกทอรีย่อยไว้ใน (เช่นสำหรับ repo git เปลือยของคุณ)
ควรตั้งค่าเวลาเป็นครั้งแรกภายในหนึ่งชั่วโมงรวม สภาพแวดล้อมทั้งหมดและคุณเผยแพร่การพุชครั้งแรก
ขึ้นอยู่กับโฮสต์ของคุณคุณอาจต้องการป้องกัน.git
ไดเรกทอรีจากการเข้าถึงเว็บ นี่คือตัวอย่าง.htaccess
โค้ดที่ทำให้ Wordpress อยู่ในไดเรกทอรีย่อยซึ่งทำให้มีพื้นที่ว่างใน repo ที่ไม่ได้เผยแพร่ออนไลน์ (มีประโยชน์):
Options -Indexes
# fix trailing slash for .git / make it disappear + .gitignore and similar files.
RedirectMatch 404 ^/\.git(.*)$
# mask 403 on .ht* as 404
<Files ~ "^\.ht">
Order Deny,Allow
Allow from all
Satisfy All
Redirect 404 /
</Files>
RewriteEngine On
RewriteBase /
# map everything into public and set environment var
# to tag the request being valid
RewriteCond %{ENV:REDIRECT_sitealias} !set
RewriteRule ^(.*)$ /public/$1 [E=sitealias:set,L]
ในระยะสั้นทุกอย่างที่ไม่อยู่ในไดเรกทอรีสาธารณะไม่ได้ออนไลน์ ภายในไดเรกทอรีสาธารณะสามารถเป็น codebase wordpress ตัวอย่างเช่น.htaccess
คุณจำเป็นต้องมี:
RewriteEngine On
# mask as 404 if directly accessed
RewriteCond %{ENV:REDIRECT_sitealias} !set
RewriteRule .* - [L,R=404]
นี้จะช่วยป้องกันการเข้าถึงโดยตรงกับประชาชน ส่วนนี้.htaccess -foo คุณสามารถค้นหาไว้ที่นี่: จองไป .htaccess ควรกลับ 404 แทน 403 สำหรับตัวแปรสภาพแวดล้อมที่คุณต้องทดสอบว่ามันทำงานในสภาพแวดล้อมของคุณ นอกจากนี้คุณต้องตัดสินใจว่าคุณอยู่ภายใต้การควบคุมเวอร์ชันหรือไม่
หากคุณมีการควบคุมโฮสติ้งได้มากขึ้นคุณสามารถทำสิ่งต่าง ๆ เพิ่มเติมได้ที่นี่ (และปรับให้เหมาะสม / ต่างกันมากขึ้น) ตัวอย่างข้างต้นมีเป้าหมายสำหรับสภาพแวดล้อมการโฮสต์ที่ใช้ร่วมกันโดยทั่วไป (ที่มี GIT ปกติฉันขอให้ร้านขายเครื่องของฉันจัดหาเพราะฉันชอบถ้าพวกเขาดูแลว่าเป็นสิ่งที่ฉันจ่ายให้)
ในด้านลบนี่เป็นปัญหาที่พบบ่อยบางอย่างที่อธิบายไว้ในคำตอบอื่น ๆ สิ่งหนึ่งที่ฉันไม่ภาคภูมิใจ แต่สิ่งที่ได้ผลคือการทำให้โฮสต์การพัฒนาเปลี่ยนเป็นไฟล์โฮสต์เพื่อให้เซิร์ฟเวอร์ฐานข้อมูลชี้ไปที่สำเนาการพัฒนา ดังนั้นคุณสามารถเก็บการกำหนดค่าฐานข้อมูลได้หนึ่งรายการ ไม่เจ๋งจริง ๆ เนื่องจากข้อมูลประจำตัว
สำรองข้อมูลอัตโนมัติ
อย่างไรก็ตามโดยปกติฉันไม่สนใจอะไรมากที่นี่ แต่แทนที่จะมีการสำรองข้อมูลรายวันทำงานบนระบบระยะไกลซึ่งจะเพิ่มขึ้นซึ่งตัวเองจะถูกเก็บไว้ในสถานที่ห่างไกลอื่นแล้ว ง่ายและราคาถูกและให้คุณกู้คืนทั้งการติดตั้ง Wordpress เช่นเดียวกับการอัพโหลดไฟล์ฐานข้อมูลและ repo git นอกจากนี้สำหรับคำสั่งสำรองข้อมูลของฉันฉันอาจไม่เป็นไรอย่างสมบูรณ์แบบ แต่สิ่งเหล่านี้ใช้ได้สำหรับฉัน:
mysql: mysqldump --host=%s -u %s --password=%s %s| gzip > %s
git : git gc
git bundle
files: tar --force-local -czf %s %s
สิ่งที่ฉันจะแนะนำที่นี่คือคุณเก็บกระบวนการรอบการติดตั้ง Wordpress ของคุณออกจาก Wordpress พวกเขาจำเป็นต้องเรียกใช้บนระบบที่เฉพาะเจาะจงดังนั้นโดยปกติคุณจะไม่มีในแอพพลิเคชั่น (เช่นแอปพลิเคชันสามารถลงไปได้ แต่คุณจำเป็นต้องทำงานเหล่านี้ต่อไป)
เปิดใช้งานสำหรับการทำงานเป็นทีม
ข้อดีอีกอย่างคือคุณเปิดใช้ไซต์ของคุณสำหรับการทำงานเป็นทีมอยู่แล้ว ต้องขอขอบคุณ repo เพิ่มเติมที่ทำให้คุณไม่สามารถทำผิดได้มากและคุณยังสามารถแบ่งปันสาขาระยะไกลได้นอกเหนือจากการเป็น Master หรือ Live Branch กับเพื่อนร่วมงานของคุณ