13
`T| t'\ wordpress l hackartist, DarkKye Jail 1 ZFS 1 GuestOS 1 Jail X$ $l $ Jail D/ ˜Tx $ )T$ Nginx/wordpress l (/ $X php-fpm $ mysql wordpress $X nginx $ `T| t'\ wordpress l hackartist, DarkKye th!nkh@ck September 4, 2014

wordpress with nginx on virtualization, jail

Embed Size (px)

DESCRIPTION

FreeBSD 에서 가상화서버를 구축하고, 그 안에 wordpress를 구축하는 방법에 대해 설명하고 있습니다.

Citation preview

Page 1: wordpress with nginx on virtualization, jail

가상화를

이용한

wordpress서버 구축

hackartist,DarkKye

Jail 서버생성

ZFS 생성

GuestOS생성

Jail환경설정

네트워크

설정

Jail 서비스

도메인 설정

방화벽 설정

Nginx/wordpress서버 구축

패키지 설치

php-fpm설정

mysql 관리

wordpress설치

nginx 설정

가상화를 이용한 wordpress 서버 구축

hackartist, DarkKye

th!nkh@ck

September 4, 2014

Page 2: wordpress with nginx on virtualization, jail

가상화를

이용한

wordpress서버 구축

hackartist,DarkKye

Jail 서버생성

ZFS 생성

GuestOS생성

Jail환경설정

네트워크

설정

Jail 서비스

도메인 설정

방화벽 설정

Nginx/wordpress서버 구축

패키지 설치

php-fpm설정

mysql 관리

wordpress설치

nginx 설정

1 Jail 서버 생성ZFS 생성GuestOS 생성

2 Jail 환경설정네트워크 설정

Jail 서비스도메인 설정

방화벽 설정

3 Nginx/wordpress 서버 구축패키지 설치

php-fpm 설정mysql 관리wordpress 설치nginx 설정

Page 3: wordpress with nginx on virtualization, jail

가상화를

이용한

wordpress서버 구축

hackartist,DarkKye

Jail 서버생성

ZFS 생성

GuestOS생성

Jail환경설정

네트워크

설정

Jail 서비스

도메인 설정

방화벽 설정

Nginx/wordpress서버 구축

패키지 설치

php-fpm설정

mysql 관리

wordpress설치

nginx 설정

ZFS 생성

현재 서버환경이 FreeBSD에 ZFS로 되어 있기때문에 ZFS를 쓸 수 있음.

ZFS를 사용하면 개별관리 기능이 아주 용이함(특히 스냅샷)

ZFS 생성

zfs create zroot/jails/va-jail

zroot : zpool의 이름jails : zroot 아래에 있는 zfs의 이름va-jail : 생성하고자하는 ZFS의 이름

Page 4: wordpress with nginx on virtualization, jail

가상화를

이용한

wordpress서버 구축

hackartist,DarkKye

Jail 서버생성

ZFS 생성

GuestOS생성

Jail환경설정

네트워크

설정

Jail 서비스

도메인 설정

방화벽 설정

Nginx/wordpress서버 구축

패키지 설치

php-fpm설정

mysql 관리

wordpress설치

nginx 설정

GuestOS 생성

FreeBSD 10.0 base 파일 다운로드

wgetftp://ftp.freebsd.org/pub/FreeBSD/releases/amd64/10.0-RELEASE/base.txzwgetftp://ftp.freebsd.org/pub/FreeBSD/releases/amd64/10.0-RELEASE/lib32.txz

Base 파일 압축해체 및 설치

tar -JxvC /jails/jail-server-name/ -f base.txztar -JxvC /jails/jail-server-name/ -f lib32.txz

Page 5: wordpress with nginx on virtualization, jail

가상화를

이용한

wordpress서버 구축

hackartist,DarkKye

Jail 서버생성

ZFS 생성

GuestOS생성

Jail환경설정

네트워크

설정

Jail 서비스

도메인 설정

방화벽 설정

Nginx/wordpress서버 구축

패키지 설치

php-fpm설정

mysql 관리

wordpress설치

nginx 설정

네트워크 설정

수동설정과 자동설정이 있음

수동설정은 운영체제가 재부팅될때마다 다시 설정을 해줘야함

ifconfig로 수동설정

ifconfig lo1 createifconfig lo1 inet 10.0.0.2 netmask 255.255.255.0ifconfig lo1 inet 10.0.0.254 netmask 255.255.255.0 alias0

자동설정은 운영체제가 재부팅되면 자동으로 설정이 됨

/etc/rc.conf 설정

cloned interfaces=“lo1”ifconfig lo1=“inet 10.0.0.2 netmask 255.255.255.0”ifconfig lo1 alias0=“inet 10.0.0.254 netmask 255.255.255.0”

Page 6: wordpress with nginx on virtualization, jail

가상화를

이용한

wordpress서버 구축

hackartist,DarkKye

Jail 서버생성

ZFS 생성

GuestOS생성

Jail환경설정

네트워크

설정

Jail 서비스

도메인 설정

방화벽 설정

Nginx/wordpress서버 구축

패키지 설치

php-fpm설정

mysql 관리

wordpress설치

nginx 설정

Jail 서비스 설정 및 시작

Jail 서비스설정

/etc/rc.conf 설정

jail list=“va”jail va rootdir=“/usr/jails/va-bsd”jail va hostname=“va”jail va devfs enable=“YES”jail va interface=“lo1”jail va ip=“10.0.0.2”

Jail 서비스시작

service jail start va

Page 7: wordpress with nginx on virtualization, jail

가상화를

이용한

wordpress서버 구축

hackartist,DarkKye

Jail 서버생성

ZFS 생성

GuestOS생성

Jail환경설정

네트워크

설정

Jail 서비스

도메인 설정

방화벽 설정

Nginx/wordpress서버 구축

패키지 설치

php-fpm설정

mysql 관리

wordpress설치

nginx 설정

도메인 설정

가상서버에 접속하기 위한 도메인을 설정해주는 단계

가상서버의 웹 서버를 구축하면 80번으로 ip기반 방화벽에서는 80번포트로 운영되기 힘듬HostOS에서 리다이렉팅을 해주는 방법으로 80번포트 접속시 설정된포트로 임의로 보내는 방법을 사용

HostOS의 nginx.conf 수정

server {listen 80;server name openssl.va.thinkhack.org;rewrite ∧.(.*) http://wordrpess.va.thinkhack.org:20080$1 permanent;}

Page 8: wordpress with nginx on virtualization, jail

가상화를

이용한

wordpress서버 구축

hackartist,DarkKye

Jail 서버생성

ZFS 생성

GuestOS생성

Jail환경설정

네트워크

설정

Jail 서비스

도메인 설정

방화벽 설정

Nginx/wordpress서버 구축

패키지 설치

php-fpm설정

mysql 관리

wordpress설치

nginx 설정

방화벽 설정

FreeBSD에서 사용하는 방화벽은 pf를 사용함NAT 설정과 포트포워딩을 설정해주어야 함

/etc/pf.conf 파일 수정

ext if=“em0”jail ip=“10.0.0.0/24”va jail ip=“10.0.0.2”va jail ports=“{20022,20080,20081,20443}”jail proto=“{tcp,udp}”nat pass on $ext if inet from $jail ip to any -> $ext ip rdr pass on $ext if inetproto $jail proto from any to $ext ip port $va jail ports -> $va jail ip

ping과 같은 Raw 패킷을 허용하려면 아래의 sysctl을 변경해야함

security.jail.allow raw sockets=1

Page 9: wordpress with nginx on virtualization, jail

가상화를

이용한

wordpress서버 구축

hackartist,DarkKye

Jail 서버생성

ZFS 생성

GuestOS생성

Jail환경설정

네트워크

설정

Jail 서비스

도메인 설정

방화벽 설정

Nginx/wordpress서버 구축

패키지 설치

php-fpm설정

mysql 관리

wordpress설치

nginx 설정

패키지 설치

nginx 설치

pkg install nginx

php-fpm 설치

cd /usr/ports/lang/php5make config-recursivemake -DBATCH=yes install cleancd /usr/ports/lang/php5-extensionsmake configmake install clean

Page 10: wordpress with nginx on virtualization, jail

가상화를

이용한

wordpress서버 구축

hackartist,DarkKye

Jail 서버생성

ZFS 생성

GuestOS생성

Jail환경설정

네트워크

설정

Jail 서비스

도메인 설정

방화벽 설정

Nginx/wordpress서버 구축

패키지 설치

php-fpm설정

mysql 관리

wordpress설치

nginx 설정

php-fpm 설정

fastcgi를 사용하기 위해 두가지 통신방법이 있음socket 통신방법unixsocket 통신방법

/usr/local/php-fpm.ini 설정

listen = 127.0.0.1:9000 //socket 통신listen = /var/run/php-fpm.sock //파일기반의 unixsocket 통신

Page 11: wordpress with nginx on virtualization, jail

가상화를

이용한

wordpress서버 구축

hackartist,DarkKye

Jail 서버생성

ZFS 생성

GuestOS생성

Jail환경설정

네트워크

설정

Jail 서비스

도메인 설정

방화벽 설정

Nginx/wordpress서버 구축

패키지 설치

php-fpm설정

mysql 관리

wordpress설치

nginx 설정

mysql 관리

mysql 설치

pkg install mysql

mysql 서비스 실행

echo ’mysql enable=“YES” ’ >> /etc/rc.confservice mysql-server start

database 설정

mysqladmin -u root -p password 1234mysql -u root -pcreate user ’wpuser’@’localhost’ identified by ’password’;create database wordpress;revoke all privileges, grant option from wpuser;grant all on wordpress.* to wpuser;

Page 12: wordpress with nginx on virtualization, jail

가상화를

이용한

wordpress서버 구축

hackartist,DarkKye

Jail 서버생성

ZFS 생성

GuestOS생성

Jail환경설정

네트워크

설정

Jail 서비스

도메인 설정

방화벽 설정

Nginx/wordpress서버 구축

패키지 설치

php-fpm설정

mysql 관리

wordpress설치

nginx 설정

wordpress 설치

진행순서

wordpress 최신버전 다운로드웹서버를 운영할 디렉토리에 압축풀기wp-config.php 데이터베이스 설정

wget https://wordpress.org/latest.tar.gztar -xvf latest.tar.gz /usr/local/www/cp /usr/local/www/wordpresscp wp-config-sample.php wp-config.phpvi wp-config.php

wp-config.php 일부 수정

define(’DB USER’, ’wpuser’);define(’DB PASSWORD’, ’password’);

Page 13: wordpress with nginx on virtualization, jail

가상화를

이용한

wordpress서버 구축

hackartist,DarkKye

Jail 서버생성

ZFS 생성

GuestOS생성

Jail환경설정

네트워크

설정

Jail 서비스

도메인 설정

방화벽 설정

Nginx/wordpress서버 구축

패키지 설치

php-fpm설정

mysql 관리

wordpress설치

nginx 설정

nginx 설정

/usr/local/etc/nginx/nginx.conf 설정

server {listen 20080;server name wordpress.va.thinkhack.org;

location / {root /usr/local/www/wordpress;index index.html index.htm index.php;

}

location ∼ .php$ {root /usr/local/www/wordpress;fastcgi pass 127.0.0.1:9000;fastcgi index index.php;include fastcgi params;

}}

/usr/local/etc/nginx/fastcgi params 에 추가할 내용

fastcgi param SCRIPT FILENAME $document root$fastcgi script name;