मैं कुछ K-12 स्कूलों और कुछ कॉलेजों द्वारा उपयोग किए जाने वाले ओपन सोर्स PHP / MySQL वेब एप्लिकेशन का प्रबंधन करता हूं। मैं प्रोजेक्ट का एकमात्र डेवलपर भी हूं। हालांकि यह मेरे नियोक्ता द्वारा होस्ट किए गए एप्लिकेशन के स्रोत डाउनलोड की तुलना में थोड़ा अधिक हुआ करता था, मैंने पिछले साल इसे एक "वास्तविक" ओपन सोर्स प्रोजेक्ट में बनाने के लिए काम किया है, जिसमें दस्तावेज़ीकरण, गिने हुए रिलीज़, सार्वजनिक चैंज, आदि हैं।
मैं अपग्रेड प्रक्रिया को बेहतर बनाने के लिए देख रहा हूं, और संभावित दर्दनाक क्षेत्रों में से एक (विशेष रूप से आईटी विशेषज्ञता-भूखे स्कूलों के लिए) रिलीज के बीच डेटाबेस स्कीमा में परिवर्तन में है। वे अक्सर नहीं होते हैं या कठोर परिवर्तन होते हैं, लेकिन मैं इस प्रक्रिया पर सुझाव की सराहना करता हूं।
वर्तमान में, मैं डेटाबेस को एक नए इंस्टाल में सेटअप करने के लिए एक बेस एसक्यूएल स्क्रिप्ट को बनाए रखता हूं। इसमें वर्तमान रिलीज़ के लिए पूर्ण स्कीमा शामिल है; नए इंस्टॉलेशन के लिए कोई और कार्रवाई की आवश्यकता नहीं है। रिलीज़ के बीच होने वाले परिवर्तन upgrade-$releasever.sql
स्क्रिप्ट में संग्रहीत किए जाते हैं, और किसी भी रिलीज़ को छोड़ दिए जाने के लिए सभी अपग्रेड स्क्रिप्ट को चलाना आवश्यक होता है।
शेल स्क्रिप्ट अच्छी तरह से फिट नहीं हैं, क्योंकि हमारे कई उपयोगकर्ता शेल एक्सेस के बिना होस्ट पर काम करते हैं। अन्य प्राथमिकताओं के कारण, एक जटिल PHP ब्राउज़र-आधारित इंस्टॉलर / अपग्रेड स्क्रिप्ट भौतिक होने की संभावना नहीं है। हालाँकि, मैं उन्नयन को आसान बनाने के लिए ब्राउज़र-आधारित PHP स्क्रिप्ट के साथ कुछ करना पसंद करूँगा। यह कैसे दृष्टिकोण के लिए सुझाव?