자식 서버 설정


57

최근 Amazon EC2에서 우분투 서버를 설정했습니다. 내 자식 서버로 사용하고 싶기 때문에 저장소를 저장할 수 있습니다.

그렇다면 우분투 서버에서 git을 설정하는 방법에 대한 자세한 지침은 어디서 찾을 수 있습니까? 이 모든 SSH 키와 그와 같은 것, 여러 사용자 등


2
나는 이것이 명백한 "리눅스"를 넘어 우분투 관련 질문이라고 생각하지 않으며, git documentation 도 보았 습니까? 개인 저장소 뿐만 아니라 공용 저장소 를 설정하는 것에 대한 언급이 있습니다 .
Ward Muylaert

22
@BonboBingo "Google 검색"이라고 말하는 것은 해결책이 아닙니다. 여기에서 질문의 대부분은 "충분히 검색하면 ..."으로 대답 할 수 있습니다. 우분투에 문의 하는 것은 "Google 만"이라는 답변 대신에 1 단계 답변을 제공 하는 권위있는 질문 및 답변 사이트입니다. 자세한 내용은 FAQ
Marco Ceppi

1
여기에 유용한 단계 안내서가 있습니다 : help.ubuntu.com/community/Git. @Marco Ceppi 미안하지만 나는 논쟁 적이 지 않았다. 그리고 내가 게시 한 링크는 질문과 관련이있는 것 같습니다 ... 이제 대답으로?
BonboBingo

@BonboBingo 코멘트는 답변으로 간주되지 않습니다! 귀하의 의견 중 "Google 검색"부분에 대해서만 언급했습니다. Ubuntu 도움말 가이드의 Git 기사에 대한 자세한 내용을 보려면이 페이지 하단의 "답변"상자를 사용해야합니다! :)
Marco Ceppi

2
"Google 만"이라는 답변 대신 "자세한 내용은 다음을 확인하십시오"... 좋습니다. :) 여기서 멈추겠습니다.
BonboBingo

답변:


38

튜토리얼을 사용하여 aking1012가 제안한대로 Git 서버를 설치 하거나 EC2 인스턴스에 SSH 서버를 설치할 수 있습니다 (아마 그것을 보호하고 기본 포트를 변경하는 것이 좋습니다).

Git은 서버가 없어 저장소를 초기화 한 다음 SSH를 통해 원격에서 액세스 할 수 있습니다. 따라서 우분투 서버에서 이와 같은 지침을 수행해야합니다.

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

마지막으로 서버에 SSH를 설치하십시오.

sudo apt-get install ssh-server

이제 SSH를 보호하도록 SSH를 구성해야합니다.

프로젝트를 온라인 상태로 만들 차례입니다 (개발 머신에 이미있는 데이터).

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

이제 복제를 시작할 수 있습니다. 개발 머신을 사용합니다.

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

훌륭한 리소스를 Git에서 확인하십시오 .

보다 안전한 인증을 위해 SSH 키를 생성하기 위해 SSH 인증 에 대한이 기사를 읽을 수 있습니다 .


그렇게해서는 안 openssh-server됩니까?
Jorge Castro

1
@jorge ssh-server적어도 Ubuntu 10.04에서 openssh-server의 별칭 인 것 같습니다 .
Huygens

1
잘 작동하지만 SSH를 통해 Amazon EC2 머신에 로깅하려면 공개 / 개인 키 쌍 (ssh -i key.pem ubuntu @ address)이 필요합니다. (은 / var / www /에서 DIR1 / dir2는 우분투 @ 주소), 대신 단지 자식 복제 git.mydomain.com/repository 또한, 나는 경로를 기억해야
Pawełkowy

1
@Pawel 좋은 지적. 그래서 어떤 사람들은 git 저장소를 파일 시스템 루트에 넣습니다. 그러나 예, ssh 키 또는 계정이 필요합니다. 또는 HTTP를 사용할 수는 있지만 AFAIK에 대한 액세스 제어가 실제로는 좋지 않습니다.
Huygens

3
@ PawełKarpiński- ~/.ssh/config사용자 이름 / 호스트 주소, 키 입력, 포트 및 기타 정보를 처리 하기 위해 클라이언트 측 SSH 구성 파일을 설정할 수 있습니다 .
Shauna

15

모든 Git 서버 설정에 대해 "브랜치 당"액세스의 보안 세분성을 허용 하는 Gitolite 를 사용합니다. 원격 서버에서 설치하는 경우 대화식 스크립트를 실행하는 것만 큼 쉽습니다. 이 "설정하기 쉬운"특성 외에도 Natty와 Maverick에도 패키지가 있습니다.

sudo apt-get install gitolite

이것은 Github 또는 Gitweb과 같은 웹 프론트 엔드를 제공하지는 않지만 Gitolite와 같은 것 위에 쉽게 구성하고 설치할 수 있습니다.


9

나는 gitolite를 좋아한다 . Pro Git 책에는 섹션 이 있지만 전체 책을 읽는 것이 좋습니다.

다중 사용자 요구 사항은 다음과 같습니다.

Gitolite를 사용하면 저장소 (Gitosis처럼)뿐만 아니라 각 저장소 내의 분기 또는 태그 이름으로 권한을 지정할 수 있습니다. 즉, 특정 사람 (또는 그룹)이 특정 "참조"(지점 또는 태그) 만 밀고 다른 사람은 밀지 못하도록 지정할 수 있습니다.


7

http://scie.nti.st/2007/11/14/hosting-git-repositories-the-easy-and-secure-way 는 목적에 맞게 약간 수정할 수 있습니다 ... 유사한 튜토리얼 http : // blog .agdunn.net /? p = 277 .


1
참고 : 현재 개발 클라이언트 및 개발 서버 자습서를 위해 rvm, ree / ruby, rails, git 자습서를 수행하기 위해 0을 구성하고 있습니다. 많은 온라인 튜토리얼을 한곳으로 끌어서 약간 수정하지만, 현재 진행중인 작업입니다.
RobotHumans

이 튜토리얼은 훌륭하지만 글쎄요. "더 짧은"튜토리얼이 없습니까? :)
Pawełkowy

나는 더 직설적 인 것을 보지 못했습니다 ... 거대한 및 gitosis에 대한 대부분의 자습서는 샘플 프로젝트를 만들고 테스트하지 않습니다 (모든 자습서에 있어야한다고 생각하는 것). 내가의 또 다른 혀를 참조하면할수록 마음이 글타래하겠습니다 직접
RobotHumans

@ PawełKarpiński-그들에 대해 너무 복잡한 무엇입니까? 이전에 Gitosis 설정을 사용해 왔으며 실제로는 매우 쉽습니다.
Shauna


4

나에게 가장 효과적인 솔루션은 WebDAV를 설정하는 것이 었습니다.

  • sudo a2enmod sudo dav_fs

  • sudo a2enmod dav

  • 새 파일을 추가 /etc/apache2/sites-available하고 이름을 지정하십시오 (예 :) git.yourserver.com. 그것을 편집하고 다음 줄을 추가하십시오 :

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

  • 아이디 안에 디렉토리 /var/www/git.yourserver.com와 디렉토리를 만듭니다repos
  • sudo chown www-data /var/www/git.yourserver.com/repos
  • sudo htpasswd -c /var/www/git.yourserver.com/password.dav user_login 이름이 지정된 사용자의 비밀번호를 입력하십시오. user_login
  • sudo chown root:www-data /var/www/git.yourserver.com/password.dav
  • sudo chmod 640 /var/www/git.yourserver.com/password.dav

이제 sudo a2ensite git.yourserver.comsudo service apache2 restart.

  • /var/www/git.yourserver.com/repos예를 들어 디렉토리를 입력 하고 작성 하십시오 .myrepo.git
  • cd myrepo.git
  • git --bare init
  • git update-server-info

이제 원격 서버에서 로그 아웃하고 파일을 편집하려는 로컬 디렉토리로 이동하십시오.

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

그리고 당신은 끝났습니다. 커밋 된 변경 사항을 서버에 보내려면 :

git push origin master

을 사용하여 원하는만큼의 사용자를 만들 수 있습니다 sudo htpasswd. -c이전 파일이 삭제되므로 더 많은 사용자를 추가 할 때 스위치 를 사용하지 마십시오 .


3
HTTP는 "단순한"프로토콜로 지원되지만 사용하지 않는 것이 좋습니다. 네이티브 git 프로토콜은 훨씬 잘 작동하며, ssh 서버 (이미 있어야 함)가 작동하고 git-core를 설치하기 때문에 설정하기가 더 쉽습니다. 아파치에 전혀 신경 쓸 필요가 없습니다.
psusi

3

또한 사용자 및 보안 관리를위한 gitolite 방식이 마음에 듭니다 . 현재 테스트중인 EC2 용 Git + gitolite 서버 AMI가 있습니다. 시도해보십시오. 설명서는 여기에서 볼 수 있습니다 :

Alestic Git 서버

이 접근 방식을 사용하면 몇 분 안에 개인 저장소가 실행되는 중앙 Git 서버를 가질 수 있습니다. gitolite와 EC2에 익숙하지 않으면 학습 곡선이 있습니다.


당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.