CentOS에서 Nginx 설치 및 부팅 시 자동 시작 설정

Nginx 공식 다운로드 페이지: https://nginx.org/en/download.html

  1. 필수 의존성 설치
yum install gcc-c++  # C++ 컴파일러 설치
yum -y install pcre-devel openssl-devel  # 정규식 및 SSL 라이브러리
yum -y install wget net-tools zlib-devel  # 보조 도구 설치
  1. Nginx 소스 아카이브 다운로드
cd /usr/local/
wget https://nginx.org/download/nginx-1.28.3.tar.gz
  1. 압축 해제 및 디렉터리 이동
tar -zxvf nginx-1.28.3.tar.gz
cd nginx-1.28.3
  1. 설치 경로 설정 및 컴파일
./configure --prefix=/usr/local/nginx  # 설치 위치 지정
make && make install  # 빌드 및 설치
  1. 서비스 실행 및 확인
cd /usr/local/nginx/sbin
./nginx  # 서비스 시작
ps -ef | grep nginx  # 프로세스 확인
  1. 방화벽 설정
firewall-cmd --permanent --add-port=80-81/tcp
systemctl restart firewalld  # 설정 적용
  1. 시스템 부팅 시 자동 실행 구성 7.1. init.d 스크립트 생성
cd /etc/init.d/
touch nginx  # 초기화 스크립트 생성

다음 내용을 nginx 파일에 입력:

#!/bin/sh
#
# 웹 서버 관리 스크립트
#
# chkconfig: - 85 15
# description: HTTP(S) 서버 및 프록시 관리
# processname: web_server

. /etc/rc.d/init.d/functions
. /etc/sysconfig/network

[ "$NETWORKING" = "no" ] && exit 0

web_server="/usr/local/nginx/sbin/nginx"
service_name=$(basename $web_server)
CONFIG_FILE="/usr/local/nginx/conf/nginx.conf"
LOCK_FILE="/var/lock/subsys/nginx"

start() {
  [ -x $web_server ] || exit 5
  [ -f $CONFIG_FILE ] || exit 6
  echo -n $"Starting $service_name: "
  daemon $web_server -c $CONFIG_FILE
  retval=$?
  echo
  [ $retval -eq 0 ] && touch $LOCK_FILE
  return $retval
}

stop() {
  echo -n $"Stopping $service_name: "
  killproc $service_name -QUIT
  retval=$?
  echo
  [ $retval -eq 0 ] && rm -f $LOCK_FILE
  return $retval
}

restart() {
  configtest || return $?
  stop
  start
}

reload() {
  configtest || return $?
  echo -n $"Reloading $service_name: "
  killproc $web_server -HUP
  RETVAL=$?
  echo
}

configtest() {
  $web_server -t -c $CONFIG_FILE
}

rh_status() {
  status $service_name
}

case "$1" in
start)
  rh_status_q && exit 0
  $1
  ;;
stop)
  rh_status_q || exit 0
  $1
  ;;
restart|configtest)
  $1
  ;;
reload)
  rh_status_q || exit 7
  $1
  ;;
force-reload)
  restart
  ;;
status)
  rh_status
  ;;
*)
  echo $"Usage: $0 {start|stop|status|restart|reload|configtest}"
  exit 2
esac

7.2. 권한 설정 및 서비스 등록

chmod +x /etc/init.d/nginx  # 실행 권한 부여
chkconfig --add nginx  # 서비스 등록
chkconfig --level 345 nginx on  # 부팅 시 자동 시작
  1. 경로 설정 변경 방법
cd /usr/local/nginx/conf
vi nginx.conf  # 설정 파일 편집

서버 루트 경로 수정 예시:

server {
    listen 80;
    server_name example.com;
    location / {
        root /path/to/your/upload/directory;
        index index.html;
    }
}

태그: CentOS nginx init.d systemd firewall

10월 9일 14:48에 게시됨