แนวทางที่ดีสำหรับการทำเว็บแอพพลิเคชัน PHP สำหรับบรรจุภัณฑ์ Debian


15

เว็บแอปพลิเคชั่น PHP หลายรุ่นใช้สำหรับติดตั้งและอัปเกรด:

  1. ยกเลิกการ tar ลูก tar แหล่งที่มา
  2. ชี้ Apache ที่แหล่งที่มา
  3. นำทางเว็บเบราว์เซอร์ไปที่หน้าแรก
  4. ดำเนินการผ่านหน้าเว็บหลายหน้าของการตั้งค่า (เช่นการตรวจสอบการมีอยู่ของห้องสมุดการขอข้อมูลการเชื่อมต่อฐานข้อมูลการสร้างหรืออัพเดทคีมาฐานข้อมูล ฯลฯ )
  5. ผู้ใช้เปลี่ยนชื่อinstall/ไดเรกทอรีเป็นอย่างอื่นเพื่อให้แอปพลิเคชันรู้ว่าติดตั้งแล้ว

ฉันไม่เห็นวิธี (ง่ายๆ) ในการสร้างแพ็คเกจ Debian จากสิ่งนี้โดยไม่ทำให้ผู้ใช้ติดตั้งแพคเกจทำตามขั้นตอนด้วยตนเองหลายขั้นตอนข้างต้น โปรดทราบว่าฉันไม่ใช่นักพัฒนาในแอปพลิเคชันดังนั้นฉันไม่ได้อยู่ในฐานะที่จะทำการเปลี่ยนแปลงโดยตรงกับวิธีการติดตั้งแอปพลิเคชัน

วิธีการทั่วไปในการทำบรรจุภัณฑ์ของแอพพลิเคชั่นดังกล่าวคืออะไร?


1
ฉันไม่แน่ใจว่าคุณหมายถึงอะไรโดยแพคเกจ Debian แต่คุณดูเป็น Composer หรือไม่ getcomposer.org
CamelBlues

คำตอบ:


19

ฉันได้สร้างเว็บแอปพลิเคชั่น PHP หลายตัวที่ฉันแจกจ่าย (ภายใน) ผ่านแพ็คเกจ Debian การทำเช่นนี้เป็นไปอย่างตรงไปตรงมาด้วยสคริปต์ (ง่ายที่นี่) เพื่อทำให้กระบวนการอัตโนมัติ:

create_package.sh :

# create a clean debian package directory
rm -rf debian
mkdir -p debian/DEBIAN
mkdir -p debian/var/www/myapp

# populate the debian directory
cp control    debian/DEBIAN
cp myapp.php  debian/var/www/myapp
cp index.html debian/var/www/myapp

# finish through fakeroot so we can adjust ownerships without needing to be root    
fakeroot ./finish_package.sh debian .

finish_package.sh :

# $1 is the debian directory, $2 is the output directory

# adjust ownerships
chown -R root:root $1
chown -R nobody:nobody $1/var/www/myapp

# finally build the package
dpkg-deb --build $1 $2

การควบคุม :

Package: myapp
Version: 1.2.3
Maintainer: Your Name <yourname@email.com>
Architecture: all
Depends: apache2, php5
Description: The myapp web application.

ทั้งหมดนี้ค่อนข้างง่ายที่จะทำและทำงานได้ดีสำหรับการกระจายแพคเกจภายในที่ฉันทำ ฉันไม่แน่ใจว่ามันเพียงพอสำหรับการแจกจ่ายทั่วโลก แต่มันอาจคล้ายกับสิ่งที่คน Ubuntu และ Debian ทำเมื่อใช้แพ็กเกจซอร์ส (อาจแจกจ่ายเป็น tarballs พร้อมสคริปต์การติดตั้ง) และสร้างแพ็คเกจ. deb สำหรับพวกเขา

ฉันคิดว่าสิ่งนี้สามารถแก้ไขห้าจุดได้อย่างราบรื่น:

  1. แพ็คเกจ Debian จะทำการคลายการบีบอัดลงในตำแหน่งที่เหมาะสมบนระบบเป้าหมายโดยอัตโนมัติเมื่อทำการติดตั้ง

  2. คุณสามารถให้แพ็คเกจ Debian กำหนดค่า Apache โดยอัตโนมัติ แพคเกจบางอย่างเช่น MySQL และ Apache มีไดเรกทอรี "conf.d" ใน / etc ที่คุณสามารถวางไฟล์การกำหนดค่า นี่คืออุดมคติ สคริปต์แพ็กเกจของคุณสามารถสร้างไดเร็กทอรี debian / etc / apache2 / conf.d และคัดลอกไฟล์คอนฟิกูเรชันที่นั่น มันจะถูกติดตั้งบนระบบเป้าหมายและคุณสามารถรีสตาร์ท Apache ในสคริปต์ที่ชื่อว่า postinst ที่คุณใส่ไว้ใน debian / DEBIAN

  3. นี่อาจเป็นสิ่งที่หลีกเลี่ยงไม่ได้หากต้องป้อนข้อมูลที่กำหนดเองแม้ว่าจะมีหลายระบบที่ต้องการเรียกใช้ "นอกกรอบ" โดยไม่ต้องมีการกำหนดค่า

  4. การมีอยู่ของไลบรารีสามารถรับประกันได้โดยรวมถึงการพึ่งพาแพ็คเกจที่เหมาะสมในไฟล์ควบคุม ข้อมูลการเชื่อมต่อฐานข้อมูลสามารถติดตั้งเป็นค่าเริ่มต้นหรือถามผู้ดูแลระบบในหน้าการกำหนดค่า เมื่อป้อนแล้วหน้ากำหนดค่าควรเรียกใช้สคริปต์การย้ายฐานข้อมูล idempotent เพื่ออัปเดตสคีมาฐานข้อมูล เฟรมเวิร์กเว็บจำนวนมาก (เช่น Django) ทำให้เป็นเรื่องง่าย

  5. รหัสที่อยู่เบื้องหลังหน้าการกำหนดค่าควรทำเครื่องหมายระบบว่ากำหนดค่าไม่ใช่ผู้ดูแลระบบ

บางครั้งวิธีที่ฉันใช้คือแยกการติดตั้งการกำหนดค่าออกจากการติดตั้งแอพโดยแยกแพคเกจออกจากกัน ฉันสามารถมีแพ็คเกจการกำหนดค่าที่แตกต่างกันหลายอย่าง (รีลีสการพัฒนาและอื่น ๆ ) ที่ฉันสามารถติดตั้งได้ตามต้องการ การแยกส่วนนี้ยังมีประโยชน์เนื่องจากการกำหนดค่าและแอปสามารถพัฒนาแยกกันได้โดยไม่ต้องปิดกั้นซึ่งกันและกันเมื่อติดตั้งใหม่

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