본문 바로가기
리눅스 깃 구축 운영 방법 안내

(1) 깃 서버 구축 - gitea

by 코딩하는 원숭이 2023. 5. 9.

//프롤로그

더보기

2023.04.26 현재 다니고 있는 직장에서 svn을 사용 중이다. 

 

만 슬슬 git을 사용할 때(?)가 되었다. 

 

그 교육자료를 내가 담당하게 되었고 이를 위해 서버팀에 부탁하여 서버를 하나 받아왔다.

 

받아온 서버는 centOS환경이고 깃 서버를 임시로 구축하여 테스트를 진행할 예정이다.

 

당연히 깃 서버를 구축하는데 필요한 DB도 받아온 서버에 설치한다.

 

교육자료에 참고차 블로그에 그 과정을 남긴다.

 

 

)헷갈리니 간단히 용어 정리

 

- 깃 : 형상 관리 프로그램

- 깃허브, 깃랩, gitea : 깃 호스팅 서비스.  깃허브는 클라우드 기반 웹서버를 대여해 주고 웹 인터페이스 제공.

깃랩과 gitea의 경우 자체 호스팅 기능을 제공한다.

 

- 커밋 : 변경사항을 저장소에 기록한다.

- 풀 : 원격 저장소의 내용을 로컬 저장소에 가져온다.

- 푸시 : 로컬 저장소의 내용을 원격 저장소에 업데이트한다.

- 복제 : 풀하기 위해 원격 저장소의 내용을 가져온다.

- 브랜치 : 원격 저장소에서 분리되어 독립적으로 기록되는 로컬 저장소의 작업 내역

- 충돌 : 원격 저장소와 로컬 저장소가 동시에 각각 다른 내용으로 업데이트했을 때 커밋하면 발생한다.

 

 

 

- 준비물

깃을 구축할 서버 pc, 로컬 pc

 

 

- 서버에 실행할 프로그램

gitea

 

나는 회사에서 제공한 서버를 사용하였기 때문에 putty로 접속하면 되었다.

계정 또한 회사에서 제공한 계정을 사용하였다.

 

깃 프로그램은 가볍기로 유명한 gitea를 사용한다.

 

- 깃 서버 구축하기

깃 서버 구축은 매우 간단하다.

 

1) putty로 리눅스 서버에 로그인하여 접속한다.

 

2) wget패키지를 통해 gitea를 다운로드한다.

 

wget 패키지가 없을 경우 아래 명령문으로 다운로드한다.

yum install wget

 

yum을 사용하려니 슈퍼 유저 권한으로 실행해야 한다는 문구가 나왔다. root계정으로 다시 접속한다.

su -
//이후 암호입력하고 root계정으로 전환

 

 

루트계정으로 먼저 git을 설치해 보자.

 

git을 설치하지 않으면 깃티 초기설정 페이지에서 exec: "git": executable file not found in $PATH 오류를 뱉어내면서 깃티 설치가 되지 않을 것이다.

 

 

 

깃 설치.

yum install git

 

아래 명령어를 입력하여 깃이 제대로 설치되었는지 확인한다.

git --version

 

 

 

3) wget패키지와 git 설치가 끝났으면 gitea를 설치한다. 현재 가장 최신 버전인 1.19.2를 다운로드한다.

https://dl.gitea.com/gitea/1.19.1/

 

Gitea | gitea

 

dl.gitea.com

위 링크로 들어가 알맞은 버전의 깃 이름을 복사한 후 아래 코드에 붙여 넣기 한 명령문을 실행한다.

wget -O gitea https://dl.gitea.com/gitea/(알맞는 버전의 gitea파일 이름)

 

나 같은 경우, 이 글을 쓸 시점의 제일 최신 버전인 gitea-1.19.2-linux-amd64를 다운로드하였다. 명령문은 다음과 같다.

 wget -O gitea https://dl.gitea.com/gitea/1.19.2/gitea-1.19.2-linux-amd64

 

--여기서부터 삽질을 왕창 했다.... 

리눅스 환경을 처음 써본지라 명령문을 제대로 이해하지 못했었다.

혹시나 나와 같은 실수를 할 사람이 있을지 몰라 기록해 놓는다.

 

4) 다운로드한 gitea 파일을  /usr/local/bin 디렉터리로 이동시킨다

-> 혹은 원하는 디렉토리가 있다면 생성하여 거기서 작업해도 된다.

mv gitea /usr/local/bin

 

5) 설치한 gitea에 실행권한을 준다.

chmod +x /usr/local/bin/gitea

 

6) 깃티실행에 필요한 디렉토리들을 생성한다.

내 경우 gitea파일이 있는 곳에 디렉토리들을 생성하였다.

아래 명령문처럼 gitea폴더를 따로 만들어도 된다.

 

- /var/lib디렉토리에 gitea디렉토리 생성하고 다시 그 디렉토리에 custom,data,indexers,public,log디렉토리 생성

mkdir -p /var/lib/gitea/{custom,data,indexers,public,log}

 

- data, indexers, log디렉토리 소유자를 admin으로 변경
예시는 admin이지만 실제 소유하고 있는 root계정 이외의 서버 계정명을 입력하면 된다.

chown admin: /var/lib/gitea/{data,indexers,log}

 

- 권한을 변경한다. 여기서 750은 권한값이다.

chmod 750 /var/lib/gitea/{data,indexers,log}

 

etc디렉토리 내에 gitea디렉토리를 만든다.

소유자를 변경하고( root:git은 계정명:계정그룹이므로 본인 환경에 맞게 입력하면 된다.)

권한값 770을 부여한다.

mkdir /etc/gitea
chown root:git /etc/gitea	
chmod 770 /etc/gitea

 

7) Sysmd 서비스 파일 생성

직접 파일을 생성하여 내용을 알맞게 복붙 하는 방법도 있지만,  git에서 제공하는 설정파일을 써보자

wget https://raw.githubusercontent.com/go-gitea/gitea/master/contrib/systemd/gitea.service -P /etc/systemd/system/

 

8) gitea 서비스를 활성화하고 시작한다.

systemctl daemon-reload
systemctl enable --now gitea

 

9) gitea서비스가 제대로 동작하는지 확인한다.

sudo systemctl status gitea

 

10) gitea실행 후 로컬 pc에서  http://(서버IP):3000으로 접속하면 초기설정 페이지가 뜬다.

만약 접속이 되지 않는다면 gitea 실행이 제대로 되지 않은 것이다. 

별다른 설정을 건드리지 않았다면 gitea는 3000포트를 사용한다.

아래 명령어로 사용 중인 포트를 확인해 보니 3000포트가 죽어있었다. gitea가 실행되지 않았다.

netstat -tulpn | grep LISTEN

https://github.com/go-gitea/gitea/issues/17869

 

Unable to start gitea service any which way I try · Issue #17869 · go-gitea/gitea

Gitea Version Gitea version 1.15.6 built with GNU Make 4.1, go1.16.9 : bindata, sqlite, sqlite_unlock_notify (installed 30 Nov 2021) Git Version 2.33.0 Operating System Ubuntu 16.04.7 LTS (GNU/Linu...

github.com

찾아보니 나와 같은 증상을 겪은 사람이 있었다. 아래 문구를 차례대로 입력하기만 하면 된다.

chown -R gitea:gitea /var/lib/gitea
su gitea	#root계정으론 안 됨.
GITEA_WORK_DIR=/var/lib/gitea/ /usr/local/bin/gitea web -c /etc/gitea/app.ini

 

11) gitea가 실행되었으면 (서버 IP):3000로 접속하면 gitea초기 설정 페이지가 나올 것이다.

 

DB는 따로 설치가 필요 없는  SQLite3을 택하였다.(Gitea는 데이터베이스 백엔드를 사용해야 한다고 한다.)

정보를 알맞게 입력 후 페이지 아래에서 관리자 계정을 설정한다. 

모든 정보를 입력하였으면 설치하기 버튼을 눌러 완료한다.

 

혹시나 여기서 디렉토리 생성 오류가 발생하였다면 오류를 뱉는 디렉토리의 소유자가 root가 아닌 다른 계정이 맞는지 확인하자.(나는 winscp를 사용하여 디렉토리, 파일 소유자를 확인하였다.)

 

깃티 프로그램은 root권한으로 실행할 수 없다.(적어도 내 환경 설정에서는 실행할 수 없었다.)

 

디렉토리 생성 오류를 해결한 뒤에 또 오류를 뱉어내었는데, 설정 파일을 열 수 없다는 오류였다.

 

원인은 같았다. 디렉토리와 파일의 소유자가 root로 되어있기 때문이었다.

 

소유자를 변경한 뒤엔 깃티 호스팅 서비스가 정상적으로 실행되었다.

 

혹시나 내용에 오류가 있다면 알려주시면 감사하겠습니다.😁

댓글