Configurar un servidor git

57

Recientemente configuré ubuntu-server en Amazon EC2. Me gustaría usarlo como mi servidor git, para poder almacenar mis repositorios allí.

Entonces, ¿dónde puedo encontrar algunas instrucciones detalladas sobre cómo configurar git en el servidor ubuntu? Todas estas claves SSH y cosas así, múltiples usuarios, etc.

Pawełkowy
fuente
2
No creo que esta sea una pregunta relacionada con Ubuntu (más allá del obvio "es Linux"), ¿también has mirado la documentación de git ? Allí se menciona la creación de un repositorio público y privado .
Ward Muylaert
22
@BonboBingo Decir "Solo busca en Google" realmente no es una solución. La mayoría de las preguntas aquí podrían responderse con "si buscas lo suficiente ..." Preguntar a Ubuntu pretende ser el sitio de preguntas y respuestas de autoridad que proporciona respuestas de primer nivel en lugar de un muro de respuestas que dicen "Solo Google" - para más información consulte las preguntas frecuentes
Marco Ceppi
1
Aquí hay una guía de pasos útil: help.ubuntu.com/community/Git. @Marco Ceppi Lo siento, pero no fui polémico. Y luego el enlace que había publicado parece ser bastante relevante para la pregunta ... ¿Bien ahora como respuesta?
BonboBingo
¡Los comentarios de @BonboBingo no cuentan como respuestas! Simplemente estaba comentando la parte "Buscar en Google" de su comentario. Si desea responder con detalles sobre el artículo de Git en la guía de ayuda de Ubuntu, ¡debe usar el cuadro "Su respuesta" en la parte inferior de esta página! :)
Marco Ceppi
2
"en lugar de un muro de respuestas que dicen" Solo Google ": para obtener más información, consulte" ... ok, tiene razón :) Paremos aquí.
BonboBingo

Respuestas:

38

Puede usar el tutorial para instalar un servidor Git como aking1012 le propuso o simplemente puede instalar el servidor SSH en su instancia EC2 (probablemente sería aconsejable asegurarlo y cambiar el puerto predeterminado).

Git puede ser sin servidor, inicia su repositorio y luego accede a él desde el control remoto a través de SSH. Entonces, instrucciones como esta en Ubuntu Server deberían hacerlo:

GIT_DIR=project.git git init  
cd project.git  
git --bare update-server-info  
cp hooks/post-update.sample hooks/post-update

Finalmente instale SSH en su servidor:

sudo apt-get install ssh-server

Ahora, debe configurar SSH para asegurarlo.

Es hora de poner su proyecto en línea (los datos que ya tiene en su máquina de desarrollo):

git push ssh://<username>@<remote-git-hostname>/path/to/project.git master

Y ahora puedes comenzar a clonar. Vas a tu máquina de desarrollo:

git clone ssh://<username>@<remote-git-hostname>/path/to/dir.git

Mira este excelente recurso en Git .

Y para generar sus claves ssh para una autenticación más segura, puede leer este artículo sobre la autenticación SSH .

Huygens
fuente
¿No debería ser eso openssh-server?
Jorge Castro
1
@jorge parece que ssh-serveres un alias para openssh-server, al menos en Ubuntu 10.04.
Huygens
1
bueno, esto podría funcionar, pero iniciar sesión a través de SSH en máquinas Amazon EC2 requiere un par de claves público / privado (ssh -i key.pem ubuntu @ address). Además, tengo que recordar la ruta (ubuntu @ address: / var / www / dir1 / dir2), en lugar de solo git clone git.mydomain.com/repository
Pawełkowy
1
@Pawel buen punto. Es por eso que algunas personas ponen el repositorio git en la raíz del sistema de archivos. Pero sí, necesita claves ssh o cuentas. O podría usar HTTP, pero entonces no tiene un control de acceso realmente agradable AFAIK.
Huygens
3
@ PawełKarpiński: puede configurar un archivo de configuración SSH del lado del cliente ~/.ssh/configpara manejar el nombre de usuario / dirección de host, la entrada de clave, los puertos y otras cosas.
Shauna
15

Para todas las configuraciones de mi servidor Git, uso Gitolite que permite una granularidad de seguridad de acceso "por sucursal". La configuración es bastante sencilla si lo estás haciendo en un servidor remoto, es tan fácil como ejecutar un script interactivo. Además de esta naturaleza "fácil de configurar", también tiene un paquete en Natty y Maverick

sudo apt-get install gitolite

Esto no proporcionará una interfaz web como Github o Gitweb, pero puede configurarlos e instalarlos fácilmente sobre algo como Gitolite.

Marco Ceppi
fuente
9

Me gusta la gitolita . El libro Pro Git tiene una sección , pero recomiendo leer el libro completo.

En cuanto a su requisito de usuarios múltiples:

Gitolite le permite especificar permisos no solo por repositorio (como lo hace Gitosis), sino también por nombre de rama o etiqueta dentro de cada repositorio. Es decir, puede especificar que ciertas personas (o grupos de personas) solo pueden empujar ciertas "referencias" (ramas o etiquetas) pero no otras.

Li Lo
fuente
7

http://scie.nti.st/2007/11/14/hosting-git-repositories-the-easy-and-secure-way puede modificarse ligeramente para adaptarse a sus propósitos ... un tutorial similar http: // blog .agdunn.net /? p = 277 .

RobotHumanos
fuente
1
nota: Actualmente estoy preparando un 0 para hacer rvm, ree / ruby, rails, git tutorial para el cliente de desarrollo y el tutorial del servidor de desarrollo. simplemente dibuja muchos tutoriales en línea en un solo lugar y los modifica un poco, pero todavía es un trabajo en progreso en este momento.
RobotHumans
Estos tutoriales son increíbles, pero bueno, son bastante complicados. ¿No hay tutoriales "más cortos"? :)
Pawełkowy
No he visto nada más directo ... la mayoría de los tutoriales para gitorios y gitosis no pasan por la creación de un proyecto de muestra y pruebas (algo que creo que debería estar en cada tutorial). Si veo otro tut más directo, tendré en cuenta este hilo
RobotHumans,
@ PawełKarpiński: ¿Qué tienen de complicado? He usado la configuración de Gitosis antes, y en realidad es muy fácil.
Shauna
4

La solución que mejor funcionó para mí fue configurar WebDAV.

  • sudo a2enmod sudo dav_fs

  • sudo a2enmod dav

  • agregue un nuevo archivo /etc/apache2/sites-availabley asígnele un nombre, por ejemplo git.yourserver.com,. Edítelo y agregue las siguientes líneas:

<VirtualHost *:80>

DocumentRoot /var/www/git.yourserver.com/repos
ServerName git.yourserver.net
Options Indexes FollowSymLinks MultiViews

<Location />
    DAV On
    AuthType Basic
    AuthName "git repos"
    AuthUserFile /var/www/git.yourserver.net/password.dav
    Require valid-user
</Location>

</VirtualHost>

  • crear directorio /var/www/git.yourserver.comy directorio reposdentro de id
  • sudo chown www-data /var/www/git.yourserver.com/repos
  • sudo htpasswd -c /var/www/git.yourserver.com/password.dav user_login e ingrese la contraseña para el usuario llamado user_login
  • sudo chown root:www-data /var/www/git.yourserver.com/password.dav
  • sudo chmod 640 /var/www/git.yourserver.com/password.dav

Ahora sudo a2ensite git.yourserver.comy sudo service apache2 restart.

  • Ingrese /var/www/git.yourserver.com/reposy cree un directorio, por ejemplo,myrepo.git
  • cd myrepo.git
  • git --bare init
  • git update-server-info

Ahora, cierre sesión en su servidor remoto y vaya al directorio local en el que desea editar sus archivos.

git clone http://user_login:[email protected]/myrepo.git

y has terminado Si desea enviar sus cambios confirmados al servidor:

git push origin master

Puede crear tantos usuarios como desee usando sudo htpasswd. Solo recuerde no usar el -cinterruptor cuando agregue más usuarios, porque el archivo antiguo se eliminará.

Pawełkowy
fuente
3
HTTP es el protocolo "tonto" que es compatible pero que no se recomienda. El protocolo nativo de git funciona mucho mejor y es más fácil de configurar ya que todo lo que tiene que hacer es tener un servidor ssh que funcione (que ya debería) e instalar git-core. No hay necesidad de perder el tiempo con apache en absoluto.
psusi
3

También me gusta el enfoque de gitolite para administrar usuarios y seguridad. Tengo un servidor Git + gitolite AMI para EC2 actualmente en prueba. Siéntase libre de probarlo; La documentación está disponible aquí:

Servidor Alestic Git

Con este enfoque, puede tener un servidor Git central con repositorios privados ejecutándose en cuestión de minutos. Hay una curva de aprendizaje para gitolita y EC2 si no está familiarizado con ellos.

Eric Hammond
fuente
3

Es muy fácil de lograr con gitolita . En menos de una hora tendrá un servidor git multiusuario fácil de configurar y seguro.

Tengo un artículo sobre cómo hacerlo en mi sitio

realcnbs
fuente