मैंने अभी हाल ही में एक अपस्टार्ट सेवा के रूप में चल रहे एक वेब ऐप के लिए एक सर्वर पर एक दूरस्थ गिट रेपो स्थापित किया है। मैं एप्लिकेशन कोड को अपडेट करने के लिए आवश्यक गतिविधियों को ट्रिगर करने के लिए पोस्ट-प्राप्त हुक का उपयोग करना चाहता हूं और फिर upstart सेवा को पुनरारंभ करना चाहता हूं। यह मेरी repo.it / हुक / पोस्ट-प्राप्त फ़ाइल है:
#!/bin/bash
export GIT_WORK_TREE=/var/www/current/myapp/
echo "Checking out new files and restarting app"
echo $USER
git checkout -f
sudo /sbin/stop myapp-service
sudo /sbin/start myapp-service
मेरे द्वारा यहां पढ़ी गई जानकारी के आधार पर: askUbuntu.com , रूटस्टार्ट कमांड को रूट के रूप में निष्पादित करने का तरीका मेरी विडो फ़ाइल को संपादित करना है। यहाँ प्रासंगिक स्निपेट है:
%sudo ALL=(ALL:ALL) ALL
admin ALL=(ALL:ALL) NOPASSWD: /sbin/start myapp-service /sbin/stop myapp-service
लेकिन जब मैं रिमोट को धक्का देता हूं, तो मुझे आउटपुट मिलता है:
$ git commit -am "test" && git push prod master
[master 59ffccd] test
1 file changed, 1 insertion(+), 1 deletion(-)
Counting objects: 11, done.
Delta compression using up to 4 threads.
Compressing objects: 100% (6/6), done.
Writing objects: 100% (6/6), 544 bytes, done.
Total 6 (delta 4), reused 0 (delta 0)
remote: Checking out new files on production and restarting app
remote: admin
remote:
remote: sudo: no tty present and no askpass program specified
remote: Sorry, try again.
मैंने जाँच की है कि सही उपयोगकर्ता पोस्ट-स्क्रिप्ट प्राप्त कर रहा है (व्यवस्थापक, जैसा कि ऊपर गूँज रहा है)।
किसी ने मुझे रोकने में मदद कर सकते हैं और फिर एक गिट पोस्ट प्राप्त हुक स्क्रिप्ट में अपस्टार्ट नौकरी शुरू कर सकते हैं? पायथन, पीएचपी, या नोड.जेएस जावास्क्रिप्ट स्क्रिप्ट भी स्वीकार्य होगी यदि वे अपस्टार्ट कमांड को बैश की तुलना में अधिक आसानी से निष्पादित करने में सक्षम होंगे (मैं बैश नौसिखिया हूँ)
मैंने अपने सामान्य लॉग में देखा और यही मेरे पास है:
Apr 24 19:35:21 myhost01 sudo: pam_unix(sudo:auth): auth could not identify password for [admin]
Apr 24 19:35:21 myhost01 sudo: pam_unix(sudo:auth): conversation failed
Apr 24 19:35:21 myhost01 sudo: pam_unix(sudo:auth): auth could not identify password for [admin]
Apr 24 19:35:21 myhost01 sudo: pam_unix(sudo:auth): conversation failed
Apr 24 19:35:21 myhost01 sudo: pam_unix(sudo:auth): auth could not identify password for [admin]
Apr 24 19:35:21 myhost01 sudo: admin : 3 incorrect password attempts ; TTY=unknown ; PWD=/home/admin/myapp.git ; USER=root ; COMMAND=/s$
Apr 24 19:35:21 myhost01 sudo: unable to execute /usr/sbin/sendmail: No such file or directory
Apr 24 19:35:21 myhost01 sudo: pam_unix(sudo:auth): conversation failed