ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 웹 프로젝트 배포하기 - 리눅스 서버 구성
    기타/배포 2024. 12. 15. 22:30
    728x90
    반응형

    웹 프로젝트 배포하기

     

    내가 스프링부트로 만든 웹 프로젝트를 리눅스 서버에 배포할 것이다.

    리눅스 서버에 톰캣을 설치하고, 톰캣 위에 war 파일을 올려서 배포할 것이다.

    톰캣은 WAS(Web Application Server)이지만, 기본적으로 웹서버(HTTP 서버) 기능도 제공한다.

    그리고 형상관리를 위해 svn으로 관리하는 것까지도 해보겠다.

     

     

    1. 왜 리눅스인가?

    많은 리눅스 배포판들은 무료로 제공된다.

    윈도우의 경우는 유료 라이센스이다.

     

    리눅스는 오픈소스이기 때문에 커스터마이징이 자유롭고,

    다양한 개발 도구와 서버 소프트웨어(예: Apache, Nginx, MySQL, Docker, Kubernetes)와 호환성이 뛰어나다.

     

    리눅스는 강력한 권한 제어 시스템(파일 및 프로세스 관리)을 갖추고 있어 보안성이 높다.

     

    그리고 현실적으로 이미 세상에 존재하는 구성들이 리눅스가 많아서,

    나도 자연스럽게 따라가려고 한다.

     

     

     

    2. 어떤 리눅스를 사용할 것인가?

    2 - 1. 종류

    크게 레드햇 계열, 데비안 계열로 나눈다.

    리눅스 서버는 주로 RHEL( Red Hat Enterprise Linux )가 사용된다.다만 RHEL은 유료이기 때문에 RHEL을 포크하여 무료로 배포하는 CentOS, Rocky Linux 등을 사용한다.

     

    패키지 관리를 yum(dnf)로 하고,
    커널이나 전반적인 패키지 버전들이 낮다.(안정성 때문에)

    데비안은 데비안 자체를 쓰는 경우는 별로 없고, 
    주로 데비안 계열 배포판인 우분투를 많이 사용한다.

    차이는 주로 배포판, 관리 도구, 패키지 관리 방식, 지원 체계 등이 있다.

    크게 보면
    레드햇 계열 리눅스는 기업 환경에서의 안정성과 지원을 중시하고, 
    Debian 계열은 주로 개인 사용자가 시스템을 커스터마이즈할 수 있는 자유로운 환경을 제공한다.

    Red Hat과 그 파생 배포판들은 기업 지원을 제공하며, 

    상용 라이선스를 통해 장기적인 보안 업데이트와 기술 지원을 받는다. 
    예를 들어, RHEL은 10년 이상의 보안 업데이트와 서비스 기간을 제공한다.

    그래서 옛날부터 서버는 레드햇이라는 공식이 있었지만, 
    요새는 데비안도 조금 쓰이는 추새라고 함

    그리고 레드햇 계열은 오라클같은 상용DB와의 지원이 잘 되고,
    데비안 계열은 mysql, mariadb 같은 오픈소스 db와 지원이 잘 된다.

     

     

    2 - 2. 로키 리눅스 채택

    레드햇 계열이다.

    CentOS는 7까지는 많이들 썼는데 8로 넘어갈 때 독자 노선을 타게 되면서 CentOS Stream으로 이름을 바꿨다.
    무료로 RHEL과 100% 동일한 환경을 제공한다는 CentOS의 존재의의에 대한 사형선고였다.

     

    이런 상황에서,

    CentOS 프로젝트의 공동설립자 중 한명이 사망한 또 다른 공동설립자의 이름을 따서 "Rocky Linux" 를 발표했다.

    요약하면 로키는 그냥 공짜 레드햇 리눅스

    추가로 리눅스마스터 자격증 시험에서 로키를 써서 좋은 것 같다.

     

     

     

    3. 로키 리눅스 설치

    먼저 리눅스 dvd.iso 파일로 가상머신 생성, 공식 사이트를 가면 다운받을 수 있다.

    가상머신을 실행하면 설치화면이 나오는데 install 적힌 것을 선택하면 설치를 시작한다.

     

    그 다음 언어를 선택하는데, 원하는 거로 하자.

    본인은 영어로 했다. 영어를 해야 문제가 생겼을 때 찾아보기가 쉬워서...

     

    이제 본격적으로 설치 옵션 설정을 할텐데,

    소프트웨어부터 고르겠다.

     

     

    3 - 1. 소프트웨어 설치 옵션

    일단 리눅스 설치하고 설정해놓은 다음부터는 리눅스 직접 안들어오고,
    호스트 PC에서 putty로 접속해서 쓸거라 GUI가 필요가 없음

     

    그리고 방법이 많은데,

    기본 설치 상태에서 필요한 것만 하나하나씩  추가하는 방식으로 가겠음
    찾아보니까 다들 이런 방식으로 한다고 한다.
    근데 요샌 다 설치되어 있는 도커 이미지를 사용하기도 한다고 한다. 

    말만 들어도 편할거 같긴 한데, 도커 잘 쓸줄 몰라서 나중에 해보겠다.

     

     

    3 - 1 - 1. Base Environment

    위에서 말한대로 환경은 기본 OS 설치만 할거다.

     

    Minimal Install
    가장 기본적인 환경으로, 운영 체제의 핵심 패키지와 명령줄 인터페이스(CLI)만 설치된다.
    서버에서 최소한의 리소스를 사용하여 동작한다.
    네트워크나 관리용으로 커스터마이징할 때 적합하다.

     

     

    3 - 1 - 2. Additional software for Selected Environment

    이건 옵션이 많은데, 하나하나 설명해주겠다.

    일단 아래 5개는 내 상황에 맞는 옵션들이다.

     

    Standard
    기본적인 시스템 관리 및 운영을 위한 필수 유틸리티와 도구들이 포함
    Minimal Install 환경에서 반드시 필요한 도구들을 제공하므로 권장

    Development Tools
    소프트웨어 개발을 위한 컴파일러와 관련 도구 포함
    프로그램 컴파일이나 개발이 필요한 경우 강력 추천.
    SVN을 설치하고 운영하려면 컴파일러와 같은 개발 도구가 필요할 수 있음

    Headless Management
    GUI 없이 원격 관리나 서버 관리에 필요한 도구 제공
    SSH, 원격 접속 관련 툴 포함
    원격 관리나 CLI 환경에서 작업한다면 추천

    System Tools
    추가적인 시스템 관리 도구 포함
    Minimal Install에 필수적인 관리 도구를 제공하므로 강력 추천

    Security Tools
    시스템 보안 강화 도구 포함
    SELinux 도구, 방화벽 설정 도구 등
    기본 보안을 강화하기 위해 권장
    >> 근데 SeLinux 설정 너무 방대해서 그냥 껐음, 나중에 알아보겠음

     

     

    이 아래 것들은 나와 상관없는 것들이다.

     

    Legacy UNIX Compatibility
    오래된 UNIX 시스템과 호환성을 유지하기 위한 라이브러리와 도구가 포함
    최신 환경에서는 거의 사용되지 않으므로 특별히 필요하지 않다면 선택하지 않아도 됨

    Console Internet Tools
    텍스트 기반의 인터넷 도구들을 제공
    Minimal Install에서 네트워크 테스트나 파일 다운로드 등으로 유용

    Container Management
    컨테이너 관리 도구(Docker, Podman 등)를 포함합니다.
    컨테이너화된 애플리케이션 배포 및 실행을 지원.
    컨테이너 기반 개발이나 배포를 할 계획이라면 필요. 아니라면 제외 가능.

    .NET Development
    .NET 애플리케이션 개발을 위한 도구와 라이브러리 포함
    .NET 기반 개발을 하지 않는다면 불필요.

    Graphical Administration Tools
    GUI 기반 관리 도구를 제공
    GUI 없는 Minimal Install 환경에서는 추천하지 않음

    Network Servers
    네트워크 서버 관련 패키지 포함
    특정 네트워크 서버를 운영할 계획이 있다면 필요
    네트워크 서버가 없으면 svn 구조를 웹으로 보여주는 기능이 있는데 그걸 못함
    근데 우린 아파치를 쓸거라서 가능

    Q. 그럼 아파치 대신 이거 쓰면 되는 거 아님?
    A. 근데 아파치는 보안 설정도 해줌

    RPM Development Tools
    RPM 패키지 빌드를 위한 도구 제공
    RPM 패키지 제작이 필요하지 않다면 불필요

    Scientific Support
    과학 계산 및 연구를 위한 라이브러리 및 도구
    과학적 계산이 주 목적이 아니라면 불필요

    Smart Card Support
    스마트카드 인증과 관련된 도구와 드라이버 제공
    스마트카드 인증이 필요하지 않다면 제외

     

     

     

    4. 디스크 파티션 설정

    자동과 수동이 있는데, 일단 자동으로 선택한다.

    이 부분의 자세한 설명이 좀 길어서,수동과의 차이는 다른 포스팅 하나로 빼서 만들것이다.

     

    4 - 1. 수동, 자동 선택

    자동 ( 잘 모르겠으면 이걸로 )
    초보자에게 권장되며, 필요한 경우 설정 후 수정 가능.

     

    4 - 2. 자동 설정 단점

    비효율적 파티션 분배
    특정 파티션(/var, /home)이 필요하거나 별도로 관리해야 하는 경우 적합하지 않음.

    커스터마이징 부족
    특정 파티션 크기를 세부적으로 설정할 수 없음.

    전체 디스크 사용
    선택한 디스크의 모든 데이터가 삭제되므로, 일부 공간만 사용하려는 경우에는 수동 설정이 필요.


    4 - 3. 수동

    직접 디스크 공간을 나눔.
    서버나 특정 환경에 맞게 최적화가 가능.


    5. root 패스워드 설정

    설치가 끝난 후에는 리눅스 서버 직접 안들어오고, 외부에서 putty로 접속해서 쓸 거니까
    Lock root account는 체크 해제하고, Allow root SSH login with passsword 는 체크하면 된다.

    여기까지만 하고 설치하면 된다.

     

     

     

    6. 네트워크 설정

    설치가 끝나서, 간단한 네트워크 설정 정도만 해두자.

     

    6 - 1. 그룹, 계정 추가

    # 그룹 추가

    sudo groupadd mgjhgroup
    


    # 계정 추가

    sudo useradd mgjhadmin
    


    # 그룹에 계정 추가

    sudo usermod -aG mgjhgroup mgjhadmin

     

    # 사용자 확인

    cat /etc/passwd  or  grep mgjhadmin
    


    #사용자가 그룹에 포함되는지 확인

    groups mgjhadmin


    # 시스템 전체 그룹 정보 확인

    cat /etc/group
    

     

     

    6 - 2. 네트워크 설정

    #주소 192.168.xxx.xx, 서브넷 마스크 255.255.255.0

    nmcli connection modify eth0 ipv4.address 192.168.xxx.xx/24
    


    #게이트웨이 192.168.xxx.xxx

    nmcli connection modify eth0 ipv4.gateway 192.168.xxx.xxx
    


    #dns서버 168.126.63.1

    nmcli connection modify eth0 ipv4.dns 168.126.63.1
    


    #고정IP

    nmcli connection modify eth0 ipv4.method manual
    


    #부팅시에 자동연결

    nmcli connection moidfy eth0 connection.autoconnect yes
    


    #네트워크 활성화

    nmcli connection up eth0
    
    728x90
    반응형

    '기타 > 배포' 카테고리의 다른 글

    웹 프로젝트 배포하기 - 톰캣 설치 후 배포  (0) 2024.12.23
Designed by Tistory.