Author: byun1114

  • 호라티우스의 시학, 김남우 옮김

    카르페 디엠으로 유명한 그 분이다. 그래서 그 책 인줄 알고 빌려 보았는데, 그것은 아니었다. 시로서 굉장히 유명한 분이라고 하는데.. 그 ‘시’를 보지 못했으니 그건 일단 논외로 하고, 인상 깊은 구절을 인용해 보겠다.

    세월이 포도주처럼 시를 좋게 만든다면
    글에 얼마의 세월이 좋은 가치를 가져옵니까?
    죽은 지 이제 백 년 된 시인은 어찌 나눕니까?
    완벽한 옛것입니까? 어설픈 새것입니까?
    정확히 몇 년으로 정하면 논쟁이 끝나리다.
    “백 년이 넘은 것은 탁월한 옛것입니다.”

    그럼 백 년에서 일 년 아니 한 달이 모자란다면
    어찌 됩니까? 탁월한 옛것입니까?
    지금 혹 장차도 무사할 것입니까?
    “작은 한 달 혹은 가득 일 년 모자라는 것은
    마땅히 훌륭한 옛것으로 보아야겠지요.”

    아우구스투스에게 보내는 편지

    “욕심이 없으시다? 떠나시오. 어떄요? 탐욕과 함께
    다른 오류들도 사라졌소? 당신 가슴속에 헛된
    쓸데없는 야심은? 적움의 공포나 분노는 없으시오?
    불면, 끔찍한 마법, 기괴한 사건, 마녀들,
    밤의 유령들, 테살리아의 괴물은 웃어넘기시오?
    운명을 기쁘게 챙기며, 친구들을 용서하시오?
    나이 들어 늙어감에 부드럽고 온순해지시오?
    많은 잘못 중 어째 하날 들어내니 홀가분하쇼?
    옳게 살 줄 모른다면 아는 이들에게 맡기시오.
    댁은 놀 만큼 노셨고, 먹을 만큼, 마실 만큼 마시셨소.
    이제 그만 떠날 시간이오. 너무 많이 마셨다고
    더 잘 노는 세대가 조롱하고 몰아내지 않도록.”

    플로루스에게 보내는 편지

    영화 오블리비언에 탐 크루즈가 “공포스러운 적을 상대로 선조와 신들의 사원을 위해 싸우다 죽는것보다 더나은 죽음은 없나니” 라는 구절을 인용하는 부분이 있다. 그 때 호라티우스라는 이름을 처음 알게 된 것 같다. 그런데 알고 봤더니 그건 이름은 같고, 성은 다른 호라티우스였다. 그 책은 따로 신청해서 보도록 할 예정이다.

  • Docker 에서 Container 실행/시작시에 명령어가 실행되도록 하기

    Docker 이미지를 build 할 때에 CMD나 ENTRYPOINT를 이용하면 이미지를 실행할 때에 실행된다고 하는 글들이 많은데 이상하게 nginx나 apache, mysql 등은 통하지 않았다. 여러 글들을 찾아본 끝에 유일하게 성공한 방법은 .bashrc를 이용하는 것이다.

    이는 container의 기본 설정에서 bash를 실행하도록 되어 있다는 것을 이용한 것이다.

    따라서, NGINX 를 컴파일하여 설치한 경우 Image를 실행할 때에 nginx를 실행하도록 하기 위해서는 다음과 같은 내용을 /root/.bashrc 에 추가하여 준다.

    /usr/local/nginx/sbin/nginx

    Apache나 MariaDB를 실행하려고 하면 다음과 같이 한다.

    service apache2 start
    service mysql start
  • NGINX를 Reverse Proxy로 Apache를 Web으로 연결하기

    나의 프로젝트에서는 NGINX를 reverse proxy로 동작하게 할 것이다. 프로젝트용 홈페이지 구현은 중요하기 때문에 이를 우선적으로 구현해 보고자 하였다.

    나와 같은 초보자에게 이 부분은 꽤나 어렵다. 그 이유는 Client – Server (Web) 라는 단순한 구조가 아니기 때문이다. Client – NGINX – Web 으로 구성이 되어야 하는데 기본 설정으로만 따라가면 Web은 NGINX에서 오는 데이터로만 받아보기 때문이다. 잘 모르는 상태에서 글로만 표현하려니 힘든데, 이 부분의 설정을 수정하지 않으면 WordPress 기반으로 운영할 Web 서비스에서 링크가 blog.my-network으로 Client에게 제공이 된다. 당연히 Client는 Docker 밖에 있으니 저런 링크로는 서비스가 제대로 이루어질 수 없게 된다.

    우선 NGINX 가 있는 컨테이너의 nginx.conf 파일을 다음과 같은 설정으로 reverse proxy를 구성한다. WordPress를 설치한 컨테이너로는 8080 포트를 이용하도록 했다. proxy_pass 이외의 설정이 있어야 client 의 정보도 같이 전달이 된다고 한다.

    location / {
    	proxy_pass http://blog.my-network:8080;
    	proxy_set_header Host $host;
    	proxy_set_header X-Real_IP $remote_addr;
    	proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    }

    WordPress를 설치한 컨테이너에서 Apache의 ports.conf 파일을 수정하여 80포트가 아닌 8080 포트로 서비스 하도록 한다.

    Listen 8080

    Apache의 apache2.conf 파일을 수정한다. 왜 인지는 모르겠는데, 이렇게 하니까 되었다. ㅠ

    ServerName my-domain
    
    <VirtualHost my-domain:8080>
            ServerName my-domain:8080
            ServerAlias my-domain
    </VirtualHost>
  • Docker Network

    Docker에서 실행하는 컨테이너는 실행할 때마다 정해진 IP를 받아오는 것이 아니다. 따라서, 컨테이너를 재시작 하였을 때 이전과 동일한 IP를 받는다는 보장이 없다. 이럴 경우 컨터이너를 특정 network으로 지정하면 DNS와 비슷한 개념으로 이용할 수 있다.

    우선 network을 만든다. 예를 들어 my-network이라는 bridge를 만든다고 하자.

    # sudo docker network create my-network

    그 다음에는 컨테이너를 시작할 때에 –network 를 이용하여 설정한다. 다음의 예시는 my-debian-blog라는 이미지를 blog라는 이름으로 시작하면서 my-network이라는 bridge에 할당하는 것이다.

    # sudo docker run -itd \
            --name blog \
            --network my-network \
            my-debian-blog
    

    이 다음부터는 컨테이너에서 blog 컨테이너와 통신해야 할 경우 blog.my-network 라고 주소를 설정하고 진행하면 된다.

    이미 만들어진 컨테이어도 연결하거나 연결을 끊을 수 있다.

    # sudo docker network connect my-network 컨테이너
    # sudo docker network disconnect my-network 컨테이너