ฉันเพิ่งตั้ง repo git ระยะไกลบนเซิร์ฟเวอร์สำหรับเว็บแอปที่ทำงานเป็นบริการพุ่งพรวด ฉันต้องการใช้ hook post-receive เพื่อเรียกการกระทำที่จำเป็นในการอัปเดตรหัสแอปพลิเคชันและหยุดจากนั้นเริ่มบริการพุ่งพรวดอีกครั้ง นี่คือไฟล์ repo.git / hooks / post-receive ของฉัน:
#!/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วิธีรับคำสั่งพุ่งพรวดเพื่อดำเนินการในฐานะ root คือการแก้ไขไฟล์ visudo ของฉัน นี่คือตัวอย่างที่เกี่ยวข้อง:
%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.
ฉันได้ตรวจสอบแล้วว่าผู้ใช้ที่ถูกต้องกำลังเรียกใช้งานสคริปต์รับโพสต์
มีคนช่วยฉันหยุดแล้วเริ่มงานพุ่งพรวดในสคริปต์เบ็ดได้ สคริปต์จาวาสคริปต์ Python, PHP หรือ node.js ก็เป็นที่ยอมรับเช่นกันหากพวกเขาสามารถดำเนินการคำสั่งพุ่งพรวดได้ง่ายกว่าทุบตี (ฉันเป็นมือใหม่)
ฉันดูในบันทึกการตรวจสอบสิทธิ์ของฉันและนี่คือสิ่งที่ฉันมี:
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