Special:Communication & Concept/FreeBSD 12.X에서 ezjail과 jail을 이용해서 Webserver를 구성하기 위한 방법.

Jump to: navigation, search
#195 [ Ssam ] hit: 69(#baffba) 1

ezjail로 jails 관리(Managing Jails with ezjail)

  • DNS, HTTPD, SMTP 서버 만들기.
  • 여러 jail을 만들고 관리하면 오류가 발생하기 쉽다고 하니 jail 관리 툴인 ezjail을 설치 하기로 함.
  • Dirk Engling의 ezjail 은 많은 jail 업무를 자동화하고 크게 단순화 된다고 하니 설치 하기로 함.
  • basejail에서 userland 사본을 업데이드하면 다른 모든 jail이 자동으로 업데이드 된다고 하니 설치 하기로 함.
  • 여기서는 zfs(Zero field splitting) 파일 시스템을 사용하지 않고, 유닉스 파일 시스템(UNIX File System, UFS) 파티션 테이블로 설치한 것을 적용 함.
  • zfs(Zero field splitting) 파일 시스템은 Sun Microsystems에서 처음 디자인 되었다고 한다.
  • 최초로 128비트 파일 시스템을 적용하여 거의 무한대의 용량을 제공한다고 하니, 하드를 장착하고 싶은 만큼 장착해도 된다.


ezjail 설치

  1. 가상으로 300GB 정도 할당하여, 기본 환경을 설정.(open-vm-tools, 고정IP, 한글, 기타...)
  2. 기본 설정이 되어 있다면 여기부터 시작해도 된다.
  3. 특별한 옵션이 없으니 패키지로 설치 한다.
# cd /usr/ports/sysutils/ezjail && make install clean
또는
# pkg install ezjail
메세지 출력
Updating FreeBSD repository catalogue...
FreeBSD repository is up to date.
All repositories are up to date.
The following 1 package(s) will be affected (of 0 checked):

New packages to be INSTALLED:
	ezjail: 3.4.2_1

Number of packages to be installed: 1

43 KiB to be downloaded.

Proceed with this action? [y/N]: y
[1/1] Fetching ezjail-3.4.2_1.txz: 100%   43 KiB  43.9kB/s    00:01    
Checking integrity... done (0 conflicting)
[1/1] Installing ezjail-3.4.2_1...
[1/1] Extracting ezjail-3.4.2_1: 100%


  • 편집기 vi /etc/rc.conf 파일에 ezjail_enable="YES" 추가, vi로 열어서 추가해도 되고, 아래 명령으로도 추가 된다.
# sysrc ezjail_enable=YES


base jail template 생성

# ezjail-admin install
메세지 출력
base.txz                                               147 MB   10 MBps    14s
lib32.txz                                               58 MB 5431 kBps    11s
Looking up update.FreeBSD.org mirrors... 3 mirrors found.
Fetching public key from update2.freebsd.org... done.
Fetching metadata signature for 12.0-RELEASE from update2.freebsd.org... done.
Fetching metadata index... done.
[...................................]
/usr/jails/basejail/usr/lib32/libefivar.so.1
/usr/jails/basejail/usr/lib32/libsdp.so.4
/usr/jails/basejail/usr/lib32/libalias_irc.a
538411 blocks
Note: a non-standard /etc/make.conf was copied to the template jail in order to get the ports collection running inside jails.
참고 : 비표준 /etc/make.conf는 포트 콜렉션을 jails 내에서 실행하기 위해 템플리트 jail에 복사 되었다.


ezjail 기본 파일 위치

  1. /usr/jails/ : 기본 Jail 시스템 템플릿을 저장할 기본 위치.
  2. /usr/jails/flavours/: 각 Jail에 대한 사용자 정의, 기존 /etc/make.conf를 업데이트 할 수 있다.
  3. /usr/jails/basejail/ : 기본 jail 은 각 감옥에 대해 읽기 전용으로 내보내지고 마운트 된다.
  4. /usr/local/etc/rc.d/ezjail.sh : 중지 / 시작 / jails 스크립트 재시작.
  5. /usr/local/etc/ezjail.conf : ezjail 스크립트를 위한 설정 파일. ezjail rc 스크립트의 작동을 제어하는 ​​설정이 들어 있다. 또한 ezjail-admin 유틸리티가 해당 작업을 수행 할 위치를 파악하기 위해 읽는다.
  6. /usr/local/etc/ezjail/ : 모든 jail 설정 파일이 여기에 저장된다.


Jail 에서 사용할 ports 초기 설정

  • ezjail을 설치하면 basejail 디렉토리 구조를 작성하고 채울수 있다. 이 단계는 jail 호스트 컴퓨터에서 한 번만 필요로 한다.
# ezjail-admin install -p
메세지 출력
base.txz                                      100% of   99 MB 2970 kBps 00m34s
[...................................]
/usr/jails/basejail/usr/ports/x11/yelp/
/usr/jails/basejail/usr/ports/x11/zenity/
Building new INDEX files... done.


httpd jail 을 생성

# ezjail-admin create httpd 192.168.0.30
메세지 출력
/usr/jails/httpd/./lib
/usr/jails/httpd/./.cshrc
/usr/jails/httpd/./sbin
/usr/jails/httpd/./basejail
12508 blocks
Warning: Some services already seem to be listening on IP 192.168.0.30
 This may cause some confusion, here they are:
ntpd     ntpd       671   28 udp4   192.168.0.30:123     *:*
Warning: Some services already seem to be listening on all IP, (including 192.168.0.30)
 This may cause some confusion, here they are:
ntpd     ntpd       671   20 udp6   *:123                 *:*
ntpd     ntpd       671   21 udp4   *:123                 *:*
root     syslogd    558   6  udp6   *:514                 *:*
root     syslogd    558   7  udp4   *:514                 *:*


httpd jail 시작

# ezjail-admin start httpd
메세지 출력, WARNING 은 무시해 버리세요, 이견 차이라는데..... zzzzz
Starting jails: httpd.
/etc/rc.d/jail: WARNING: Per-jail configuration via jail_* variables  is obsolete.  Please consider migrating to /etc/jail.conf.
/etc/rc.d/jail : 경고 : jail_ * 변수를 통한 감옥 별 구성은 더 이상 사용되지 않습니다. /etc/jail.conf 로의 마이그레이션을 고려하십시오.


httpd jail 출력

# ezjail-admin list
메세지 출력
STA JID  IP              Hostname                       Root Directory
--- ---- --------------- ------------------------------ ------------------------
DR  1    192.168.0.30    smtp                           /usr/jails/smtp
DR  2    192.168.0.30    httpd                          /usr/jails/httpd


  • jls 명령으로도 확인 가능.
# jls
메세지 출력
  JID  IP Address      Hostname                      Path
    1  192.168.0.30    smtp                          /usr/jails/smtp
    2  192.168.0.30    httpd                         /usr/jails/httpd


참고 httpd jail 삭제

  • 이 명령은 참고로 남겨 놓는다.
# ezjail-admin delete -w httpd


httpd jail 생성 후 파티션 확인

  • 가상 파티션인 /usr/jails/httpd 생성.
# df -h
메세지 출력
Filesystem             Size    Used   Avail Capacity  Mounted on
/dev/da0p2             287G    5.3G    258G     2%    /
devfs                  1.0K    1.0K      0B   100%    /dev
/usr/jails/basejail    287G    5.3G    258G     2%    /usr/jails/httpd/basejail
devfs                  1.0K    1.0K      0B   100%    /usr/jails/httpd/dev
fdescfs                1.0K    1.0K      0B   100%    /usr/jails/httpd/dev/fd
procfs                 4.0K    4.0K      0B   100%    /usr/jails/httpd/proc


Jail console 로 httpd 접속

# ezjail-admin console httpd
메세지 출력
FreeBSD 12.0-RELEASE r341666 GENERIC
Welcome to FreeBSD!
[...................................]
Edit /etc/motd to change this login announcement.
root@httpd:~ #
  • root@httpd:~ # , httpd 로 접속된다.


httpd jail 에 root 비밀번호 설정

root@httpd:~ # passwd
메세지 출력
Changing local password for root
New Password:                  <---비밀번호 입력
Retype New Password:           <---비밀번호 재입력


httpd jail 에서 패키지 검사

  • apache24 패키지 검색해 본다
root@httpd:~ # pkg search apache24
메세지 출력
The package management tool is not yet installed on your system.
Do you want to fetch and install it now? [y/N]: y
Bootstrapping pkg from pkg+http://pkg.FreeBSD.org/FreeBSD:12:amd64/quarterly, please wait...
pkg: Error fetching http://pkg.FreeBSD.org/FreeBSD:12:amd64/quarterly/Latest/pkg.txz: No address record
A pre-built version of pkg could not be found for your system.
Consider changing PACKAGESITE or installing it from ports: 'ports-mgmt/pkg'.
  • 에러 해결 방법 resolv.conf 설정 안 해서 출력되는 에러 이므로 resolv.conf 파일 카피....
정상이라면 이런 메세지 출력
apache24-2.4.41                Version 2.4.x of Apache web server


resolv.conf 파일 카피

  • resolv.conf 파일을 복사하기 위해서 root@httpd:~ # 에서 ~ # 로 빠져나온다
root@httpd:~ # exit 
# cp /etc/resolv.conf /usr/jails/httpd/etc/


httpd jail 에서 apache24 를 설치

  • ports 와 pkg 명령어를 통한 설치가 가능 하다.
root@httpd:~ # cd /usr/ports/www/apache24/ && make install clean 
또는
root@httpd:~ # pkg install apache24
메세지 출력
Updating FreeBSD repository catalogue...
FreeBSD repository is up to date.
All repositories are up to date.
Updating database digests format: 100%
The following 12 package(s) will be affected (of 0 checked):

New packages to be INSTALLED:
	apache24: 2.4.41
	libnghttp2: 1.39.2
	libxml2: 2.9.9
	expat: 2.2.8
	perl5: 5.30.0
	pcre: 8.43_2
	apr: 1.7.0.1.6.1
	gdbm: 1.18.1_1
	indexinfo: 0.3.1
	readline: 8.0.0
	gettext-runtime: 0.20.1
	db5: 5.3.28_7

Number of packages to be installed: 12

The process will require 153 MiB more space.
35 MiB to be downloaded.

Proceed with this action? [y/N]: y
[...........]


  • 에디터 vi /etc/rc.conf 파일을 열어서 추가해도 되고, 아래 명령으로도 추가 된다.
  • 참고 ~ # 위치에서는 /usr/jails/httpd/etc/rc.conf 에 위치하고 있다.
root@httpd:~ # sysrc apache24_enable=YES
메세지 출력
apache24_enable:  -> YES


  • 아파치 시작
root@httpd:~ # service apache24 start
  • 웹브라우저 주소란에 아이피 주소(http://192.168.0.30) 넣으면 이런 메세지가 보이면 정상이다.
It works!


MariaDB 설치

  • DB 패키지 검색
root@httpd:~ # pkg search mariadb
메세지 출력
mariadb-connector-c-3.0.10_1   MariaDB database connector for C
mariadb-connector-odbc-3.0.9   MariaDB database connector for odbc
mariadb101-client-10.1.41_1    Multithreaded SQL database (client)
mariadb101-server-10.1.41_1    Multithreaded SQL database (server)
mariadb102-client-10.2.26      Multithreaded SQL database (client)
mariadb102-server-10.2.26      Multithreaded SQL database (server)
mariadb103-client-10.3.17      Multithreaded SQL database (client)
mariadb103-server-10.3.17      Multithreaded SQL database (server)
mariadb104-client-10.4.7       Multithreaded SQL database (client)
mariadb104-server-10.4.7       Multithreaded SQL database (server)
mariadb55-client-5.5.65_1      Multithreaded SQL database (client)
mariadb55-server-5.5.65_1      Multithreaded SQL database (server)
  • DB 패키지 설치
root@httpd:~ # pkg install mariadb102-server
메세지 출력
[...........................]


php 설치

[...........................]


기타

  • ezjail, 이 에러 계속 ...zzzzzz
Starting jails: httpd.
/etc/rc.d/jail: WARNING: Per-jail configuration via jail_* variables  is obsolete.  Please consider migrating to /etc/jail.conf.
/etc/rc.d/jail : 경고 : jail_ * 변수를 통한 감옥 별 구성은 더 이상 사용되지 않습니다. /etc/jail.conf 로의 마이그레이션을 고려하십시오.
  • DNS, Webserver, Mailserver, ... 구성은 된다, ^_^/~ 기타,.....
  • VMware서에서는 OS 단위로 분리, OS 단위에서 jail을 이용해서 여러 패키지 단위로 묶어서 분리된다.


Logo

Edit Reply#197[ Ssam ]

Reply

Option:
 
* CAPTCHA