प्रश्न 1: वे दूरस्थ सर्वर पर उपयोगकर्ता का जिक्र कर रहे हैं।
प्रश्न 2: यह दो परिदृश्यों पर निर्भर करता है: 1. आपको अपने दूरस्थ उपयोगकर्ता को धक्का देने के लिए अपने स्थानीय उपयोगकर्ता की सार्वजनिक कुंजी जोड़नी होगी। 2. यदि किसी अन्य सर्वर पर तैनात करने के लिए एसएसएच की आवश्यकता होती है तो आपको स्थानीय उपयोगकर्ता को एक सार्वजनिक कुंजी जोड़ने की आवश्यकता होगी जो पोस्ट-प्राप्त हुक चलाता है। सबसे अधिक संभावना केवल 1 आपकी चिंता है और 2 इसलिए नहीं है क्योंकि रिमोट सर्वर रिमोट गिट रेपो और www सर्वर का घर होगा।
इसका मतलब है कि आप public_keys फ़ाइल में लिनक्स/यूनिक्स वातावरण में सार्वजनिक कुंजी जोड़ते हैं। यह फ़ाइल आमतौर पर /home/$USER/.ssh/authorized_keys में स्थित होती है। अधिकृत_कीज फ़ाइल उपयोगकर्ता के लिए known_hosts फ़ाइल के समान निर्देशिका में स्थित होती है।
प्रश्न 3: वे रिमोट गिट भंडार को कैसे सेट अप करते हैं, यह समझा रहे हैं। इसे आपके स्थानीय भंडार के समान पथ पर होने की आवश्यकता नहीं है।
ठीक है - अब यह स्पष्ट करने के लिए कि वास्तव में यहां क्या चल रहा है। ट्यूटोरियल आपको एक रिमोट रिपोजिटरी कैसे सेट अप करने के बारे में सिखा रहा है जो हर बार जब इसे धक्का दिया जाता है तो एक जैकिल इंस्टॉल करेगा।
इसका मतलब है कि यदि आपके पास जिथब रेपो है, तो आप वहां सर्वर-साइड हुक सेट नहीं कर सकते हैं। इसके बजाय आप अपने रिमोट सर्वर पर एक नया रिमोट स्थापित करेंगे। तो कहना है कि आप अपने सर्वर में (ssh के साथ आम तौर पर) लॉग इन करें, अपने पूर्ण पथ जानने के लिए या एक वातावरण चर में यह स्थापित करने के लिए pwd
चलाएँ:
$DIR=`pwd`
अब आप इस सर्वर पर एक नंगे रेपो बना सकते हैं:
git init --bare $DIR/<SOMEDIRNAME>.git
अब आपके सर्वर पर रिमोट नंगे गिट रिपोजिटरी है। इसके बाद आपको हुक जोड़ने की ज़रूरत है जो इसे पुश प्राप्त करने पर आपकी जेकिल साइट को तैनात करने की अनुमति देती है। आपके द्वारा सूचीबद्ध साइट पर एक साधारण तैनाती है, लेकिन मूल रूप से यह सब कुछ कर रहा है _site dir सेवा वाले एचटीएमएल पेज बना रहा है, आप यह कई तरीकों से कर सकते हैं, मेरा सुझाव है कि आप इसे जितना संभव हो सके अपने उपयोगकर्ताओं को बाधित किए बिना करते हैं एक नमूना स्क्रिप्ट है जो ऐसी चीज कर सकती है:
#!/bin/bash
# Assuming a directory structure for www:
# $www_root/releases
# $www_root/shared
# $www_root/current
# all releases go in releases dir as timestamps dirs
# any logs or other shared items go in shared dir - shared/logs
# current is a symlink to latest release
unset GIT_DIR
WWW_ROOT=/PATH/TO/WWW
REPO_PATH=/PATH/TO/REPO
REPO_BRANCH=master
SITE_DIR=/PATH/TO/_SITE/DIR/IN/REPO
DATE=$(date +"%Y%m%d%H%M")
# get code
if [ ! -d $WWW_ROOT/shared/git_maint ]; then
mkdir -p $WWW_ROOT/shared/git_maint
cd $WWW_ROOT/shared/git_maint
git clone $REPO_PATH $WWW_ROOT/shared/git_maint
git checkout master
else
cd $WWW_ROOT/shared/git_maint
git pull
git checkout master
fi
# do deploy
if [ ! -d $WWW_ROOT/releases/$DATE ]; then mkdir $WWW_ROOT/releases/$DATE; fi
cp -ar $WWW_ROOT/shared/git_maint/$SITE_DIR $WWW_ROOT/releases/$DATE
ln -s $WWW_ROOT/new_current $WWW_ROOT/releases/$DATE && mv $WWW_ROOT/new_current $WWW_ROOT/current
exit 0
ऐसा कुछ अच्छा तैनाती होगा। यदि आप इस स्क्रिप्ट को अपने रिमोट सर्वर पर नंगे रेपो हुक/पोस्ट-प्राप्त फ़ाइल में सहेजते हैं तो यह प्रत्येक बार रिपोजिटरी को धक्का दिया जाएगा। 755 hooks/post-receive
तो अगर आप के साथ अपने Git रेपो के लिए इस नए दूरस्थ जोड़ने chmod:: बस यह निष्पादन योग्य बनाने के लिए याद
git remote add DEPLOY_PROD [email protected]:/path/to/bare/repo
फिर git push DEPLOY_PROD
- यह करने के लिए धक्का होगा अपने दूरस्थ और फिर अपने दूरस्थ रेपो इसके बाद के प्राप्त सक्रिय कर देगा हुक और उसके बाद नंगे रेपो को एक रखरखाव निर्देशिका में कॉपी करें जिसे लगभग किसी भी बिंदु पर उड़ाया जा सकता है। इस निर्देशिका का उपयोग साइट डीआईआर को रिलीज़ डीआईआर में करने के लिए किया जाता है और फिर यह मुख्य निर्देशिका से जुड़ा होता है।
बेशक यह सब अधिकतर ओवरकिल है और आप केवल एक तैनाती स्क्रिप्ट बना सकते हैं जो स्थानीय होस्ट से आपके सभी एसएसएच पर ऐसा करने के लिए चलाता है।
समस्या यह है कि आप इस पद्धति के लिए सीधे गिटूब से सर्वर साइड हुक चलाने में असमर्थ हैं, इसलिए आपको इसके आसपास काम करना होगा। मैं सुझाव दूंगा कि आप तैनाती रणनीति के रूप में कैपिस्ट्रानो को देखें - वर्तमान/रिलीज/साझा डीआईआर और git_maint dir उनकी स्कीमा से लिया जाता है, यह अच्छी तरह से काम करता है।
मुझे बताएं कि क्या आप यहां कोई मदद चाहते हैं, मेरे पास तैनाती और स्वचालित तैनाती रणनीतियों के विकास का बहुत अनुभव है, इसलिए आपकी स्थिति के आधार पर, चीज़ें अलग-अलग होंगी।
धन्यवाद, मैं इसे आज़मा दूंगा और आपको बताऊंगा कि यह कैसे काम करता है। आपकी सहायता की सराहना। – Leahcim
गिट रेपो में हुक निर्देशिका में कोई पोस्ट-प्राप्त फ़ाइल नहीं है। केवल 'applypatch-msg.sample post-update.sample pre-commit.sample pre-rebase.sample प्रतिबद्ध-msg.sample pre-applypatch.sample ready-commit-msg.sample update.sample' – Leahcim
आप बना सकते हैं यह फ़ाइल - यह सिर्फ एक स्क्रिप्ट है जो गिट के बाद पैक प्राप्त करेगी। इसे पोस्ट-प्राप्त करने का नाम दें - गिट बाकी करेगी। – Michael