[카테고리:] RedHat

  • Firewalld 방화벽 설정 가이드

    Firewalld 방화벽 설정 가이드

    📌 Firewalld 상태 확인 및 관리

    sudo systemctl status firewalld
    • active (running)이면 동작 중
    • inactive (dead)이면 정지 상태

    📌 Firewalld 시작 및 종료

    sudo systemctl start firewalld   # 방화벽 시작
    sudo systemctl stop firewalld    # 방화벽 정지
    sudo systemctl restart firewalld # 방화벽 재시작
    sudo systemctl enable firewalld  # 부팅 시 자동 시작 설정
    sudo systemctl disable firewalld # 부팅 시 자동 시작 해제

    📌 방화벽 규칙 설정 및 관리

    sudo firewall-cmd --list-all
    • 현재 활성화된 방화벽 영역(zone)과 적용된 규칙을 확인할 수 있음.

    📌 방화벽 영역(Zone) 확인

    sudo firewall-cmd --get-active-zones

    📌 방화벽 영역(Zone) 디폴트 존 변경

    # 디폴트 존 변경.
    sudo firewall-cmd --set-default-zone=block
    
    # 특정 인터페이스 block 존에 바인딩.
    sudo firewall-cmd --zone=block --change-interface="인터페이스이름"
    
    # 변경 사항 영구 적용.
    sudo firewall-cmd --runtime-to-permanent

    📌 특정 포트 허용

    sudo firewall-cmd --zone=public --add-port=8080/tcp --permanent
    • — zone=public: public 영역에 적용
    • — add-port=8080/tcp: 8080 포트의 TCP 트래픽 허용
    • — permanent: 영구 적용 (재부팅해도 유지됨)

    📌 즉시 적용하려면 방화벽 다시 로드

    sudo firewall-cmd --reload

    📌 특정 서비스 허용

    Firewalld는 서비스 단위로 접근을 제어할 수 있음. 예를 들어, SSH(22번 포트)를 허용하려면:

    sudo firewall-cmd --zone=public --add-service=ssh --permanent
    sudo firewall-cmd --reload

    서비스 목록 확인

    sudo firewall-cmd --get-services

    포트 차단

    sudo firewall-cmd --zone=public --remove-port=8080/tcp --permanent
    sudo firewall-cmd --reload

    서비스 차단

    sudo firewall-cmd --zone=public --remove-service=http --permanent
    sudo firewall-cmd --reload

    ➡️ Example

    Block 존 ➡️ ipv4로 내가 열고 싶은 IP/32, Port, TCP 열려면..

    sudo firewall-cmd --zone=block --add-rich-rule='rule family="ipv4" source address="IP/32" port port="port번호" protocol="tcp" accept' --permanent
  • CUDA 및 NVIDIA 드라이버를 RHEL 8에 설치하는 방법

    CUDA 및 NVIDIA 드라이버를 RHEL 8에 설치하는 방법

    🚀 CUDA 및 NVIDIA 드라이버를 RHEL 8에 설치하는 방법

    이 포스트는 RHEL 8 기반 시스템에서 CUDA 개발 환경과 NVIDIA 드라이버를 수동으로 구축하는 과정을 정리한 것입니다. 로컬 패키지 저장소 설정부터 GPU 드라이버, CUDA 설치까지의 전체 흐름을 담았습니다.

    📁 1. 로컬 YUM 리포지터리 구성

    ISO 또는 USB를 통해 마운트된 RHEL 설치 미디어에서 리포지터리를 복사하고 설정합니다.

    mkdir /local_repo
    cp -r /run/media/User/RHEL-8–4–0-/AppStream /local_repo/
    cp -r /run/media/User/RHEL-8–4–0-/BaseOS /local_repo/
    chown -R User:User /local_repo/AppStream /local_repo/BaseOS

    리포지터리 설정 파일 작성 (/etc/yum.repos.d/local.repo):

    [AppStream]
    name=AppStream
    baseurl=file:///local_repo/AppStream
    enabled=1
    gpgcheck=0
    
    [BaseOS]
    name=BaseOS
    baseurl=file:///local_repo/BaseOS
    enabled=1
    gpgcheck=0

    🌐 언어 및 지역 설정 (한국어) — 선택

    sudo dnf install glibc-locale-source glibc-langpack-ko -y
    sudo localectl set-locale LANG=ko_KR.UTF-8
    locale

    🛠️ 필수 패키지 및 개발 도구 설치

    sudo dnf groupinstall "Development Tools" -y
    sudo dnf install -y epel-release
    sudo dnf install -y gcc kernel-devel-$(uname -r) kernel-headers-$(uname -r) dkms elfutils-libelf-devel

    🔌 NVIDIA 드라이버 설치 (nouveau 비활성화 포함)

    sudo bash -c 'echo -e "blacklist nouveau\noptions nouveau modeset=0" > /etc/modprobe.d/blacklist-nouveau.conf'
    sudo dracut --force
    sudo reboot
    
    # 재부팅 후 nouveau가 비활성화되었는지 확인:
    lsmod | grep nouveau  # 출력 없으면 성공

    🖥️ NVIDIA 드라이버 설치 (.run 파일 방식)

    wget https://us.download.nvidia.com/XFree86/Linux-x86_64/535.154.05/NVIDIA-Linux-x86_64-535.154.05.run
    chmod +x NVIDIA-Linux-x86_64-535.154.05.run
    
    # GUI 모드 종료 (텍스트 모드로 부팅)
    sudo systemctl set-default multi-user.target
    sudo reboot
    
    # 재부팅 후 설치:
    sudo ./NVIDIA-Linux-x86_64-535.154.05.run
    
    # 설치 완료 후 GPU 확인:
    nvidia-smi

    🧠 CUDA 설치 (12.2 버전)

    sudo dnf config-manager --add-repo=https://developer.download.nvidia.com/compute/cuda/repos/rhel8/x86_64/cuda-rhel8.repo
    sudo dnf clean all
    sudo dnf makecache
    sudo dnf install -y cuda-12-2
    sudo dnf install -y cuda-toolkit-12-2

    🔧 CUDA 환경 변수 설정

    sudo bash -c 'cat <<EOF > /etc/profile.d/cuda.sh
    export PATH=/usr/local/cuda-12.2/bin:\$PATH
    export LD_LIBRARY_PATH=/usr/local/cuda-12.2/lib64:\$LD_LIBRARY_PATH
    EOF'
    
    source /etc/profile.d/cuda.sh

    ✅ 설치 확인

    nvidia-smi         # GPU 상태 확인
    nvcc --version     # CUDA 컴파일러 버전 확인

    🔄 GUI 모드 복원 (필요시)

    sudo systemctl set-default graphical.target
    sudo reboot

    📌 참고 사항

    • nouveau 모듈이 비활성화되지 않으면 NVIDIA 드라이버 설치 시 에러가 발생합니다.
    • .run 방식 드라이버 설치는 커널 업데이트 시 재설치가 필요할 수 있습니다.
    • CUDA 설치 이후 /usr/local/cuda 심볼릭 링크를 확인하면 다른 버전으로 전환도 가능

  • 리눅스환경에서 Firewalld 이용하기

    리눅스환경에서 Firewalld 이용하기

    📌 Firewalld 상태 확인

    firewall-cmd --state
    firewall-cmd --get-default-zone

    📌 기본 존 변경

    firewall-cmd --set-default-zone=block

    📌 현재 활성화된 존 확인

    firewall-cmd --list-all

    📌 서비스 허용

    firewall-cmd --zone=block --add-service=<서비스명>
    firewall-cmd --zone=block --add-service=http

    📌 block 존에서 IP와 포트 허용 설정

    firewall-cmd --zone=block --add-rich-rule='rule family="ipv4" source address="IP" port port="포트" protocol="tcp" accept'

    ✅ 변경사항을 영구적으로 저장

    firewall-cmd --runtime-to-permanent

    ✅ Firewalld 재시작

    systemctl restart firewalld
  • CentOS 7에서 Nginx 설치 및 설정 방법

    CentOS 7에서 Nginx 설치 및 설정 방법

    CentOS 7에서 Nginx 설치 및 설정 방법

    • Wget 설치
    yum install -y wget
    • 필수 패키지 설치
    sudo yum install gcc pcre-devel zlib-devel make unzip openssl-devel
    • Nginx 1.26.2 소스 코드 다운로드
    wget http://nginx.org/download/nginx-1.26.2.tar.gz
    • 압축 해제 및 디렉토리 이동
    tar -zxvf nginx-1.26.2.tar.gz
    rm -rf nginx-1.26.2.tar.gz
    cd nginx-1.26.2
    • Nginx 컴파일 설치
    ./configure --with-http_ssl_module
    make
    sudo make install
    • Nginx 실행
    sudo /usr/local/nginx/sbin/nginx

    실행이 되면 잘 설치된 것. 잘 설치 되었으면 시스템 등록을 하기 위해 프로세스 kill

    ps -ef | grep nginx
    
    # 해서 나온 프로세스를 kill.
    kill -9 "프로세스 넘버"

    자동으로 프로세스 올라올 수 있도록 시스템 등록

    • Nginx.service 파일 생성
    sudo vi /etc/systemd/system/nginx.service
    
    [Unit]
    Description=The NGINX HTTP and reverse proxy server
    After=network.target
    [Service]
    Type=forking
    PIDFile=/usr/local/nginx/logs/nginx.pid
    ExecStartPre=/usr/local/nginx/sbin/nginx -t
    ExecStart=/usr/local/nginx/sbin/nginx
    ExecReload=/usr/local/nginx/sbin/nginx -s reload
    ExecStop=/usr/local/nginx/sbin/nginx -s stop
    PrivateTmp=true
    [Install]
    WantedBy=multi-user.target
    • Systemd 데몬 reload
    sudo systemctl daemon-reload

    Nginx 서비스 시작 및 부팅 시 자동 실행 설정

    sudo systemctl start nginx
    sudo systemctl enable nginx
    • Nginx 상태 확인
    sudo systemctl status nginx

    Nginx 버전 확인하는 법

    /usr/local/nginx/sbin/nginx -v
  • CentOS 7 YUM Update 실패 해결 방법

    CentOS 7 YUM Update 실패 해결 방법

    CentOS 7 YUM Update 실패 해결 방법

    yum update 할 때 실패하는 경우가 있음

    이럴 때,

    # cd /etc/yum.repos.d/
    # vi CentOS-Base.repo

    을 변경해주면 된다

    [base]
    name=CentOS-$releasever - Base
    baseurl=http://mirror.kakao.com/centos/$releasever/os/$basearch/
    gpgcheck=1
    enabled=1
    gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7
    #released updates
    [updates]
    name=CentOS-$releasever - Updates
    # kakao
    baseurl=http://mirror.kakao.com/centos/$releasever/updates/$basearch
    gpgcheck=1
    enabled=1
    gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7
    #additional packages that may be useful
    [extras]
    name=CentOS-$releasever - Extras
    baseurl=http://centos.mirror.cdnetworks.com/$releasever/extras/$basearch
    gpgcheck=0
    gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7
    #additional packages that extend functionality of existing packages
    [centosplus]
    name=CentOS-$releasever - Plus
    baseurl=http://centos.mirror.cdnetworks.com/$releasever/centosplus/$basearch
    gpgcheck=1
    enabled=0
    gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7
    #contrib - packages by Centos Users
    [contrib]
    name=CentOS-$releasever - Contrib
    baseurl=http://centos.mirror.cdnetworks.com/$releasever/contrib/$basearch
    gpgcheck=1
    enabled=0
    gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7

    위와 같은 내용으로 repo 파일을 변경해주자

  • CentOS 7 환경에서 PM2 설치

    CentOS 7 환경에서 PM2 설치

    CentOS 7 환경에서 PM2 설치

    NPM 설치

    npm install pm2 -g

    설치 확인

    pm2 list
  • Node.js & npm 설치 가이드 for CentOS 7

    Node.js & npm 설치 가이드 for CentOS 7

    Node.js & npm 설치 가이드 for CentOS 7

    epel repository 추가

    yum install epel-release

    npm, nodejs 설치

    yum install -y npm nodejs

    버전확인

    node -v
    npm -v

    특정 버전 설치

    $ curl -sL https://rpm.nodesource.com/setup_10.x | sudo -E bash -
    # setup_9.x 또는 setup_8.x 등으로 입력
    
    # 설치 npm 도 설치됨.
    $ yum install nodejs -y
  • Linux 환경에서 python3.8에서 pip 확인 및 설치하기

    Linux 환경에서 python3.8에서 pip 확인 및 설치하기

    Linux 환경에서 python3.8에서 pip 확인 및 설치하기

    • pip가 설치되어 있는지 확인
    python3.8 -m pip --version
    • pip가 설치되어 있지 않다면, ensurepip 모듈을 사용하여 설치
    python3.8 -m ensurepip --upgrade
    • pip를 사용하여 패키지를 설치
    python3.8 -m pip install requests
  • CentOS 7에서 AWS EC2 접속하는 방법

    CentOS 7에서 AWS EC2 접속하는 방법

    CentOS 7에서 AWS EC2 접속하는 방법

    AWS EC2 접속

    > $ cd ‘키페어가 저장된 경로’

    • cd는 change directory의 준말로, 작업 중인 디렉토리의 위치를 변경해주는 명령어.

    1. 키 페어 파일이 있는 폴더를 디렉토리로 변경.

    # pem 파일 권한 변경

    > $ chmod 60 ‘키 페어 파일 경로’

    • chmod는 change mod의 준말로, 파일의 모드 (- 권한 :읽기, 쓰기, 실행)를 변경하는 명령어
    • 숫자 세 개의 의미는 나/그룹/전체에 대한 권한을 의미.
      • read(4), write(2), execute(1) 가 있는데 이 숫자들 합의 조합으로 권한.

    키 페어 파일의 권한을 600으로 수정해주는 명령어!

    내 키 페어 파일의 이름이 “purple-backend-server”이기 때문에 해당 명령어를 입력해주었다.

    **400**은 “나”에게만 “읽기(4)” 권한을 주는 것이고
    **600**은 “나”에게만 “읽기, 쓰기(4 + 2)” 권한을 주는 것.

    # ssh 프로토콜을 이용해 인스턴스에 접속.

    > $ ssh -i ‘키 페어 파일 경로’ 사용자 이름’@’인스턴스의 IPv4 주소나 도메인’

  • Linux 환경에서 PM2 사용자 계정 설정하기

    Linux 환경에서 PM2 사용자 계정 설정하기

    Linux 환경에서 PM2 사용자 계정 설정하기

    yum update # 먼저 하지말자 나중에
    # wget 설치 확인.
    yum install wget
    
    # nvm 다운로드 및 설치.
    wget -qO- https://raw.githubusercontent.com/nvm-sh/nvm/v0.35.2/install.sh | bash
    
    # 설치가 완료되면 .bashrc 파일에 아래 설정이 추가 되어짐.
    # .bashrc export NVM_DIR="$HOME/.nvm"
    
    [ -s "$NVM_DIR/nvm.sh" ] && \. "$NVM_DIR/nvm.sh" # This loads nvm 
    [ -s "$NVM_DIR/bash_completion" ] && \. "$NVM_DIR/bash_completion" 
    
    # This loads nvm bash_completion
    # nvm 설정 적용.
    source ~/.bashrc
    
    # nvm 설치 버전 확인.
    nvm - version
    # 특정 버전 설치.
    nvm use 16.17.0
    # npm, nodejs 설치 확인.
    # 정상적으로 설치 되어졌는지 확인.
    node -v 
    npm -v

    PM2 설치

    npm install pm2 -g
    
    # -g : global 설치

    PM2-logrotate 설치

    pm2 install pm2-logrotate

    마지막으로, 설치가 잘되어졌는지 확인