2010-03-10 29 views
0

Voici mon rc.local pour une instance EC2 amazone autoscaling basé sur ubuntu: (Notez que les noms d'utilisateur, des domaines et des chemins ont été modifiés pour des raisons de sécurité)Subversion commandes ne sont pas géré par Ubuntu rc.local

logger "Begin rc.local startup script:" 

logger "svn checkout" 
sudo -u nonRootUser /usr/bin/svn co svn+ssh://[email protected]/path/to/repo /var/www/html | logger 

logger "chown writeable folder" 
chown www-data /var/www/html/writeableFolder 

logger "restart apache" 
/etc/init.d/apache2 restart | logger 

exit 0 

Et voici la sortie de la queue de 40 -n sudo/var/log/syslog

Mar 10 22:05:20 ubuntu logger: Begin rc.local startup script: 
Mar 10 22:05:20 ubuntu logger: svn checkout 
Mar 10 22:05:20 ubuntu logger: chown writeable folder 

Bien sûr ce ne est pas obtenir de redémarrer apache2 car il error'd sur le chown. J'ai cependant trouvé que si je fais une extraction au préalable, et que je place la commande svc.rc.local dans une mise à jour svn, elle n'exécute toujours pas la commande svn mais la sortie apache2 redémarre avec succès.

Ces mêmes commandes svn fonctionnent parfaitement quand je les exécute manuellement, mais il est étrange que dans rc.local elles ne produisent aucune sortie pour logger mais apache2 restart le fait.

J'ai aussi essayé d'exécuter svn co et svn update avec sudo -u et sans.

Comment exécuter la commande svn? Soit un paiement complet ou une mise à jour. À ce moment-là, ce serait mieux que rien!

Répondre

2

Je ne sais pas pourquoi sudo pose des problèmes ici, mais vous pouvez également utiliser su, qui fonctionnerait comme ceci:

su nonRootUser -c "/usr/bin/svn co svn+ssh://[email protected]/path/to/repo /var/www/html | logger" 
+0

Ça l'a fait! Merci d'arrêter ma perte de cheveux! :) – talentedmrjones

+0

Note: Je pense que la raison pour laquelle sudo ne fonctionne pas est qu'il a besoin d'un mot de passe (il n'y a pas de TTY à afficher). – sandstrom

0

Essayez d'utiliser le chemin d'accès complet au chown.

/bin/chown 
+0

En fait, ce n'est pas pourquoi chown ne fonctionne pas. chown ne peut que changer ce qui est là, et comme svn n'a pas fait de checkout, les fichiers que j'essaye de faire n'existent pas. – talentedmrjones