Menyiapkan server git

57

Saya baru-baru ini mengatur ubuntu-server di Amazon EC2. Saya ingin menggunakannya sebagai server git saya, jadi saya bisa menyimpan repo saya di sana.

Jadi, di mana saya dapat menemukan beberapa petunjuk terperinci tentang cara men-setup git di server ubuntu? Semua kunci SSH dan hal-hal seperti itu, banyak pengguna, dll.

Pawełkowy
sumber
2
Saya tidak berpikir ini adalah pertanyaan yang berhubungan dengan Ubuntu (di luar yang jelas "itu linux"), apakah Anda bahkan sudah melihat dokumentasi git ? Ada disebutkan di sana mengatur publik dan repositori pribadi .
Ward Muylaert
22
@BonboBingo Mengatakan "Just search Google" sebenarnya bukan solusi. Mayoritas pertanyaan di sini dapat dijawab dengan "jika Anda mencari cukup lama ..." Tanya Ubuntu bertujuan untuk menjadi situs tanya jawab yang memberikan jawaban tingkat 1 dan bukannya dinding jawaban yang mengatakan "Just Google" - untuk informasi lebih lanjut periksa FAQ
Marco Ceppi
1
Ada panduan langkah yang bermanfaat di sini: help.ubuntu.com/community/Git. @Marco Ceppi Maaf tapi saya tidak polemik. Dan kemudian tautan yang saya posting tampaknya cukup relevan dengan pertanyaan ... Oke sekarang sebagai jawaban?
BonboBingo
Komentar @BonboBingo tidak dihitung sebagai jawaban! Saya hanya mengomentari bagian "Cari Google" dari komentar Anda. Jika Anda ingin menjawab dengan detail tentang artikel Git di panduan Bantuan Ubuntu, Anda harus menggunakan kotak "Jawaban Anda" di bagian bawah halaman ini! :)
Marco Ceppi
2
"Alih-alih dinding jawaban yang mengatakan" Hanya Google "- untuk informasi lebih lanjut periksa" ... ok Anda benar :) Mari kita berhenti di sini.
BonboBingo

Jawaban:

38

Anda dapat menggunakan tutorial untuk menginstal server Git seperti yang diusulkan aking1012 kepada Anda atau Anda dapat menginstal server SSH pada instance EC2 Anda (mungkin lebih baik untuk mengamankannya dan mengubah port default).

Git dapat berupa server-less Anda init repositori Anda dan kemudian Anda mengaksesnya dari jarak jauh melalui SSH. Jadi instruksi seperti ini di Server Ubuntu harus melakukannya:

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

Akhirnya instal SSH di server Anda:

sudo apt-get install ssh-server

Sekarang, Anda harus mengkonfigurasi SSH untuk mengamankannya.

Saatnya untuk meletakkan proyek Anda online (data yang sudah Anda miliki di mesin pengembangan Anda):

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

Dan sekarang Anda dapat mulai kloning. Anda menggunakan mesin pengembangan Anda:

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

Periksa sumber yang bagus ini di Git .

Dan untuk menghasilkan kunci ssh Anda untuk otentikasi yang lebih aman, Anda dapat membaca artikel ini tentang otentikasi SSH .

Huygens
sumber
Bukankah seharusnya begitu openssh-server?
Jorge Castro
1
@ jorge tampaknya itu ssh-serveradalah alias untuk openssh-server, setidaknya di Ubuntu 10,04.
Huygens
1
baik, ini bisa berhasil, tetapi masuk melalui SSH ke mesin Amazon EC2 membutuhkan keypair publik / pribadi (ssh -i key.pem ubuntu @ address). Juga, saya harus mengingat path (ubuntu @ address: / var / www / dir1 / dir2), daripada hanya git clone git.mydomain.com/repository
Pawełkowy
1
@ Maaf poin bagus. Itu sebabnya beberapa orang meletakkan repositori git di root sistem file. Tapi ya, Anda perlu kunci atau akun ssh. Atau Anda dapat menggunakan HTTP, tetapi kemudian Anda tidak memiliki kontrol akses AFAIK yang sangat bagus.
Huygens
3
@ PawełKarpiński - Anda dapat mengatur file konfigurasi SSH sisi klien ~/.ssh/configuntuk menangani nama pengguna / alamat host, input kunci, port, dan yang lainnya.
Shauna
15

Untuk semua pengaturan server Git, saya menggunakan Gitolite yang memungkinkan perincian keamanan akses "per-cabang". Pengaturan cukup mudah jika Anda melakukannya di server jauh semudah menjalankan skrip interaktif. Selain sifat "mudah diatur" ini juga memiliki paket di Natty dan Maverick

sudo apt-get install gitolite

Ini tidak akan memberikan antarmuka web seperti Github, atau Gitweb - tetapi Anda dapat dengan mudah mengkonfigurasi dan menginstalnya di atas sesuatu seperti Gitolite.

Marco Ceppi
sumber
9

Saya suka gitolite . Buku Pro Git memiliki bagian tentang itu tetapi saya sarankan membaca seluruh buku.

Adapun persyaratan beberapa pengguna Anda:

Gitolite memungkinkan Anda untuk menentukan izin tidak hanya berdasarkan repositori (seperti halnya Gitosis), tetapi juga menurut cabang atau nama tag dalam setiap repositori. Artinya, Anda dapat menentukan bahwa orang-orang tertentu (atau kelompok orang) hanya dapat mendorong "ref" tertentu (cabang atau tag) tetapi tidak yang lain.

Lil o
sumber
7

http://scie.nti.st/2007/11/14/hosting-git-repository-the-easy-and-secure-way dapat sedikit dimodifikasi agar sesuai dengan keperluan Anda ... tutorial serupa http: // blog .agdunn.net /? p = 277 .

RobotHumans
sumber
1
Catatan: Saat ini saya sedang menyusun 0 untuk dilakukan rvm, ree / ruby, rails, git tutorial untuk klien pengembangan dan tutorial server pengembangan. itu hanya menarik banyak tutorial online ke satu tempat dan sedikit memodifikasinya, tetapi masih dalam proses saat ini.
RobotHumans
tutorial ini luar biasa, tapi yah, mereka cukup rumit. Apakah tidak ada tutorial "pendek"? :)
Pawełkowy
Saya belum melihat yang lebih mudah ... sebagian besar tutorial untuk gitorious dan gitosis tidak melalui pembuatan proyek sampel dan pengujian (sesuatu yang saya pikir harus ada di setiap tutorial). Jika saya melihat tut lain yang lebih langsung saya akan mengingat utas ini
RobotHumans
@ PawełKarpiński - Apa yang rumit tentang mereka? Saya telah menggunakan pengaturan Gitosis sebelumnya, dan itu sebenarnya sangat mudah.
Shauna
4

Solusi yang paling berhasil bagi saya, adalah menyiapkan WebDAV.

  • sudo a2enmod sudo dav_fs

  • sudo a2enmod dav

  • tambahkan file baru ke /etc/apache2/sites-availabledan beri nama, misalnya git.yourserver.com,. Edit dan tambahkan baris berikut:

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

  • buat direktori /var/www/git.yourserver.comdan direktori reposdi dalam id
  • sudo chown www-data /var/www/git.yourserver.com/repos
  • sudo htpasswd -c /var/www/git.yourserver.com/password.dav user_login dan masukkan kata sandi untuk nama pengguna user_login
  • sudo chown root:www-data /var/www/git.yourserver.com/password.dav
  • sudo chmod 640 /var/www/git.yourserver.com/password.dav

Sekarang, sudo a2ensite git.yourserver.comdan sudo service apache2 restart.

  • Masukkan /var/www/git.yourserver.com/reposdan buat direktori, misalnya,myrepo.git
  • cd myrepo.git
  • git --bare init
  • git update-server-info

Sekarang, logout dari server jauh Anda dan pergi ke direktori lokal tempat Anda ingin mengedit file Anda.

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

dan kamu sudah selesai. Jika Anda ingin mengirim perubahan yang dikomit ke server:

git push origin master

Anda dapat membuat sebanyak mungkin pengguna yang ingin Anda gunakan sudo htpasswd. Ingatlah untuk tidak menggunakan -csakelar, saat menambahkan lebih banyak pengguna, karena file lama akan dihapus.

Pawełkowy
sumber
3
HTTP adalah protokol "bisu" yang didukung tetapi sangat tidak dianjurkan. Protokol asli git bekerja jauh lebih baik, dan lebih mudah diatur karena yang harus Anda lakukan adalah memiliki server ssh yang berfungsi (yang sudah seharusnya Anda lakukan) dan menginstal git-core. Tidak perlu bercanda dengan apache sama sekali.
psusi
3

Saya juga suka pendekatan gitolite untuk mengelola pengguna dan keamanan. Saya memiliki server Git + gitolite AMI untuk EC2 yang saat ini sedang diuji. Jangan ragu untuk mencobanya; dokumentasi tersedia di sini:

Server Git Alestic

Dengan menggunakan pendekatan ini, Anda dapat memiliki server Git pusat dengan repositori pribadi yang berjalan dalam hitungan menit. Ada kurva belajar untuk gitolite dan EC2 jika Anda tidak terbiasa dengannya.

Eric Hammond
sumber
3

Sangat mudah dicapai dengan gitolite . Dalam waktu kurang dari satu jam Anda akan memiliki server git multiuser yang mudah dikonfigurasi dan aman.

Saya punya artikel howto di situs saya

realcnbs
sumber