너무 길어 영문본과 번역본을 인쇄해 놓고 사무실에서 읽었는데 다 읽고 나니 머리가 뻐개질 듯 아프더군요.
간만에 긴 글을 한글본과 영어본을 번갈아 읽어보려니 너무 무리했나 싶더군요.
밖 커피숍에서 아이스 아메리카 한잔을 마시며 머리를 식히며, 이 긴글을 조금 요약 정리해 봐야겠다는 생각이 들었습니다.
아래 글은 주로 한글 번역을 기반으로 넷플릭스의 오리지널 콘텐츠를 어떻게 만드는지에 대해 개인적인 관점에서
정리했음을 밝힙니다
원글이 워낙 넷플릭스의 콘텐츠를 제작하는 과정이나 원칙에 대해서 생생하게 이야기하고 있기 때문에 시간을 내서 읽어보면 좋을 것 같습니다.
“더 많은 콘텐츠는 더 많은 시청을, 더 많은 시청은 더 많은 구독을, 더 많은 구독은 더 큰 매출을, 더 큰 매출은 더 많은 콘텐츠를 가능하게 합니다.”
1. 최고의 콘텐츠 제작자에게 투자를 아끼지 않는다.
넷플릭스는 최고의 콘텐츠를 만들 수 있는, 만들어 왔던 최고의 히트 메이커들에게 거액을 투자해 넷플릭스로 스카웃하는 등 투자를 아끼지 않습니다.
ABC의 숀다 라임즈와 FX/Fox의 라이언 머피 등 네트워크 최고의 히트메이커들에게 접근하여 최대 4억불을 약속해서 스카웃 했습니다.
또 오스카 수상 감독인 데미안 차젤레, 기예르모 델 토로과도 작업하고 있으며, 이 시대 가장 성공적인 시트콤 제작자 척 로리에게도 콘텐츠를 제작할 수 있는 권한, 그린라이트를 발급했습니다.
지난 달에는 버락 오바마와 미셸 오바마와도 TV쇼 및 영화를 제작키로하고 거액의 계약을 체결했습니다.
오바마대통령 – 출처 Obama 오바마 트위터
또 넷플릭스는 어떤 쇼들의 제작에는 2,000만불 이상을 과감히 투자해서 월등한 품질의 콘텐츠를 만들어 냅니다.
스탠드업 코미디(크리스 록, 데이브 채펠, 엘렌 드제네레스), 차세대 토크쇼(미셸 울프, 하산 미나즈), 왕년의 스타들의 쇼(데이빗 레터맨, 놈 맥도널드) 등등
2. 권한 이양 – 자체 의사 결정 권한을 갖는 다수의 팀이 존재한다.
넷플릭스는 많은 콘텐츠를 제작하기 위해 분권화된 기획/제작 조직을 만들었습니다.
이들은 반쯤 독립적인 조직처럼 자체 의사 결정으로 콘텐츠를 만듭니다.
심지어 이들은 넷플릭스 최고 콘텐츠 책임자 테드 사란도스가 반대해도 제작을 진핼 수 있는 권한을 가지고 있습니다.
최고 콘텐츠 책임자 테드 사란도스는 이야기 하죠.
우리가 지금 하고 있는 일들을 규모와 품질 모든 측면에서 제대로 하기 위한 유일한 방법은, 팀에게 그들의 의사 결정 권한을 주는 것 뿐입니다.
제 팀의 임원들은 헐리우드의 그 어떤 이들보다 구매 권한이 큽니다. 제 팀은 제 승인 없이 어떤 프로젝트든 진행할 수 있습니다. 심지어 제가 반대하는 경우라도 말이죠!
넷플릭스 제작팀 임원들 Netflix Executives, From left, Amy Reinhard-VP of content acquisition, Bela Bajaria-VP of content acquisition, Ted Sarandos-chief content officer, Cindy Holland-VP of original content and Erik Barmack-VP of international originals, Photo-Nathaniel Wood
3. 로컬 오리지널의 강화
미국에서도 여전히 성장하고 있지만 넷플릭스는 해외에서 큰 기회를 보고 있습니다.
이는 다크>(독일), <인거버너블>(멕시코), < 3%>(브라질> 처럼 미국 외 지역에서 제작되는 영어가 아닌 언어의 오리지널 콘텐츠들을 강화하는 것에서 출발합니다.
외국 시장에서 더 잘 경쟁하고 성장하기 위해, 넷플릭스는 그 지역에서 그 지역의 창작자가 만든 콘텐츠를 구독자들에게 제공할 필요가 있다고 믿고 있습니다.
아러한 로컬 오리지널 콘텐츠의 강화는 빠르게 증가하는 미국 제외한 글로벌 유료 가입자 수 의 증가에서 그 효과를 찾을 수 있습니다.
▽ 넷플릭스 유료 구독자 증가 추이(1998년~2018년 1Q),
넷플릭스 발표 자료 기반 그래프 by Happist
4. 취향 집단으로 Segmentation하다
넷플릭스는 기존의 인구통계적 구분을 ‘취향 집단(Taste Community)’이라는 개념으로 대체해 활용하고 있습니다.
인류학적 추정보다는, 실제 시청 기록을 중심으로 전체 구독자를 약 2,000개이 섬세한 집단으로 나누었습니다.
이렇게 디테일하게 나뉜 취향 집단으로 비슷한 취향을 가진 사람들의 행동을 분석해 시청자들이 더 좋아할 만한 콘텐츠를 찾아 제안함으로써 새로운 것을 더 보게 유도하는 도구로 활용됩니다.
그렇기에 개개인마다 추천받는 콘텐츠가 다릅니다. 그래서 ‘당신의 넷플릭스와 내 넷플릭스는 다르다’.”는 이야기가 나오는 것이죠.
5. 철저히 데이타에 의한 의사 결정
넷플릭스가 과감하게 새로운 콘텐츠를 시도하지만, 진행 도중 아니라고 판명되면 가차업이 포기합니다.
콘텐츠 책임자 테드 사란도스는 넷플릭스 쇼 중 80%는 1~2개 시즌 후 후속 제작이 중단된다고 합니다. 또 반응이 좋았던 쇼들도 철저한 재검증을 거쳐 추가 투자 여부를 결정합니다.
코미디언 마리아 뱀포드의 이야기를 다룬 <레이디 다이너마이트>도 두 번째 시즌이 로튼 토마토 평점 100%로 호평을 받았음에도 불구하고 시청자수가 적었기 때문에 후속 제작은 불발되었습니다.
콘텐츠 책임자 테드 사란도스는 말 합니다.
<레이디 다이너마이트>는 제 개인적으로 정말 매료되었던 쇼였습니다. 전통 사업자들에서는, 임원이 그 쇼의 팬이라는 이유로 속편을 제작하는 경우가 왕왕 일어나는 반면 우리는 그렇지 않죠.
올해 디즈니의 활약을 보지 않더라도 영화 콘텐츠 부분에서 디지즈만큼 강력한 콘텐츠 경쟁력을 가진 기업를 찾아 볼 수 없습니다. 그렇기에 디즈니는 네플릭스와 대항하는 새로운 스트리밍 서비스를 내놓고 콘텐츠 제작과 이를 소비자들에게 전달하는 유통까지 장악하겠다는 꿈을 꾸고 있는 것이죠.
인크레디블 2가 미국에서 개봉되면서(아쉽게도 한국에서는 방학시즌을 맞아 7월에 개봉합니다.) 아직 성수기가 아님에도 불구하고 놀라운 흥행 성적을 내고 있다고 해서 박스 오피스 모조 데이타를 기반으로 그 내용을 살펴 보았습니다.
1. 개봉 첫 주말 흥행 성적 – 역대 8위로 선방
영화의 흥행을 가름하는 지표는 여러가지가 있죠.
미국을 비롯한 전 세계 흥행 수입이 가장 많이 언급되는 지표이고,
초반 영화의 반응을 살펴보기에는 썩토(Rotten Tomato) 지수와 같은 영화 평가 지수
첫 주말에 얼마나 많은 사람들이 영화를 봤느냐는 개봉 cjt 주말 흥행 성적등을 보기도 합니다.
여기서는 개봉 첫주말 흥행 성적을 가지고 살펴보도록 하겠습니다. 개봉 초기 단계이므로 불 수 있는 지표가 아직은 없기 때문이기도 합니다.
인크레디블 2는 개봉 첫 주말 흥행 수입으로 1억 8천 3백만 달러를 올리면서 역대 영화 중 무려 8위에 올랐습니다.
1위는 2018년 5월 개봉했던 디즈니 마블의 어벤저스 인피니트 워가 차지했네요. 2위는 스타워즈 – 깨어난 포스 그리고 3위는 스타워즈 – 라스트 제다이가 차지하고 있네요. 그러고 보면 픽사 영화뿐만 아니라 마블 및 스타워즈와 같은 디즈니가 인수한 스튜디오 작품들의 성적이 좋네요.
디즈니가 적극적으로 가능성이 있는 영화 스튜디오들을 인수한 전략이 크게 빛을 보는 것 같습니다. 아쉽게 여기에는 디즈니 자체 영화는 많지 않습니다.
▽ 미국 개봉 주말 흥행 Top 20, Box Offfice Mojo data기반 그래프 by Happist
2. 픽사 영화중 개봉 첫 주말 흥행 수입 1위
개봉 첫 주말 흥행 성적이 전체 영화중에서는 8위에 불과(?)하지만 이를 디즈니 픽사 영화내에서 따져보면 가장 좋은 성적을 거두었습니다.
디즈니 픽사 영화의 개봉 첫 주말 흥행은 이번 개봉한 인크레디블 2가 선두이고 도리를 찾아서(Finding Dory), 토이 스토리 2가 그 뒤를 잇고 있습니다.
▽ 픽사(Pixar) 미국 개봉 주말 흥행 순위 Top 20, Box Offfice Mojo data기반 그래프 by Happist
참고 1. 연도별 디즈니 영황 흥행 수입
인크레디블 2 관련 통계를 살펴보다보니 디즈니의 영화 흥행 수입 추이까지 살펴보게 되었는데요.
디즈니가 적극적으로 유망한 스튜디오를 인수해 포트폴리오를 잘 갖춘 덕분에 디즈니의 흥행 수입은 전반적으로 크게 상승하는 모습을 보여주고 있습니다. 비록 연도별로 조금 부침이 있기는 하지만 추세적으로 상승하는 모습을 보여주고 있습니다.
연도별로는 2016년에 73억 달러를 기록해 가장 좋은 성적을 기록했고 이어 2017년에 63억 달러, 2015년 62억 달러로 뒤를 달리고 있습니다.
▽ 연도별 디즈니 영화 흥행 수입 추이(단위 : 10억 달러), Box Offfice Mojo data기반 그래프 by Happist
참고 2. 디즈니가 인수한 마블, 루카스 그리고 픽사의 흥행 성적
그러면 디즈니가 인수한 픽사, 마블 그리고 스타워즈 시리즈의 루카스 필름의 성과는 어떤지 살펴 봤습니다.
픽사는 2006년에 74억 달러에 인수했고, 마블은 2009년 42억 4천만 달러에 인수하고 이어 2012년에는 40억 50만 달러에 인수했죠.
이들 삼총사의 인수 당시 인수 금액에 대해서는 이런 저런 논란이 있었지만 결국에는 멋진 투자였다는게 증명되었습니다.
이들 삼총사의 연도별 흥행 수입을 살펴보면 확실히 마블의 성적이 발군입니다. 42억 4천만 달로로 상대적으로 저렴하게 인수했던 마블이 이제는 디즈니 영화부문을 먹여살리는 정도에 이르렀으니 가장 성공한 투자로 보입니다.
다음으로는 어쩌면 마직막 빛을 밝혔을지도 모를 스타워즈 시리즈가 최근 3년동안 좋은 성적으로 보였습니다.
그리고 74억 달러로 가장 많은 투자 금액을 지불했던 픽사도 꾸준하게 흥행 수입이 증가하고 있습니다. 다만 최근 마블이나 스타워즈 시리즈에 비해서는 조금 부족한 모습을 보이고 있습니다.
▽ 디즈니 인수 삼총사(마블, 루카스, 픽사) 연도별 흥행 수입 추이(단위 : 백만 달러), Box Offfice Mojo data기반 그래프 by Happist
최근 디즈니와 컴캐스트의 폭스(Fox)사 인수 경쟁이 넷플릭스에 미차는 영향을 짚어 보았습니다.
미디어 업계 내에서의 지각 변동이므로 당근 넷플릭스에게 영향이 미치겠지만 넷플릭스가 가지고 있는 오리지멀 콘텐츠, 스트리밍 서비스 경쟁력 등을 고혀하면 영향을 제한적일 것이라는 평가입니다.
Executive Summary
미 연방법원이 AT&T와 타임워너간 인수 합병을 승인
이 합병 승인에 자극받은 컴캐스트는 이미 디즈니가 선점하고 있었던 Fox 인수전에 뛰어 듬 또한 버라이존은 CBS 인수를 추진하는 등 미디어 업계의 지각 변동이 일어나고 있음
이러한 미디어 업계간 인수 합병이 넷플릭스에 미치는 영향은 제한적이라는 의견이 있음
① 넷플릭스는 오리지널 콘텐츠에 집중한 결과, 전통 미디어 의존도를 점점 낮추어 가고 있음
② 넷플릭스는 경쟁사들보다 훨씬 앞선 고품질 스트리밍 상품을 개발했고 이릉 운영하는 풍부한 경험으로 차별화 가능
③ 기존의 미디어들이 가진 낡은 비지니스 모델들이 혁신을 가로 막아 혁신을 통한 경쟁력 확보는 기대 난망
한편 디즈니와 컴캐스트의 Fox 인수전은 2가지정도 시나리오가 예상 됨
① 비딩 전쟁(a bidding war)이 가속화되어 누가 되었든 막대한 인수 비용을 지불할 가능성이 높아, 누가 되든 승자의 저주에 걸릴 가능성이 많아짐
② Fox가 TV 부문과 영화부문으로 분할되어 별도로 인수 합병되는 경우도 가능
Fox사는 영화 관련 Hulu가 30% 지분을 가지며 유럽 TV 사업자 스카이가 39% 지분을 가지고 있는데, 이들 업체도 미디어 기업이므로 한 회사에 몰아주는 방안 대신 영화와 TV를 분리시키는 안을 선택할 가능성이 있음
1. 지각변동이 일어나고 있는 미디어 업계
최근 미디어 업계에서 굵직한 사건들이 연이어 일어나고 있습니다. CNN, HBO, 타임워너, 디즈니, 컴캐스트, 넷플릭스 등 우리에게도 익숙한 미디어 기업들과 서비스드링 이합 집산을 거듭하고 있죠.
최근 일어나고 있는 미디어 업계의 사건들 몇가지를 정리해 보겠습니다.
1.1. AT&T의 타임워너 인수 승인
2018년 6월 14일, 미 연방법원은 미국 2위 통신업체 AT&T와 3위 미디어 업체 타임워너간의 인수 합병(M&A)을 승인했습니다.
사실 2016년 10월 이미 AT&T은 타임워너를 854억 달러에 인수하기로 했지만 독점을 우려한 미 행정부의 반대로 이루어지지못하고 법정 다툼을 벌려 왔습니다.
통신업체인 AT&T가 미디어 업체를 인수한 이유는 5G 시대를 맞아 CNN, HBO등을 보유한 타임워너의 동영상을 비롯한 막대한 콘텐츠를 통해서 가입자 유치를 강화하기 위해서라는 분석입니다. 타임워너의 인기 콘텐츠를 AT&T 가입자들에게 독점적으로 제공한 기존 가입자를 유지하고 신규 가입자 유치를 강화하겠다는 전략입니다.
1.2. Fox 인수전이 치열해지다.
또 그동안 디즈니가 공을 들여왔던 21st Century Fox 인수와 관련해 컴캐스트가 Fox 인수전에 뛰어들면서 새로운 양상이 벌어지고 있습니다.
▽ 폭스(Fox)사의 대표 영화 아바타(Avata) 한 장면
디즈니는 2017년 12월 Fox를 524억 달러에 인수키로하고 승인 절차를 밟고 있었는데 이 와중에 컴캐스트가 650억 달러를 제시하면 Fox 인수전에 끼어 든 것입니다.
컴캐스트는 인수자에 의해 거래가 성사되지 않으면 역위약금 25억 달러를 제시했으며, 아울러 Fox가 디즈니에 물어야 할 위약금 15억 2천 500만 달러도 대신 지불하겠다는 조적능 내세웠습니다.
기술과 트렌드가 급변하는 환경하에서 유리한 고지를 차지하는 각기업들의 전략이 미디어 콘텐츠 배포 기업과 콘텐츠 기업 그리고 스트리밍 기업간에 이합집산이 일어나고 있는 것입니다.
1.3. 간단 맵으로 살펴보는 미국 미디어 기업 현황
미디어 산업 규모가 엄청나기 때문에 이 산업에는 엄청나게 많은 기업들이 경쟁하고 있습니다.
이런 미디어 기업 현황ㅇㄹ recode에서 한장의 지도로 정리한 map이 있어서 소개해 봅니다.
각 미디어 기업들의 매출 및 시가 총액 및 관계를 한눈에 알 수 있습니다.
▽ redode가 정의한 미국 미디어 기업 현황 2018년 6월 현재
2. 미디어 기업간 인수합병이 넷플릭스에 미치는 영향?
그러면 이런 전통 미디어 기업간 인수 합병(M&A)는 스트리밍 업계를 리딩하고 있는 넷플릭스에게는 어떤 영향을 미칠까요?
2.1. 기존 미디어들의 이합집산은 넷플릭스에 큰 위협이 되지 못할 것
넷플릭스의 미래에 대해 아주 긍정적으로 평가하는 투자회사 구겐하임의 애널리스트들은 AT&T나 디즈니의 Fox 인수와 같은 인수 합병이 넷플릭스에 미치는 영향은 제한적이라고 주장합니다.
그 이유로 넷플릭스의 오리지널 콘텐츠, 스트리밍 분야에서 앞선 경험 그리고 기존 업체들 자체의 한계 때문에 큰 위협이 될 수 없다고 보고 있습니다. 즉,
넷플릭스는 오리지널 콘텐츠에 집중해 왔습니다. 이는 전통적인 미디어 회사들에 대한 의존을 줄여줄 수 있습니다.
넷플릭스는 경쟁사들보다 훨씬 앞선 고품질 스트리밍 상품을 개발하는 데 성공했고 이를 운영하는 경험을 쌓았기에 경쟁사들보다는 경쟁 우위에 있습니다.
기존의 미디어들은 경쟁에 필요한 혁신을 가로막는 낡은 비지니스 모델들이 오히려 혁신을 통한 성장을 방해하고 있습니다.
그렇기 때문에 기존 미디어 회사들이 고객들을 장악할 가능성보다는 넷플릭스가 기능과 경험(셋탑박스 업체들과의 파트너쉽, 게임 등)을 확대하면서 고객들을 즐겁게 할 가능성이 보다 높아진다고 합니다.
따라서 투자자들은 투자자들은 기존 미디어 기업들의 인수합병에 넷플릭스가 위협을 받기보다는 넷플릭스의 오리지널 콘텐츠 개발과 창출을 확대하는 시장을 늘리고 가입자를 늘려갈 수 있는 능력에 초점을 맞추어야 한다고 제안합니다.
2,2. 디즈니와 컴캐스트의 Fox 인수전은 넷플릭스에 도다른 승리을 안겨줄 수도
한편 Fox 인수를 위해 디즈니와 컴캐스트의 경쟁이 격화되면서 최종적으로 넷플릭스가 승리를 거둘 수 있다는 전망이 제기되었습니다.
▽ 월트 디즈니 최근 1개월간 주가 추이, 컴캐스트의 Fox 인수전 참여에 따른 리스크 부각으로 주가가 하락하고 있다.
2.5. 넷플릭스에 대한 긍정적 전망
반면 2018년 6월 19일 GBH는 넷플릭스 목표 주가를 현재 400달러에서 500달러로 크게 올렸습니다.
GBH는 넷플릭스 가입자들이 주당 10시간을 시청하며, 반면 경쟁사인 Hulu는 5시간을 시청하고 있다는 조사 결과를 공개했습니다.
넷플릭스는 콘텐츠 확보와 배급에 아주 강력한 능력을 보유하고 있으며, 지난 2년간 전 세게 100여국에서 글로벌 유통망과 고객을 확보하면서 2020년 7억명의 가입자 시장으로 커갈 글로벌 시장에서 경쟁력을 키우고 있다고 평가했습니다.
이러한 경쟁력을 기반으로 목표 주가를 올린다고 GBH는 밝혔습니다.
실제 넷플릭스의 주가는 2017년 말 191.96달러에서 2018년 6월 19일 404.98달러로 배이상 올랐습니다. 디즈니, 애플 등등 거대 기업들이 콘텐츠 시장 또는 스트리밍 시장에 참입을 선언하고, 미디어 기업간 합종연횡이 거듭되는 가운데 오히려 넷플릭스 주가는 급등하는 모습을 보여 주고 있습니다.
▽ 넷플릭스 최근 2년간 주가추이, 2017년 말에서 2018년 6월 19일까지 거의 2배 상승하였다.
더우기 이를 제보자가 (비록 한물 갔지만) 헐리우드 배우라서 그 파급력이 큰 것 같습니다.
웨스트 위의 주인공 매리 매코맥이 테슬라 차량 화재를 트윗하다
오늘 배우 메리 매코맥이 SNS에 글을 올려 남편의 테슬라 차량에서 갑자기 불이 났다고 주장했습니다.
메리 맥코맥은 그녀의 트위터에 “오늘 남편 차에 일어나 일로 교통 사고도 없었는데 갑자기 산타모니카 블라이에서 일어난 일로 이 일을 알려주고 차를 세우라고 한 친절한 커플에게 감사하고 다행스럽게 이 차에 아이들이 타고 있지 않아서 신에게 감사한다.”고 적었습니다.
@Tesla This is what happened to my husband and his car today. No accident,out of the blue, in traffic on Santa Monica Blvd. Thank you to the kind couple who flagged him down and told him to pull over. And thank god my three little girls weren’t in the car with him pic.twitter.com/O4tPs5ftVo
이 생산라인은 천막 형태로 최소한의 자원을 투자해 단 3주만에 만들었다고 엘론 머스크가 밝힘
엘론 머스크는 최근 모델 3 생산이 일 500대~700대이사응로 크게 개선되었다고 임직원 메일에서 밝힘
6월말로 목표한 주당 5,000대 생산을 위해 엘론 머스크는 급진적인 개선(radical improvements)이 필요하다고 임직원에 촉구
최근 생산공장 준공 및 엘론 머스크의 내부 커뮤니케이션을 보면 생산에서의 혁신 그리고 솔선 수범에 따른 위기 극복의 좋은 사레를 보여주고 있음
2. 모델 3 세번째 생산 라인의 완성
지난 주말(2018년 6월 17일), 엘론 머스크(Elon Musk)는 트윗을 통해 모델 3를 생산할 세번째 생산 라인이 완성되었다고 밝혔습니다.
론 머스크는 테슬라 생산팀의 놀라운 작업으로 최소의 자원을 투입해 단 3주만에 이 조립 라인을 만들어 냈다고 밝혔습니다.
그리고 모델 3 듀얼 모터 버젼을 생산하는 사진을 올렸습니다.
Amazing work by Tesla team. Built entire new general assembly line in 3 weeks w minimal resources. Love u guys so much! Pic of 1st Model 3 dual motor performance coming off the line … pic.twitter.com/Xr55P3fmGd
여기에서는 Vultr 가상서버에서 우분투를 설치하기로 했기 때문에 Vultr 제어판에서 부터 시작하겠습니다.
제일 쉬운 방법은 Vultr 제어판에서 보이는 순서대로 서버 위치, 서버 타입, 서버 사이즈 등을 선택하고 맨 아래 버튼 Deploy Now를 누르면 기본 세팅이 됩니다.
Vultr 제어판에서 서버 타입으로 우분투를 선택하는 방법은 여러 가지가 있죠.
위 이미지에서 보이는 것처럼 기본으로 나오는 64 bit OS에서 선택할 수 있죠(참고로 우분투 18.04부터는32 bit는 지원하지 않습니다. 그래서 32bit OS를 보면 CentOS 6 i386, Debian 8 i386 그리고 우분투 14.04, 16.04 그리고 17.10만을 발견할 수 있습니다.)
또 서버 타입을 Application을 선택해 설치할 수도 있는데 여기에서 선택할 수 있는 운영체제가 제한적입니다.
많이 선택하는 LEMP로 설치시에도 우분투 16.04만 설치 가능합니다. 또 워드프레스 설치와 동시에 설치할 수 있지만 이 또한 우분투 16.04만 설치 가능합니다.
아니면 ISO 라이브러리를 선택해 설치할 수 있는데요. 여기서는 우분투 18.04 이미지를 지원합니다. 따라 여기서 선택해도 되겠죠.
3. 우분투 18.04 기반 서버 세팅
그러면 이제부터는 우분투 18.04 기반으로 각종 서버 세팅을 해보도록 하겠습니다.
Vultr 제어판에서 제공하는 SSH는 성능이 너무 떨어지므로 챠다보지도 말고 Xshell을 비록한 SSH 전문 프로그램을 사용해 서버에 접속합니다.
서버 접속 비밀번호는 서버 제어판에서 확인할 수 있습니다.
3.1. 웹서버 보안 ufw 설정
가장 먼저 해야할 것이 바로 웹 서버 보안 설정입니다. 일반적으로 웹 서버 세팅이 끝난 후 보안 설정을 하는 경우가 있는데 그동안에는 무방비 상태이므로 가능하면 SSH에 처음 접속하는 순간부터 바로 보안 설정을 합니다.
일반 및 SSL 설치 시 작동 가능토록 80, 443포트는 열어둔다.
처음에는 22포트로 SSH나 FTP를 접속하므로 이도 열어 놓는다.
ufw enable # 방화벽을 활성화한다.
ufw allow 80/tcp # 일반 웹 정보 관련 입출력 통로
ufw allow 443/tcp # SSL 설치 시 웹 정보 관련 입출력 통로
ufw allow 22/tcp # ssh용 신규 포트
일반적으로 ssh포트를 22번을 사용하는데 이는 너무 알려진 포트이므로 이를 이용해 공격하는 경우가 있다고 합니다.
따라서 자기만아는 포트 번호로 변경 사용하는 게 더 보안을 강화할 수 있는 방법이기도 합니다.
ssh에서 널리 알려진 22포트는 해킹의 집중 대상이 되므로 자신만이 알수 있는 포트를 바꾼다. 이 작업은 sshd_config에서 사용할 포트를 지정해야 한다.
/etc/ssh/sshd_config 에서 Port 22 를 찾아서 자기가 사용할 포트 숫자를 기억하기 쉽고 10000자리이상에서 임의의 숫자를선택한다. 예를 들어 58722, 65322 등등
이렇게 포트를 변경한 후 ssh 서비스를 재시작 합니다.
그리고 기존 ssh port로 사용했던 22번 포트는 접속할 수 없도록 막아 줍니다.
service ssh restart
ufw allow *****/tcp # *****는 ssh 포트로 기본 22번 포트대신 사용할 포트로 개인만 알 수 있는 만단위 숫자를 사용한다.
ufw deny 22/tcp # ssh용으로 22포트를 사용할 수 없게 한다.
3.2. Fail2ban을 설치하여 보안을 강화
로그를 분석해 의심스러운 접근을 금지시키는 방법이 DenyHosts나 Fail2Ban이라는 프로그램입니다.
이 중 Fail2ban은 DenyHosts보다 훨씬 진보된 방식으로 SSH, Apache, Courier, FTP 등등에서 의심스러운 접근을 차단할 수 있는 프로그램입니다.
Fail2ba은 로그 파일을 모니터링해서 넘 많은 패스워드 입력 실패나 공격 감행 징후들이 보이면 IP를 차단합니다.
먼저 Fail2Ban을 설치합니다.
apt-get install fail2ban
그 다음 설정을 변경해야 합니다. 이는 jail.conf 파일에서 수정합니다.
nano /etc/fail2ban/jail.conf
여기에서 ignoreip, bantime, findtime , maxretry 등을 수정해서 재구성합니다.
ignoreip에는 ban을 하면 않되는 IP를 적는다. 10.100.102.103/32 형식으로 적으며, 추가는 스페이스바로 구분한다.
bantime은 접속 차단 시간으로 기본이 600(10분)으로 되어 있음
findtime은 통계를 찾을 시간.
maxretry 는 fail 횟수이다. 기본으로 5가 세팅되어 있는데 이 정도면 충분하다고 보고 유지했다
3.3. 쉘 기본 언어값 확인
보안 설정이 끝났으면 이제는 본격적으로 세팅에 들어갑니다.
제일 먼저 쉘 기본 언어값 확인합니다.
apache2 명령어 입력 시 영어로만 나오면 그냥 넘어가고 중국어나 일본어 나온다면 영어로 바꾸어야 합니다.
이번 작업의 경우 아래처럼 영어로 나와서 넘어갔습니다.
# apache2
The program 'apache2' is currently not installed. You can install it by typicdng :
apt install apache2-bin
만약 영어가 아닌 다른 언어가 나온다면 /etc/default/locale 의 파일 내용을 변경한다.
# vi /etc/default/locale
에서 아래 내용을 반영한다.
LANG="en_US.UTF-8"
LANGUAGE="en"
3.4. 현 운영 체제의 프로그램을 최신으로 업데이트
업데이트와 업그레이드 실시해 최신본을 기반으로 세팅을 계속합니다.
# apt-get update
# apt-get upgrade -y
3.5. 시스템 시간 설정
여기는 서버 시스템의 시간을 한국 시간에 맞춥니다.
dpkg-reconfigure tzdata
GUI 환경에서 Asia를 선택하고 이어서 Seoul을 선택합니다. .
그러면 아래와 같은 결과를 출력하죠.
Current default time zone: 'Asia/Seoul'
Local time is now: Mon Jun 18 21:57:36 KST 2018.
Universal Time is now: Mon Jun 18 12:57:36 UTC 2018.
3.6. 메일 발송프로그램 설치하기
메일을 발송할 수 있는 sendmail 프로그램을 설치, 압축 해제 프로그램 그리고 SSL을 위한 letsencrypt도 같이 설치하자. 뒤에서 나오는 작업을 하다 보면 설치하라고 나오는 프로그램들이다.
메일 발송 프로그램은 시간이 조금 걸린다. 인내를 가지고 기다려야 한다.
apt-get install sendmail unzip letsencrypt -y
그러나 보안상의 이유로 외부로 메일 발송토로 세팅하지 말라고 강력히 권고되니 이는 참고하길 바랍니다.
여기서 설치하는 메일 발송앱은 서버에서 사용자에게 메일을 보내기 위해서 필요한 앱입니다.
3.7. APT 소스리스트 파일에 Nginx, PHP, MariaDB 저장소 추가
sources.list를 열어서 파일 맨 끝에 소스리스트를 추가
# nano /etc/apt/sources.list
파일 맨 끝에 아래 내용 추가합니다.
아래는 nginx는 최신 버젼 중심으로 사용하고, MariDB를 한국의 카이스트 파일 저장소에서 받아 오기로 세팅한 것입니다.
# Nginx
deb http://nginx.org/packages/mainline/ubuntu/ bionic nginx
deb-src http://nginx.org/packages/mainline/ubuntu/ bionic nginx
# MariaDB 10.3 repository list - created 2018-06-17 11:57 UTC
# http://downloads.mariadb.org/mariadb/repositories/
deb [arch=amd64,i386] http://ftp.kaist.ac.kr/mariadb/repo/10.3/ubuntu bionic main
deb-src http://ftp.kaist.ac.kr/mariadb/repo/10.3/ubuntu bionic main
만약 nginx를 안정버젼으로 설치하겠다면 아래 소스 리스트를 사용한다.
# Nginx
deb http://nginx.org/packages/ubuntu/ bionic nginx
deb-src http://nginx.org/packages/ubuntu/ bionic nginx
# MariaDB 10.3 repository list - created 2018-06-17 11:57 UTC
# http://downloads.mariadb.org/mariadb/repositories/
deb [arch=amd64,i386] http://ftp.kaist.ac.kr/mariadb/repo/10.3/ubuntu bionic main
deb-src http://ftp.kaist.ac.kr/mariadb/repo/10.3/ubuntu bionic main
위에서는 MariaDB를 한국 카이스트에서 받아오도록 되어 있는데요.
제 경험상 카이스트는 접속이 원활하지 않은 적이 많았습니다.
그래서 Vultr 가상 서버 위치가 도쿄이므로 차라리 일본 대학에서 가져오는 게 더 낫을 수 있습니다.
일본으로 설정하려면 아래와 같이 세팅합니다.
# MariaDB 10.3 repository list - created 2018-06-17 11:54 UTC
# http://downloads.mariadb.org/mariadb/repositories/
deb [arch=amd64,i386] http://ftp.yz.yamagata-u.ac.jp/pub/dbms/mariadb/repo/10.3/ubuntu bionic main
deb-src http://ftp.yz.yamagata-u.ac.jp/pub/dbms/mariadb/repo/10.3/ubuntu bionic main
3.8. 각 저장소 보안키 다운로드 후 시스템에 등록
웹서버는 업데이트 및 업그레이드 시 해당 저장소에 접근해 최신 파일을 받아 오므로 이 저장소에 접근 할 수 있도록 보안키를 등록해 둡니다.
우선 nginx 보안키 다운로드 후 적용합니다.
cd /root
wget http://nginx.org/keys/nginx_signing.key
apt-key add nginx_signing.key
rm nginx_signing.key
다음으로는 MariaDB 보안키 다운로드 후 적용합니다.
아래는 MariaDB 재단에서 제공하는 Ubuntu 18.04에 MariaDB 저장소 보안키를 설치하는 방법입니다.
아래 명령어를 사용합니다.
add-apt-repository ppa:ondrej/php를 실행하면 여기서 아래와 같은 메세지가 나오면서 엔터를 치라는 메세지가 나오는데요. 고민하지말고 엔터를 치면됩니다.
Co-installable PHP versions: PHP 5.6, PHP 7.x and most requested extensions are included.
You can get more information about the packages at https://deb.sury.org
BUGS&FEATURES: This PPA now has a issue tracker:
https://deb.sury.org/#bug-reporting
CAVEATS:
1. If you are using php-gearman, you need to add ppa:ondrej/pkg-gearman
2. If you are using apache2, you are advised to add ppa:ondrej/apache2
3. If you are using nginx, you are advise to add ppa:ondrej/nginx-mainline
or ppa:ondrej/nginx
PLEASE READ: If you like my work and want to give me a little motivation, please consider donating regularly: https://donate.sury.org/
WARNING: add-apt-repository is broken with non-UTF-8 locales, see
https://github.com/oerdnj/deb.sury.org/issues/56 for workaround:
# LC_ALL=C.UTF-8 add-apt-repository ppa:ondrej/php
More info: https://launchpad.net/~ondrej/+archive/ubuntu/php
Press [ENTER] to continue or ctrl-c to cancel adding it
여기에서는 웹서버로 Nginx를 설치하기 했으므로 Nginx를 설치하고 nginx를 다시 가동(restart)시킵니다.
일반적으로 웹서버는 NGINX가 작은 자원을 가지고 효율적으로 운영될 수 있어서 처름 시작하는 소규모 사이트에서 각광을 받고 있으며 아파치(Apache)는 기준 풍부한 운영 경험을 토대로 대규모 사이트에서 선호된다고 합니다.
# apt-get install nginx
# service nginx restart
# nginx -v // Version check
2018년 6월 17일 현재 설치 버젼을 체크해 보니 1.15이 나옵니다.
5. PHP 7.2 설치
PHP7-FPM 최신 버전인 PHP7.2를 설치합니다. 2018년 6월 17일 현재 최신 버젼은 PHP7.2.6입니다.
기본적인 php 상요하기 위해 몇가지를 변경합니다.
파일 수정은 fpm과 cli 폴더의 php.ini를 모두 수정해 주어야 한다고 합니다. 일반적으로 fpm이 중요하다고는 합니다만.
date.timezone을 찾아 Asia/Seoul로 변경
cgi.fix_pathinfo=0 값으로 변경
쿠키값 보안을 위해서 session.cookie_httponly 와 session.cookie_secure 값을 1을 준다.
# vi /etc/php/7.2/fpm/php.ini
# vi /etc/php/7.2/cli/php.ini
아래는 php.ini 파일에서 타임존능 변경 적용한 결과입니다.
[Date]
; Defines the default timezone used by the date functions
; http://php.net/date.timezone
date.timezone = Asia/Seoul
PHP 기본 세팅의 변경,
아래는 PHP 기본 세팅을 변경하는 명령어인데 제한적이지만 작용은 합니다. 아래 명령을 보듯이 fpm 폴더에 있는 php.ini 파일이 변경됩니다.
sed -i "s/memory_limit = .*/memory_limit = 256M/" /etc/php/7.2/fpm/php.ini
sed -i "s/upload_max_filesize = .*/upload_max_filesize = 1024M/" /etc/php/7.2/fpm/php.ini
sed -i "s/zlib.output_compression = .*/zlib.output_compression = on/" /etc/php/7.2/fpm/php.ini
sed -i "s/max_execution_time = .*/max_execution_time = 18000/" /etc/php/7.2/fpm/php.ini
PHP-FPM 프로세스 매니저는 Static, Dynamic and Ondemand의 3가지방법이 있는데 설치 시 기본은 Dynamic인데
이를 Ondemand로 변경합니다.
변경은 /etc/php/7.2/fpm/pool.d/www.conf 내용을 변경하고, /etc/php/7.2/fpm/pool.d/www.conf.org는 삭제합니다. (이 파일은 없는 경우도 있다)
앞에서 저장소와 키를 등록했으므로 간단하게 아래 명령으로 MariaDB를 설치할 수 있습니다.
apt-get update
apt-get -y install mariadb-server
설치 도중에 New password를 설정하는 화면이 나온다. 설치가 완료된 후 서비스 상태를 확인할 수 있습니다.
service mysql status
6.2 PHP-FPM에 DB 연동관련 모듈설치
apt-get install php7.2-mysql
기본 언어셋 설정
이는 매우 중요한 세팅으로 반드시 필요합니다. 18.04에서는 취치가 조금 바뀌었네요.
nano /etc/mysql/mariadb.cnf
아래 내용으로 변경합니다.
# MariaDB-specific config file.
# Read by /etc/mysql/my.cnf
[client]
# Default is Latin1, if you need UTF-8 set this (also in server section)
default-character-set = utf8mb4
[mysqld]
#
# * Character sets
#
# Default is Latin1, if you need UTF-8 set all this (also in client section)
#
character-set-server = utf8mb4
collation-server = utf8mb4_unicode_ci
character_set_server = utf8mb4
collation_server = utf8mb4_unicode_ci
변경 내용을 반영해 DB를 다시 시작합니다.
service mysql restart
6.3 Nginx 와 PHP-FPM 연결
nginx는 기본적으로 nginx 사용자 권한으로 실행되고, PHP-FPM 프로그램은 기본적으로 www-data 사용자 권한으로 실행되므로 둘의 사용자 권한을 www-data로 일치시킵니다.
vi /etc/nginx/nginx.conf
user nginx; 를 user www-data; 로 변경
worker_processes 1; 를 worker_processes auto; 로 바꾼다. 고사양 서버에서 성능이 더 좋아진다고. 일반적으로 트래픽이 적은면 1을 사용하고 트래픽이 많아지면 auto를 사용한다.
수동 설치 과정에서 1.13.35.2-stable라는 단어를 많이 사용할 것이므로 이를 연결하는 명령을 줍니다. 바로 NPS_VERSION을 적용해 이 명령이 1.13.35.2-stable를 의미토록 만드는 것이죠.
아래 명령 순서에 따라 진행합니다.
NPS_VERSION=1.13.35.2-stable
cd
wget https://github.com/apache/incubator-pagespeed-ngx/archive/v${NPS_VERSION}.zip
unzip v${NPS_VERSION}.zip
nps_dir=$(find . -name "*pagespeed-ngx-${NPS_VERSION}" -type d)
cd "$nps_dir"
NPS_RELEASE_NUMBER=${NPS_VERSION/stable/} # stable 버젼 시 이를 사용
psol_url=https://dl.google.com/dl/page-speed/psol/${NPS_RELEASE_NUMBER}.tar.gz
[ -e scripts/format_binary_url.sh ] && psol_url=$(scripts/format_binary_url.sh PSOL_BINARY_URL)
wget ${psol_url}
tar -xzvf $(basename ${psol_url}) # extracts to psol/
7.3. Nginx 소스 컴파일 설치
다음으로는 Nginx모듈을 설치합니다. 앞에서 이미 Nginx를 설치했는데 이게 무슨 소리지? 하는 의문이 일겠죠.
Nginx에서 ngx_pagespeed를 자동으로 적용하는 방법이 없기 때문에 Nginx에 ngx_pagespeed 최신 버젼이 작동할 수 있도록 만들어야 합니다.
필요 프로그램 설치
본격적으로 Nginx를 다운 받아 작업을 진행하기 전에 원활하게 ngx_pagespeed가 설치될 수 있도록 필요한 프로그램을 설치해 줍니다. 이게 없으면 일부 오작동하는 경우가 있다고 합니다.
여기를 보면 MainLine version이 있고 안정화 버젼(stable version)이 있는데요. 앞 초장 부분에서 최신 버젼을 사용하는MainLine version을 선택했으면 여기서도 MainLine version을 택하고, 안정화 버젼을 택했으면 여기서도 안정화 버젼을 확인합니다.
저는 MainLine version을 선택했으므로 이를 기준으로 진행했습니다.
root로 이동, 불필요한 문제를 만들지 않기 위해 루트에서 작업
먼저 몇가지 필요한 라이브러리를 설치
Nginx 최신 버젼을 받아 놓은 곳으로 이동
여러가지 모듈을 같이 설치
2018년 6월 17일 현재 NGINX 최신 버젼이 1.15.0이므로 아래와 같은 순서로 진행합니다.
NGINX_VERSION=1.15.0
cd
wget http://nginx.org/download/nginx-${NGINX_VERSION}.tar.gz
tar -xvzf nginx-${NGINX_VERSION}.tar.gz
cd nginx-${NGINX_VERSION}/
./configure --with-cc-opt='-Wno-deprecated-declarations' --sbin-path=/usr/sbin/nginx --conf-path=/usr/local/nginx/nginx.conf --pid-path=/run/nginx.pid --with-http_ssl_module --with-http_realip_module --with-http_addition_module --with-http_sub_module --with-http_dav_module --with-http_flv_module --with-http_mp4_module --with-http_gunzip_module --with-http_gzip_static_module --with-http_random_index_module --with-http_secure_link_module --with-http_stub_status_module --with-http_auth_request_module --with-threads --with-stream --with-stream_ssl_module --with-stream_realip_module --with-http_slice_module --with-mail --with-mail_ssl_module --with-file-aio --with-http_v2_module --add-module=$HOME/$nps_dir ${PS_NGX_EXTRA_FLAGS}
make
make install
7.4 최적화 setting
nginx.conf에서 최적화 옵션 적용
아래는 시스템에 적용된 내용이다.
# enable pagespeed module on this server block
pagespeed on;
# let's speed up PageSpeed by storing it in the super duper fast memcached
#pagespeed MemcachedThreads 1;
#pagespeed MemcachedServers "localhost:11211";
# This setting should be enabled when using HTTPS
# Take care when using HTTP > HTTPS redirection to avoid loops
pagespeed MapOriginDomain http://happist.com https://happist.com;
# show half the users an optimized site, half the regular site
pagespeed RunExperiment on;
pagespeed AnalyticsID UA-64766674-1;
pagespeed ExperimentVariable 1;
pagespeed ExperimentSpec "id=1;percent=50;level=CoreFilters;enabled=collapse_whitespace,remove_comments;";
pagespeed ExperimentSpec "id=2;percent=50";
pagespeed EnableFilters extend_cache;
pagespeed JpegRecompressionQuality 65;
pagespeed RewriteLevel CoreFilters;
# Filter settings
pagespeed DisableFilters convert_jpeg_to_webp;
pagespeed DisableFilters lazyload_images;
pagespeed EnableFilters defer_javascript; # 페이지 로딩 완료 시까지 자바 실행 지연
pagespeed EnableFilters insert_dns_prefetch; # DNS resolution time 축소
pagespeed EnableFilters prioritize_critical_css;
pagespeed EnableFilters make_google_analytics_async,make_show_ads_async;
# 이미지관련 대부분이 Core에 기본으로 들어가 있음, 사용하지 않으려면 비활성화 해야 함 예를 들어 pagespeed DisableFilters convert_to_webp_animated; 기본 rewrite_images, convert_jpeg_to_progressive, convert_png_to_jpeg, convert_jpeg_to_webp, convert_to_webp_lossless, inline_images, recompress_images, recompress_jpeg, recompress_png, recompress_webp, convert_gif_to_png, strip_image_color_profile, strip_image_meta_data, jpeg_sampling, resize_images, resize_rendered_image_dimensions,
pagespeed EnableFilters sprite_images;
pagespeed EnableFilters resize_mobile_images;
# needs to exist and be writable by nginx 755로 되어 있음
# cache 비우는 방법 Flushing PageSpeed Sever-ide Cache
# rm -rf /var/ngx_pagespeed_cache/* or touch /var/ngx_pagespeed_cache/cache.flush
# ngxrestart
pagespeed FileCachePath /var/ngx_pagespeed_cache;
pagespeed FileCacheSizeKb 1024000000; # cache를 적용 후 다 차면 비운다
pagespeed FileCacheInodeLimit 50000000;
pagespeed CssFlattenMaxBytes 5120;
pagespeed LRUCacheKbPerProcess 8192;
pagespeed LRUCacheByteLimit 16384;
# onfiguring SSL Certificates
pagespeed SslCertDirectory directory;
pagespeed SslCertFile file;
pagespeed RewriteLevel CoreFilters;
pagespeed FetchWithGzip on;
7.5 ngx_pagespeed 설치 유무 간단 확인
ngx_pagespeed가 설치되었는지 간단히 확인하는 방법입니다.
nginx -V(대문자)를 치면 시스템에 설치된 nginx 관련 모듈 리스트가 뜨는데 여기에 ngx_pagespeed가 나오면 제대로 설치된 것이죠.
nginx -V
그러면 아래와 같은 모듈 리스트가 뜹니다. 여기에 ngx_pagespeed가 있는지 확인해 보죠.
nginx version: nginx/1.15.0
built by gcc 7.3.0 (Ubuntu 7.3.0-16ubuntu3)
built with OpenSSL 1.1.0h 27 Mar 2018
TLS SNI support enabled
configure arguments: --with-cc-opt=-Wno-deprecated-declarations --sbin-path=/usr/sbin/nginx --conf-path=/usr/local/nginx/nginx.conf --pid-path=/run/nginx.pid --with-http_ssl_module --with-http_realip_module --with-http_addition_module --with-http_sub_module --with-http_dav_module --with-http_flv_module --with-http_mp4_module --with-http_gunzip_module --with-http_gzip_static_module --with-http_random_index_module --with-http_secure_link_module --with-http_stub_status_module --with-http_auth_request_module --with-threads --with-stream --with-stream_ssl_module --with-stream_realip_module --with-http_slice_module --with-mail --with-mail_ssl_module --with-file-aio --with-http_v2_module --add-module=/root/./incubator-pagespeed-ngx-1.13.35.2-stable
8. Let’s Encrypt 무료 SSL인증서 발급
보안의 일종으로 Let’s Encrypt 무료 SSL인증서 발급해 보겠습니다. 이 글은 주로 아래 글을 참조하였습니다.
둘째, 필요한 소프트웨어를 GitLab에서 받을 수 있도록 git를 설치
처음 소프트웨어 설치 시 관련 소프트웨어를 업데이트할 수 있도록 Git repositories를 등록해 놓았다면 별도로 설치할 필요는 없는 것 같다.
셋째, 새로운 작업을 시작하기전에 항시 최신 소프트웨어가 없는지 점검하기 위해서 업데이트 명령을 준다.
넷째, 그 다음 git를 설치 명령을 준다.
다섯째, git이 설치되면 git 저장소에서 SSL 인증을 위한 소프트웨어 클라이언트인 certbot를 다운받는다.
cd /root # /root 디렉토리로 이동해 작업 시작
apt-get update # 항상 소프트웨어를 설치하기 전에 최신 업데이트가 있는 지 학인
apt-get install git # git 설치
git clone https://github.com/certbot/certbot # certbot 설치
8.2. certbot으로 인증서를 생성
첫째, certbot이 깔린 폴더로 이동. cd certbot 명령 사용
둘째, nginx를 중단시킨다.
Let’s Encrypt 의 인증 방식인 Standalone plugin 은 서버 인증을 위해서 80포트를 이용하는데 nginx가 80 포트를 계속 사용하고 있으면 인증이 제대로 될 수 없으므로 nginx 서버를 일시적으로 멈추는 것.
셋째, 인증 절차에 돌입.
여기서 certonly 명령을 사용. certonly는 인증서만 설치하겠다는 명령으로 nginx에선 아직 아파치처럼 다양한 명령 옵션이 없다.
넷째, 나오는 화면 요구사항에 맞추어 인증을 진행.
cd certbot # /certbot 디렉토리로 이동해 작업 시작
service nginx stop # 80포트를 사용하지 않토록 nginx를 중단시킴
./certbot-auto certonly # 인증 절차 진행, 조금 시간이 걸립니다.
service nginx start # 작업이 끝나면 다시 nginx를 가동시킴
인증시 이메일주소를 입력 후 적용하고 싶은 사이트 주소를 입력하게 끔 되어 있는데 큰 어려움은 없이 진행됩니다. .
8.3. DH Param 생성, 적용하기
앞의 작업으로 인증서 설치는 끝나지만 보다 보안을 강화하기 위해서 DH Param 생성합니다.
DH Param은 일부 암호화 알고리듬에 사용되는 커다란 난수 하나를 미리 생성해 두어서 암호화 성능을 향상시키고 보안을 높이는 방법입니다.
mkdir /etc/nginx/ssl
cd /etc/nginx/ssl
openssl dhparam -out dhparams.pem 4096 # 2048비트로 하려면 4096대신 2048로 대체 한다.
openssl rand 48 > session_ticket.key # 세션 티켓키도 생성 이는 시간이 거의 걸리지 않는다.
8.4. 암호화 알고리즘 설정하기
인증서를 획득하는게 중요한게 아니고 얼마나 철저한 암호화 설정을 하느냐가 중요하기에 암호화 알고리즘을 적용합니다.
아래는 시스템에 적용된 암호화 알고리즘들입니다.
# Letsencrypt 기본 RSA 인증서
ssl_certificate /etc/letsencrypt/live/happist.com/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/happist.com/privkey.pem;
#OCSP Stapling(인증서가 유효하다는 증명을 미리 받아두어서 사이트에 처음 방문할 때 접속 속도를 높여주는 방법dla)
ssl_trusted_certificate /etc/letsencrypt/live/happist.com/chain.pem;
ssl_stapling on;
ssl_stapling_verify on;
resolver 8.8.8.8 8.8.4.4 valid=300s;
resolver_timeout 10s;
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
ssl_prefer_server_ciphers on;
ssl_ciphers 'ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-AES256-GCM-SHA384:DHE-RSA-AES128-GCM-SHA256:DHE-DSS-AES128-GCM-SHA256:kEDH+AESGCM:ECDHE-RSA-AES128-SHA256:ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES128-SHA:ECDHE-ECDSA-AES128-SHA:ECDHE-RSA-AES256-SHA384:ECDHE-ECDSA-AES256-SHA384:ECDHE-RSA-AES256-SHA:ECDHE-ECDSA-AES256-SHA:DHE-RSA-AES128-SHA256:DHE-RSA-AES128-SHA:DHE-DSS-AES128-SHA256:DHE-RSA-AES256-SHA256:DHE-DSS-AES256-SHA:DHE-RSA-AES256-SHA:AES128-GCM-SHA256:AES256-GCM-SHA384:AES128-SHA256:AES256-SHA256:AES128-SHA:AES256-SHA:AES:CAMELLIA:DES-CBC3-SHA:!aNULL:!eNULL:!EXPORT:!DES:!RC4:!MD5:!PSK:!aECDH:!EDH-DSS-DES-CBC3-SHA:!EDH-RSA-DES-CBC3-SHA:!KRB5-DES-CBC3-SHA';
ssl_session_timeout 5m;
ssl_session_cache shared:SSL:50m;
ssl_dhparam /etc/nginx/ssl/dhparams.pem;
ssl_session_tickets on;
ssl_session_ticket_key /etc/nginx/ssl/session_ticket.key;
# HTST 설정 ; 해당 도메인에 접근시 HTTPS로 접속을 강제하는 옵션
# 밑 옵션을 넣은 후 https://hstspreload.appspot.com 사이트에서 도메인 등록 필요
add_header Strict-Transport-Security "max-age=31536000; includeSubDomains; preload";
#HPKP 설정
#add_header Public-Key-Pins 'pin-sha256="lrJxl2mZhg9wlQ9JncdCBWyMq9oInWn2Wecefuv61T4=" ; pin-sha256="YLh1dUR9y6Kja30RrAn7JKnbQG/uEtLMkBgFF2Fuihg=" ; pin-sha256="Vjs8r4z+80wjNcr1YKepWQboSIRi63WsWXhIMN+eWys=" ; max-age=2592000; includeSubDomains';
참고 Let’s Encrypt SSL인증서 발급 관련 참고 – 1주일에 5번만 발급 가능
서버를 세팅하다보면 본의아니게 서버 설치를 반복하게 됩니다.
이런 저런 문제를 해결하고자 고민하다 문제 원인을 못 잡으면 다시 설치하고 또 다시 설치하고를 반복하게 되죠.
그런데 Let’s Encrypt SSL인증서는 1주일에 5번까지 발급 받을 수 있도록 제한되어 있습니다. 여러번 시행 착오를 통해서 5번이 넘어서면 아래와 같은 메세지가 나오면서 발급이 안됩니다.
An unexpected error occurred:
There were too many requests of a given type :: Error creating new cert :: too many certificates already issued for exact set of domains: test.com www.test.com
이렇게 자율주행으로 자동차 생활이 급변할 ㅈ짐을 보이고 있는데 자율주행에 대해서 조금 살펴볼 필요가 있지 않을까요?
오늘은 자율주행 발전 단계에 대해서 살펴보도록 하겠습니다.
2. 자율주행차 6단계에 대해서
요즘 자율주행차는 기술 발전 단계에 따라 6단계로 분류하는데요.
이전까지는 자율주행차 5단계 구분이 일반적이었습니다. 이는 미국연방고속도로안전관리국(NHTSA)에서 제시한 자율주행차 정의였는데요.
Level 0 : 자율주행 기능이 없는 단계로 운전자가 모든 운전 동작을 제어
Level 1 : 초보적 자율 운전 기능 적용 단계(자동 긴급 정지, 정속 주행 ACC 등)
Level 2 : 두개 이상 초보적 운전 자동 기능 적용
Level 3 : 주위 상황을 모두 감시하는 자율주행 기능 적용
Level 4 : 운전자없이 운전이 가능한 상태
그러다가 미국자동차공학회 SAE(Society of Automotive Engineers)가 완전 자율주행차 구현에 필요한 기술이 적용되는 기술을 6단계로 나누어 설명하면서 6단계 구분이 점점 일반화되고 있습니다.
앞서 설명한 미국연방고속도로안전관리국(NHTSA)도 이제는 미국자동차공학회 SAE(Society of Automotive Engineers) 분류에 따라 6단계로 대체하고 있습니다.
여기에서도 SAE(Society of Automotive Engineers) 기준에 따른 6단계을 정의해 보겠습니다.
자율주행 단계 설명 Level of Self-driving 이미지 by Happist
2.0. Level 0 – 자동화 없음
자율주행 기술이 전혀 들어가지 않은 상태로 운전자가 운전 전반을 완전히 제어하는 상태입니다.
자동차중에서 차선을 이탈하거나 앞차와의 간격이 짧아지면 경고를 해주는 기능이 장착된 자동차가 있는데 이 경우도 Level 0에 해당합니다. 왜냐하면 상화응ㄹ 모니터링해서 알려주기만 할뿐 속도를 줄이고, 원래 차선으로 복귀등은 운전자가 직접해야 하기 때문입니다.
2.1. Level 1 – 운전자 보조 : 크루즈 컨트롤, 차선 이탈 경보 장치 그리고 긴급 제동 장치
운전에 해당하는 여러 기능중에서 방향, 속도 제어 등 특정 기능을 자동화해서 자율주행이 운전자의 운전을 조와주는 역활을 하는 단계입니다.
이 단계에서는 크루즈 컨트롤(Cruise Control), 차선 이탈 경보 장치((LDWS) 그리고 긴급 제동 장치(AEB)와 같은 기술들이 적용되어 운전자의 개입없이도 일부 기능을 수행합니다.
그렇지만 이 단계에서 운전자는 차의 속도와 방향을 항상 통제 해야하기 때문에 운전자는 도로 상황과 차량 주행 상태를 점검하며, 운전대에 항상 손을 올려 놓고 있어야 합니다.
쏘렌토에 적용중인 차선이탈경보장치 설명 이미지(Kia new sorento safety lane departure warning system)
2.2. Level 2 – 부분 자율주행 : 스스로 가/감속이 가능
Level 2는 고속도로와 같이 정해진 조건에서 차량, 차선 인식, 앞차와 간격 유지 기능 등 부분적으로 자율주행을 가능케 하는 단계입니다.
최근 자동차등에 도입되고 있는 지능형 운전자 보조시스템(ADAS)가 이에 해당됩니다. 테슬라가 2012년부터인가 지능형 운전자 보조시스템(ADAS)를 적용했고 이를 계속 업데이트하면서 성능을 개선시켜오는 것으로 유명합니다.
지능형 운전자 보조시스템(ADAS) 설명 이미지-조선일보 인용
한국의 경우 제네시스 G80에 적용된 ‘주행 조향 보조 시스템(LKAS)’도 Level2에 해당된다고 할 수 있습니다. 이는 Level 1에서 적용된 ‘차선 이탈 경보 장치’에서 한 단계 발전한 것으로, ‘차선 이탈 경보 장치’는 차선 이탈 시 경보음만 알리지만 ‘주행 조향 보조 시스템(LKAS)’은 자동으로 정해진 차선으로 복귀시켜 줍니다.
Level 2에서는 여러 가능을 복합적으로 할 수 있기 시작하는 단계라고도 할 수 있는데요. Level 1에서 적용된 크루즈 컨트롤(Cruise Control)을 하면서 자신의 차로 가운데를 유지할 수 있도록 해줄 수 있습니다.
고속도로와 같이 차로 구분이 확실하고 차량들이 일정한 속도로 달리는 곳에서는 이런 부분 자율 주행이 가능합니다.
다만 이 단계에서도 운전자는 항상 주변 상황 주시해야 하며 항상 운전대에 손을 올려 놓고 있어야 합니다. 이 단계에서 사고의 책임은 운전자에게 있습니다.
2.3. Level 3 – 부분 자율주행 : 도로 장애물 회피 가능
Level3 부터 자율주행은 운전자 보조 기능에서 벗어나 직접 조향, 가속, 감속, 제동등을 능동적으로 할 수 있는 단계입니다;
이 단계에서는 일정 구간 자율주행 가능한데요, 시스템이 교통신호와 도로 흐름을 파악해 길이 막히면 월활한 길을 찾아 우회하기도 하고, 도로에 장애물을 파악해 이를 피해 운전하기도 합니다.
아 단계를 적용한 케이스로 많이 언급되는 브랜드가 바로 테슬라, 아우디 A8이나 구글 웨이모입니다.
테슬라 오토파일럿 2 설명
Level 3에서 운전자는 주변 상황을 주시해 돌발 상황 등 부분 자율주행 한계 상황에서 일정 시간내에 운전자는 운전 상태로 복귀할 수 있도록 항시 준비하고 있어야 합니다. 자율주행 기능을 믿고 졸거나 멍 때리고 있어서는 안됨니다. (솔직히 이게 잘 지켜지지 않아서 위험할 수도 있습니다.)
그러나 느슨한 상태로 있다가 갑자기 운전 상태로 복귀하는 것은 생각처럼 쉽지 않기 때문에 논란이 많습니다. 따라서 전환 시간 문제로 이 단계를 적용하지 않고 바로 Level 4로 넘어 가겠다는 회사도 있습니다.
2.4. Level 4 – 고도화된 자율주행 : 돌발 상황 대처 가능
이 단계는운전자가 수동 운전으로 복귀할 수 없는 상황에서도 스스로 안전한 자율주행이 가능한 단계를 말합니다.
주행중인 자동차가 돌발 상황을 만나 운전자의 개입을 요청하지만 운전자가 온전한 운전 상태로 복귀하는데 시간이 거리고, 또 운전자가 졸거나 아픈 경우 대응할 수 없는 경우가 많이 생기죠. 이 경우 자동차는 스스로 속도를 줄이고 갓길에 주차시키는 등 상황 대처를 스스로 할 수 있어야 Level 4라 할 수 있습니다.
또한 이 단계는 자율 주행을 적용할 수 있는 도로 조건과 상황이 Level 3보다 많습니다. 복잡한 도심이나 골목이나 커브 등 돌발 상황이 예상되는 도로에서도 자율 주행이 가능한 수준입니다.
구글 웨이모 자율주행 미니밴 waymo Self-Driving minivan – 이미지 구글 웨이모
2.5. Level 5 – 완전한 자율주행 : 운전자가 없어도 되는 단계
마지막 Level 5는 목적지만 입력해 놓으면 운전자 없이 알아서 목적를 찾아가는 ‘FULL AUTOMATION’ 단계입니다.
최근 구글 자회사인 웨이모는 2018년 말부터 완전 자율주행차 호출 서비스를 출시하겠다고 밝혔죠.
테슬라 CEO 엘론 머스크는 2018년 8월에 Auto Pilot 버젼 9에서 완전 자율주행 기능이 포함된다고 밝혔는데요. 테슬라의 이번 업데이트는 신뢰를 잃고 있었던 테슬라 자율주행 기술 이미지을 만회할 수 있을까요?
테슬라 자율주행 기술 전반에 대해서 간단히 살펴 보았습니다. .
1. 완전 자율주행 기능 업데이트를 공언한 테슬라
2018년 6울 10일, 한 고객이 트위터를 통해서 ‘러시아워에 두개 차로가 합쳐지는 길에서 오토파일럿(Autopilot)이 제대로 동작하지 않는다.’ 라는 현상을 제보하죠.
이에 엘론 머스크는 이 문제 제기에 ‘그 이슈는 8월에 배포되는 업데이트 버전9에서 완전히 해결될 것이며, V9은 완전 자율주행 기능이 추가될 것(V9, we will begin to enable full self-driving features,)’이라고 밝혔습니다. .
That issue is better in latest Autopilot software rolling out now & fully fixed in August update as part of our long-awaited Tesla Version 9. To date, Autopilot resources have rightly focused entirely on safety. With V9, we will begin to enable full self-driving features.
물론 여기에는 순수한 자율주행차 기술뿐만이 아니라 자동차 생산, 공급 등 다른 경영적 요소를 다 평가하므로 기술 자체로는 볼 수 없습니다.
▽ 2018년 자율 주행 자동차 경쟁력 비교 차트 by Navigant
3. 테슬라 자율주행 전략의 특징은?
테슬라는 전기자동차를 특징과 더불어 일찍부터 Auto Pilot이라는 자율주행 기술을 적용시켜 왔습니다.
테슬라의 자율주행 전략에는 타사와는 조금 다른 두가지 전략이 있습니다.
3.1. Auto Pilot 업데이트가 항상 가능한 구조적 설계
테슬라 Auto Pilot의 가장 큰 특징은 시간이 지나도 항상 지속적인 업데이트가 가능토록 설계되었다는 점입니다.
테슬라 전기자동차는 소프트웨어처럼 자동차에 적용되는 이런 저런 기능을 수시로 업데이트해 항상 최신의 테슬라 자동차 사용 경험을 제공해 주고 있죠. 그래서 테슬라 자동차는 그냥 자동차가 아니라거 거대한 IT기기라고도 불리웁니다.
잦은 업데이트로 성능을 향상시키는 점에서 스마트폰과 닮아 있는데요. 테슬라의 고객 지원 방식은 자동차 특성을 충실히 반영하고 고객 중심 접근으로 스마트폰중에서는 보다 애플 아이폰과 닯아 있습니다.
안드로이드 스마트폰은 업데이트 보장 연한이 얼마되지 않죠. 기본적으로 사용 연한을 2년 정도로 보기 때문에(실제 2년에 맞추어 설계한다는 소문도 있을 정도) 2년이상 지난 안드로이드 스마트폰들은 대부분 업그레이드에서 제외됩니다.
반면 애플 아이폰은 iOs가 업데이트 될때마다 성능이 허용하는 범위에서 업데이트가 가능한 정책을 세우고 있습니다.
이점이 아이폰 사용자의 브랜드 충성도를 높이듯, 애플을 많이 벤치마킹한 테슬라도 아이폰과 비슷한 업데이트 전략을 츃고 있습니다. 테슬라는 사용 연한이 긴 자동차 특성 그리고 소프트웨어 중심이라는 특성을 살려서 시간이 흘러도 업데이트를 지속해주는 정책을 취하고 있습니다.
또 이준노님이 페이스북에 밝힌 바에 내부 하드웨어 MCU가 변경되면 하드웨어 모듈 업그레이드까지 지원한다고 합니다. 이러한 하드웨어 업그레이드는 일관된 소프트웨어와 하드웨어 전략에 따라 설계단계부터 반영되지 않으면 적용하기 어렵습니다. 하드웨어 업그레이드는 회사가 총력을 기울인다면 한두번은 가능하겠지만 변경이 계속될수록 관리 불가합니다. 하드웨어 업그레이드가 좋은줄은 알지만 아무나 못하는 이유가 다 있는 법이죠.
테슬라 고객이 된다는 것은 위에서 지적한 대로 소프트웨어 뿐만이 아니라 하드웨어 업그레이드까지 가능하므로 시간이 오래지나도 신차처럼 최신 자동차 경험을 즐길 수 있다고 합니다. 이준노님에 따르면 2012년 출시한 테슬라 자율주행 초기인 ADAS(advanced driver assistance system)도 최신으로 유지된다고 합니다.
이런 차별적인 테슬라만의 브랜드 사용 경험이 테슬라 고객들의 높은 브랜드 충성도를 유지할 수 있는 강력한 기반이 되고 있다는 판단입니다.
3.2. Mass 모델까지 확장 전개 가능한 자율주행 기술 추구
또 한가지는 테슬라의 자율주행은 업계 표준이다시피하는 라이더(LIDAR:light detection and ranging)를 사용하지 않고 자율주행 기술을 달성하고자 합니다.
한때 라이더는 대당 7만 5천달러이상이었으나 구글은 이 가격을 90%이상 절감했다고 밝혔습니다. 이로 추정해보면 7천 5백 달러정도로 추정되어 어느 정도 가격 경쟁력을 갖추고는 있지만 여전히 고가이기 때문에 대중화에는 한계가 있습니다.
테슬라의 자율주행 전략은 가능하는 한 라이더와 같은 고가 하드웨어 장비에 의존하지 않고 카메라를 이용해 자율주행을 구현해 Mass 모델까지 자율주행 기능을 확산하겠다는 것입니다.
자율주행에 필요한 라이다가 매우 비싸기 때문에 현재 대부분 업체의 낮은 단계의 자율주행 기능을 최고가 프리미엄 모델에 적용하고 있습니다.
반면 테슬라는 Auto Pilot이라 불리우는 낮은 단계의 자율주행 기능을 5천 달러 비용에 모델 3에도 적용하고 있습니다.
자율주행에 대한 어떤 전략이 가장 효율적일지는 아직 모릅니다. 그렇지만 단순에 프리미엄에서 매스 모델까지 자율주행 기능을 적용해 시장을 석권하겠다는 테슬라의 전략은 기술만 뒷받침해 줄 수 있다면 매우 효율적인 전략이라고할 수 있습니다.
궁극적으로 대중 시장(Mass Market)을 시장하는 회사가 마켓 리더가 될 수 있기 때문이죠.
4. Auto Pilot에서 체면을 구기고 있는 테슬라
최근 테슬라 Auto Pilot관련 사고가 잇다르면서 테슬라 Auto Pilot에 대한 신뢰가 많이 떨어졌습니다.
2018년 3월에는 아주 밝은 날 오전 Auto Pilot으로 주행중이던 모델 X가 중앙 분리대와 충돌해 운전자가 사망하는 사고가 일어났죠.
사고원인은 한낮의 강력한 역광때문에 카메라가 차선을 제대로 인지하지 못했기 때문이라는 분석이 나왓습니다.
떠 2018년 5월에는 테슬라 자동차가 도로에서 이탈해 울타릴르 뚫고 연못으로 빠져 운전자가 사망하는 사고가 발생했습니다.
5. 마치며 – 테슬라는 명예를 회복할 수 있을까?
이처럼 테슬라 Auto Pilot관련 사고가 잦아지면서 테슬라는 아직 불완전한 Auto Piot 기능을 너무 믿고 운전에 신경스지 않는 것을 막기위해 운전자를 괴롭히는(?) 기능을 강화하고 있습니다.
즉 일정 시간이 지나면 운전대에 손을 올리라는 경고를 계속주는 것으로 업데이트 했습니다.
Will be adjusting screen alert to clarify that we mean “slight up or downward force on the wheel”, not really “hold the wheel”