CentOS6 환경에서 진행하며, nginx와 php는 php-fpm을 이용하여 연결된다.
설치는 yum을 이용한다.


  • Nginx 설치
sudo yum install nginx
vim /etc/nginx/nginx.conf
+location ~ \.php$ {
+    root           html;
+    fastcgi_pass   127.0.0.1:9000;
+    fastcgi_index  index.php;
+    fastcgi_param  SCRIPT_FILENAME  /usr/share/nginx/html$fastcgi_script_name;
+    include        fastcgi_params;
+}
sudo service nginx start

  • Php7 설치
sudo yum -y update
sudo yum -y install epel-release
wget https://dl.fedoraproject.org/pub/epel/epel-release-latest-6.noarch.rpm
wget https://centos6.iuscommunity.org/ius-release.rpm
sudo rpm -Uvh ius-release*.rpm
sudo yum -y update
sudo yum -y install php70u php70u-pdo php70u-mysqlnd php70u-opcache php70u-xml php70u-mcrypt php70u-gd php70u-devel php70u-mysql php70u-intl php70u-mbstring php70u-bcmath php70u-json php70u-iconv
vim /etc/php.ini
+ date.timezone = Asia/Seoul
+ cgi.fix_pathinfo=0
+ expose_php = Off


Error: Package: php70u-gd-7.0.18-1.ius.centos6.x86_64 (ius)
        Requires: libwebp.so.5()(64bit)

위와 같은 에러 발생 시 https://www.rpmfind.net/linux/rpm2html/search.php?query=libwebp.so.5()(64bit) 에서 lib64webp5-0.4.3-1.mga5.x86_64.rpm 다운로드 후 sudo yum install lib64webp5-0.4.3-1.mga5.x86_64.rpm 설치한다.


  • php-fpm 설치
sudo yum install php70u-fpm
sudo service php-fpm start

  • index.php 생성
sudo vim /usr/share/nginx/html/index.php
<?php
phpinfo()


http://localhost/index.php 접속하여 확인한다.


RancherOS 설치가 되지 않은 경우 RancherOS, Docker 소개 및 설치를 참고한다.


Rancher Server는 Docker를 GUI 환경에서 구성할 수 있게 도와준다. 사용하기 위해서 Ubuntu 16.04, Kernal 3.10+, Docker가 준비되어야 한다.


현재 windows, osx docker는 지원되지 않는다.


위처럼 각각 구성하지 않아도, RancherOS를 설치하면 사용할 수 있다. 앞서 소개한 글은 후자를 위한 것이다. Rancher Server도 Docker Image로 제공된다.


sudo docker run -d --restart=unless-stopped -p 8080:8080 rancher/server


위와 같이 설치를 진행한 후 Docker Container를 확인한다. 내부적으로 mysql을 사용하는데 container에 내장되어있으므로 신경 쓰지않아도 된다.


docker ps
CONTAINER ID        IMAGE               COMMAND                  CREATED              STATUS              PORTS                              NAMES
7a3e5ba1e633        rancher/server      "/usr/bin/entry /u..."   About a minute ago   Up About a minute   3306/tcp, 0.0.0.0:8080->8080/tcp   serene_euler


로그 확인은 아래와 같다.


docker logs 7a3e5ba1e633 -f


정상적으로 서버가 구동되면 웹브라우저로 접속해보자.


스크린샷 2017-05-10 오전 3.07.48.png


Welcome to Rancher! 를 만나게 된다. Stack > All을 클릭하여 살펴보면, 기본적인 Docker Image가 설정되어있다. 정상적으로 구동하려면 Add Host를 클릭하여 Host 서버 설정을 완료해야 한다.


스크린샷 2017-05-10 오전 3.11.47.png


Host 서버에서 사용할 URL을 설정하고 Save 버튼을 클릭한다.


스크린샷 2017-05-10 오전 3.12.24.png


위 화면의 절차대로 수행한다. IPSec에서 UDP 500, 4500을 사용하므로 방화벽을 허용해줘야 하고, 5번은 기본적인 Docker Image를 수행하기 위한 rancher/agent 설치스크립트이므로, Copy & Paste 해서 실행한다.


스크린샷 2017-05-10 오전 3.16.42.png


모두 정상적으로 수행됐다면, 정상적으로 Active 상태가 된다. 이제 Docker Image를 만들 준비는 모두 완료되었다.


'DevOps' 카테고리의 다른 글

RancherOS, Docker 소개 및 설치  (0) 2017.05.10

RancherOS는 docker를 손쉽게 사용할 수 있도록 도와준다. RancherOS는 docker를 실행하기 위해 필요한 서비스만 포함하고 있기 때문에 가볍고, 불필요한 부분은 제거되어있다.


항상 최신 버전의 docker를 사용할 수 있고, 빠르게 부팅되는 특징을 가지고 있다. 5~10초 정도 소요된다.


docker는 개발자 및 시스템관리자 용도로 설계된 오픈 소스 플랫폼이며 Command Line Interface (CLI)를 사용하여 Container를 자유롭게 사용할 수 있다.


개발자가 RancherOS를 이해하고 docker를 자유롭게 사용할 수 있다면, 기술벤치마킹 및 성능 테스트 다양한 환경에서 좀 더 손쉽고 유연하게 대처할 수 있을 것이다.


손쉽게 가상환경을 만들 수 있는 VirtualBox를 통하여 설치해 보자.

사전에 rancheros.iso 파일을 내려받는다.


VitrualBox에서 가상머신을 만들어보자. 메모리 크기 및 하드디스크는 테스트환경에 따라 변경될 수 있다.


  • 이름: Rancheros
  • 종류: Linux
  • 버전: Other Linux (64 bit)
  • 메모리 크기: 4096MB
  • 하드디스크: 40GB

위 옵션을 사용하여 가상머신을 생성한 후 내려받은 rancheros.iso를 DVD/CD에 삽입한다.


스크린샷 2017-05-10 오전 2.17.19.png


가상머신을 시작하면 부팅이 완료된다.


VirtualBox_Rancheros_10_05_2017_02_19_41.png


rancheros는 ros명령어를 기반으로 동작하는데, 자세한 가이드 및 옵션은 문서를 참고하도록 한다.


sudo ros install -d /dev/sda -a rancher.password=password


설치 중 ssh-key 설정이 없으면, warn이 뜨게 되는데 초기비밀번호 설정이 있으므로 무시해도 된다. real pc에 usb로 설치할 때 static ip를 사용해야 하므로 난감한 상황에 맞닥뜨린 적이 있다. 위 명령어를 사용하여 설치 완료 후 reboot 시에는 DVD/CD에서 rancheros.iso를 제거한다.


VirtualBox_Rancheros_10_05_2017_02_40_15.png


정상적으로 설치되었다면, login 화면이 나타난다. 사용자: rancher, 초기비밀번호: password를 입력하여 접속하자. 이로써 설치는 모두 완료되었다.


'DevOps' 카테고리의 다른 글

Rancher Server 설치하기  (0) 2017.05.10

초록색을 보면 마음이 안정된다고 한다. 그렇기에 사람들은 등산을 많이 가는 걸까. 목이 말라 물을 벌컥벌컥 마시는 장면을 마주치곤 한다. 개발자도 새로운 업무를 받게 되면 어떤 프레임워크를 사용할지 찾아보곤 하는데...


보통 프레임워크는 반복되는 행위를 대신해준다. 어디까지 맡겨야 할까. 마음 같아서는 다 맡기고 싶지만, 비지니스적인 부분은직접 만들어야 한다.


너무 맡기다 보면, 새로운 상황에 직면한다. 프레임워크에 반대로 맞춰야 하는 상황이온다.
이 상황을 원하지는 않았을 것이다.


프레임워크를 선정하는 기준은, 어디까지 맡겨야 할지 정확하게 고민되어야 정할 수 있을 것이라는 생각이 든다.


개발자 하면 자동화란 단어가 같이 떠오른다. 일상생활에서 일어나는 많은 부분 중 반복되는 일이 생길 때, 업무로 다가오게된다.
업무를 파악하고, 요구사항을 도출한 후, 자연어를 프로그래밍언어로 번역하여, 컴퓨터에 전달하면 알아서 해준다. 얼마나 성취감 넘치는 일인가.


여기서 한가지 짚고 넘어가야 할 문제가 있다. 업무의 출발점은 어디인가. 개발언어 및 프레임워크만 능숙하게 다룬다면 전문가로 가는 길일까. 요구사항 없는 범용적인 공통라이브러리 개발은 종점이 어디인가.


업무에 임할 때 개발부터 시작하기보단, 자연어를 잘 파악하여 요구사항부터 정의하는 편이 시야를 넓게 하는 방법이 아닌가 하는 생각이 든다.


Node.js 다운로드


Windows 설치

다운로드 후 클릭 > Next 클릭



Linux 설치

wget https://nodejs.org/dist/v6.10.0/node-v6.10.0-linux-x64.tar.xz
tar xvf node-v6.10.0-linux-x64.tar.xz
mv node-v6.10.0-linux-x64 nodejs
mkdir bin
ln -s ../nodejs/bin/node node
ln -s ../nodejs/bin/npm npm
node -v


OSX 설치

/usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"
brew install node
node -v


N 설치

개발환경에서 유용하게 버전을 바꿔가며, 테스트하며 사용할 수 있다.

npm install -g n
sudo n 6.9.2
node -v

신뢰하지 않는 HOST로 판단하면, certificate has expired 에러가 발생한다. 테스트서버 구축 시 Openssl로 인증서를 생성해서 사용하기도 하는데 대부분 이런 경우이다. Node.js는 아래와 같이 환경변수를 지정하면 HOST를 판단하지 않는다.


process.env.NODE_TLS_REJECT_UNAUTHORIZED = '0';


'Nodejs' 카테고리의 다른 글

Node.js Error 처리방법  (0) 2017.05.18
Node.js 설치하기  (0) 2017.03.26
Node.js Callback에 관한 고찰  (0) 2016.05.30
Node.js v6 버전 업그레이드 후기  (0) 2016.05.29
NPMv3 사용하기  (0) 2016.04.04

Node.js로 개발한다 라고 말한다면, 누구나 난항을 겪게 된다. 한 번쯤은 들어봤을 것이다. Callback Hell에 관한 이야기이다.


asncFunction1(function(err, result) {
  asncFunction2(function(err, result) {
    asncFunction3(function(err, result) {
      asncFunction4(function(err, result) {
        asncFunction5(function(err, result) {
          // do something useful 
        })
      })
    })
  })
})


위 그림처럼 너무 많아져서 좌절하는 상황을 빈번하게 맞닥뜨리게 된다. 결국 키보드에 손을 놓고, 쉴 수밖에 없다.


무턱대고 라이브러리만 사용하다 보면, 순간 흐름을 놓치는 경우, 아무것도 할 수 없게 된다.
아래 주소는 2012년에 작성된 글인데, 설명이 잘 되어 있어서, 자주 보던 글이다.


주소 - http://book.mixu.net/node/ch7.html


흔히 사용하는 Series, Parallel에 관해 설명되어 있다. 한 번씩 따라 해본다면, 많은 도움이 될 것이다. 취향에 따라 Promise, Async 라이브러리로 나뉘는 것 같다. 두 가지 라이브러리를 다 사용해 보았지만, 결국 협업을 하거나, 인수인계를 하는 시점에서 어려움을 겪었다. 어떤 식으로 개발을 해야 쉽게 만들까.


입문자들은 Express.js Framework를 많이 경험한다. 책에 나오는 단골손님이기 때문이다.


function do(param, next) {

    // logic...

    next();
}


위와 같은 형태로 함수는 구성된다. 오히려 직관적이기 때문에 조금 응용해봤다.


function doA() {

    Model.getContent(param, function(err, data) {

        doB();
    });
}

function doB() {

    Model.getContent(param, function(err, data) {

        doC();
    });
}

function doC() {

    console.log('finish');
}

doA();


직접 필요한 함수를 호출해주는 방식이다. Callback 중첩도 되지 않으면서, 순차적으로 코드를 읽을 수 있다. 협업하면서 의견을 나누어 봤지만, 라이브러리를 사용해서 했을 때보단 진입장벽이 낮아진 것 같았다. 먼저 위와 같은 방법으로 경험하고, 필요한 때에만 라이브러리를 사용하면 개발이 한결 편해질 것 같다는 생각이 든다.



'Nodejs' 카테고리의 다른 글

Node.js 설치하기  (0) 2017.03.26
Node.js certificate has expired Error 해결하기  (0) 2016.06.17
Node.js v6 버전 업그레이드 후기  (0) 2016.05.29
NPMv3 사용하기  (0) 2016.04.04
Node.js와 ECMAScript 2015 (ES6)  (0) 2016.01.04

+ Recent posts