요 며칠동안 꼬여있던 SSL 설정을 해결해보려고 삽질을 했습니다. 아마존 라이트세일 로드밸런서를 사용해도 인증서 발급만 자동으로 해줄뿐, 아파치 서버 설정까지 만져주는것은 아니더군요. 그래서 결국 직접 전부 세팅하게 되었는데, 차후에 또 생길지 모를 일이니 기록하고자 합니다.

작업의 목적은 포트폴리오 사이트, 블로그, 새로만들 포럼 사이트를 각각 virtualhost로 지정해주고, SSL까지 적용하는 것입니다. 작업의 흐름은 아래와 같습니다.

  1. VirtualHost 80 적용.
  2. SSL 인증서 발급
  3. crontab을 이용한 자동 갱신 적용
  4. VirtualHost 443 적용
  5. http 접속을 https로 강제 리다이렉트 redirect
  6. the requested url was not found on this server 에러 발생 해결

 

1.VirtualHost 80 포트 적용

기본적으로 아마존 라이트세일에서 bitnami wordpress로 설치했다면, /opt/bitnami/apache2/conf/extra/httpd-vhosts.conf 파일을 통해서 virtualhost 적용을 하는 것이 편리합니다. 물론 /opt/bitnami/apache2/conf/httpd.conf에서 include /opt/bitnami/apache2/extra/httpd-vhosts.conf에 대한 주석을 제거해서 적용할 수 있도록 먼저 설정해줘야합니다. 아래 내용은 마지막에 또 다시 변경해줘야하므로, 중간과정으로 이해하길 바랍니다.

80포트로 접속했을 경우를 설정해주고 sudo /opt/bitnami/ctlscript.sh restart apache 명령으로 변경된 설정을 적용해줍니다.

2.Certbot-auto를 이용해서 SSL인증서 발급

sudo mkdir /opt/bitnami/letsencrypt 명령을 이용해서 폴더를 생성한 다음 그 곳( cd /opt/bitnami/letsencrypt )에서 아래 명령을 통해 certbot-auto를 다운로드 받고, 파일 권한을 변경해줍니다.

그다음 아래 명령으로 인증서를 발급받습니다. 저같은 경우엔 illustudio.co.kr / blog.illustudio.co.kr / forum.illustudio.co.kr 이렇게 세 차례에 걸쳐서 작업을 해줬습니다.

3.Crontab을 이용한 갱신 자동화

letsencrypt 인증서는 무료인 대신 90일마다 갱신을 해줘야합니다. 그래서 자동으로 갱신될 수 있도록 crontab 명령에 아래 내용을 추가합니다. 매월 초마다 새벽 3시마다 명령이 실행되고, 아파치가 재실행 됩니다. /opt/bitnami/letsencrypt라는 경로는 제가 certbot-auto를 설치한 경로이므로, 본인이 다른 경로에 설치했다면 맞는 경로로 변경해줘야합니다.

2018.8.4일 추가 – blog.illustudio.co.kr은 정상적으로 renew 명령이 작동합니다만, illustudio.co.kr 은 정상적으로 작동하지 않는 문제를 찾았습니다. 검색을 좀 해보니 http 프로토콜로 접속이 되야하는데 강제로 https로 리다이렉트 시켰기 때문에 생기는 문제인 것 같습니다. blog.illustudio.co.kr에도 적용된 사항인데, 유독 illustudio.co.kr만 되지 않는 것이 좀 의아하네요. 아무튼 이 부분은 일시적으로 https 리다이렉트 부분을 수정해서 아파치를 리부트 시킨 후 certbot-auto renew를 하니 정상적으로 갱신 되는 것이 확인됐습니다. 다시 해결책을 찾게 되면 추가 포스팅 하도록 하겠습니다.

4.VirtualHost 443 포트 적용

SSL 인증서 설치까지 완료 됐으니 HTTPS 프로토콜을 사용할 수 있도록 443 포트 설정을 해줘야합니다. 사실, 이 과정까지 오기전에 라이트세일 인스턴스에서 https 443 포트도 사용할 수 있도록 설정해주는 것이 좋습니다. 기본적으로 80, 22, 443, 3306 포트는 사용할 수 있도록 설정하는 것이 관리상 편리합니다. 443 포트에 대한 설정은 아래와 같습니다. 이 부분도 중간과정입니다.

기본적으로 illustudio.co.kr의 경우만 해놨습니다. 이전 과정으로 심볼릭 링크를 걸어주는 방법이 있는데, 사이트가 여러개일 경우엔 그 방법으로 컨트롤 하기 어렵다고 생각되서, 이렇게 바로 발급된 링크를 연결해줬습니다.

여기까지 하고 나면, http와 https 둘다 연결이 될 수 있도록 설정이 된 상태입니다. 하지만, https로 강제로 사용할 수 있도록 설정해주기로 했습니다.

5. http 접속을 https로 강제 리다이렉트 redirect

RewriteRule을 검색해서 HTTP_POST나 SERVER_NAME으로 설정하는 방법도 있지만, 그냥 무식하게 해당 도메인으로 바로 연결해버렸습니다. 사실 포폴 사이트, 블로그, 포럼 셋다 전부 저런식으로 각각 설정해줘야했기때문에 상관 없을 것 같습니다. 여기까지하면, http로 접속해도 자연스럽게 그냥 https 프로토콜로 접속이 되는 것을 확인할 수 있습니다. 80포트에 대한 virtualhost 설정은 이것이 최종 결과물입니다.

문제는 여기서 블로그나 포폴사이트 게시글을 클릭했을때 the requested url was not found on this server 에러가 발생하는것을 발견해서 그 부분을 해결해주는 내용이 필요했습니다.

6.the requested url was not found on this server 에러 발생 해결

게시글을 눌렀을때 the requested url was not found on this server 에러가 발생하는 것은 이런식으로 해결해주었습니다. 역시 구글의 도움을 많이 받았습니다. 일요일 오후부터 끙끙 매고 여기까지 오는데 3일 정도 걸린것 같습니다. 모든 문제가 정상적으로 해결되었습니다. 443포트에 대한 virtualhost 설정도 이것이 최종 결과물입니다.

 

기존에 git에 저장해두었던 gulp 세팅이 되어있던 파일을 불러오는 과정에서 node-sass가 설치 되지 않는 문제가 발생한다.

주로
“user “root” does not have permission to access the dev dir”
라는 문구를 내뱉으며 문제를 일으키는데 아래 화면처럼 계속 권한이 없다는 말만 반복하면서 무한 루프에 빠져버린다. 그래서 권한을 주고 벼라별 짓을 다 해도 몇시간 동안 node-sass 설치에 실패했다.

구글을 아무리 뒤져도 답이 나오질 않아서 한참 해메며 포기할까 싶은 무렵 실낱같은 희망이 되어준 옵션이 하나 나타났다. –unsafe-perm

이를테면 이런식으로 사용하는 것이다.

이 옵션을 주면 위와같이 권한 문제로 무한루프에 빠지는 것을 해결 할 수 있다. 좀처럼 풀리지 않는 문제라 주말 내내 골치 썩고 이제는 포기하고 싶었는데, 자기전에 극적으로 해결이 됐다… 주말이 다 날아갔다는 이야기.ㅋㅋㅋ

추가적으로 node-sass를 설치하는 과정중에 컴파일 하는 과정이 있는데 이럴 경우 컴파일러가 없으면 “make g++ command not found” 오류를 내뿜는다. 이런 경우에는 구글에서 아래와 같은 답을 내어주었다.

sudo apt-get install build-essential g++

여기까지 해주고나니 기나긴 컴파일 과정을 거치고 난 후 정상적으로 모듈이 설치되고 작업환경이 완성됐다.

우분투 16.04 LTS 버전에서 서브라임텍스트3를 설치하고 가장 황당했던 상황 중 하나가 한글이 입력되지 않는다는겁니다. 뭐 input helper를 이용한다는 분도 있고, 여러가지 방법들이 많이 나와있습니다만, 저는 아래 링크를 보고 시도해봤습니다.

그런데 이 분이 알려준 방법도 뭔가 좀 부족한 부분이 있어요. 사실 이 내용은 전에도 다른 블로그에서도 발견했던지라 이미 시도했다가 실패했던 내용이라 반신 반의하면서 다시 시도했습니다. 위의 포스팅과 다르게 제가 추가적으로 실행한 부분들을 정리해보겠습니다.

일단 git을 설치하고, imfix를 다운로드 받은 이후에 그 안에 폴더를 보면 README.md 파일이 있습니다. 이걸 한 번 읽어봤어요. 그랬더니 아래와 같은 내용이 있습니다.

sublime-text-imfix를 다운로드 받은 폴더로 이동해서 터미널에서 ./sublime-imfix를 실행하라는 부분이 있었습니다. 실행을 하면, 자동적으로 뭔가 열심히 옮겨붙이고 생성하는 과정이 나옵니다.

대충 보면 뭐 디렉토리 추가하고 필요한 파일들을 생성하고 붙여넣고  이런 과정들이 있더군요. 결국 이걸 먼저 실행했더라면 위에 있었던 포스팅에서 소개됐던 ‘GCC를 이용한 컴파일 과정같은것도 필요없었을까?’싶은 의문도 듭니다. 확인하려고 다시 다 지우고 해볼 수도 없고 참…ㅎㅎㅎ

아무튼 쉘스크립트 작성도 sublime-imfix/src 폴더에 미리 되어있길래 subl 스크립트 파일을 bin 폴더로 옮겨준 후 로그아웃 /로그인 후 실행을 해봤더니 한글입력이 됩니다 ;ㅁ;

 SASS, COMPASS, SUSY, REAKPOINT 소개

간략하게 정리하자면 sass,compass,susy,breakpoint는 아래와 같다.

  • SASS – CSS를 더욱 체계적이고 효율적으로 작성할 수 있도록 도와주어 관리, 재사용에 유리하다
  • Compass – SASS Framework : SASS를 좀 더 편리하게 사용할 수 있도록 준비되어있는 프레임워크
  • SUSY – Grid System Framework : 그리드 시스템을 이용하여 편리하게 레이아웃을 잡을 수 있도록 도와주는 프레임워크
  • Breakpoint – SASS용 미디어쿼리 라이브러리 : 반응형 웹 사이트를 제작할때 미디어쿼리를 쉽게 삽입할 수 있도록 도와주는 라이브러리

sass 설치

먼저 윈도우 환경이라면, http://rubyinstaller.org 에서 루비를 다운로드 받아 설치해야한다. sass가 꼭 ruby기반에서 돌아가는 것만 있는 것은 아니지만, susy2를ruby기반 sass가 완벽 지원하기 때문이다. 참고로 아래 내용들은 우분투 16.04.2에서 설치하는 과정들을 적어놓았지만, 루비를 이용한 설치이므로 윈도우와 큰 차이는 없을 것이다.

루비가 설치되어 있는 상태에서 커맨드 창을 띄워 아래 명령어를 순서대로 입력해서 sass와 compass를 설치한다. 우분투라면 루트 권한으로 설치했기때문에 sudo 명령어는 생략했다. 루트상태가 아니라면 ‘sudo gem install sass’ 와 같은 식으로 앞에 sudo를 붙여줘야한다.

Susy와 Breakpoint를 설치하는 방법은 여러가지가 있지만 여기서는 ruby를 이용해서 설치하도록 한다.

설정

설치가 모두 이뤄지고 나면, config.rb 파일에서 susy와 breakpoint를 사용할 수 있도록 설정해줘야한다.

sass

위의 이미지처럼 compass를 설치하면 맨 처음에 require ‘compass/import-once/activate’ 명시가 되어있다. 그 밑에 require ‘susy’ require ‘breakpoint’ 를 추가해주어 susy와 breakpoint를 사용한다는 것을 알려줘야한다.

require 밑에 명시된 부분들은 수정이 가능한 부분들이므로 자신에게 맞도록 바꾸면 된다. http_path에서는 실제로 작업이 이뤄지고 있는 폴더를 명시해줘야하고, css_dir에는 sass 파일이 css로 컴파일된 결과물이 저장될 위치다. sass_dir는 작업중인 sass 파일의 위치, images_dir와  javascripts_dir는 이미지와 자바스크립트 파일이 저장될 위치다.

그리고 난 다음에는 sass 파일에 compass와 susy, breakpoint를 사용한다는 것을 또 알려줘야한다.

compass/reset, compass/css3, compass/typography, compass/utilities는 선택사항들이고, compass,susy,breakpoint가 지금 설치한 것들을 활용하기 위해서 필수로 명시해줘야하는 부분들이다. 나머지는 필요에 의해 추가된 것들이다.

나머지로 추가된 파일들은 저렇게 연결 – @import만 해주면 된다. 지금 수정한 sass 파일만 컴파일 하면 나머지는 알아서 연결되기때문에 모든 sass 파일을 컴파일 할 필요가 없다.

sass는 작성만 해주면 바로 css처럼 웹페이지에서 읽어들일 수가 없다. 그래서 sass로 작성된 파일을 따로 css로 컴파일 해주어야한다. 이러한 과정또한 compass가 알아서 해준다.

위와 같은 준비가 다 끝나고나면 커맨드 입력창에서 아래와 같은 명령어를 입력해준다.

위의 스크린샷에서 볼 수 있듯이 이제 컴파스는 sass 파일을 지켜보면서, 사용자가 sass 파일의 내용을 바꾸고 저장할때마다 css로 바꿔서 아까 지정한 css_dir에 파일을 저장해줄 것이다. 그래서 html문서의 head 부분에 css_dir에 명시된 파일을 link로 css파일을 연결해주면 sass로 작성된 문서가 체계적으로 정리되서 출력될 것이다.

우분투

최근 우분투에서 sudo 명령어를 입력하다보면 간혹 저렇게 unable to resolve host ubuntu 라는 메세지가 뜹니다. 왜 그런걸까 이유를 모르다가 찜찜해서 검색해보니 제가 최근에 HP sleekbook 15pc 어쩌고 뭐 이런 긴 이름으로 PC 이름이 설정되어있길래  간단하게 ubuntu로 바꿔놨더니 문제가 발생하는 거였습니다. 실행은 됩니다만, 매번 저런 메세지를 본다는게 좀 껄끄럽죠.

문제는 PC 이름을 바꿔줄때 명시해줘야할 부분이 아래의 두 군데라는 것입니다.

  • /etc/hostname
  • /etc/hosts

현재 상황에서 hostname은 제가 이미 ubuntu로 바꿔놓은 상태이기 때문에, hosts 부분만 바꿔주면 됩니다. 결국 현재 상황을 보면, 호스트 이름은 바뀌었는데, 호스트가 등록되어있지 않으니 에러 메세지가 자꾸 나왔던 셈입니다.

sudo nano /etc/hosts 명령어로 nano 편집기로 들어가서 내용을 살펴보니, 127.0.1.1 부분에 아직 바뀌지 않은 HP sleekbook 15 어쩌고 하는 옛날 이름으로 지정되어있길래 아래와 같이 ubuntu로 수정해주었습니다.

파일을 저장해주고 나서  아래 명령어를 입력해서 서비스를 재시작 시켜주면 완료됩니다.

본 내용은 http://zzaps.tistory.com/283 의 포스팅을 참고하였습니다.