Thiết lập máy chủ git


57

Gần đây tôi đã thiết lập máy chủ Ubuntu trên Amazon EC2. Tôi muốn sử dụng nó như máy chủ git của mình, vì vậy tôi có thể lưu trữ repos của mình ở đó.

Vậy, tôi có thể tìm thấy một số hướng dẫn chi tiết về cách thiết lập git trên máy chủ Ubuntu? Tất cả các khóa SSH và những thứ tương tự, nhiều người dùng, v.v.


2
Tôi không nghĩ rằng đây là một câu hỏi liên quan đến Ubuntu (ngoài "Linux" rõ ràng), bạn thậm chí đã xem tài liệu git chưa? Có đề cập đến việc thiết lập một kho lưu trữ công cộng cũng như riêng tư .
Phường Muylaert

22
@BonboBingo Nói "Chỉ cần tìm kiếm Google" thực sự không phải là một giải pháp. Đa số các câu hỏi ở đây có thể được trả lời với "nếu bạn tìm kiếm đủ lâu ..." Hỏi Ubuntu mong muốn trở thành các Câu hỏi quyền hạn và trang web trả lời cung cấp độ câu trả lời 1 thay vì một bức tường của câu trả lời mà nói "Chỉ cần Google" - cho biết thêm thông tin kiểm tra Câu hỏi thường gặp
Marco Ceppi

1
Có một hướng dẫn bước hữu ích ở đây: help.ubfox.com/community/Git. @Marco Ceppi Xin lỗi nhưng tôi không chính trị. Và sau đó, liên kết mà tôi đã đăng dường như khá liên quan đến câu hỏi ... Bây giờ là một câu trả lời?
BonboBingo

Nhận xét @BonboBingo không được tính là câu trả lời! Tôi chỉ đơn thuần là nhận xét về phần "Tìm kiếm trên Google" trong nhận xét của bạn. Nếu bạn muốn trả lời chi tiết về bài viết Git trong hướng dẫn Trợ giúp Ubuntu, bạn nên sử dụng hộp "Câu trả lời của bạn" ở cuối trang này! :)
Marco Ceppi

2
"Thay vì một bức tường câu trả lời có nội dung" Chỉ Google "- để biết thêm thông tin, hãy kiểm tra" ... ok bạn đã đúng :) Hãy dừng lại ở đây.
BonboBingo

Câu trả lời:


38

Bạn có thể sử dụng hướng dẫn để cài đặt máy chủ Git như aking1012 đề xuất cho bạn hoặc bạn chỉ có thể cài đặt máy chủ SSH trên phiên bản EC2 của mình (có lẽ sẽ là khôn ngoan khi bảo mật và thay đổi cổng mặc định).

Git có thể là máy chủ mà bạn không khởi tạo kho lưu trữ của mình và sau đó bạn truy cập nó từ xa thông qua SSH. Vì vậy, các hướng dẫn như thế này trên Ubuntu Server nên thực hiện:

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

Cuối cùng cài đặt SSH trên máy chủ của bạn:

sudo apt-get install ssh-server

Bây giờ, bạn nên cấu hình SSH để bảo mật nó.

Đã đến lúc đưa dự án của bạn lên mạng (dữ liệu bạn đã có trên máy phát triển của mình):

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

Và bây giờ bạn có thể bắt đầu nhân bản xung quanh. Bạn đi trên máy phát triển của bạn:

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

Kiểm tra tài nguyên tuyệt vời này trên Git .

Và để tạo khóa ssh của bạn để xác thực an toàn hơn, bạn có thể đọc bài viết này về xác thực SSH .


Có nên như vậy không openssh-server?
Jorge Castro

1
@jorge có vẻ như ssh-serverlà bí danh của máy chủ openssh, ít nhất là trên Ubuntu 10.04.
Huygens

1
tốt, điều này có thể hoạt động, nhưng đăng nhập qua SSH vào máy EC2 của Amazon yêu cầu khóa công khai / riêng tư (ssh -i key.pem ub Ubuntu @ address). Ngoài ra, tôi phải nhớ đường dẫn (địa chỉ ubfox @: / var / www / dir1 / dir2), thay vì chỉ git clone git.mydomain.com/reposeective
Pawełkowy

1
@Pawel điểm tốt. Đó là lý do tại sao một số người đặt kho git ở gốc hệ thống tệp. Nhưng có, bạn cần khóa ssh hoặc tài khoản. Hoặc bạn có thể sử dụng HTTP, nhưng sau đó bạn không có AFAIK kiểm soát truy cập thực sự tốt.
Huygens

3
@ PawełKarpiński - Bạn có thể thiết lập tệp cấu hình SSH phía máy khách ~/.ssh/configđể xử lý tên người dùng / địa chỉ máy chủ, nhập khóa, cổng và không có gì.
Shauna

15

Đối với tất cả các thiết lập máy chủ Git của tôi, tôi sử dụng Gitolite cho phép mức độ chi tiết bảo mật của quyền truy cập "trên mỗi nhánh". Thiết lập khá dễ dàng nếu bạn thực hiện nó trên một máy chủ từ xa, dễ như chạy một kịch bản tương tác. Ngoài bản chất "dễ cài đặt" này, nó còn có một gói trong Natty và Maverick

sudo apt-get install gitolite

Điều này sẽ không cung cấp một giao diện web như Github hoặc Gitweb - nhưng bạn có thể dễ dàng định cấu hình và cài đặt những thứ đó lên trên một cái gì đó như Gitolite.


9

Tôi thích gitite . Cuốn sách Pro Git có một phần về nó nhưng tôi khuyên bạn nên đọc toàn bộ cuốn sách.

Đối với yêu cầu nhiều người dùng của bạn:

Gitolite cho phép bạn chỉ định các quyền không chỉ theo kho lưu trữ (như Gitosis hiện) mà còn theo tên nhánh hoặc thẻ trong mỗi kho lưu trữ. Nghĩa là, bạn có thể chỉ định rằng một số người (hoặc nhóm người) nhất định chỉ có thể đẩy một số lượt giới thiệu nhất định (các nhánh hoặc thẻ) nhất định chứ không phải những người khác.


7

http://scie.nti.st/2007/11/14/hosting-git-repositories-the-easy-and-secure-way thể được sửa đổi một chút cho phù hợp với mục đích của bạn ... một hướng dẫn tương tự như http: // viết blog .agdunn.net /? p = 277 .


1
lưu ý: Tôi hiện đang kết hợp 0 ​​để thực hiện rvm, ree / ruby, rails, git guide cho phát triển máy khách và hướng dẫn máy chủ phát triển. nó chỉ thu hút rất nhiều hướng dẫn trực tuyến vào một nơi và sửa đổi chúng một chút, nhưng hiện tại nó vẫn đang là một công việc đang tiến triển.
RobotHumans

những hướng dẫn này thật tuyệt vời, nhưng tốt, chúng khá phức tạp. Không có hướng dẫn "ngắn hơn"? :)
Pawełkowy

Tôi chưa thấy bất cứ điều gì đơn giản hơn ... hầu hết các hướng dẫn về bệnh hoạn và bệnh gitosis đều không thông qua việc tạo một dự án mẫu và thử nghiệm (điều mà tôi nghĩ nên có trong mỗi hướng dẫn). Nếu tôi thấy một tut khác trực tiếp hơn, tôi sẽ ghi nhớ chủ đề này
RobotHumans

@ PawełKarpiński - Điều gì quá phức tạp về họ? Tôi đã sử dụng thiết lập Gitosis trước đây và nó thực sự rất dễ dàng.
Shauna


4

Giải pháp hiệu quả nhất với tôi là thiết lập WebDAV.

  • sudo a2enmod sudo dav_fs

  • sudo a2enmod dav

  • thêm tập tin mới vào /etc/apache2/sites-availablevà đặt tên cho nó, ví dụ , git.yourserver.com. Chỉnh sửa nó và thêm các dòng sau:

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

  • tạo thư mục /var/www/git.yourserver.comvà thư mục reposbên trong id
  • sudo chown www-data /var/www/git.yourserver.com/repos
  • sudo htpasswd -c /var/www/git.yourserver.com/password.dav user_login và nhập mật khẩu cho người dùng có tên user_login
  • sudo chown root:www-data /var/www/git.yourserver.com/password.dav
  • sudo chmod 640 /var/www/git.yourserver.com/password.dav

Bây giờ, sudo a2ensite git.yourserver.comsudo service apache2 restart.

  • Nhập /var/www/git.yourserver.com/reposvà tạo thư mục, ví dụ,myrepo.git
  • cd myrepo.git
  • git --bare init
  • git update-server-info

Bây giờ, đăng xuất khỏi máy chủ từ xa của bạn và đi đến thư mục cục bộ mà bạn muốn chỉnh sửa các tệp của mình.

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

và bạn đã hoàn thành. Nếu bạn muốn gửi các thay đổi đã cam kết của mình đến máy chủ:

git push origin master

Bạn có thể tạo nhiều người dùng như bạn muốn sử dụng sudo htpasswd. Chỉ cần nhớ không sử dụng -cchuyển đổi, khi thêm nhiều người dùng, vì tập tin cũ sẽ bị xóa.


3
HTTP là giao thức "ngu ngốc" được hỗ trợ nhưng không được khuyến khích. Giao thức git gốc hoạt động tốt hơn nhiều và dễ cài đặt hơn vì tất cả những gì bạn phải làm là có một máy chủ ssh hoạt động (mà bạn đã có) và cài đặt git-core. Không cần phải muck về với apache cả.
psusi

3

Tôi cũng thích cách tiếp cận gitolite để quản lý người dùng và bảo mật. Tôi có một máy chủ Git + gitit AMI cho EC2 hiện đang được thử nghiệm. Hãy thử xem; tài liệu có sẵn ở đây:

Máy chủ Git khủng

Sử dụng phương pháp này, bạn có thể có một máy chủ Git trung tâm với các kho riêng chạy trong vài phút. Có một đường cong học tập cho gitolite và EC2 nếu bạn không quen thuộc với chúng.


3

Nó rất dễ dàng để đạt được với gitolite . Trong vòng chưa đầy một giờ, bạn sẽ có máy chủ git nhiều người dùng an toàn và có thể cấu hình dễ dàng.

Tôi có một bài viết hướng dẫn trên trang web của tôi

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.