티스토리 뷰

IDE/GIT

[Git]Git 서버 세팅 CentOS7

Root_js 2020. 5. 8. 17:48

하려고 했던 작업 리눅스서버에 git server(gitlab, gitgub와 같은)를 세팅하고

클라이언트에서 작업해서 리눅스서버에 push하면 같은 서버상의 호스팅 파일이 변경되도록 처리

서버세팅하면서 우여곡절이 많았지만 잘 사용중

 

우선 세팅은 root 계정으로 진행

 

서버쪽

1. git 설치

yum install git

 

2.설치확인

git --version

 

3.저장소 세팅

cd /home

mkdir git

cd git

git init --bare --shared

ls -al

git관련 폴더들이 생성되었으면 다음으로

 

4.폴더 권한 설정 --호스팅 폴더 ftp와 같이 사용하면 git 설정을 ftp계정으로 하는게 나중에 hooks 세팅 시 문제가 안생김

adduser git --계정생성

passwd git --비번설정

chown -R git:git /home/git

 

클라이언트쪽

1.git 설정 폴더에서 우클릭 git bash 실행

키 설정

mkdir .ssh

cd .ssh

ssh-keygen -t rsa

--ssh 폴더 생성 안하고 그냥 키 생성하면 본인 계정 폴더에 생성됨

 

키파일이 생성된 폴더를 찾음

ls -al ~/.ssh

 

2. 키파일 서버 전송

키파일 폴더로 이동해서 git bash 실행

--scp명령어 이용해서 서버 전송 ssh가 기본포트이면 -P 명령어 생략

scp -P포트번호 id_rsa.pub git@서버연결정보:폴더경로

제대로 연결된거면 비밀번호 입력하라고 나옴

비밀번호는 서버에 git 계정 비번

 

키파일 전송은 ftp프로그램을 이용해서 업로드해도 됨

 

서버에서 업로드한 키파일을 등록함

cat /home/git/id_rsa.pub >> /home/git/.ssh/authorized_keys

 

키 등록후에 클라이언트에서 서버 접속 시 비번 없이 로그인이 되는지 확인

ssh -v git@서버정보 -p 포트번호

 

정상 접속되면 다음단계로 접속 안되면 키파일 등록 부분 다시 진행해야함.

 

클라이언트쪽 git 설정 원격 저장소 가져오기(복제)

작업폴더 상위에서 클론하면 서버상 git 설정 폴더경로로 가져오기때문에 따로 작업폴더 안만들어도 됨

git clone ssh://git@서버정보:포트번호/레포지토리경로

 

 

 

위 까지 되면 일단은 성공

 

이외에 할일 

git 접속 계정권한 변경 -- /bin/bash > /usr/bin/git-shell

git:x:1002:1003::/home/git:/usr/bin/git-shell

위 권한변경은 ftp나 ssh 같이 사용하는 계정이면 패쓰

 

/etc/shells에 git-shell 추가

vi /etc/shells

마지막 줄에 /bin/git-shell 추가

 

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

 

서버에 만든 base 저장소는 단순하게 git의 히스토리를 저장하는 공간이다..

 

호스팅 파일이 저장되는 none base 저장소는 실제로 파일이 저장되는 공간이긴하지만 원격저장소(base)에서  pull을 받아야한다.

 

결론은 세팅하려고 했던건 로컬에서 작업하고 원격저장소(remote - origin)로 올리면 호스팅 폴더로 자동 pull 되는거였다.

 

위에는 기본적인 git 서버 세팅들이고 아래 적히는 것들은 서버 및 클라이언트까지 설정이 완료되면 그 다음 부분이다.

 

위에 언급한 계정에 대한 부분은 git 계정을 생성해서 세팅을 진행하고 클라이언트에서 서버로 push까지는 성공했으나...

 

호스팅 폴더에서 pull할때 권한 문제로 파일 저장이 되지 않는다.. 이유는 호스팅 폴더는 ftp설정도 되어있어서 폴더 권한이 다르기때문에...

 

이걸 해결하려면 리모트저장소에서 변경사항 체크 해서 pull할때 root 권한으로 설정해주면 되는데 생각보다 복잡해서 그냥 git 계정과 ftp계정을 동일한 계정으로 세팅했다.

 

현재까지 설정된거 로컬에 저장소 만들고 remote 저장소 설정하여 테스트

 

서버 호스팅 폴더에서 저장소 만들고 remote로 저장소 설정하여 테스트

 

위 두가지가 되면 base 저장소에 로컬에서 push 시 호스팅 폴더로 pull되도록 설정

 

base 저장소로 이동

hooks폴더 안에 post-receive 파일을 생성

vi post-receive

 

#!/bin/bash

cd 호스팅폴더 경로 || exit

unset GIT_DIR

git pull origin master

exec git-update-server-info

 

파일 저장하고 권한을  git 폴더 권한과 동일하게 맞춤

 

이렇게 하고 로컬에서 push하면 호스팅 폴더로 자동 pull되는걸 확인

'IDE > GIT' 카테고리의 다른 글

SSH 공개키(개인키) - 비밀번호 없이 로그인  (0) 2023.04.12
[CentOS7] git 웹서버 배포  (0) 2021.03.04
Git 첫 시작 세팅 및 GitLab에 Push  (0) 2018.07.19
댓글