728x90
반응형

사전 준비

소스 코드를 컴파일하려면 C 컴파일러와 Nginx 의존성 라이브러리가 필요합니다. 

 

sudo dnf groupinstall "Development Tools" -y
sudo dnf install pcre-devel zlib-devel openssl-devel -y

 

1. Nginx 소스 다운로드 및 로컬 설치

설치하려는 디렉토리로 이동해서 Nginx 를 다운로드 받아 아래 절차에 따라 설치를 진행 합니다. 

 

# 1. 홈 디렉토리로 이동
cd /home/qadoc/

# 2. Nginx 소스 다운로드 (최신 안정화 버전 1.24.0 기준, 필요시 버전 변경)
wget http://nginx.org/download/nginx-1.24.0.tar.gz

# 3. 압축 해제 및 폴더 이동
tar -zxvf nginx-1.24.0.tar.gz
cd nginx-1.24.0/

# 4. 설치 환경 설정 (configure)
# --prefix 옵션이 핵심입니다. 이 경로에 Nginx가 설치됩니다.
# 홈 디렉토리 아래의 nginx 이라는 폴더에 설치하도록 지정합니다.
./configure --prefix=$HOME/nginx --with-http_ssl_module

# 5. 컴파일 및 설치
make
make install

 

  • 설치가 완료 되면 다운로드 받은 파일은 삭제 해도 됩니다. 

 

2. Nginx 설정 변경 (포트 및 경로 설정)

일반 사용자는 1~1023번(Well-known ports, 예: 80, 443) 포트를 사용할 수 없습니다.

따라서 1024번 이상의 포트(예: 8080, 8888 등)로 설정해야 합니다.

로컬에 설치된 Nginx의 설정 파일을 엽니다.

 

vi ~/nginx/conf/nginx.conf
  • nginx.conf
# worker 프로세스 설정 (로컬 계정이므로 user 지시어는 사용하지 않음)
worker_processes  1;

# 에러 로그 경로 (로컬 폴더 내에 저장됨)
error_log  logs/error.log;
pid        logs/nginx.pid;

events {
    worker_connections  1024;
}

http {
    include       mime.types;
    default_type  application/octet-stream;
    
    # 접근 로그 경로
    access_log  logs/access.log;

    sendfile        on;
    keepalive_timeout  65;

    server {
        # 일반 사용자가 열 수 있는 포트 (예: 8081)
        listen       8081;
        server_name  localhost;

        # MkDocs 빌드 파일이 위치할 절대 경로 지정
        # (예: /home/myuser/mkdocs_site)
        location / {
            root   /home/qadoc/mkdocs_site;
            index  index.html index.htm;
        }

        error_page   500 502 503 504  /50x.html;
        location = /50x.html {
            root   html;
        }
    }
}
  • 파일 설정이 완료 되었다면 설정상 문제 가 없는지 아래 명령으로 확인 합니다. 
$ ~/nginx/sbin/nginx -t
nginx: the configuration file /home/qadoc/nginx/conf/nginx.conf syntax is ok
nginx: configuration file /home/qadoc/nginx/conf/nginx.conf test is successful
  • 명령
# 설정 파일 문법 테스트
~/nginx/sbin/nginx -t

# Nginx 백그라운드 실행
~/nginx/sbin/nginx

# Nginx 프로세스 확인(정상 기동) 
ps -ef | grep nginx
  • Nginx 기동/중지 스크립트 작성 
    • 조작을 쉽게 하기위해 스크립트를 만듭니다. 
    • 사용 방법
      • 시작: ./manage_nginx.sh start
      • 중지: ./manage_nginx.sh stop
      • 설정 재적용: ./manage_nginx.sh reload
      • 재시작: ./manage_nginx.sh restart
      • 상태 확인: ./manage_nginx.sh status
    • 이제부터는 복잡한 경로를 입력할 필요 없이, 아래처럼 스크립트 하나로 Nginx를 쉽게 제어할 수 있습니다.
#!/bin/bash

# Nginx 실행 파일 경로를 변수로 지정합니다.
# 경로가 다르다면 이 부분을 수정해 주세요.
NGINX_BIN="$HOME/nginx/sbin/nginx"

# 실행 인자($1)가 없는 경우 안내 메시지를 출력합니다.
if [ -z "$1" ]; then
    echo "사용법: $0 {start|stop|reload|restart|status}"
    exit 1
fi

case "$1" in
    start)
        echo "Nginx를 시작합니다..."
        $NGINX_BIN
        echo "완료."
        ;;
    stop)
        echo "Nginx를 중지합니다..."
        $NGINX_BIN -s stop
        echo "완료."
        ;;
    reload)
        echo "Nginx 설정을 무중단으로 재적용합니다..."
        $NGINX_BIN -s reload
        echo "완료."
        ;;
    restart)
        echo "Nginx를 재시작합니다..."
        $NGINX_BIN -s stop
        sleep 2  # 프로세스가 완전히 죽을 때까지 2초 대기
        $NGINX_BIN
        echo "완료."
        ;;
     status)
        # 1. 현재 쉘을 실행 중인 사용자 이름 가져오기
        CURRENT_USER=$(whoami)

        # 2. 본인 계정($CURRENT_USER)으로 실행된 nginx 마스터 프로세스 찾기
        #    (grep "[n]ginx" 기법을 사용하여 grep 명령어 자체는 결과에서 제외)
        NGINX_PS=$(ps -u "$CURRENT_USER" -o pid,user,args | grep "[n]ginx: master process")

        # 3. 결과 문자열의 길이가 0이 아니면(-n) 실행 중인 것으로 판단
        if [ -n "$NGINX_PS" ]; then
            echo "현재 Nginx가 [실행 중]입니다."
            echo "--- [프로세스 정보] ---"
            echo "  PID USER     COMMAND"

            # 본인 계정의 전체 nginx 프로세스(master + worker 등)를 깔끔하게 출력
            ps -u "$CURRENT_USER" -o pid,user,args | grep "[n]ginx"
            echo "-----------------------"
        else
            echo "현재 Nginx가 [중지] 상태입니다."
        fi
        ;;
    *)
        echo "지원하지 않는 명령어입니다: $1"
        echo "사용법: $0 {start|stop|reload|restart|status}"
        exit 1
        ;;
esac

 

 

 

1. 기존 서비스 중지 및 삭제

 

sudo systemctl stop gitlab-runner
sudo gitlab-runner uninstall

 

2. 새로운 토큰으로 Runner 등록

올려주신 명령어에 sudo와 --executor shell 옵션을 추가하여 한 번에 등록을 끝냅니다.

 

sudo gitlab-runner register \
  --url "http://192.168.11.11:9820" \
  --token "glrt-xLXY_4xTc0Qafddpwuf" \
  --executor "shell"

 

3. 계정으로 서비스 설치 및 시작

여기가 핵심입니다. 러너를 다시 시스템 서비스로 등록할 때, 실행 주체(--user)를 qadoc으로 지정하고 작업 폴더도 qadoc의 홈 디렉토리로 맞춰줍니다.

 

sudo gitlab-runner install --user qadoc --working-directory /home/qadoc
sudo systemctl start gitlab-runner
sudo systemctl enable gitlab-runner
728x90
반응형

+ Recent posts