2016년 2월 12일 금요일 및 2016년 2월 13일 토요일 작업내용 정리




1. cjkv.io 도메인을 구입

2. 클라우드 서비스인 conoha  설정

일본 GMO사에서 운영하는 클라우드 서비스인 conoha를 사용하게되었습니다.

採用目的 by GMOペパボ

(日本GMO는 네트워크 회사이면서, YAPC::Asia Tokyo 2015에 갔을때 위의 광고를 통해 알게 된 회사입니다. 이 회사가 conoha 클라우드를 운영하고 있는 회사입니다)


일본에서 시작한 클라우드 플랫폼 "ConoHa" (日本発のクラウドプラットフォーム「ConoHa」)

트래픽 무제한 (일본 VPN을 사용하려고, 추가로 일본쪽 서비스를 결제, 이용하려니 conoha에서 VPN을 사용해야겠다는 생각을 했음), 한국어 대응에도 마음에 들고, 국내 클라우드 서비스보단 속도가 느리지만 외국의 여러 클라우드서비스보다 속도도 빠른편


3. conoha에서 서버 설정

nginx설치, java, python2, python3 설치

VPN설정 그리고 개인 블로그를 설치형으로 설정하고, conoha로 이전할 예정. (conoha가 트래픽 무제한이기 때문에 개인 블로그 운영을 서비스형의 티스토리[Tistory]에서 conoha에서 설치하여 운영하는 설치형 블로그로 떠나갈까 고민됨.)


4. 일본 GMO에서 운영하는 conoha는 아래의 귀여운 캐릭터 美雲このは와 美雲あんず 2개의 캐릭터를 이용하여 클라우드 서비스 홍보를 하니 참 재미있는 회사 같다는 생각을 함.

ConoHa by GMO CM


Buy me a coffeeBuy me a coffee

Amazon Web Services 한국 블로그 - AWS 한국어 기술 백서 목록


2015년 6월 17일자로 Amazon Web Services 한국 블로그에 "AWS 한국어 기술 백서 목록"이 올라왔습니다.

영어로 된 기술 백서(whitepaper)중 일부가 한국어로 번역되었다는 소식.



영어로 된 백서(whitepaper) - http://aws.amazon.com/whitepapers/


Amazon이 한국에서 클라우드 서비스로 돈 벌 계획 (이미 돈 벌고 있지만) 더 확대할 느낌?

일본 도쿄, 싱가폴에 서버 팜을 운영하며, 중국 베이징(북경, 北京, beijing)에 서버팜을 운영할 계획이고, 한국에서도 서버팜을 운영했으면하는 바람이 있음.


요즘, AWS 테스트 하는데, 이렇게 기능이 좋을 줄은 몰랐음. 대학원 다닐때 AWS열심히 파면 서버(Server), 네트워크(Network), 인프라(infrastructure)에 대한 개념을 제대로 잡았을텐데라는 생각을 해보고 있음

ps. 요즘 아래의 책을 열심히 읽고 있습니다.


아마존 웹 서비스를 다루는 기술

저자
이재홍 지음
출판사
길벗 | 2014-09-30 출간
카테고리
컴퓨터/IT
책소개
실무에서 필요한 아마존 웹 서비스의 모든 것!입문에서 실전 시나...
가격비교



Buy me a coffeeBuy me a coffee




웹개발자를위한대규모서비스를지탱하는기술
카테고리 컴퓨터/IT > 프로그래밍/언어 > 웹프로그래밍 > 웹프로그래밍일반
지은이 이토 나오야 (제이펍, 2011년)
상세보기


일본에서 매우 유명한 웹 서비스 업체(쉽게 말해서 다음, 네이버와 같은 대형 포털)인 하테나(Hatena,はてな)의 CTO와 엔지니어가 쓴 "웹 개발자를 위한 대규모 서비스를 지탱하는 기술"이 한국에 번역되어 출간된다군요.

저는 커피닉스에서  [공동구매] 웹 개발자를 위한 대규모 서비스를 지탱하는 기술 링크를 보고 책을 구입하게 되었습니다.


이 책은 하테나(Hatena)사의 인턴들에게 인턴십과정중에서 수행되는 실제 기술 강의를 기반으로 구성되어 있습니다.

대규모 서비스 개발과 운영을 다룬 책인데 한국에서 이런 책을 찾기가 가뭄에 콩나물 보듯 어렵다 보니 관심이 갑니다.

(참고로 2009년 5월 12일자로 커피닉스 공동구매로 구입한 "서버/인프라를 지탱하는 기술"이란 책도 일본의 유명인터넷 업체인 하테나(Hatena,はてな)와 KLab의 서버 운영 노하우를 기술한 책으로 지금 소개할 책과 비슷합니다.)


서버인프라를지탱하는기술24시간365일
카테고리 컴퓨터/IT > 데이터베이스 > SQL서버 > SQL서버일반
지은이 이토 나오야 (제이펍, 2009년)
상세보기


아직 2011년 3월 2일 발매라 아직 책을 얻지 못했지만, 도서 설명 내용을 보니 네이버나 다음, 구글, 페이스북과 같은 대규모 웹서비스를 운영하는 회사의 노하우가 들어갔다는 생각을 합니다.

아래는 책의 목차입니다.


1 대규모 서비스 개발 오리엔테이션 -전체 그림 파악하기

강의 0 책의 근본 - 책에서 설명하는 것과 설명하지 않는

강의 1 대규모 서비스와 소규모 서비스

강의 2 계속 성장하는 서비스와 대규모화의

강의 3 서비스 개발의 현장


2 대규모 데이터 처리 입문 - 메모리와 디스크, 애플리케이션과 부하

강의 4 하테나 북마크의 데이터 규모 - 데이터가 많을수록 처리에 시간이 걸린다

강의 5 대규모 데이터 처리의 어려운 메모리와 디스크

강의 6 규모조정의 요소

강의 7 대규모 데이터를 다루기 위한 기초지식


3 OS 캐시와 분산 - 대규모 데이터를 효율적으로 처리하는 원리

강의 8 OS 캐시 구조

강의 9 I/O 부하를 줄이는 방법

강의 10 국소성을 살리는 분산


4 DB 스케일아웃 전략 - 분산을 고려한 MySQL 운용

강의 11 인덱스를 올바르게 운용하기 분산을 고려한 MySQL 운용의 대전제

강의 12 MySQL 분산 확장을 전제로 시스템 설계

강의 13 MySQL 스케일아웃과 파티셔닝


5 대규모 데이터 처리 실전 입문 - 애플리케이션 개발의 급소

강의 14 용도특화형 인덱싱 대규모 데이터를 능수능란하게 다루기

강의 15 이론과 실전 양쪽과의 싸움


6 [과제] 압축 프로그래밍 - 데이터 크기, I/O 고속화와의 관계 인식하기

강의 16 [과제] 정수 데이터를 컴팩트하게 가져가기

강의 17 VB Code 속도감각

강의 18 과제에 대한 상세설명과 응답 사례


7 알고리즘 실용화 - 가까운 예로 보는 이론ㆍ연구의 실전 투입

강의 19 알고리즘과 평가

강의 20 하테나 다이어리의 키워드 링크

강의 21 하테나 북마크의 기사 분류


8 [과제] 하테나 키워드링크 구현 - 응용으로 가는 깨닫기

강의 22 [과제] 하테나 키워드 링크 만들기

강의 23 응답 사례와 사고방식


9 전문 검색기술 도전 - 대규모 데이터 처리의 노하우

강의 24 전문 검색기술의 응용범위

강의 25 검색 시스템의 아키텍처

강의 26 검색엔진의 내부구조


10 [과제] 전문 검색엔진 작성 - 기초, 상세부분 작성, 속도와 정확성 추구

강의 27 [과제] 하테나 북마크 전문 검색 만들기

강의 28 응답 사례와 사고방식


11 대규모 데이터 처리를 지탱하는 서버/인프라 입문 - 서비스의 백엔드

강의 29 엔터프라이즈 vs. 서비스

강의 30 클라우드 vs. 자체구축 인프라


12 확장성 확보에 필요한 사고방식 - 규모 증대와 시스템 확장

강의 31 계층과 확장성

강의 32 부하 파악, 튜닝


13 다중성 확보, 시스템 안정화 - 100% 근접한 가동률을 실현하는 원리

강의 33 다중성 확보

강의 34 시스템 안정화

강의 35 시스템 안정화 대책


14 효율향상전략 - 하드웨어의 리소스 사용률 높이기

강의 36 가상화 기술

강의 37 하드웨어와 효율향상 저비용을 실현하는 요소기술


15 서비스와 네트워크 - 서비스의 성장

강의 38 네트워크 분기점

강의 39 한층 높은 단계로


특별편 현대 서비스 구축에 필요한 실전 기술 - 대규모 서비스에 대응하기 위해서

Special 강의 1 작업큐(Job-Queue) 시스템 TheSchwartz, Gearman

Special 강의 2 스토리지 선택 RDBMS key-value 스토어

Special 강의 3 캐시 시스템 Squid, Varnish

Special 강의 4 계산 클러스터 Hadoop



일단은 책을 받아 읽고보고 나서야 소감을 쓸수 있을것 같다.


ps1. 책의 목차를 보니 체계적으로 정리된듯 하다. 인터넷에서 수박 겉핥기로 알고 있는 내용들이 정리된다는 느낌? 

ps2. 한국의 웹서비스 회사에서 이런 노하우를 책으로 공개할 수 있을까?


Buy me a coffeeBuy me a coffee

클라우드 컴퓨팅과 타 컴퓨팅과의 비교 (출처: 한국 소프트웨어 진흥원, 2008)



 구분 주요개념  클라우드 컴퓨팅과의 관계 
Grid Computing 높은 컴퓨팅 리소스를 필요로 하는 작업의 수행을 위해 인터넷 상의 분산된 다양한 시스템과 자원들을 공유하여 가상의 슈퍼 컴퓨팅과 같이 사용하는 방식(분산 컴퓨팅 아키텍처)  Grid 방식의 분산 컴퓨팅과 Utility 개념의 과금 모형을 혼합한 컴퓨팅 방식
  • Grid: 인터넷 상의 모든 컴퓨팅 리소스
  • Cloud: 서비스 제공 사업자의 사유 서버 네트워크 
Utility Computing  컴퓨팅 리소스를 구매하거나 소유하지 않고 가스, 전기등과 같이 유틸리티로 필요할 때마다 사용하는 방식(사용량 기반 과금 모형) 
 Server Based Computing 서버에 애플리케이션과 데이터를 두고 필요할 때마다 접속해서 사용하는 방식(클라이언트는 입출력만 처리. 모든 작업은 100% 서버가 처리 - Thin Client 방식)  클라우드 컴퓨팅은 가상화된 분산 컴퓨팅에, SBC는 특정 기업의 서버에 중심을 둔다는 차원에서 개념적으로 구분. 그러나 SBC가 발전으로 점차 구분이 모호해짐 
 Network Computing SBC와 비슷하나, 애플리케이션을 서버에서 로드하여 로컬에서 수행하는 형태(이용자의 CPU를 사용하여 동작)  이용자의 컴퓨팅 리소스보다는 클라우드상의 IT 리소스를 사용하므로 개념적 구분 
 SaaS (Software as a Service)  서비스 제공자의 서버에 저장된 SW를 인터넷을 통해 서비스로 이용하는 SW 딜리버리 모형 클라우드 컴퓨팅은 모든 IT자원을 서비스로 활용한다는 차원에서 보다 SaaS(Software as a Service)를 포함하는 포괄적인 개념 




Buy me a coffeeBuy me a coffee
이번에 컴퓨터공학과 3학년 2학기에 새로 생긴 전공과목인 네트워크 프로그래밍이란 과목을 수강하다가 Process를 이용한 웹서버 구현하는 과제를 하였습니다. 생각보단 어렵지는 안더군요. 예전에 Thread를 이용한 간단한 웹서버 구현한 것이있어서 Process로 바꾸는 데에는 금방 했습니다. (참고로 열혈강의 TCP/IP 소켓 프로그래밍이란 책을 참고했습니다.)

열혈강의 TCP/IP 소켓 프로그래밍
윤성우 지음 / 이한디지털리(프리렉)
나의 점수 : ★★★★★

처음 본 TCP/IP 소켓프로그래밍 책입니다.
소켓프로그래밍 공부하는데 서점에서 무슨 책으로 공부할지 고민을 하다가 이 책이 초보자들에게 괜찮은 듯하고 거기에 무료강의까지 제공해서 선택했습니다.
이 책을 쓰신 윤성우님은 열혈강의 C, 열혈강의 C++란 책으로 아주 유명하신 분이죠. (전 열혈강의 C, 열혈강의 C++를 보질 않았습니다. 그렇게 유명한 책이고 동기들이 다 본 책인데 ㅡㅡ;)
이 책은 다른 책보다 Windows와 Linux 두군데에서 어떻게 소켓프로그래밍 할지 설명이 잘 되어있습니다. 다른 책들을 보면 Linux에서만 돌아가거나 등등.
OS를 가리지 않고 C언어에서 소켓프로그래밍을 설명한 책이라서 학과 커리큘럼상에서 Linux밖에 배우지 않는 것을 커버하는 것이 좋다고 생각한다.
그러나 단점은 JAVA에서의 소켓프로그래밍은 알아서 공부해야겠죠?
이 책을 일주일만에 소스 다 치면서 400페이지 이상 읽었습니다. 정말 책이 술술 읽힌 것 같네요. 윤성우님의 명서라 할수 있습니다. 그러니까 열혈강의 C와 열혈강의 C++도 잘 쓰여졌을것이라 보네요.



그래서 과제를 하다가 World Wide Web을 오랬동안 쓴 저 조차도, HTTP Protocol에 대해선 전혀 모르고 써왔구나를 느꼈습니다.
(저는 하이텔부터 쓴 사람이라서^^, 국민학교 3학년때 아부지 회사였던 테헤란로 K**란 회사에 가서 인터넷이라는 것을 알게 되었다지요. 그때 인터넷 접속할때에는 DOS에서 win를 쳐서 Windows 3.1를 실행시키고, Winsock이란 프로그램을 띄우고 나서 전화선 모뎀으로 접속해야했던 과거 ^^ - 오덕의 기운이 초등학교때부터 시작 ㅡㅡ;)

현재 우리나라에서는 HTTP Protocol가 어떻게 정의되었는지에 대한 책들을 찾기 힘들더군요, 그래서 학교 도서관에서 HTTP The Definitive Guide란 책을 빌려서 보고 있습니다 :D

책 내용이 2002년 9월달에 나왔지만, 변하는 내용은 아니니까. 책을 보면서 당연하게 느낀 것들도 어떻게 정의되었는지를 알게 되었을때 재미가 있네요. 공부가 재미있다는 것이 이런건가? -_-;;

Process를 이용한 웹서버 과제를 하고 나서 HTTP를 사용해서 서버 정보를 가져와 파일로 저장하는 프로그램도 짜봤습니다만, 자주 쓰는 웹서비스도 이해를 안하고 썼다는 것에 충격.


1. HTTP Protocol이란?
HTTP는 Hyper-Text Transfer Protocol의 약자로 WWW(World Wide Web)에서 사용되는 Protocol이다. HTTP/1.0은 RFC1945, HTTP/1.1은 RFC2068, RFC2616에 명시되어 있습니다.
일반적으로 포트번호는 80을 사용합니다.
실제로 쓰는 웹서버들은 포트번호를 명시해주어야 합니다. 예를 들어 네이버 주소는 원칙적으로 쓰면 http://www.naver.com:80/ 이렇게 포트번호 80를 명시해주면서 접속을 해야한다만 http://www.naver.com/ 이런식으로 표현하는 것도 포트번호가 80을 쓴다는 것을 암묵적으로 알기때문입니다.

자세한 내용은 RFC 문서를 읽으시는 것이 좋을 듯 합니다. 블로그에 포스팅하긴 엄청나게 방대한 양이라서요^^
HTTP/1.0 RFC1945 : rfc1945.txt.pdf
HTTP/1.1 RFC2068 : rfc2068.txt.pdf
HTTP/1.1 RFC2616 : rfc2616.txt.pdf

2. 웹서버를 이해하기
웹서버란? HTTP Protocol을 기반으로 해서 웹 페이지가 들어있는 파일을 클라이언트에게 전송해주는 프로그램이라고 보면 됩니다.
지금, 이 글을 보는 여러분들은 인터넷 브라우저인 FireFox나 Internet Explorer를 사용하고 계실 것입니다. 이 인터넷 브라우저는 클라이언트 소켓프로그램에 해당됩니다. 임의의 사이트에 접속을 하려고 할때, 브라우저도 내부적으로 TCP/IP소켓을 생성하기 때문입니다. 다만 인터넷 브라우저가 지니는 특징은, 서버가 전송해주는 HTML문으로 이루어진 문서를 그대로 보여주지 않고 HTML문법에 맞게 변환해 준다는 것이죠.

3. 간단한 HTTP 실행과정
HTTP는 클라이언트와 서버가 일정하고 예측 가능한 방식으로 정보를 교환하고 상호작용을 할수 있도록 허용하는 Method와 header의 집합을 정의하고 있습니다.
웹에서 볼수 있는 각 XHTML파일은 웹과 관련된 URL(Universal Resource Locator)을 가지고 있습니다. URL은 사용자가 접속하고자 하는 리소스(대부분 웹 페이지)에 브라이저가 접속할 수 있도록 하는 정보를 포함하고 있습니다.
예를 들면, http://www.dal.kr/data/index.html

http://는 웹 브라우저가 HTTP를 이용해 리소스를 요청해야한다는 것을 나타냅니다. 중간부분의 www.dal.kr은 서버 호스트 이름입니다. 호스트 이름은 리소스가 위치에 있는 컴퓨터의 이름인데, 이 컴퓨터가 보통 리소스를 간직하고 유지하기 때문에 호스트(Host)라고 합니다.
요청된 리소스 이름 /data/index.html (HTML문서)는 URL의 나머지 부분입니다. URL에서 이 부분은 리소스 이름(index.html)과 경로 (/data)를 확실해 구분해줍니다. 이 경로(path)는 웹 서버 파일 시스템에 있는 실제 Directory를 나타냅니다. 그렇지만 보안상의 이유로 경로는 대부분 가상 디렉토리(Virtual Directory)를 나타냅니다. 이 경우에, 서버는 해당 경로를 서버의 실제 위치로 해석하기 때문에 자원의 정확한 위치를 숨길수 있습니다. (Apache에서 VirtualHost인가 설정하면 해당 경로를 해석해서 표현합니다^^)

주어진 URL에 대해서 브라우저가 웹 페이지를 표현하기 위한 HTTP 트랜젝현을 어떻게 수행될까요?
아래 올려진 그림에서 잘 보여줍니다.
http://www.dal.kr/data/index.html를 접속한다고 생각합니다.
브라우저는 서버로 HTTP요청을 보냅니다. 그 요청은 이렇게 나타냅니다.
GET/data/index.html HTTP/1.1
host : www.dal.kr

GET이라는 단어는 리소스를 검색하고자 하는 클라이언트를 나타내는 HTTP Method입니다. 나머지 요청에서는 리소스의 이름 및 경로 그리고 프로토콜 이름과 버전 번호(HTTP/1.1)를 제공합니다.
(실험한 사이트들이 HTTP/1.0 을 써서 난감 ㅡㅡ;)

클라이언트가 서버에게 메시지를 주면 서버는 클라이언트에 요청 결과를 보내줍니다.
서버는 우선 한 줄로된 HTTP 버전과 그 뒤에 트랜잭션의 상태를 나타내는 숫자 코드와 구(phase)로 응답합니다.
HTTP/1.1 200 OK는 성공, HTTP/1.1 501 Method Not Implemented 는 요청을 처리하는데 필요한 기능이 구현되지 않았음, HTTP/1.1 404 Not found 는 특정한 위치에서 서버 자원을 찾을 수 없다는 응답을 알려줍니다.

아래는 제가 HTTP정보를 얻는 프로그램을 작성해서 돌려본 결과입니다. 제가 가는 사이트 마다 HTTP/1.1 지원하는 사이트가 없군요 ㅡㅡ; 다만 제가 일하고 싶은 오픈마루스튜디오는 HTTP/1.1를 지원하고 있었습니다 ㅠㅠ
host : www.dal.kr, path : /data/index.html
Get /data/index.html HTTP/1.0

HTTP/1.1 501 Method Not Implemented
Date: Sun, 23 Sep 2007 15:01:44 GMT
Server: Apache
Allow: GET, HEAD, OPTIONS, TRACE
Connection: close
Content-Type: text/html; charset=iso-8859-1

host : www.http-guide.com, path : /index.html
Get /index.html HTTP/1.0

HTTP/1.1 501 Method Not Implemented
Date: Sun, 23 Sep 2007 15:10:04 GMT
Server: Apache/1.3.37 Ben-SSL/1.57 (Unix) PHP/4.4.2 FrontPage/5.0.2.2624 DAV/1.0.3
Allow: GET, HEAD, POST, PUT, DELETE, CONNECT, OPTIONS, PATCH, PROPFIND, PROPPATCH, MKCOL, COPY, MOVE, LOCK, UNLOCK, TRACE
Connection: close
Content-Type: text/html; charset=iso-8859-1

host : www.openmaru.com, path : /index.php
Get /index.php HTTP/1.0

HTTP/1.1 200 OK
Date: Sun, 23 Sep 2007 15:24:31 GMT
Server: Apache/2.2.3 (Unix) PHP/5.1.6 mod_python/3.2.10 Python/2.4.3 DAV/2
X-Powered-By: PHP/5.1.6
Set-Cookie: TSSESSION=2039b9c23de52f6d7b8713126cf3b9b4; path=/; domain=openid.or.kr
Expires: Thu, 19 Nov 1981 08:52:00 GMT
Cache-Control: no-store, no-cache, must-revalidate, post-check=0, pre-check=0
Pragma: no-cache
Vary: Accept-Encoding
Connection: close
Content-Type: text/html; charset=utf-8
서버는 클라이언트에게 보내는 데이터에 관한 정보를 제공하는 하나 또는 그 이상의 HTTP헤더를 보냅니다. 위에 제가 HTTP정보를 얻는 프로그램을 작성해서 돌려본 결과를 보면 그 예를 볼수 있습니다.
Content-Type: text/html; charset=iso-8859-1
Content-Type: text/html; charset=utf-8
Content-Type헤더의 정보는 MIME(Multipurpose Internet Mail Extension) 타입의 컨텐츠를 확인합니다. 서버에서 보내진 각 데이터 타입은 MIME타입을 가지며 이 MINE타입을 통해 브라우저는 받은 데이터를 어떻게 처리할 것인지를 결정합니다.

헤더 다음의 빈줄은 서버가 HTTP 헤더 전공을 끝냈다는 것을 클라이언트에게 알려주는 것입니다. 그리고 나서 서버는 요청된 리소스의 내용들을 보냅니다. 리소스 전송이 완료되면 연결이 종료됩니다. 클라이언트 측 브라우저는 받은 문서를 해석하고 결과를 화면에 출력또는 전달해줍니다.
아래 그림은 웹 서버랑 브라우저랑 어떻게 연결하는지 보여주는 그림입니다 :D
책내용은 HOW TO C++ PROGRAMMING Forth Edition - Deitel 형제가 쓴 책 내용의 일부분 참조했습니다.

아 생각보다 방대한 양들이군요. HTTP/1.1로 구현한 웹서버는 기능을 많이 뺀 것이라 간단하게 프로그래밍 했다만, 제대로 구현하려면 몇줄을 작성해야할까 걱정이 되군요 ㅡㅡㅋ
이왕에 MFC로 윈도우즈에도 써볼까? -_-;;(그러다 밤샐래!)

자세한 내용은 위에 있는 RFC문서를 참조하시기 바랍니다. 영어 해석이 어렵다면 네이버 지식즐을 참조하시길 :D

'컴퓨터 > Web' 카테고리의 다른 글

나만의 도메인으로 gmail를 쓰게 되었음.  (0) 2008.02.01
IE7로 업그레이드하다.  (0) 2008.01.26
HTTP/1.1 Protocol이란?  (0) 2007.09.24
sungdh86님의 노트  (1) 2007.09.01
여태까지 이런 기능이 없었다니  (6) 2007.08.01
PHP 이메일 체크 함수  (2) 2007.01.22
Buy me a coffeeBuy me a coffee
가는 날이 장날이라는 말이 있다.
네이버 지식인에 보면 이렇게 쓰여져 있더군요
우연히 갔다가 "생각지도 못한 일을 겪게 되었을 때" 쓰는 말입니다. 이 말은 보통 좋지 않은 일을 당했을 때 쓰지만, 좋은 일을 겪었을 때에도 쓸 수 있는 말입니다.


이번에 학과 홈페이지 버그들을 알아내서 (PHP 버전을 4.X에서 최신인 5.X로 바꾸면서 보안을 이유로 PHP소스 코드 변경이 좀 많았다 -_-;;) 오늘 버그들을 수정하고 테스트하려고 했다. 일요일이라는 최적의 시간에 널널하게 테스트를 하고픈 마음에서 일부로 일요일 오후로 미뤄가면서 오전에 오후에 볼일들을 억지로 다보았다.

일요일 오후경, 학과 홈페이지 PHP소스코드를 수정 및 테스트를 하려고 했다. 그런데 ......

접속이 안된다 ㅠㅠ
이거 저번처럼 SSH port와 sftp port가 막힌 줄 알고 ping 테스트와 traceroute 테스트를 했더니 먹통 OTL
인터넷은 잘 되는데 학교 홈페이지가 안들어가지나 궁금해서 홈페이지에 들어갔더니..... 먹통이다.

학교에 정전이 일어났구나!


그러면 학과 서버 전체가 정전으로 껴져있을테고, 서버관리자님은 월요일 오전 11시경 출근하실듯 하고, 내가 운영하는 서버도 정전일테고 ...... 월요일날 할일이 잔뜩 쌓였다.


어하튼, 예상했던 것보다 돌발변수가 이번 주에 많이 생길듯한 기분은 뭐지? 월요일에 학교에 가야하는 불쌍사가 일어나서 짜증이 난다. (집에서 홍대까지는 왕복 2600원 OTL)

'일상다반사' 카테고리의 다른 글

OpenID워크샵에 무료로 가게 되었어요!  (2) 2007.08.23
일때문에 스트레스  (3) 2007.08.21
가는 날이 장날이라더니  (3) 2007.08.19
용산에서 램추가를 함.  (4) 2007.08.11
노트북에 1GB짜리 램 추가  (2) 2007.08.11
python78님을 찾습니다.  (8) 2007.08.10
Buy me a coffeeBuy me a coffee
  1. Favicon of http://kkendd.egloos.com BlogIcon kkendd 2007.08.19 23:43

    이것이 장날 OTL

  2. Favicon of http://always20.egloos.com BlogIcon 김알랄 2007.08.20 00:51

    으하하항. ..이 아니라(...)
    (토닥토닥)
    월요일에 저도 학교 갈 일이!! :D . 차비 : 튼튼한 두 다리.

  3. Favicon of http://camuigackt.egloos.com BlogIcon Shirou君 2007.08.20 08:50

    인생...

제가 맡고 있는 웹서버의 DB가 꼬여서 한글을 제대로 보여주지 못한 것을 해결하였습니다.
이 짓 한다고 거의 이틀을 잡아먹은 듯 하군요. 이제야 해결방법을 찾았으니, 다음 서버운영자에게 운영을 매끄럽게 하기 위해서 문서화 작업을 해야할듯 하군요.

Linux 서버를 다시 셋팅할때에는 MySQL자료를 백업을 받고 셋팅을 하여야 합니다.
서버에 있는 MySQL자료를 전부 백업 받는 방법은 이렇게 합니다.
# mysqldump -u root -p --all-databases > backup.sql
(backup.sql은 백업할 파일의 예를 듦)

백업 받은 자료에 내용을 확인합니다. 그런데 한글이 깨진다면 대책이 없을 것이죠?

mysql의 인코딩 설정이 서버마다 다르기 때문에 dump 할때 한글이 깨지는 문제가 생긴다고 하더군요. 그리고 dump가 안된다고 에러가 난다면 --force를 때려 넣으시야 함.
dump 했을때 한글이 깨지는 경우
# mysqldump -u root -p --all-databases --force --default-character-set=latin1 > backup.sql

이렇게 해서야 겨우 dump 백업을 가까스로 마쳤습니다. 이거때문에 하루는 버렸습니다.ㅠㅠ

참고자료 : dump할때 한글 깨짐 방지
(원문을 트래백할려고 해도 트래백이 안되군요, 그래서 링크 걸었습니다.

백업받은 파일을 vi로 엽니다. 여기서는 다 latin1로 설정되어 있어서 다른 DB에 올릴경우 당근 한글 깨지고 홈페이지 복구를 못시킵니다.
이거 문자 인코딩이 latin1이라 되어있어서 vi로 latin1을 euckr로 치환을 하고 나서 저장합니다.
그러면 복구 할때 문자코드가 euckr로 되어서 백업을 쉽게 할수 있죠.

dump로 백업받은 파일들은 이렇게 복구를 합니다.
mysql -u root -p --force --default-character-set=euckr < backup.sql

이렇게 하면 DB복구 완료 :D 이렇게 간단한것 알아내려고 밤을 샜습니다. 이건 애니를 볼수 있는, 게임을 할수 있는 시간을 빼았겨서 까악 ㅠㅠ

(※ 다음에는 서버 운영할시 일주일에 한번은 복구 스크립트넣고 재부팅 시켜서 하드디스크 상태를 봐야할듯 합니다. 서버가 하드디스크 고장에 맛가도 DB자료는 다행이도 항상 잘 남겨져 있어서 다행 ㅠㅠ)

다시 MySQL를 5로 깔았다. dump한 DB자료를 다시 넣으니까 한글이 제대로 들어간다. 휴
이번에 설정을 다시 제대로 해서 다행. 이번에 학과 서버관리자님께서 학과 홈페이지 서버를 업그레이드 하면서 LAMP를 Wow Linux & Apache 1.3 & Mysql3 & PHP 4에서 Fedora Core 7 & Apache 2.2 & MySQL5 & PHP 5로 버전 업을 시키는 것을 보면서 나도 따라갈려고 하다가 MySQL때문에 머리 아파 미치는 줄 알았다. (DB가 꼬여서 복구시키는데 3일 걸렸다.)
(나는 명색이 컴퓨터공학과 홈페이지 관리자-_-;; 컴퓨터공학과 서버관리자는 아님)


현재는 UTF-8와 EUC-KR이라는 문자코드때문에 골머리를 앓고 있는 과도기 상태입니다.
P.C.R.C.서버도 대세를 따라 UTF-8로 변경을 할까 골머리를 앓고 있군요.
Buy me a coffeeBuy me a coffee
  1. Favicon of http://daybreaker.info BlogIcon daybreaker 2007.08.05 12:22

    동아리 서버를 Debian 4.0 Etch stable로 업그레이드하는 중인데, DB 복구가 가장 난감합니다.
    일괄적으로 전부 다 euc-kr이거나 utf-8이면 편하겠는데 어떤 테이블은 euc-kr이고 어떤 테이블은 utf-8이라는..... orz;;;;

  2. Favicon of http://shutdafuckup.net BlogIcon cypher 2007.08.05 18:29

    제 경우는 MySQL4.0 - MySQL4.1 - MySQL5.x 로 업그레이드를 해왔었는데,
    초기에는 latin1 으로, 그리고 중간에 euckr 로, 최종적으로 utf8 로 인코딩이 변경되어 왔던 터라
    테이블마다 전부 인코딩이 제각각이라서 난감했던 기억이 있습니다. 일단 각 사용자들에게야
    &quot;일단&quot; 깨지지 않고 잘 보이니 그냥 놔뒀었는데..시간이 갈수록 이거 놔두면 더 골치아파지겠구나 하는 생각이
    들어서 날잡고 전부 따로 덤프떠서 변환하고 다시 박아넣었었던 기억이 나는군요.

    utf8로 대동단결이 살길입니다 -_-;

+ Recent posts