Kısa bir süre önce bir Upstart hizmeti olarak çalışan bir web uygulaması için bir sunucuda uzak git repo oluşturdum. Uygulama kodunu güncellemek ve sonra başlatma hizmeti yeniden başlatmak için gereken eylemleri tetiklemek için alma sonrası kanca kullanmak istiyorum. Bu benim repo.git / kancalar / alma sonrası dosyam:
#!/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
Burada okuduğum bilgilere dayanarak: askUbuntu.com , root olarak yürütmek için uptart komutlarını almanın yolu visudo dosyamı düzenlemektir. İlgili snippet:
%sudo ALL=(ALL:ALL) ALL
admin ALL=(ALL:ALL) NOPASSWD: /sbin/start myapp-service /sbin/stop myapp-service
Ama uzaktan kumandayı ittiğimde, şöyle çıktı alıyorum:
$ 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.
Ben doğru kullanıcının post-script (yukarıdaki yankı olarak admin) yürüttüğünü kontrol ettik.
Birisi gitme sonrası alma kanca komut dosyasında durup ardından Başlatma işini başlatmama yardımcı olabilir mi? Python, PHP veya node.js javascript komut dosyaları, upstart komutunu bash'den daha kolay çalıştırabilirlerse de kabul edilebilir (Ben bir bash acemi oldum)
Kimlik günlüğüme baktım ve sahip olduğum şey bu:
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