tag - Configuración de un repositorio git en mi plan de alojamiento GoDaddy
que es un repositorio git (9)
Tengo un proyecto que está controlado por versiones usando git.
Lo que quiero poder hacer es configurar un repositorio en mi paquete de alojamiento compartido GoDaddy (habilitado para ssh) para que pueda implementarlo con un empuje en lugar de arrastrar y soltar en FTP.
Cualquier consejo sería apreciado. Lo mejor sería una cuenta de alguien que ya lo haya hecho, pero personalmente no pude encontrar ninguna en línea.
Con un poco de trabajo, pude hacer funcionar a Git en mi cuenta de GoDaddy. Hay una publicación más larga que detalla el proceso en mi blog , pero la respuesta corta es:
- instale git en su cuenta (quizás utilizando el tarball al que se hace referencia en la publicación de mi blog)
- crear un repositorio git (sin formato) en su cuenta
revisa tu repositorio, usando -u para indicar la ruta a
git-upload-pack
% git clone -u libexec / git-core / git-upload-pack mysite: myrepo.git
modifique la configuración del repositorio local para que apunte a las rutas correctas a
git-upload-pack
ygit-receive-pack
:% git config remote.origin.receivepack libexec / git-core / git-receive-pack
% git config remote.origin.uploadpack libexec / git-core / git-upload-pack
Ya que el blog ya no es accesible, aquí está la publicación completa extraída de archive.org :
Usando Git en GoDaddy
Este blog está alojado en una cuenta barata de GoDaddy. Cuando el acceso de shell a través de SSH estuvo disponible recientemente, pensé que sería divertido instalar repositorios locales de git. No fue trivial, pero finalmente lo hice funcionar. Así es como lo hice:
Paso 0. Configurar SSH
Desea crear una clave pública para poder ingresar SSH a su cuenta de GoDaddy sin problemas. Cree un par de claves si aún no tiene una, y agréguela a ~/.ssh/authorized_keys
. ~/.ssh/config
una entrada en ~/.ssh/config
algo como esto:
Host mysite
HostName mygodaddysite.com
User mylogin
Paso 1. Instalar Git
Después de hurgar en mi host GoDaddy, descubrí que estaba ejecutando CentOS 5.2. Los binarios que se ejecutaban en mi computadora portátil no eran compatibles, así que usé VirtualBox para configurar un Centos 5.2 local de instalación y compilación de Git. Estoy compartiendo un archivo comprimido que contiene los binarios precompilados de CentOS 5.2 Git . Debes poder descargar e instalar con los comandos:
wget http://johntrammell.com/centos5.2-git.tar.gz
tar xzf centos5.2-git.tar.gz
Disfruta de esta parte, te he ahorrado un par de horas de trabajo aquí.
Paso 2. Configura tu entorno.
Agregue lo siguiente a su .bash_profile:
export EDITOR=vim
export PATH=$PATH:$HOME/bin:$HOME/libexec/git-core
export LD_LIBRARY_PATH=$HOME/lib
export GIT_EXEC_PATH=~/libexec/git-core
export GIT_TEMPLATE_DIR=~/share/git-core/templates
Esto configurará su entorno correctamente en un shell interactivo. Desafortunadamente, parece que no puedo configurar correctamente el PATH para los comandos SSH no interactivos. Por ejemplo, cuando ejecuto este comando desde mi computadora portátil:
ssh mysite env
Veo el PATH predeterminado. Este es también el caso cuando configuro la ruta en .bashrc. No he rastreado exactamente qué hace SSH en el acceso no interactivo, pero esto puede estar relacionado con la configuración de PermitUserEnvironment en sshd. Por suerte podemos solucionar esto.
Paso 3. Creando un repositorio
Inicie sesión en su cuenta de GoDaddy y cree un simple repositorio Git "simple":
% mkdir myrepo
% cd myrepo
% touch README
% git init
% git add README
% git commit -m ''empty git repository''
% cd ..
% git clone --bare myrepo myrepo.git
Ahora tiene un repositorio ~/myrepo.git/
en ~/myrepo.git/
en la raíz de su cuenta de GoDaddy.
Paso 4. Revisando tu repositorio
La única parte difícil de esto es que tienes que decirle a git dónde encontrar git-upload-pack. Esto funciona alrededor del problema PATH mencionado anteriormente. En su máquina local, haga esto:
git clone -u libexec/git-core/git-upload-pack mysite:myrepo.git
Ahora debe tener una copia del repositorio mínimo original desprotegido.
Paso 5. Más ajustes de configuración de git.
Lamentablemente no hemos terminado
% cd myrepo
% echo "foo" > README
% git commit -am ''updated''
[master 044c086] updated
1 files changed, 1 insertions(+), 0 deletions(-)
% git push
bash: git-receive-pack: command not found
fatal: The remote end hung up unexpectedly
Nuestros problemas de PATH están interfiriendo con la operación de empuje ahora. Como solución alternativa, podemos especificar –receive-pack en la línea de comandos, o configurarlo en la configuración local (lo mismo se aplica a las operaciones de recuperación y –upload-pack):
% git config remote.origin.receivepack libexec/git-core/git-receive-pack
% git config remote.origin.uploadpack libexec/git-core/git-upload-pack
¡Felicidades, deberías estar listo y funcionando ahora!
Recursos
- http://johntrammell.com/centos5.2-git.tar.gz
- https://serverfault.com/questions/26836/setting-up-a-git-repo-on-my-godaddy-hosting-plan
- Configuración de un repositorio git en mi plan de alojamiento GoDaddy
- git-upload-pack: comando no encontrado, cómo solucionarlo correctamente
- http://www.bluehostforum.com/showthread.php?20304-Bluehost-Solution-to-the-Git-PATH-issue-when-using-a-non-interactive-shell
- http://www.google.com/search?q=ssh+setup
- http://www.kernel.org/pub/software/scm/git/docs/git-upload-pack.html
- http://www.kernel.org/pub/software/scm/git/docs/git-receive-pack.html
Conectar a través de ssh.
Instala git en ~ / git.
Después de eso crea / actualiza estos archivos:
~ / .ssh / authorized_keys
command="~/connect.sh" ssh-rsa AAAAB3NzaC...
~ / connect.sh
#!/bin/bash
if [ -f "${HOME}/.env_profile" ]; then
source ~/.env_profile
fi;
if [ "x${SSH_ORIGINAL_COMMAND}x" == "xx" ]; then
$SHELL --login
else
eval "${SSH_ORIGINAL_COMMAND}"
fi;
~ / .env_profile
export ENV_VARIABLE=value
por git:
export PATH=$PATH:$HOME/bin:$HOME/git/libexec/git-core
export LD_LIBRARY_PATH=$HOME/git/lib
export GIT_EXEC_PATH=~/git/libexec/git-core
export GIT_TEMPLATE_DIR=~/git/share/git-core/templates
Pasé alrededor de una semana para buscar en Google, pero ahora funciona como un encanto ... No creo que haya otra solución para las cuentas de GoDaddy, las posibilidades son demasiado limitadas para ellos ...
Encontré otra guía útil para instalar git en GoDaddy en http://www.612softwarefoundry.com/getting-git-on-godaddy/
Hay un tutorial de YouTube que explica cómo configurar Git en una cuenta de alojamiento compartido de Godaddy. Aquí está el enlace: http://youtu.be/z60GLfsGGsY
También hay una página web con los comandos que deberá ejecutar en el video. Aquí está la dirección de la página: http://www.drupalfever.com/linux-how-to/git/set-up-git-in-a-godaddy-shared-hosting-account
Si tiene alguna pregunta, déjeme una nota o sugerencia.
Las instrucciones en esta publicación del blog funcionaron para mí, excepto que tuve que visitar EPEL y encontrar la versión más reciente del git RPM: http://hire.chrisjlee.net/node/139
Trae los binarios
cd ~
mkdir git
cd git
# Download the rpm from EPEL ( http://fedoraproject.org/wiki/EPEL )
# Find the latest version by checking http://dl.fedoraproject.org/pub/epel/5/i386/
wget http://dl.fedoraproject.org/pub/epel/5/i386/git-1.8.2.1-1.el5.i386.rpm
# Extract binaries from the rpm
rpm2cpio git-1.7.4.1-1.el5.i386.rpm | cpio -imdv
rm git-1.7.4.1-1.el5.i386.rpm
Configurar
echo "
export GIT_BIN=${HOME}/git
export PATH=${GIT_BIN}/usr/bin:${PATH}
export GIT_EXEC_PATH=${GIT_BIN}/usr/bin
export GIT_TEMPLATE_DIR=${GIT_BIN}/usr/share/git-core/templates
export GIT_SSL_NO_VERIFY=true" >> ~/.bashrc
Configurar git
mkdir ~/.git
git config --local --add remote.origin.uploadpack ~/git/usr/bin/git-upload-pack
git config --local --add remote.origin.receivepack ~/git/usr/bin/git-receive-pack
Primero, deberás tener git instalado en GoDaddy. No estoy seguro de si esto es posible. Git es compatible con instalaciones de usuarios locales, pero necesita tener ciertas herramientas de desarrollo a mano para hacerlo. Descargue git y vea si puede ./configure && make && make install
- si es así, lo pondrá en su directorio ~/bin
.
Usamos git extensivamente para controlar la producción. Pero en lugar de desplegar en modo push, ¿puedo sugerirte que vayas a la caja y hagas un git pull
?
Más específicamente, cree una rama "Release" y luego, cuando esté listo para implementar, simplemente fusione sus cambios en la rama Release, ssh al servidor y git pull.
Por ejemplo
ssh [email protected]
cd /path/to/project
#ok, assuming you are on the Release branch
git fetch
git merge branch-with-new-changes-on-it
# update the remote Release branch with the merge
git push origin HEAD
Este simple flujo de trabajo permite a los desarrolladores ver exactamente qué hay en el servidor de producción en todo momento, y combinar otros cambios con los suyos antes de solicitar una implementación. De hecho, requerimos que todos los cambios de producción estén completamente fusionados antes de solicitar un despliegue de su sucursal.
-
Si logras instalar git en GoDaddy y REALMENTE deseas un despliegue automático cuando lo presionas, entonces echa un vistazo al enlace post-update
.
http://git-scm.com/docs/githooks
-
Si no puede instalar git en GoDaddy, vea si son compatibles con rsync. Entonces puedes tener un simple script de bash en algún lugar que
- tira de tus cambios
- rsync ellos a Godaddy
-
Hay muchas maneras de hacerlo. Quizás esto ayude con la dirección un poco ...
Tuve éxito siguiendo las instrucciones aquí:
http://www.krizka.net/2010/12/30/setting-up-a-public-git-repository-with-godaddy-shared-hosting/
Las llaves (para mi) fueron
- Obtención del binario precompilado para CentOS (desde un enlace en la publicación anterior)
- Configuración de "uploadpack" y "receivepack". Este es el paso 1 en la sección "Cómo informar a git local acerca de git remoto" cerca del final de la publicación.
Tuve que configurar git en un VPS alojado en http://netgonian.com (revendedor de GoDaddy). Lo que tomó 3 horas se pudo haber hecho en unos 15 minutos y fue muy fácil.
Instalar git debería ser tan simple como ejecutar yum install git
pero desafortunadamente, al intentarlo no podía encontrar errores en los archivos. A continuación se muestra la solución final.
Aquí están los pasos:
- ssh en su servidor virtual
- cambie al usuario root usando el comando
su -
- siga las instrucciones aquí para crear un nuevo archivo centos-base.repo
- en el mismo directorio donde acaba de crear el archivo anterior (/etc/yum.repos.d) cambie el nombre del archivo CentoOS-Base.repo a CentOS-Base.repox
- ahora puedes ejecutar
yum install git
y funcionará.
El problema básico era que todas las direcciones URL básicas para yum apuntaban a algún servidor en secureserver.net que faltaba todos los archivos necesarios. Lo que estamos haciendo arriba es apuntar las URL básicas a los servidores que tienen los archivos necesarios.
Yo mantengo git localmente y uso scp para enviar en vivo ... no es elegante, pero Godaddy ha instalado Scp por defecto.
"scp -r fooDirectory [email protected]: / path / to / document / root /"
que moverá un directorio local "fooDirectory" a "/ path / to / document / root / fooDirectory" en el host remoto.
cuando hayas iniciado sesión en go daddy use "pwd