कार्य
अक्सर आपको दीर्घकालिक परियोजनाओं से निपटना पड़ता है जो लिनक्स के लिए एक परीक्षण सर्वर पर विकास की आवश्यकता होती है, और क्लाइंट द्वारा जांचने के बाद - अपने सर्वर पर कोड को अपडेट करना। बेशक, यह एक संस्करण नियंत्रण प्रणाली (हम एसवीएन का उपयोग करें) का उपयोग करने के लिए समझ में आता है, और जब एसएसएच के माध्यम से क्लाइंट सर्वर तक पहुंच होती है, तो यह उदाहरण के लिए svn अपडेट या svn चेकआउट कमांड के लिए करना पर्याप्त है।
समस्या
हालांकि, जब क्लाइंट सर्वर तक पहुंच केवल एफ़टीपी के माध्यम से होती है, तो आपको विकल्पों में से एक का उपयोग करके मैन्युअल रूप से अपडेट अपलोड करना होगा:
- एफ़टीपी के माध्यम से सभी प्रोजेक्ट फ़ाइलों को कॉपी करें, ताकि कुछ भी याद न हो
- पिछली रिलीज़ के बाद से बदल दी गई फ़ाइलों की एक सूची बनाएं, और केवल उन्हें अपलोड करें।
निर्णय
मैं एक समाधान साझा करना चाहता हूं जो आपको इस प्रक्रिया को स्वचालित करने की अनुमति देता है, और क्लाइंट सर्वर पर प्रोजेक्ट को केवल अपने देव सर्वर पर स्क्रिप्ट चलाकर अपडेट करता है। ऐसा करने के लिए, यह एक सरल शेल स्क्रिप्ट लिखने का प्रस्ताव है जो निम्नलिखित कार्य करेगा:
1) संस्करण नियंत्रण प्रणाली से निर्यात परियोजना कोड
2) क्लाइंट सर्वर पर प्रोजेक्ट कोड अपडेट करें
पहली समस्या का हल बेहद आसान है:
#
rm -r /home/project/release_folder/
#
svn export --force http//svn.yourserver.com/repositary_name /home/project/release_folder/
उसी समय, निश्चित रूप से, उपयोग किए गए संस्करण नियंत्रण प्रणाली के आधार पर, आप पैरामीटर सेट कर सकते हैं, उदाहरण के लिए, रिलीज में एक निश्चित संशोधन करने के लिए।
दूसरी समस्या को हल करने के लिए, आप lftp कमांड का उपयोग कर सकते हैं, जिसमें मापदंडों का एक बड़ा सेट है और आपको ftp प्रोटोकॉल का उपयोग करके व्यापक फ़ाइल जोड़तोड़ करने की अनुमति देता है:
# दूरस्थ क्लाइंट सर्वर पर फ़ोल्डर के साथ रिलीज के साथ फ़ोल्डर का सिंक्रनाइज़ेशन
lftp -f sync_script.x
Sync_script.x फ़ाइल की सामग्री:
open login:password@customerserver.com
mirror -c -e -R -X '*.config.php' --no-perms /home/project/release_folder htdocs/sub
exit
जैसा कि आप देख सकते हैं, यह कमांड आपको दूरस्थ क्लाइंट सर्वर पर रिलीज़ फ़ोल्डर का एक सटीक दर्पण बनाने की अनुमति देता है। उसी समय, हम, उदाहरण के लिए, इसके मापदंडों का उपयोग करते हुए, कुछ फ़ाइलों को अपडेट करने पर रोक लगा सकते हैं, या रिमोट सर्वर पर फ़ाइलों के एक्सेस अधिकारों को बदल सकते हैं।
अपने सर्वर पर इस तरह की एक स्क्रिप्ट बनाने के बाद, बस इसे चलाएं और कुछ सेकंड तक प्रतीक्षा करें जब तक यह रिलीज़ फ़ोल्डर को अपडेट नहीं करता है और एफ़टीपी के माध्यम से क्लाइंट सर्वर के साथ इसकी सामग्री को सिंक्रनाइज़ करता है। यह बहुत समय बचाता है और नसों + "मानव कारक" को बाहर करता है। इस स्क्रिप्ट का विस्तार करके, आप प्रोजेक्ट को कम से कम सौ सर्वरों पर, कुछ ही मिनटों में अपडेट कर सकते हैं।