Ubuntu 22.04 에서 Gogs 설치 및 설정하기

리눅스/PaaS|2024. 2. 5. 12:05
반응형

Gogs 는 경량의 Git 서비스로서, 자체 호스팅이 가능한 Git 서버 솔루션 중 하나입니다. Gogs 는 Go 언어로 개발되었으며, 경량성과 빠른 실행 속도를 갖추고 있습니다. Gogs 는 개인 또는 작은 팀이 소규모 프로젝트를 위해 손쉽게 Git 리포지토리를 관리할 수 있도록 설계되었습니다.

[Gogs 의 특징]
- 경량성 : 경량이면서도 빠른 실행 속도를 가지고 있습니다. 이는 작은 환경에서도 쉽게 실행될 수 있도록 설계되었음을 의미합니다.
- 사용 편의성 : 사용자 친화적인 웹 인터페이스를 제공하여 Git 리포지토리를 쉽게 생성하고 관리할 수 있습니다.
- 자체 호스팅 : 자체 서버 또는 호스팅 환경에서 실행할 수 있어, 사용자는 자체 인프라에서 Git 서버를 운영할 수 있습니다.
- 다국어 지원 : 다국어 지원을 통해 전 세계의 사용자들이 Gogs 를 사용할 수 있습니다.
- 이슈 트래킹 : 간단한 이슈 트래킹 시스템을 내장하고 있어, 프로젝트 관리를 용이하게 해줍니다.
- 플러그인 지원 : 다양한 플러그인을 통해 Gogs 의 기능을 확장할 수 있습니다.

Gogs 는 오픈 소스로 제공되어 있어 누구나 소스 코드를 확인하고 개선할 수 있습니다. 주로 작은 규모의 프로젝트나 개발팀에서 사용되며, 쉽게 설치하고 운영할 수 있는 특징이 강점입니다.

 

그럼, Ubuntu 22.04 기반의 서버에 Gogs 를 설치하고 Client 가 git 명령으로 사용하는 방법을 설명하겠습니다.

 

 

1. 사전 설치

 

1) 데이터베이스
MySQL 5.7 이상의 버전이나 PostgreSQL 이 필요합니다.

여기에서는 설치가 간편하고 많이 사용하는 MySQL 을 설치하겠습니다.

# apt -y update

# apt install -y mysql-server

# mysql -V
mysql  Ver 8.0.36-0ubuntu0.22.04.1 for Linux on x86_64 ((Ubuntu))

 

utf8mb4 언어셋의 gogs 데이터베이스를 생성합니다.

스크립트 디렉토리에 준비된 쿼리 파일을 실행하면 쉽습니다.

# mysql -p < scripts/mysql.sql
Enter password: (설치 직후 패스워드 없음. 그냥 엔터)

 

보안 강화를 위해 root 패스워드를 변경합니다.

# mysql -p

Enter password: (설치 직후 패스워드 없음. 그냥 엔터)

mysql> use mysql;

mysql> alter user root@localhost identified by '12345678';

mysql> flush privileges;

 

그리고 gogs 사용자 계정을 생성하고 gogs 데이터 베이스에 권한을 부여합니다.

mysql> create user gogs@localhost identified by '12345678';
mysql> grant all privileges on gogs.* to gogs@localhost;
mysql> flush privileges;


2) Git Client
1.8.3 버전 이상으로 설치하면 됩니다.

# apt -y install git

# git version
git version 2.34.1

 

 

2. Gogs 설치

 

1) 설치 준비

바이너리 또는 소스파일로 설치하는 두가지 방법이 있습니다.
여기에서는 다운로드 받고 실행이 간편한 바이너리 형식으로 진행해보겠습니다.

 

자세한 내용은 공식 Document 를 참고하세요.

- 바이너리 설치 : https://gogs.io/docs/installation/install_from_binary

- 소스파일 설치 : https://gogs.io/docs/installation/install_from_source

 

# wget https://dl.gogs.io/0.13.0/gogs_0.13.0_linux_amd64.tar.gz
# tar xvzf gogs_0.13.0_linux_amd64.tar.gz
# cd gogs
# ./gogs web .

2024/02/05 12:51:04 [ WARN] Custom config "/root/gogs/custom/conf/app.ini" not found. Ignore this warning if you're running for the first time
2024/02/05 12:51:04 [TRACE] Log mode: Console (Trace)
2024/02/05 12:51:04 [ INFO] Gogs 0.13.0
2024/02/05 12:51:04 [TRACE] Work directory: /root/gogs
2024/02/05 12:51:04 [TRACE] Custom path: /root/gogs/custom
2024/02/05 12:51:04 [TRACE] Custom config: /root/gogs/custom/conf/app.ini
2024/02/05 12:51:04 [TRACE] Log path: /root/gogs/log
2024/02/05 12:51:04 [TRACE] Build time: 2023-02-25 02:30:34 UTC
2024/02/05 12:51:04 [TRACE] Build commit: 8c21874c00b6100d46b662f65baeb40647442f42
2024/02/05 12:51:04 [ INFO] Run mode: Development
2024/02/05 12:51:04 [ INFO] Available on http://localhost:3000/

 

3000 포트가 열리면서 관리 web 콘솔 접근이 가능해졌습니다.

웹브라우저를 이용해 접근합니다.

예) http://115.68.248.195:3000

 

2) 설치하기

위 URL 로 접근하면 Gogs 설치를 위한 여러가지 설정 항목이 출력됩니다.

기본값에서 아래 내용만 추가하여 설치를 진행합니다.

모두 기본값으로 두고, 아래 파란색 글자만 변경 또는 입력하였습니다.

 

- 데이터베이스 유형 : MySQL
- 호스트 : 127.0.0.1:3306
- 사용자 : gogs
- 비밀번호 : 12345678
- 데이터베이스 이름 : gogs

 

- 애플리케이션 이름 : Gogs
- 저장소 최상위 경로 : /root/gogs-repositories
- 데몬 사용자 계정 : root
- 도메인 : git.sysdocu.kr
- SSH 포트 : 22 (내장 SSH 서버 사용 : 체크 해제)
- HTTP 포트 : 3000
- 애플리케이션 URL : http://115.68.248.195:3000/
- 로그 경로 : /root/gogs/log (콘솔 모드 활성화 : 체크 해제)
- Default Branch : master

 

- 추가설정 없음

 

맨 하단의 [Gogs 설치하기] 버튼을 눌러 설치를 합니다.

버튼은 한번만 누르고 잠시 기다려야 합니다.

 

[에러]

페이지를 찾을 수 없다는 메세지가 출력될때 URL 이 http://localhost:3000/user/login 연결 시도 중이였다면, '애플리케이션 URL' 을 수정하지 않은 것이므로, 접근 가능한 서버 IP 주소로 변경하여 다시 접근하면 됩니다.

 

페이지가 잘 열렸다면, 계정 생성 후 로그인합니다.

 

 

3. 사용하기

 

1) 저장소 만들기

대시보드 우측에 내 저장소의 '+' 버튼을 눌러 저장소를 추가합니다.

테스트 용이므로 저장소 이름만 입력해보겠습니다.

- 저장소 이름 : sample

[저장소 만들기] 버튼을 눌러 생성합니다.

 

다음과 같이 저장소 주소가 확인되었습니다.

http://115.68.248.195:3000/sysdocu/sample.git

 

2) 파일 업로드

Client PC (Ubuntu 22.04) 에서 사용하는 방법입니다.

파일을 업로드 할때 git 명령어가 필요하므로 서버에서 설치한 방법대로 설치합니다.

# apt -y install git

# git version
git version 2.34.1

 

디렉토리를 만들고 PHP 샘플 파일을 생성합니다.

# mkdir php-sample

# cd php-sample

# echo "<?php
echo 'Good Job !!';
phpinfo();
?>" > index.php

 

용량 큰 파일도 전송이 잘 되는지 확인하기위해 한개 생성합니다.

# dd if=/dev/zero of=file.bin bs=100M count=10
10+0 레코드 들어옴
10+0 레코드 나감
1048576000 bytes (1.0 GB, 1000 MiB) copied, 3.40629 s, 308 MB/s

 

로컬 main 저장소를 초기화 합니다.

# git init -b main

/root/php-sample/.git/ 안의 빈 깃 저장소를 다시 초기화했습니다

 

원격 저장소를 origin 이라는 이름으로 로컬 저장소에 추가 합니다.

# git remote add origin http://115.68.248.195:3000/sysdocu/sample.git

 

[참고] --------------------

다른 저장소로 연결하기 위해 현재 원격 저장소를 확인하고 해제하는 명령어 입니다.

- 연결 상태 확인 명령어 : git remote 또는 git remote -v

- 연결 해제 명령어 : git remote remove {해제하려는 원격 저장소 이름}

-----------------------------

 

현재 작업 디렉토리의 모든 변경 사항을 로컬 저장소의 스테이징 영역 (Staging Area) 에 추가합니다.

변경된 파일들을 Git 이 추적하도록 표시하고, 이후에 이 변경 사항들을 커밋에 포함시킬 수 있습니다.

아직 Git 서버로 전송된 것은 아니며, 커밋 이후에 git push 명령을 사용하여 원격 서버로 변경 사항을 전송할 수 있습니다.
. 은 현재 디렉토리의 모든 파일을 의미합니다.

# git add .

 

스테이징 영역에 추가된 변경 사항들을 실제로 저장소에 기록 (commit) 합니다.
-m 옵션을 이용하여 커밋에 대한 간략한 설명을 입력합니다.
커밋 메시지는 커밋의 의도를 알 수 있도록 명확하게 작성하는 것이 좋습니다.

# git commit -m "First commit"

[main (최상위-커밋) f78689e] First commit
 2 files changed, 4 insertions(+)

 create mode 100644 file.bin
 create mode 100644 index.php

 

git push 명령어로 로컬 저장소의 변경 사항을 원격 저장소로 전송합니다.
-u 는 원격 저장소의 브랜치 (분기) 에 로컬 브랜치를 연결하는 옵션입니다. 옵션 사용 이후에는 간단히 git push 만 사용하여 변경 사항을 전송할 수 있습니다.
아래는 로컬 main 브랜치의 변경 내용을 origin 이라는 원격 저장소에 업로드하는 명령입니다.

# git push -u origin main
오브젝트 나열하는 중: 4, 완료.
오브젝트 개수 세는 중: 100% (4/4), 완료.
Delta compression using up to 8 threads
오브젝트 압축하는 중: 100% (2/2), 완료.
오브젝트 쓰는 중: 100% (4/4), 995.59 KiB | 124.45 MiB/s, 완료.
Total 4 (delta 0), reused 1 (delta 0), pack-reused 0
Username for 'http://115.68.248.195:3000': sysdocu
Password for 'http://sysdocu@115.68.248.195:3000': 
To http://115.68.248.195:3000/sysdocu/sample.git
 * [new branch]      main -> main
'main' 브랜치가 리모트의 'main' 브랜치를 ('origin'에서) 따라가도록 설정되었습니다.

 

파일이 업로드 되었으며, Gogs 웹 콘솔에서도 업로드 된 확인이 가능합니다.

 

반응형

댓글()