SW/리눅스

Ubuntu 18.04 : Gogs 설치, 구성 방법, 예제, 명령어

얇은생각 2021. 8. 14. 07:30
반응형

Gogs는 Go로 작성된 자체 호스팅된 오픈 소스 Git 서버입니다. 여기에는 리포지토리 파일 편집기, 프로젝트 문제 추적 및 기본 제공 위키가 포함됩니다.

Gogs는 경량 애플리케이션으로 저전력 시스템에 설치할 수 있습니다. 메모리 용량이 훨씬 작은 Gitlab에 대한 대안을 찾고 있습니다면 Gitlab에서 제공하는 모든 벨과 휘파람이 필요하지 않다면 Gogs를 반드시 사용해봐야 합니다.

Ubuntu 18.04에 Gogs를 설치하고 구성하는 단계를 다룹니다. Ubuntu 16.04 및 다른 Ubuntu 기반 배포에도 동일한 지침이 적용됩니다.

 

 

 

시작하기 전에 다음을 수행

Gogs는 SQLite, PostgreSQL 또는 MySQL/MariaDB 데이터베이스를 사용하여 모든 데이터를 저장합니다.

이 튜토리얼에서는 SQLite를 선택한 데이터베이스로 사용합니다. 시스템에 SQLite가 설치되어 있지 않은 경우 다음을 입력하여 설치할 수 있습니다.

sudo apt install sqlite3

 

 

추가 보안 계층의 경우 기본 방화벽을 설정하는 것이 좋습니다. Ubuntu 18.04에서 UFW를 사용하여 방화벽을 설정하는 방법 가이드의 단계를 따를 수 있습니다.

 

 

 

Gogs 설치

바이너리에서 Gogs를 설치할 것입니다. 설치 과정은 매우 간단합니다.

 

 

Git 설치

첫 번째 단계는 서버에 Git를 설치하는 것입니다. 이렇게 하려면 sudo 사용자로 다음 명령을 실행하여 로컬 패키지 인덱스를 새로 고치고 git 패키지를 설치하십시오.

Git 버전을 표시하여 설치를 확인합니다.

sudo apt update
sudo apt install git

git --version

# git version 2.17.1

 

 

 

Git 사용자를 생성

다음을 입력하여 Gogs 서비스를 실행할 새 시스템 사용자를 생성합니다.

명령은 사용자를 생성하고 홈 디렉토리를 /home/git로 설정합니다. 출력은 다음과 같습니다.

sudo adduser --system --group --disabled-password --shell /bin/bash --home /home/git --gecos 'Git Version Control' git

# Adding system user `git' (UID 111) ...
# Adding new group `git' (GID 116) ...
# Adding new user `git' (UID 111) with group `git' ...
# Creating home directory `/home/git' ...

 

 

 

Gogs 이진 파일을 다운로드

Gogs 다운로드 페이지를 방문하여 아키텍처의 최신 바이너리를 다운로드하십시오. 쓸 때 최신 버전은 0.11.86이며, 사용할 수 있는 새 버전이 있으면 아래 명령에서 VERSION 변수를 변경합니다.

다음 wget 명령을 사용하여 /tmp 디렉토리에 Gogs 아카이브를 다운로드합니다.

VERSION=0.11.86
wget https://dl.gogs.io/${VERSION}/gogs_${VERSION}_linux_amd64.tar.gz -P /tmp

 

 

다운로드가 완료되면 Gogstar.gz 파일의 압축을 풀고 /home/git 디렉토리로 이동합니다.

sudo tar xf /tmp/gogs_*_linux_amd64.tar.gz -C /home/git

 

 

다음 명령을 실행하여 Gogs 설치 디렉터리의 소유권을 사용자 및 그룹 git로 변경합니다.

sudo chown -R git: /home/git/gogs

 

 

 

systemd 유닛 파일을 생성

Gogs에는 설정과 일치하도록 이미 구성된 Systemd 장치 파일이 함께 제공됩니다.

다음을 입력하여 파일을 /etc/systemd/system/ 디렉토리에 복사합니다.

sudo cp /home/git/gogs/scripts/systemd/gogs.service /etc/systemd/system/

 

 

완료되면 Gogs 서비스를 시작하고 활성화합니다.

sudo systemctl start gogs
sudo systemctl enable gogs

# * gogs.service - Gogs
#    Loaded: loaded (/etc/systemd/system/gogs.service; enabled; vendor preset: enabled)
#    Active: active (running) since Thu 2019-04-25 04:13:44 PDT; 9s ago
#  Main PID: 14376 (gogs)
#     Tasks: 8 (limit: 2319)
#    CGroup: /system.slice/gogs.service
#            `-14376 /home/git/gogs/gogs web

 

 

서비스가 성공적으로 시작되었는지 확인합니다.

 

 

웹 설치 프로그램을 사용하여 Gogs를 설치

이제 Gogs가 다운로드되어 실행되고 있으므로 웹 인터페이스를 통해 설치를 마무리해야 합니다.

브라우저를 열고 http://YOUR_DOMIN_IR_IP:3000을 입력합니다. 다음과 유사한 화면이 나타납니다.

Ubuntu 18.04 : Gogs 설치, 구성 방법, 예제, 명령어 1

 

 

데이터베이스 설정:

데이터베이스 유형: SQLite3

경로: /home/git/gogs/gogs.db 절대 경로를 사용합니다.

 

응용 프로그램 일반 설정:

응용 프로그램 이름: 조직 이름을 입력하십시오.

리포지토리 루트 경로: 기본 /home/git/gogs-리포지토스를 그대로 둡니다.

사용자: git를 실행합니다.

도메인: 도메인 또는 서버 IP 주소를 입력합니다.

SSH 포트: 22, SSH가 다른 포트에서 수신 중인 경우 변경합니다.

HTTP 포트: 3000

응용 프로그램 URL: http와 도메인 또는 서버 IP 주소를 사용합니다.

로그 경로: 기본값 /home/git/gogs/log를 그대로 둡니다.

 

나중에 Gogs 구성 파일을 편집하여 설정을 변경할 수 있습니다.

완료되면 "Install Gogs" 버튼을 누르십시오. 설치가 즉시 수행되고 완료되면 로그인 페이지로 리디렉션됩니다.

지금 등록 링크를 클릭합니다.

Ubuntu 18.04 : Gogs 설치, 구성 방법, 예제, 명령어 2

 

처음 등록된 사용자는 Admin 그룹에 자동으로 추가됩니다.

 Ubuntu 컴퓨터에 Gogs가 설치되었습니다.

 

 

 

Nginx를 SSL 종료 프록시로 구성

이 단계는 선택 사항이지만 권장됩니다. Nginx를 역방향 프록시로 사용하려면 서버 공용 IP를 가리키는 도메인 또는 하위 도메인이 있습니다. gogs.example.com을 사용할 것입니다.

먼저 이전 포스팅에 따라 Nginx를 설치하고 무료 SSL 인증서를 생성하십시오.

완료되면 텍스트 편집기를 열고 도메인 서버 블록 파일을 편집합니다.

# /etc/nginx/sites-enabled/gogs.example.com

server {
    listen 80;
    server_name gogs.example.com;

    include snippets/letsencrypt.conf;
    return 301 https://gogs.example.com$request_uri;
}

server {
    listen 443 ssl http2;
    server_name gogs.example.com;

    proxy_read_timeout 720s;
    proxy_connect_timeout 720s;
    proxy_send_timeout 720s;

    client_max_body_size 50m;

    # Proxy headers
    proxy_set_header X-Forwarded-Host $host;
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    proxy_set_header X-Forwarded-Proto $scheme;
    proxy_set_header X-Real-IP $remote_addr;

    # SSL parameters
    ssl_certificate /etc/letsencrypt/live/gogs.example.com/fullchain.pem;
    ssl_certificate_key /etc/letsencrypt/live/gogs.example.com/privkey.pem;
    ssl_trusted_certificate /etc/letsencrypt/live/gogs.example.com/chain.pem;
    include snippets/letsencrypt.conf;
    include snippets/ssl.conf;

    # log files
    access_log /var/log/nginx/gogs.example.com.access.log;
    error_log /var/log/nginx/gogs.example.com.error.log;

    # Handle / requests
    location / {
       proxy_redirect off;
       proxy_pass http://127.0.0.1:3000;
    }
}

 

 

gogs.example.com을 Gogs 도메인으로 바꾸고 SSL 인증서 파일의 올바른 경로를 설정해야 합니다. 모든 HTTP 요청이 HTTPS로 리디렉션됩니다.

Nginx 서비스를 다시 시작하여 변경 내용을 적용합니다.

sudo systemctl restart nginx

 

 

다음으로, 우리는 Gogs 도메인과 루트 URL을 변경해야 합니다. 이렇게 하려면 구성 파일을 열고 다음 줄을 편집하십시오.

# /home/git/gogs/custom/conf/app.ini

[server]
DOMAIN           = gogs.example.com
ROOT_URL         = https://gogs.example.com/

 

 

다음을 입력하여 Gogs 서비스를 다시 시작합니다.

sudo systemctl restart gogs

 

 

이 시점에서 Gogs가 구성되고 https://gogs.example.com에서 액세스할 수 있습니다.

 

 

전자 메일 알림을 구성

Gogs가 알림 이메일을 보낼 수 있도록 하려면 Postfix를 설치하거나 SendGrid, MailChimp, MailGun 또는 SES와 같은 일부 트랜잭션 메일 서비스를 사용할 수 있습니다.

이메일 알림을 사용하려면 구성 파일을 열고 다음 줄을 편집하십시오.

# /home/git/gogs/custom/conf/app.ini
[mailer]
ENABLED = true
HOST    = SMTP_SERVER:SMTP_PORT
FROM    = SENDER_EMAIL
USER    = SMTP_USER
PASSWD  = YOUR_SMTP_PASSWORD

 

 

올바른 SMTP 서버 정보를 넣었는지 확인합니다.

변경 내용을 적용하려면 Gogs 서비스를 다시 시작하십시오.

sudo systemctl restart gogs

 

 

또한 Gogs는 웹 후크를 생성하여 Slack에 연결하고 Slack 채널에 알림을 보낼 수 있도록 합니다.

 

 

 

Gogs를 업그레이드

Gogs를 업그레이드하려면 몇 가지 수동 단계가 필요합니다.

먼저 Gogs 서비스를 중지하십시오.

sudo systemctl stop gogs

 

 

Gogs 설치 디렉토리의 이름을 변경합니다.

sudo mv /home/git/gogs{,_old}

 

 

최신 Gogs 버전을 다운로드하고 /home/git 디렉토리로 이동합니다.

VERSION=<THE_LATEST_GOGS_VERSION>
wget https://dl.gogs.io/${VERSION}/gogs_${VERSION}_linux_amd64.tar.gz -P /tmp
sudo tar xf /tmp/gogs_*_linux_amd64.tar.gz -C /home/git

 

 

실제 Gogs 릴리스 버전으로 VERSION을 변경해야 합니다.

다음 rsync 명령을 사용하여 사용자 정의, 데이터, 로그 디렉터리를 추출된 디렉토리에 복사합니다.

sudo rsync -a /home/git/gogs_old/{custom,data,log,gogs.db} /home/git/gogs/

 

 

마지막으로 Gogs 서비스를 시작합니다.

sudo systemctl restart gogs

 

반응형