서버 이전 경험 공유기 – 1. Dockerizing

이번에 서버이전을 하면서 이것저것 알게된 지식 및 경험을 공유하고자 이 글을 작성합니다.

서버 이전

서버 이전을 하게 되었습니다.
기존엔 cloudv 를 쓰고 있었는데, 같은 회사에서 나온 iwinv 가 한국형 AWS가 되겠다고 하고 과감하게 출사표를 던저서 가격을 보던 중, iwinv 가 압도적으로 좋다고 판단해서 서버이전을 마음먹었습니다.

기존 cloudv 사양

1core, 3G memory, 100G ssd -> 월 31900원

이전 iwinv 사양

2core, 6G memory, 25G ssd -> 월 20900원

iwinv 는 블록스토리지 20g 추가 당 2000원.

굳이 이전하지 않을 이유가 없었습니다.

아무튼…

이전하는 김에 제 개인 서버를 모두 Dockerizing 하기로 마음을 먹고, 작업을 진행하던 중에, 요즘 무료로 https 를 발급해주는 Let’s Encrypt 라는 프로젝트가 있다는 사실을 알게 되었습니다.

그래서 이것도한 시도를 하겠다는 마음을 덜컥 먹어버린…

이런 이유로 시작한 설치 경험을 공유합니다.

Docker

소개

Docker 는 요즘 모르는 사람이 별로 없을 것 같습니다만, 상세소개는 페이지 링크로 대체합니다.

Official Site Overview
nacyot의 프로그래밍 이야기 :: 도커(Docker) 튜토리얼 : 깐 김에 배포까지

간단히 Docker 에 대해 설명하자면 아래 아키택트 이미지로 쉽게 표현이 가능할 것이라고 생각합니다.

Docker Architecture vs Virtual machine

Docker 를 이해하기 위해선 가상 머신(Virtual machine)과의 비교는 필수라고 생각합니다.

한마디로 제게 Docker 를 표현하라고 한다면, Virtual machine 의 장점(isolation, distribution)을 취했으나, 훨씬 더 비용이 적게드는 시스템이 아닐까합니다.

Docker 를 적용하는 이유

이런 도커를 이용해서 제 블로그 및 서버를 구성하기로 마음먹은 겁니다.

이유는 여러가지가 있지만 가장 큰 이유는, 개인서버는 형편상 이사갈 일이 많습니다.
좀 더 저렴하고 좋은 서비스가 나오면 이사를 가야하기 때문이죠.
적고보니 회사든 개인이든 비용문제는 같은 거군요..

Docker를 적용한다면 앞으로 다른 더 좋은 호스팅 서비스가 나올 경우, 쉽게 갈아탈 수 있게 하기 위함입니다. 도커 이미지만 Download 받고 실행하면 그만이거든요.

Dockerizing 본격 시작

이 블로그는 블로그계의 원탑 wordpress 로 이뤄져있고, 워드프레스는 역시 유명한 만큼 자료가 많더군요.

Quickstart: Compose and WordPress

Docker 공식 사이트에 이렇게 docker compose 로 결합하는게 나옵니다.

하지만 부족합니다…
이유는 저는 일단 mysql 을 사용하지 싫고, mariadb를 사용하고 싶기 때문이며,
하나는 역시나 이것또한 비용 문제로 docker image size 를 조금이라도 줄이고 싶기 때문입니다.

그러기에 저는 Alpine Linux 를 쓸 생각을 하게 됩니다.

Using docker compose

GitHub – 9to6/docker-wordpress-nginx: Docker compose for WordPress

docker compose 를 이용해서 워드프래스를 구성하실 분은 위 링크를 참고하시면 좋을 듯합니다.

구성은,

nginx 1.13 alpine, mariadb 10.2.6, wordpress 4.8 alpine

으로 구성했으며, wordpress Plugin인 duplicator 의 손쉬운 사용을 위해, 기본 Dockerfile에서 zip 라이브러리를 추가했습니다.

Using only Dockerfile

심플하기는 위에 것보다 아래 링크가 더 심플합니다.
GitHub – 9to6/docker-wordpress: docker + nginx + mariadb + supervisor + php7

이건 docker compose 를 사용하지 않고, 하나의 도커파일에 nginx + mariadb + wordpress + supervisor 를 한번에 담은 것으로 단순 wordpress 를 호스팅하길 원하시는 분은 이것이 훨씬 단순할 것입니다.

$ sudo docker pull 9to5/wordpress

Docker hub 에 이미지도 올려놓았으니 필요한 분들은 사용하시면 됩니다.

결론

이렇게 해서 도커를 이용해서 워드프레스 서버 구성을 끝냈습니다.
여러분이 보고 있는 이 화면이 결과물입니다.

다음 글은 wordpress 블로그에 무료 https 적용하는 방법을 기술하겠습니다.

CentOS 7에 php7+Codeigniter(ciboard)+nginx 설치하기

  • ISO 파일 다운로드

http://ftp.daumkakao.com/centos/7/isos/x86_64/CentOS-7-x86_64-Minimal-1511.iso

  • MariaDB 설치

    • 어플 설치
      $ sudo yum install -y mariadb mariadb-server
    • MariaDB 실행
      $ sudo systemctl start mariadb
      
    • DB 초기 설정
      $ sudo mysql_secure_installation
      mysql_secure_installation prompts:
      Enter current password for root (enter for none):
      OK, successfully used password, moving on...
      
      Setting the root password ensures that nobody can log into the MariaDB
      root user without the proper authorisation.
      
      New password: password
      Re-enter new password: password
      Password updated successfully!
      Reloading privilege tables..
       ... Success!
      
    • mariaDB 서비스 등록
      $ sudo systemctl enable mariadb
    • db 인코딩 설정
        • client side
      $ sudo vi /etc/my.cnf.d/client.cnf
      [client]
      default-character-set=utf8
        • server side
      $ sudo vi /etc/my.cnf.d/server.cnf
      [mysqld]
      collation-server = utf8_unicode_ci
      init-connect='SET NAMES utf8'
      character-set-server = utf8
        • 재실행
      $ sudo systemctl restart mariadb
  • Nginx 설치

      • 저장소 설치
    $ sudo rpm -Uvh http://nginx.org/packages/centos/7/noarch/RPMS/nginx-release-centos-7-0.el7.ngx.noarch.rpm
    
    
      • nginx 설치
    $ sudo yum install nginx
      • nginx 실행 및 서비스 등록
    $ sudo systemctl start nginx
    $ sudo systemctl enable nginx
  • PHP 7 설치

    yum install -y epel-release
    rpm -ivh http://rpms.remirepo.net/enterprise/remi-release-7.rpm
    yum --enablerepo=remi update remi-release
    yum --enablerepo=remi-php70 install -y php php-fpm php-mysql php-gd php-common php-cli php-json php-opcache php-devel php-imagick
      • php 설정
    $ sudo vi /etc/php.ini
    
    cgi.fix_pathinfo=0
      •  php fpm 설정
    $ sudo vi /etc/php-fpm.d/www.conf
    listen = /var/run/php-fpm/php-fpm.sock
    
    listen.owner = nginx
    listen.group = nginx
    
    user = nginx
    group = nginx
    
  • Nginx 설정

    $  sudo vi /etc/nginx/nginx.conf
    server {
     listen 80 default_server;
     listen [::]:80 default_server;
     server_name server_domain_name_or_IP;
     root /usr/share/nginx/html;
     index index.php index.html;
    
     # Load configuration files for the default server block.
     include /etc/nginx/default.d/*.conf;
    
     location / {
       try_files $uri $uri/ /index.php?/$request_uri;
     }
    
     error_page 404 /404.html;
     location = /40x.html {
     }
    
     error_page 500 502 503 504 /50x.html;
     location = /50x.html {
     }
    
     location ~ .php$ {
       fastcgi_split_path_info ^(.+.php)(/.+)$;
       fastcgi_pass unix:/var/run/php-fpm/php-fpm.sock;
       fastcgi_index index.php;
       fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
       include fastcgi_params;
     }
     location ~ /.ht {
       deny all;
     }
    }
      • Nginx 재실행
    $ sudo systemctl restart nginx

 

결과화면

설치 결과화면
결과화면

 

 

MariaDB 설치 하기 for CentOS 6.4

MariaDB 설치 하기 for CentOS 6.4

mysql 버전이 5.1이어서 버전업을 마음먹었다.
그런데 5.6으로 올리느니 마리아DB로 갈아타고 싶어졌다.

자 마리아 DB를 설치하자.

1. 기존 mysql을 제거한다.

yum remove mysql mysql-server

2. 기존 mysql 디렉토리를 제거한다. 여기서는 백업을 해뒀다. 워드프레스 db를 살릴려고~

cp -rf /var/lib/mysql /var/lib/mysql_
rm -rf /var/lib/mysql

3. Maria DB의 yum설치를 위해서 repository 파일 추가를 한다.
공식사이트를 참고하자.

vi /etc/yum.repos.d/MariaDB.repo

4. 아래 내용 파일에 추가.

[mariadb]
name = MariaDB
baseurl = http://yum.mariadb.org/10.0/centos6-amd64
gpgkey=https://yum.mariadb.org/RPM-GPG-KEY-MariaDB
gpgcheck=1

5. install MariaDB
아래 Maria-devel은 개발용이다. 필요없으면 설치하지 말자.

sudo yum install MariaDB-server MariaDB-client MariaDB-devel

6. maria db server 실행

sudo /etc/init.d/mysql restart

7. maria db 접속 확인

mysql -uroot

ps. 나처럼 기존 mysql database가 있는 경우는 아까 백업해둔 곳에서 db를 카피한다.

cp -rp /var/lib/mysql_backup/database_name /var/lib/mysql
chown -R mysql.mysql /var/lib/mysql/database_name

그대로 db사용이 가능하다. 마리아 db 설치 끝.