2012-02-21 20 views
10

Próbowałem Perfect Workflow, with Git, GitHub, and SSH i mam wszystko skonfigurowane, z wyjątkiem uruchomienia polecenia git pull z php.Uruchamianie git pull ze skryptu php

Kiedy biegnę exec('git pull') uzyskać:

Nie można utworzyć katalogu '/.ssh'. Nie udało się zweryfikować klucza hosta. śmiertelne: Zdalny koniec rozłączył się niespodziewanie

jeśli uruchomię go w terminalu (jako root) to działa dobrze, ale muszę to hak do pracy z URL Post-Receive (github).

Jeśli wykonam exec('whoami'), otrzymam apache.

To jest (dv) od mediatemple z CentOS.

+2

musisz uczynić użytkownika repozytorium git tak samo jak użytkownik, dla którego aplikacja internetowa działa. –

+2

Co to jest katalog domowy użytkownika 'apache'? 'ssh' pobiera katalog główny komputera jako katalog domowy i nie może tam pisać jako użytkownik' apache'. ("root" oczywiście może, dlatego to działa) –

+1

Dzięki za odpowiedzi. Ben: Jak mogę to zrobić? Brian: Nie wiem. Nie jestem facetem sys/admin. Im działa na mediatemple's (dv) z CentOS – AFRC

Odpowiedz

8

Jeśli chcesz, aby apache (użytkownik), aby móc pobrać z git, musisz utworzyć klucz ssh dla apache, a następnie dodać go do kluczy tylko do odczytu na github.

Przepływ jest coś takiego (dostosować do swoich potrzeb)

usermod -s /bin/bash apache 
su apache 
cd ~ 
ssh-keygen # work through the keygen dance (added a dash) 

Upload (tylda odnosi się tutaj do homedir Apache) ~/.ssh/id_rsa.pub do GitHub i dać dostęp do apache cokolwiek Repos musi wyciągnąć z.

Następnie można przetestować na serwerze ponownie ing su”Apache i prowadzenie git ciągnąć

su apache 
cd ~/working-copy 
git clone my-project 

kiedyś, że działa powinieneś być w stanie uruchomić git ciągnąć przez PHP .

+0

Cześć quickshiftin. Dzięki. Po uruchomieniu polecenia 'chmod apache -s/bin/bash' otrzymuję: _chmod: nie można uzyskać dostępu do' apache ': brak takiego pliku lub katalogu_. Przepraszam, ale jestem naprawdę nowy w tym zadaniu admin/unix serwera. – AFRC

+1

Ups, powinno to być 'chmod -s/bin/bash apache'. To ustawia powłokę użytkownika apache na bash, dzięki czemu możesz su do apache i testować operacje git przed przejściem do uruchamiania ich poprzez PHP; Zmienię to w mojej odpowiedzi. – quickshiftin

+0

Nadal otrzymuj chmod: nie ma dostępu do 'apache ': Brak takiego pliku lub katalogu – AFRC