AWS EC2 ssh 로그인 tips

AWS EC2 인스턴스 관리에 있어서 public/private key를 이용한 ssh 인증을 잘 이용하면 높은 보안성과 동시에 비밀번호 입력이 필요없는 편리한 환경을 구축 할 수 있다. AWS에 ssh 로그인 편리하게 하기 AWS(Amazon Web Service) EC2 계정 생성과정에서 필수적으로 public/private key pair를 생성하게 되는데 이를 통해서 인스턴스 접근 인증을 하게된다. 생성시점에 public key는 AWS에 자동으로 저장되고 EC2 console 화면의 Key Pairs 메뉴에서 등록된 public key를 확인할 수 있다. private key의 경우는 생성시점에 .pem 파일 형태로 다운로드를 해서 저장하게되는데 이 키파일에 대한 보관 책임은 사용자에게 있다. 이 key pair 를 통해 로그인 인증을 하게되므로 항상 이 키파일을 보관하는데 주의를 기울여야 한다. ...

2015년 3월 15일 · 2분 · 356단어

워드프레스 사이트 이전 팁

웹사이트 이전을하면서 도메인을 변경하는 경우 기존에 쌓아왔던 많은 데이터들에 대한 일괄적인 변경이 필요하다. 이를 워드프레스의 글/옵션들 하나하나 찾아다니면서 검색하기는 매우 힘들기때문에 Database에서 sql 구문으로 한번에 변경하면 빠르게 일괄 처리가 가능하다. 일괄변경을 하기전에는 문제가 생기거나 실수를 할 수 있으니 꼭 DB를 백업해두고 작업을 진행하도록 하자. 1. wp_options 변경 다음 쿼리를 이용하여 기존 사이트 주소와 직접적으로 연관이된 옵션설정값들을 일괄로 확인하는것이 가능하다. SELECT * FROM wp_options WHERE option_value LIKE '%기존주소%' siteurl, home 변경 워드프레스의 경우 위의 두 값을 기반으로해서 모든 퍼머링크나, 메뉴링크, 자바스크립트/CSS 링크 등을 출력하므로 위 두개 사항은 필수적으로 확인하여 수정하여여한다. ...

2014년 12월 6일 · 2분 · 321단어

PHP 날짜/시간 Timezone, TimeStamp, DateTime 관계

PHP를 DateTime 클래스를 다루다 보면 입/출력에따라 타임존 오프셋(timezone offset)이 반영이 되는지 안되는지 헷갈리는 경우가 꽤 많은데 아래 두가지 principle만 알면 큰 실수는 하지 않을 수 있다. ‘now’ 등의 기능을 이용하여 현재시간을 타임스탬프로 얻어온다면 항상 이값은 UTC+0 기준 현재시간에 대한 타임스탬프이다. (PHP 디폴트 타임존과 무관) PHP에 디폴트 타임존이 설정된 상태로 DATETIME 스트링을 이용하여 DateTime 객체를 초기화 하면 해당 객체의 타임스탬프 값은 타임존 오프셋이 이미 반영된 값이다. 아래 예시를 보면 더 명확히 이해가 갈것이다. ...

2014년 10월 2일 · 1분 · 203단어

HTTP Cache 튜토리얼

HTTP Cache 튜토리얼 HTTP를 이용하는 어플리케이션을 개발하다보면 효율적인 네트워크 송수신을위해 서버/클라이언트에서 캐쉬(cache)를 이용하는것이 필수적이다. HTTP를 이용할때 어떤식의 캐쉬방식이 있는지, 어떤 종류의 캐쉬들이 있는지, 어플리케이션 개발에있어서 상식적으로 알고있어야 할 내용들을 정리해보았다. 캐쉬의 종류 캐쉬의 위치에 따라 다음과 같이 분류가 가능하다.1 Browser cache 웹브라우져 혹은 HTTP요청을 하는 클라이언트 어플리케이션들이 내부적으로 갖고있는 캐시이다. Proxy cache 실제 서버가 있는곳이 아닌 네트워크 관리자에의해 네트워크상에 설치되는하는 캐시다. 일반적으로 큰회사나 ISP의 방화벽(firewall)에 설치된다. shared cache의 일종으로 많은 수의 사용자들에 의해 공유되어 사용되며, 레이턴시와 트래픽을 줄이는데 매우 도움이된다. Gateway cache(reverse proxy cache) 네트워크상에 설치되지 않고 실제 서버의 관리자에의해 설치 및 운영된다. 실제 서버의 앞단에 설치되어 요청에대한 캐쉬 및 효율적인 분배를 통해 서버의 응답 성능을 좋게하고, scalable하게 만들어 준다. 로드밸런서 등을 사용해서 실제 서버가 아닌 gateway cache로 요청을 reroute한다. CDN은 이런 gateway 캐시를 유료로 제공해주는 서비스라고 볼 수 있다. 기본적인 캐쉬 동작 방식 응답 헤더의 캐쉬가 캐쉬 하지말라고 지정되어있는 경우 캐쉬하지 않는다 ...

2014년 7월 17일 · 5분 · 944단어

수정배포된 CSS/JS 파일 캐시 방지

웹사이트를 운영하다보면 웹사이트의 디자인이나 프론트엔드 동작을 바꾸기 위해서 CSS 또는 javascript 파일을 수정하는 일이 종종 생기게 된다. 이때 수정된 파일을 서버로 배포하더라도, 기존 웹사이트를 이용하던 유저의 브라우저 캐쉬때문에 수정된(fresh) 파일을 다운로드 하지 않고 캐쉬를 이용하게되어 웹사이트가 깨져보이게되는 경우가 있다. 사용중인 웹서버에서 특정 파일에대한 캐쉬설정을 적절히 바꿔서 Http Response Header에 캐쉬관련 지시자나 E-Tag 등이 잘 포함되게 설정해주면, 브라우저에서 expired 된 캐쉬가 사용되는 것을 적절히 막을 수 있지만, 직접 웹서버를 운영하지 않고 웹 호스팅서비스를 이용하는 경우 쉽지 않은 일이며, 정확하게 설정되지 않을경우 브라우저마다 미묘하게 동작이 달라서 원하는 결과를 완벽하게 얻지 못할때도 있다. ...

2014년 6월 8일 · 2분 · 284단어

GET, POST 방식 차이점

웹 어플리케이션을 작성하다보면 누구나 한번쯤 GET/POST 요청(request)의 차이점에 대해 궁금해했을것이다. 기술적으로 조금씩 다른점은 금방 비교가 되지만, 그것만으로는 “뭔가 다르긴 다른데 POST를 쓸곳에도 GET을써도 상관없지않을까?” 라는 질문이 계속 머릿속에서 떠나지를 않는다. 그렇다면 근본적으로 뭐가 달라서 이 두가지 요청 방식이 구분되어있는지 한번 살펴보도록 하자. 근본적인 의미 차이 GET, POST의 근본적인 특성 차이는 GET은 idempotent, POST는 non-idempotent 하다는 점이다. 멱등(idempotent)이라는 말이 좀 어려운데, 아래와 같이 풀어서 설명하면 좀 이해가 쉬울것이다. 멱등 연산(idempotent operation)은 수학 용어로 해당 연산을 해도 결과에 변화가 없다는 특성을 표현하는 말이다. (예: 100 x 1 = 100 이므로, 곱셈에대해 1을 멱등원 이라고 부르며 이러한 1을곱하는 연산이 멱등 연산이다.) ...

2014년 2월 27일 · 2분 · 341단어

git-ftp를 이용한 웹사이트 배포

일반적으로 스크립트 언어에 기반한(Python, PHP, Ruby 등) 웹사이트 개발을 할때 보통 로컬머신에서 개발을하고 충분한 테스트를 거친 후 실제 서버로 배포를 하게 된다. 이때 ssh shell에 접근가능하며 충분한 권한을 가진 단독 호스팅 서버가 있다면 서버에 git 저장소를 만들어 두고 git의 pull & push와 hook을 이용하여 손쉽게 로컬에서 수정된 코드들만 효율적으로 배포(deployment)가 가능하다. 하지만 일반적인 웹호스팅 서비스를 이용할 경우 git을 지원하는 곳은 매우 드물다보니, 로컬에서 작업한 결과물을 업로드하려면 일반적으로 FTP를 사용해야한다. 하지만 이는 어느파일이 로컬에서 수정되었는지에 관계없이 전체 사이트를 업로드하는 것이 매우 비효율적일 뿐더러 관리가 더 힘들어진다. 이 경우 git-ftp 커맨드를 이용하는것을 매우 추천한다. 다운로드 링크: https://github.com/git-ftp/git-ftp ...

2013년 12월 11일 · 2분 · 238단어

우편번호 DB MySQL로 임포트하기

감사하게도 http://www.zipfinder.co.kr/ 에서 편리하게 사용가능한 다양한 형식의 우편번호 데이터베이스 파일을 제공해주고있다. 단순 CSV라서 우체국에서 주는것보다 가공하기 편하게 되어있는 편이다. 여기서는 Type 1 우편번호 DB를 기준으로 설명하도록 한다. CSV형태와 통일하게 임포트할 빈 테이블 먼저 생성 CREATE TABLE `korea_zipcode` ( `zipcode` char(7) DEFAULT NULL, `sido` char(4) DEFAULT NULL, `gugun` char(17) DEFAULT NULL, `dong` char(52) DEFAULT NULL, `bunji` char(17) DEFAULT NULL, `seq` int(5) DEFAULT NULL ) ENGINE=InnoDB DEFAULT CHARSET=utf8; 다음은 탭문자로 구분되어있는 CSV형태의 텍스트를 MySQL로 임포트하는 SQL구문은 다음과 같다. ...

2013년 11월 12일 · 1분 · 113단어

NginX vs. Apache on AWS micro

아파치(Apache)와 엔진엑스(NginX)의 특성들을 비교한 글들은 많이 있으니 여기서 다루지 않고, 실제 AWS EC2 micro에 적용했을때 어떤 차이를 보였는지만 눈으로 쉽게 볼 수있도록 이 글을 작성한다. 본 테스트가 진행된 웹서버에서는 워드프레스 기반의 사이트가 운영되고 있으며 일간 페이지뷰는 800~1000뷰 정도 된다. 처음에 아파치를 설치해서 사용할 떄는 CPU점유율이 5분이상 100%를 넘을때가 너무 많았다. 마이크로 인스턴스의 특성상 CPU 사용률 100%가 일정시간 이상 지속되면 먹통이 되는데 덕분에 하루에 4~5회정도 사이트 접속이 불가능한 시간들이 있었다. 서버를 스몰 인스턴스(small instance)로 업그레이드 하긴 좀 아까워서 웹서버를 엔진엑스, php-fpm조합으로 교체하여 테스트 해 본 결과 매우 성공적인 성능 향상을 가져왔다. ...

2013년 11월 10일 · 1분 · 189단어

NginX, PHP-FPM 맥에 설치하기

맥용 패키지 설치 프로그램인 홈브루(Homebrew)가 설치되어 있다는 것을 가정하에 진행한다. 홈브루가 없을경우 http://brew.sh/ 에서 다운로드하여 설치한다. 홈브루가 설치되어있을경우 다음 명령어를 통해 홈브루 포뮬러들을 업데이트 해두는 것이 좋다. brew update NginX 설치 brew install nginx NginX 설치를 위해서는 pcre 라이브러리가 필요한데, 디렉토리 권한문제로 다음과같은 에러가 날때가있다. Warning: Could not link pcre. Unlinking... Error: The `brew link` step did not complete successfully The formula built, but is not symlinked into /usr/local You can try again using `brew link pcre' 이경우 다음과같이 해결해주면 된다. ...

2013년 11월 3일 · 3분 · 530단어