Git sunucusu kurma


57

Geçenlerde Amazon EC2'ye ubuntu-server kurdum. Git sunucum olarak kullanmak istiyorum, böylece depolarımı orada depolayabilirdim.

Peki, ubuntu sunucusunda git kurulumunun nasıl yapılacağına dair bazı ayrıntılı talimatları nereden bulabilirim? Tüm bu SSH anahtarları ve bunun gibi şeyler, çoklu kullanıcılar vb.


2
Bunun Ubuntu ile ilgili bir soru olduğunu sanmıyorum (bariz "linux" un ötesinde), ayrıca git belgelerine baktınız mı? Orada bir halkın yanı sıra özel bir depo oluşturmanın da sözleri var .
Ward Muylaert

22
@BonboBingo "Sadece Google'da ara" demek gerçekten bir çözüm değil. Buradaki soruların çoğu, "yeterince uzun süre ararsanız ..." ile yanıtlanabilir. Ubuntu'ya sor , "Sadece Google" diyen bir cevap duvarı yerine 1. düzey cevaplar veren bir soru ve cevap sitesi olmayı hedefliyor - daha fazla bilgi için SSS’yi
Marco Ceppi

1
Burada yararlı bir adım kılavuzu var: help.ubuntu.com/community/Git. @Marco Ceppi Üzgünüm, ama ben kimyasal değildim. Ve sonra gönderdiğim bağlantı soru ile oldukça alakalı görünüyor ... Şimdi bir cevap olarak?
BonboBingo

@BonboBingo yorumları cevap olarak sayılmıyor! Sadece yorumunuzun "Google'da Ara" bölümüne yorum yapıyordum. Ubuntu Yardım kılavuzundaki Git makalesiyle ilgili detayları cevaplamak isterseniz, bu sayfanın altındaki "Yanıtınız" kutusunu kullanmalısınız! :)
Marco Ceppi

2
"" Sadece Google "diyen bir cevap duvarı yerine - daha fazla bilgi için" ... tamam haklısınız :) kontrol edin burada duralım. "
BonboBingo

Yanıtlar:


38

Sen kullanabilirsiniz aking1012 önerdiği gibi bir Git sunucusunu yüklemek için öğretici veya sizin sadece EC2 örneğinde SSH sunucusuna yükleyebilir (muhtemelen onu sabitlemek ve varsayılan bağlantı noktasını değiştirmek akıllıca olacaktır).

Git, sunucunuzdan bağımsız olarak depoya girebilir ve daha sonra SSH ile uzaktan erişebilirsiniz. Bu yüzden Ubuntu Sunucusunda böyle yönergeler yapmalı:

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

Sonunda sunucunuza SSH'yi kurun:

sudo apt-get install ssh-server

Şimdi, SSH'yi sabitlemek için yapılandırmalısınız.

Projenizi çevrimiçi hale getirmenin zamanı geldi (geliştirme makinenizde zaten var olan veriler):

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

Ve şimdi etrafta klonlamaya başlayabilirsiniz. Geliştirme makinen devam ediyor:

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

Git'teki bu mükemmel kaynağı kontrol et .

Daha güvenli kimlik doğrulaması için ssh anahtarlarınızı oluşturmak için, SSH kimlik doğrulamasıyla ilgili bu makaleyi okuyabilirsiniz .


Olmaz openssh-servermıydı?
Jorge Castro,

1
@ jorge ssh-server, en azından Ubuntu 10.04’de openssh-server’a bir takma ad gibi görünüyor .
Huygens

1
peki, bu işe yarayabilir, ancak SSH üzerinden Amazon EC2 makinelerine giriş yapmak kamu / özel keypair gerektirir (ssh -i key.pem ubuntu @ address). Ayrıca, sadece git clone git.mydomain.com/repository
pawełkowy kas

1
@Pawel iyi nokta. Bu yüzden bazı insanlar git deposunu dosya sistemi kök dizinine koyarlar. Ama evet, ssh anahtarlarına veya hesaplarına ihtiyacınız var. Ya da HTTP kullanabilirsiniz, ancak AFAIK’e erişim kontrolü gerçekten iyi değildir.
Huygens

3
@ PawełKarpiński - ~/.ssh/configKullanıcı adı / ana bilgisayar adresini, anahtar girişini, portları ve ne olduğunu işlemek için bir istemci tarafı SSH yapılandırma dosyası oluşturabilirsiniz .
Shauna,

15

Tüm Git sunucu kurulumlarım için "şube başına" erişimin güvenlik ayrıntılarına izin veren Gitolite kullanıyorum . Kurulum, uzak bir sunucuda yapıyorsanız, etkileşimli bir komut dosyası çalıştırmak kadar kolaydır. Bu "kurulumu kolay" doğaya ek olarak Natty ve Maverick'te bir paketi de var

sudo apt-get install gitolite

Bu, Github veya Gitweb gibi bir web arayüzü sağlamaz - ancak Gitolite gibi bir şeyin üzerine bunları kolayca yapılandırabilir ve kurabilirsiniz.


9

Sevdiğim gitolite . Pro Git kitabında bir bölüm var ancak kitabın tamamını okumanızı tavsiye ediyorum.

Birden fazla kullanıcı gereksiniminize gelince:

Gitolite, izinleri yalnızca depo ile değil (Gitosis'in yaptığı gibi) değil, aynı zamanda her bir havuzdaki dal veya etiket adlarıyla da belirtmenize olanak sağlar. Yani, belirli kişilerin (veya insan gruplarının) yalnızca belirli “ref” leri (dallar veya etiketler) zorlayabileceğini ancak başkalarını zorlayamayacağını belirtebilirsiniz.


7

http://scie.nti.st/2007/11/14/hosting-git-repositories-the-easy-and-secure-way amaçlarınıza uyacak şekilde biraz değiştirilebilir ... benzer bir eğitim http: // blog .agdunn.net /? p = 277 .


1
not: Şu anda bir 0 rvm, ree / ruby, raylar, geliştirme müşteri ve geliştirme sunucusu eğitimi için git eğitimi için bir araya koyuyorum. sadece bir çok çevrimiçi öğreticiyi tek bir yere çeker ve onları biraz değiştirir, ancak şu anda devam etmekte olan bir çalışma.
RobotHumans 11:10

Bu dersler harika, ama pekala, oldukça karmaşıklar. "Kısa" dersleri yok mu? :)
Pawełkowy

Daha basit bir şey görmedim ... bakıcı ve gitoz için öğreticilerin çoğu örnek bir proje oluşturma ve test etme sürecinden geçmiyor (her eğitmende olması gerektiğini düşünüyorum). Daha doğrudan olan başka bir tut görürsem, bu konuyu aklımda
tutarım

@ PawełKarpiński - Onlar hakkında bu kadar karmaşık olan ne? Daha önce Gitosis kurulumunu kullandım ve bu gerçekten çok kolay.
Shauna,


4

Benim için en iyi olan çözüm WebDAV'ı kurmaktı.

  • sudo a2enmod sudo dav_fs

  • sudo a2enmod dav

  • /etc/apache2/sites-availableörneğin, yeni bir dosya ekleyin ve adlandırın git.yourserver.com. Düzenleyin ve aşağıdaki satırları ekleyin:

<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>

  • kimliği içinde dizin /var/www/git.yourserver.comve dizin oluşturmakrepos
  • sudo chown www-data /var/www/git.yourserver.com/repos
  • sudo htpasswd -c /var/www/git.yourserver.com/password.dav user_login ve adlı kullanıcı için şifre girin user_login
  • sudo chown root:www-data /var/www/git.yourserver.com/password.dav
  • sudo chmod 640 /var/www/git.yourserver.com/password.dav

Şimdi sudo a2ensite git.yourserver.comve sudo service apache2 restart.

  • /var/www/git.yourserver.com/reposÖrneğin, dizin girin ve oluşturun.myrepo.git
  • cd myrepo.git
  • git --bare init
  • git update-server-info

Şimdi, uzak sunucunuzdan çıkış yapın ve dosyalarınızı düzenlemek istediğiniz yerel dizine gidin.

git clone http://user_login:user_password@git.yourserver.com/myrepo.git

ve sen bitirdin. Taahhütlü değişikliklerinizi sunucuya göndermek istiyorsanız:

git push origin master

Kullanmak istediğiniz kadar kullanıcı oluşturabilirsiniz sudo htpasswd. -cEski dosya silineceğinden, daha fazla kullanıcı eklerken anahtarı kullanmamayı unutmayın .


3
HTTP, desteklenen ancak kesinlikle önerilmeyen "aptal" bir protokoldür. Yerel git protokolü çok daha iyi çalışır ve kurulumu kolaydır çünkü tek yapmanız gereken çalışan bir ssh sunucusuna (ki zaten sahip olmanız gereken) ve git-core kurmaktır. Apache ile uğraşmanıza gerek yok.
psusi

3

Kullanıcıları ve güvenliği yönetmek için gitolit yaklaşımını da seviyorum . Şu anda test edilmekte olan EC2 için Git + gitolit sunucusu AMI var. Bir denemek için çekinmeyin; belgelere buradan ulaşabilirsiniz:

Alestic Git Sunucusu

Bu yaklaşımı kullanarak, birkaç dakika içinde çalışan özel depoları olan merkezi bir Git sunucunuz olabilir. Eğer aşina değilseniz, gitolit ve EC2 için bir öğrenme eğrisi vardır.


3

Gitolit ile elde etmek çok kolaydır . Bir saatten az bir sürede, kolay yapılandırılabilir ve güvenli çok kullanıcılı git sunucunuz olacaktır.

Sitemde nasıl yapılır makalem var

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.