Cent OS 삭제된 .bashrc 복구 방법

Linux/CentOS 2018. 7. 2. 17:28 by 후뤼한잉여

Cent OS 삭제된 .bashrc 복구 방법

  • 단순 기록용으로 짧게 남기는 글 입니다.

Cent OS의 경우 root와 home 두개로 파티션을 잡아놓게 되는데, root에 좀 더 용량을 부여하려다

잠깐 계산 착오로 모두 부여해서 home 파티션을 날리면서 bash 설정파일을 날려먹은 관계로.. 다시 복구한 내용을 정리합니다.

우선 원래 뭐가 있었는지 잘 모르지만, .bashrc, .bash_logout, .bash_profile, .bash_history 가 삭제된 것으로 추정되었습니다.

해결 방법

  1. 기본 설정 파일 복사

    sudo cp /etc/skel/.bash* ~/

  2. 히스토리 파일 생성

    cd ~

    sudo touch .bash_history

  3. 파일 소유자 변경

    sudo chown [계정]:[그룹] .bash*

    • 쓰기 권한이 없어서 history가 남지 않는 문제가 있는데, 쓰기권한보단 소유자를 바꾸는게 좋을것 같아서 작업을 했습니다.

  4. bash 설정 반영

    source ~/.bashrc

출처

뻘글

1) 글감은 많지만 정리하려니 엄두가 안나서 일단 패스 합니다.

2) 블로그를 다시 어떻게 운영할까 고민 중 입니다.

Let's Encrypt로 발급 받은 .pem 파일 .key와 .crt 파일로 변환하기

Linux/CentOS 2016. 3. 1. 10:05 by 후뤼한잉여

Let’s Encrypt로 발급 받은 .pem 파일 .key와 .crt 파일로 변환하기

1. 개요

오랫만에 Let’s Encrypt로 발급 받은 인증서를 갱신하려고 보니 .pem은 지원하지 않고 .key와 .crt가 필요했다.
예전에 어떻게 했는지 포스팅이나 정리한 파일이 없어 다시 한번 삽질을 하고 글로 남겨두고자 작성한다.

2. 변환하기

  1. 갱신받은 인증서를 작업할 디렉토리로 복사한다.(백업 용도)
    sudo cp /etc/letsencrypt/live/[도메인주소]/* temp
    cd temp
    
  2. .key 파일로 변환하기
    openssl rsa -in privkey.pem -text > [도메인 주소].key
    
  3. .crt 파일로 변환하기
    openssl x509 -inform PEM -in fullchain.pem -out [도메인 주소].crt
    

CentOS 7 에서 Docker 설치하기

Linux/CentOS 2015. 12. 18. 16:33 by 후뤼한잉여

CentOS 7 에서 Docker 설치하기

1. 개요

Cloud IDE 프로젝트인 Eclipse Che를 설치해보고자 도커로 이용한 설치를 진행할 때 작성 한 내용을 정리한 문서입니다.
Eclipse Che의 경우 설치를 진행 후 구동에 성공은 했지만 영어도 잘 모르기도 하거니와 크롬브라우져에서만 제대로 동작하는 등 여러가지 맘에 들지 않아 삭제했습니다.
나중에 좀 더 안정적이고 메뉴얼도 좀 다듬어질 때 쯤 시도하기록 하고 Docker 설치를 해봤던 것에 만족하며 이 글을 정리합니다.

2. 설치

  1. CentOS Kernerl 관련 업데이트
    사실 Kernerl 관련해서만 업데이트 해도 되지만 그냥 무식하게 전체 업데이트 진행했습니다.
    sudo yum update
    
  2. Docker 레파지토리 등록
    sudo tee /etc/yum.repos.d/docker.repo <<-'EOF'
    [dockerrepo]
    name=Docker Repository
    baseurl=https://yum.dockerproject.org/repo/main/centos/$releasever/
    enabled=1
    gpgcheck=1
    gpgkey=https://yum.dockerproject.org/gpg
    EOF
    
  3. Docker Engine설치
    sudo yum install docker-engine
    
  4. 사용자 계정을 docker 그룹에 추가.
    sudo usermod -aG docker [유저명]
    
  5. 로그아웃 및 재 로그인
  6. Docker 서비스 실행
    sudo service docker start
    
  • 시작시 Docker Engine 실행되도록 서비스 등록 (옵션)
    sudo chkconfig docker on
    
  • Docker 관련 간단 명령어
    • Docker 프로세스 보기 (어떤게 떠있는지, 포트는 무엇인지 정보 등..)
      docker ps
      
    • Docker 정보 보기 (설치된 Docker Engine의 버전은 뭔지, 이미지가 디스크를 얼마나 차지하는 지 등..)
      docker info
      
    • Docker 실행
      docker run [도커이름]
      
      도커 이름등은 실행할려는 도커이미지에 따라 옵션등과 함께 사용합니다.
      -d옵션은 백그라운드로 실행할 때 사용합니다.
    • Docker 종료
      docker stop [도커 컨테이너 ID]
      
  • Docker 컨테이너, 이미지 삭제 방법
    • 컨테이너 삭제
      docker rm [컨테이너명]
      
    • 이미지 삭제
      docker rmi [이미지 명]
      
  • Docker Engine삭제 방법
    sudo yum -y remove docker-engine.x86_64
    
    도커 이미지 파일, 설정파일등 삭제
    rm -rf /var/lib/docker
    

도커에 관한 정보는 도커 홈페이지를 참고 하시고, 도커 이미지에 대한 정보는 도커 허브 홈페이지 등을 참고하세요.

Let’s Encrypt 이용하여 인증서 생성하기

Linux/CentOS 2015. 12. 17. 17:31 by 후뤼한잉여

Let’s Encrypt 이용하여 인증서 생성하기

1. 개요

무료 보안 인증서인 Let’s Encrypt가 퍼블릭 베타가 나왔다는 소식을 알고 있었으나, 퍼블릭 베타인데다, 설치하려면 서버마다 git을 설치해야하므로 주저하고 있다가 gitlab 서버에서 대표로 설치하고 인증서를 옮기기로 마음먹고 설치한 내용을 정리하기 위해 작성한 문서입니다.

  • 자동으로 아파치등에 설치를 해주지만 영 꺼려져서 인증서만 발급해서 수동으로 설치하기 위해 gitlab 서버에서 진행을 했습니다.
  • Let’s Encrpyt의 경우 90일마다 인증서를 갱신을 해줘야 하는데, 자동으로 지원되는 플러그인(IIS, 아파치 등)의 경우 알아서 갱신을 해주는 장점이 있다고 합니다.

2. 설치 및 설정

  1. git 프로젝트 복사
    git clone https://github.com/letsencrypt/letsencrypt
    
  2. let’s encrypt 프로젝트 디렉토리로 이동
    cd letsencrypt
    
  3. let’s encrypt 실행
    실행 시 의존 설치파일을 자동으로 다운 받고 설치 됩니다.
    이 문서에서는 인증서만 발급 받고, 수동으로 인증을 합니다.
    먼저 테스트가 잘 되는지 확인 후 시도 하는것이 좋습니다.
    무턱 대고 하다보면 ip 제한 등이 걸릴 수 있습니다.
    -d을 이용하여 여러개의 도메인이 가능하지만 잘 안될 수 있으므로 저는 하나씩 진행했습니다.
    [테스트 해보기]
    sudo ./letsencrypt-auto certoly --manual --staging --email [이메일 주소] -d [사용할 도메인 주소]
    또는
    sudo ./letsencrypt-auto certoly --manual --server acme-staging.api.letsencrypt.org/directory --email [이메일 주소] -d [사용할 도메인 주소]
    
    [실제 인증서 발급받기 실행]
    sudo ./letsencrypt-auto certonly --manual --email [이메일 주소] -d [사용할 도메인주소]
    
  4. IP 추적 동의 등 내용이 나오면 확인 후 진행
  5. 웹 서버와 통신 확인
    인증을 하기 위해서 사용하는 웹 서버와 통신이 필요한데, 간단하게 파이썬 서버를 사용하는법도 출력합니다.
    여기서는 기존에 사용중인 아파치 서버와 통신으로 인증을 합니다.
    [엔터]키를 누르라고 나오면 아직 누르면 안됩니다.
    이 아래부터는 웹 서버에서 진행합니다.
    • 인증 파일 생성
      Let’s Encrypt에서 키를 발급하기 위해 서버와 통신을 통해 유효인증을 거치는듯 합니다.
      mkdir -p [웹 ROOT 디렉토리]/.well-known/acme-challenge
      
      cd [웹 ROOT 디렉토리]
      
      화면에 출력된 내용대로 파일 생성
      화면에 나오는 printf 문을 긁어다 실행하시면 됩니다.
      printf "%s" [인증파일 내용] > .well-known/acme-challenge/[인증파일명]
      
  6. 인증서 발급
    웹 서버에 파일이 만들어졌으면 인증서를 발급하는 서버에서 [엔터]키를 누릅니다.
    정상적으로 인증서가 발급되면 /etc/letsencrypt/live 디렉토리 밑으로 [도메인주소] 디렉토리가 생성되고 그 안에 인증서 파일들이 생성됩니다.
    생성 되는 파일은 아파치 설정에 아래와 같이 대응됩니다.
    SSLCertificateFile에 SSLCACertificateFile에 사용하는 fullchain.pem을 사용하고
    SSLCertificateFile와 SSLCertificateKeyFile만 사용해도 됩니다.

    • [SSLCertificateFile] >> [/etc/letsencrypt/live/도메인주소/cert.pem]
    • [SSLCertificateChainFile] >> [/etc/letsencrypt/live/도메인주소/chain.pem]
    • [SSLCertificateKeyFile] >> [/etc/letsencrypt/live/도메인주소/privkey.pem]
    • [SSLCACertificateFile] >> [/etc/letsencrypt/live/도메인주소/fullchain.pem]

    이 외에도 설치 방법에 따라 여러 형태로 지원을 하고 있으니 자세한 옵션이나 내용은 Let’s Encrypt 설치 가이드를 참고 하셔서 진행하시면 됩니다.

  7. 인증서 이동
    발급 받은 인증서를 각 서버로 전송을 해야하는데 SSH를 이용한 SCP 명령어를 사용했습니다.
    scp -r [도메인주소] [계정명]@[서버주소]:[복사할 위치]
    

  • need string or buffer, NoneType found 오류 발생시
    테스트와 발급 중간에 무언가 잘 못되어 이런 오류가 발생했었는데, 발급 받아야하는 인증서 중 몇개는 인증서가 발급되어 /etc/letsencrypt 디렉토리를 지울 수 없어, /etc/letsencrypt/account안에 있는 서버 정보와 /etc/letsencrypt/archive/etc/letsencrypt/live에 있는 제대로 발급 받지 못한 인증서를 삭제 했다.
    그 외에 다른 문제가 생겼을 때는 /root/.cache디렉토리를 삭제하고 다시 시도했다.

  • 오류가 나면 /var/log/letsencrypt/letsencrypt.log파일을 통해 로그를 볼 수 있으며, 인증서 발행 명령어에 --debug 옵션을 주면 오류가 날 경우 오류 메세지를 콘솔에 바로 출력해준다.

  • 무료 DDNS를 이용하다보니 같은 DDNS의 발행 제한의 걸려 총 4개중 2개만 발행되고 나머지 2개는 약 7일 정도를 대기해야하는 상황에 놓였다.

  • 참고로 인증서의 정상 등록여부는 crt.sh이라는 사이트에서 검색해봐도 알 수 있다.
    인증에 성공한 주소라면 이 사이트에서 검색이 될 것이다.

  • 인증서 발행 후 얼마나 튼튼한지 인증서를 테스트 할 수 있는 사이트 ssllabs를 통해 테스트 해봐도 좋다.

  • 무슨 문제인지 Jenkins의 경우 기존에 사용하던 인증서 방법으로는 서버가 실행되지 않아 다른 인증방법으로 실행을 시키도록 변경하였다.

    sudo openssl pkcs12 -inkey [인증서 위치]/privkey.pem -in [인증서 위치]/fullchain.pem -export -out keys.pkcs12
    
    sudo keytool -importkeystore -srckeystore keys.pkcs12 -srcstoretype pkcs12 -destkeystore jenkins.jks
    
    sudo vi /etc/sysconfig/jenkins
    

    JENKINS_ARGS 설정 변경

    JENKINS_ARGS=" --httpsKeyStore=[인증서 위치]jenkins.jks --httpsKeyStorePassword=[설정한 암호]
    

CentOS 7 에서 VMWare Tools 설치

Linux/CentOS 2015. 12. 9. 13:04 by 후뤼한잉여

CentOS 7 에서 VMWare Tools 설치

1. 개요

개인적으로 테스트용도로 사용하는 서버를 노트북에 VMWare를 통해 구성해서 사용하고 있는데, 노트북 절전 모드 이후 다시 실행시 리눅스 서버시간이 멈춰있어 시간 동기화에 필요성을 고민 하던 중 VMWare Tools을 설치하면 PC와의 시간이 동기화가 된다는 문서를 보고 설치를 한 내용을 정리한 문서입니다.

2. 설치하기

  1. VMware에서 제공되는 이미지를 CD ROM에 Mount 시킨다. (Window)
  2. linux상에서 kernel을 업데이트 한다. (이하 Linux)
    kernel 업데이트를 하지 않으면 설치 중 문제가 발생하므로 설치 하도록 한다.
    sudo yum update kernel
    
  3. linux를 재부팅 한다.
    reboot
    
  4. 의존 패키지 설치
    sudo yum install gcc kernel-devel
    
  5. CD-ROM을 linux상에 Mount
    sudo mkdir /mnt/cdrom
    sudo mount /dev/cdrom /mnt/cdrom
    
  6. VMWareTools 설치파일 복사
    sudo cp /mnt/cdrom/VMwareTools*.gz /tmp
    
  7. CD-ROM UnMount 작업
    sudo umount /dev/cdrom
    
    윈도우 VMWare에서 CD-ROM disconect 진행
    
  8. VMWareTools 압축 해제
    cd /tmp
    sudo tar -C /tmp -zxvf VMwareTools*.gz
    
  9. VMWareTools 설치 진행

    cd vmware-tools-distrib
    sudo ./vmware-install.pl
    

    처음 설치시 YES 입력 이후엔 엔터만 쳐줘도 설치가 진행이 된다.

  10. 동기화 설정하기

    vmware-toolbox-cmd timesync enable
    

    자세한 문서는 vmware 홈페이지에서 확인

CentOS 7 로컬 DNS 설정하기

Linux/CentOS 2015. 12. 8. 23:20 by 후뤼한잉여

CentOS 7 로컬 DNS 설정하기

1. 개요

개인 서버를 구성하다 보면 내부 IP에서 사용할 때도 있고 외부 IP에서 사용할 때도 있는데
jenkins의 빌드 상태 뱃지등을 내부 IP로 하기도 외부 도메인으로 하기도 애매한 상황이 발생하는데 이럴 때 로컬DNS를 이용하여 외부에서 사용하는 도메인을 그대로 사용할 수 있도록 설정한 내용을 정리한 문서입니다.

2. CentOS 7 로컬 DNS 설정하기

  1. 로컬 DNS파일인 hosts파일을 열어서 수정
    sudo vi /etc/hosts
    
    내부 IP주소와 로컬 DNS를 이용해 사용할 도메인명을 등록
    [IP주소]    [도메인명]
    
  2. 호스트네임 데몬 재시작
    sudo systemctl restart systemd-hostnamed
    

Nginx Server 1.8 과 Tomcat 8 연동하기

Linux/CentOS 2015. 11. 11. 11:51 by 후뤼한잉여

Nginx Server 1.8 과 Tomcat 8 연동하기

1) 개요

Apache 대신 Nginx Server 사용시 Tomcat과 연동 설정한 내용을 정리하기 위해 작성되었습니다.

2) 설정방법

  1. Nginx 설정파일 변경하기
    sudo vi /opt/nginx/conf/nginx.conf
    
    nginx.conf파일에 수정할 내용
    server {
         listen       443 ssl;
         .
         .
         location / { //수정
                 .
                 .
                 root [Tomcat 웹 서비스 디렉토리] //ex) [Tomcat 설치된 디렉토리]/webapps/ROOT
                 .
                 .
         }
         .
         .
         location ~\.jsp$ { //추가
                 proxy_pass http://localhost:8080;
                 proxy_set_header X-Real-IP $remote_addr;
                 proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
                 proxy_set_header Host $http_host;
         }
    }
    
  2. Nginx 재시작
    sudo service nginx restart
    

Nginx Server 1.8 에서 HTTPS 적용하기

Linux/CentOS 2015. 11. 11. 11:41 by 후뤼한잉여

Nginx Server 1.8 에서 HTTPS 적용하기

1) 개요

Nginx Server에 HTTPS 적용한 내용을 정리하기 위해 작성되었습니다.

2) 설정 방법

  1. SSL 인증서 생성하기

    GitLab에 HTTPS 보안 적용을 위한 OpenSSL 설정하기 참고하여 생성

  2. Nginx 설정파일 수정하기
    sudo vi /opt/nginx/conf/nginx.conf
    
    nginx.conf파일에 수정할 내용
    server { //HTTPS server 관련 전체 주석 해제
         .
         .
         listen 443 ssl;
         .
         .
         server_name [도메인 이름];
         ssl_certificate [인증서 디렉토리]/[인증서 이름].crt;
         ssl_certificate_key [인증서 디렉토리]/[인증서 이름].key;
         .
         .
    }
    
    • HTTP으로 접속시 HTTPS로 리다이렉트 하는 방법
      server { //HTTP server 관련 부분에 추가
            .
            .
            return 301 https://$host$request_uri;
      }
      
  3. 방화벽 해제하기
    sudo firewall-cmd --add-service=https --permanent
    sudo firewall-cmd --reload
    
  4. Nginx 재시작
    service nginx restart
    

CentOS 7 에 Nginx Server 1.8 설치하기

Linux/CentOS 2015. 11. 11. 11:31 by 후뤼한잉여

CentOS 7 에 Nginx Server 1.8 설치하기

1) 개요

Nginx Server 설치 한 내용을 정리하고자 작성되었습니다.

2) 설치방법

  1. 의존패키지 설치하기
    yum -y install gcc g++ cpp gcc-c++ pcre-devel openssl openssl-devel gd gd-devel wget net-tools
    
  2. Nginx 설치파일 다운로드
    wget http://nginx.org/download/nginx-1.8.0.tar.gz
    tar xvfz [설치파일].tar.gz
    
  3. Nginx 설치하기

    cd [설치파일 압축 해제된 디렉토리]
    

    3-1. Configure 설정하기 (prefix등 변경하고 설치했다가 무슨 이유인지 잘 안되서 그냥 저 경로로 설치함..)

    sudo ./configure --prefix=/opt/nginx \
    --conf-path=/opt/nginx/conf/nginx.conf \
    --sbin-path=/opt/nginx/sbin/nginx \
    --lock-path=/var/lock/nginx.lock \
    --pid-path=/var/run/nginx.pid \
    --http-client-body-temp-path=/var/lib/nginx/body \
    --http-proxy-temp-path=/var/lib/nginx/proxy \
    --http-fastcgi-temp-path=/var/lib/nginx/fastcgi \
    --http-uwsgi-temp-path=/var/lib/nginx/uwsgi \
    --http-scgi-temp-path=/var/lib/nginx/scgi \
    --http-log-path=/opt/nginx/log/access.log \
    --error-log-path=/opt/nginx/log/error.log \
    --with-http_addition_module \
    --with-http_degradation_module \
    --with-http_flv_module \
    --with-http_gzip_static_module \
    --with-http_image_filter_module \
    --with-http_mp4_module \
    --with-http_random_index_module \
    --with-http_realip_module \
    --with-http_ssl_module \
    --with-http_stub_status_module \
    --with-http_sub_module \
    --with-http_realip_module \
    --user=nginx \
    --group=nginx
    

    3-2. 컴파일 및 설치

    sudo make
    sudo make install
    

    3-3. 컴파일시 생성안되는 디렉토리 추가 생성

    sudo mkdir -p /var/lib/nginx
    

    3-4. 서비스에 등록하기

    sudo vi /etc/init.d/nginx
    

    nginx파일에 입력할 내용

    #!/bin/sh
    #
    # nginx - this script starts and stops the nginx daemin
    #
    # chkconfig:   - 85 15
    # description:  Nginx is an HTTP(S) server, HTTP(S) reverse \
    #               proxy and IMAP/POP3 proxy server
    # processname: nginx
    # config:      /opt/nginx/conf/nginx.conf
    # pidfile:     /var/run/nginx.pid
    
    # Source function library.
    . /etc/rc.d/init.d/functions
    
    # Source networking configuration.
    . /etc/sysconfig/network
    
    # Check that networking is up.
    [ "$NETWORKING" = "no" ] && exit 0
    
    nginx="/opt/nginx/sbin/nginx"
    prog=$(basename $nginx)
    
    NGINX_CONF_FILE="/opt/nginx/conf/nginx.conf"
    
    lockfile=/var/lock/subsys/nginx
    
    start() {
        [ -x $nginx ] || exit 5
        [ -f $NGINX_CONF_FILE ] || exit 6
        echo -n $"Starting $prog: "
        daemon $nginx -c $NGINX_CONF_FILE
        retval=$?
        echo
        [ $retval -eq 0 ] && touch $lockfile
        return $retval
    }
    
    stop() {
        echo -n $"Stopping $prog: "
        killproc $prog -QUIT
        retval=$?
        echo
        [ $retval -eq 0 ] && rm -f $lockfile
        return $retval
    }
    
    restart() {
        configtest || return $?
        stop
        start
    }
    
    reload() {
        configtest || return $?
        echo -n $"Reloading $prog: "
        killproc $nginx -HUP
        RETVAL=$?
        echo
    }
    
    force_reload() {
        restart
    }
    
    configtest() {
      $nginx -t -c $NGINX_CONF_FILE
    }
    
    rh_status() {
        status $prog
    }
    
    rh_status_q() {
        rh_status >/dev/null 2>&1
    }
    
    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)
            force_reload
            ;;
        status)
            rh_status
            ;;
        condrestart|try-restart)
            rh_status_q || exit 0
                ;;
        *)
            echo $"Usage: $0 {start|stop|status|restart|condrestart|try-restart|reload|force-reload|configtest}"
            exit 2
    esac
    
  4. 서비스 파일에 실행권한 부여하기

    sudo chmod +x /etc/init.d/nginx
    
  5. 방화벽 설정하기
    firewall-cmd --add-service=http --permanent
    firewall-cmd --reload
    
  • Nginx 실행 / 종료 명령어
    • 실행 명령어
      sudo service nginx start
      
    • 종료 명령어
      sudo service nginx stop
      
    • 재시작 명령어
      sudo service nginx restart
      

Apache Web Server 2.4 에 정적파일 캐싱하기

Linux/CentOS 2015. 11. 11. 11:10 by 후뤼한잉여

Apache Web Server 2.4 에 정적파일 캐싱하기

1) 개요

정적파일에 대해서 수정되지 않은 파일을 다운로드 받게하는 트래픽을 없애기 위해 설정을 한 내용을 정리하고자 작성되었습니다.

2) 설정하기

  1. Apache 설정 파일 수정하기
    vi [Apache 설치된 디렉토리]/conf/httpd.conf
    
    httpd.conf에 수정할 내용
    LoadModule expires_module modules/mod_expires.so //주석해제
    <IfModule mod_expires.c>
         ExpiresActive On
         ExpiresByType image/png "modification  plus 1 month"
         ExpiresByType text/html "modification  plus 1 month"
         ExpiresByType image/gif "modification  plus 1 month"
         ExpiresByType image/jpg "modification  plus 1 month"
         ExpiresByType image/jpeg "modification  plus 1 month"
         ExpiresByType application/javascript "modification  plus 1 month"
         ExpiresByType text/css "modification  plus 1 month"
         ExpiresByType application/vnd.ms-cab-compressed "modification  plus 1 month"
         ExpiresByType application/x-msdownload "modification  plus 1 month"
    </IfModule>
    
    • HTTP 헤더에 Expires 헤더값을 설정하는 모듈이다.
    • Type은 MIME Type이므로 본인이 설정하고 싶은 내용을 설정한다.
    • modification은 파일이 수정이 되면 다운 받을 수 있는 옵션이다.
    • modification대신 access로 지정하면 무조건 설정한 시간 이후 다운 받을 수 있는 옵션이다.
    • month 외에도 years, weeks, days, hours, minutes, seconds가 있다.
    • 자세한 내용은 Apache 문서를 참고
  2. Apache 재시작
Nav