본문 바로가기
-----ETC-----/C++ 고급 프로그래밍과 응용 프로젝트 시리즈

[C++ 고급 프로그래밍과 응용 프로젝트 시리즈] Day 21: 프로젝트 1 - 배포 및 유지보수

by cogito21_cpp 2024. 8. 1.
반응형

배포 및 유지보수

웹 서버를 성공적으로 구현하고 테스트한 후, 실제 환경에 배포하고 유지보수하는 단계가 필요합니다. 오늘은 C++로 구현한 웹 서버를 배포하고 유지보수하는 방법에 대해 학습하겠습니다.

배포

배포는 소프트웨어를 실제 환경에 설치하고 설정하여 사용자가 접근할 수 있도록 하는 과정입니다.

 

1. 빌드 및 패키징

먼저, 웹 서버를 배포할 수 있도록 빌드하고 패키징해야 합니다. 이를 위해 CMake를 사용하여 빌드 시스템을 설정합니다.

 

CMakeLists.txt

프로젝트의 루트 디렉토리에 CMakeLists.txt 파일을 생성하고 다음 내용을 추가합니다.

cmake_minimum_required(VERSION 3.10)
project(WebServer)

set(CMAKE_CXX_STANDARD 17)

add_executable(webserver
    src/main.cpp
    src/server.cpp
    src/request.cpp
    src/response.cpp
    src/router.cpp
    src/logger.cpp
    src/thread_pool.cpp
)

target_include_directories(webserver PRIVATE src)

 

빌드 및 패키징을 위해 다음 명령어를 사용합니다.

mkdir build
cd build
cmake ..
make

 

이 명령어는 build 디렉토리를 생성하고, CMake를 사용하여 빌드 파일을 생성한 후, make를 사용하여 프로젝트를 빌드합니다.

 

2. 배포 환경 설정

배포 환경을 설정합니다. 여기서는 간단한 배포를 위해 서버 실행 파일을 특정 디렉토리로 복사하고, 필요한 설정 파일을 배포합니다.

# 배포 디렉토리 생성
mkdir -p /opt/webserver

# 서버 실행 파일 및 설정 파일 복사
cp build/webserver /opt/webserver/
cp -r www /opt/webserver/

 

3. 서비스 설정

서버를 시스템 서비스로 설정하여 서버가 시스템 시작 시 자동으로 실행되도록 설정합니다.

 

서비스 설정 파일 생성

/etc/systemd/system/webserver.service 파일을 생성하고 다음 내용을 추가합니다.

[Unit]
Description=Simple C++ Web Server

[Service]
ExecStart=/opt/webserver/webserver
Restart=always
User=nobody
Group=nogroup

[Install]
WantedBy=multi-user.target

 

서비스를 활성화하고 시작합니다.

sudo systemctl daemon-reload
sudo systemctl enable webserver
sudo systemctl start webserver

 

 

유지보수

유지보수는 소프트웨어가 운영되는 동안 발생할 수 있는 문제를 해결하고, 성능을 개선하며, 새로운 기능을 추가하는 과정입니다.

 

1. 로그 모니터링

서버의 로그 파일을 모니터링하여 문제를 파악하고 해결합니다.

tail -f /opt/webserver/server.log

 

2. 서버 상태 점검

서버의 상태를 점검하고 필요한 경우 서버를 재시작하거나 설정을 변경합니다.

# 서버 상태 확인
sudo systemctl status webserver

# 서버 재시작
sudo systemctl restart webserver

# 서버 중지
sudo systemctl stop webserver

 

3. 성능 모니터링

서버의 성능을 모니터링하여 성능 저하를 예방하고, 필요한 경우 성능을 최적화합니다.

# CPU 사용률 모니터링
top

# 메모리 사용률 모니터링
free -m

# 네트워크 트래픽 모니터링
ifstat

 

 

유지보수 및 배포 예제

이제 웹 서버를 빌드하고 배포하는 과정을 요약합니다.

 

CMakeLists.txt

cmake_minimum_required(VERSION 3.10)
project(WebServer)

set(CMAKE_CXX_STANDARD 17)

add_executable(webserver
    src/main.cpp
    src/server.cpp
    src/request.cpp
    src/response.cpp
    src/router.cpp
    src/logger.cpp
    src/thread_pool.cpp
)

target_include_directories(webserver PRIVATE src)

 

서비스 설정 파일

/etc/systemd/system/webserver.service

[Unit]
Description=Simple C++ Web Server

[Service]
ExecStart=/opt/webserver/webserver
Restart=always
User=nobody
Group=nogroup

[Install]
WantedBy=multi-user.target

 

빌드 및 배포 명령어

mkdir build
cd build
cmake ..
make

mkdir -p /opt/webserver
cp build/webserver /opt/webserver/
cp -r www /opt/webserver/

sudo systemctl daemon-reload
sudo systemctl enable webserver
sudo systemctl start webserver

 

이제 서버가 시스템 서비스로 설정되어 시스템 시작 시 자동으로 실행됩니다. 로그 모니터링과 서버 상태 점검을 통해 서버의 상태를 지속적으로 모니터링할 수 있습니다.

 

이제 21일차의 학습을 마쳤습니다. 웹 서버의 배포 및 유지보수 방법에 대해 학습하고 구현해보았습니다.

질문이나 피드백이 있으면 언제든지 댓글로 남겨 주세요. 내일부터는 "Boost 라이브러리 소개 및 활용"에 대해 학습하겠습니다.

반응형