Inception
πŸ™Š

Inception

Created
Apr 4, 2024 10:11 AM
Last edited time
Last updated April 8, 2024
Tags
42
Language
URL

Intro::

42 μ„œμšΈ Inception 과제 μ •λ¦¬μž…λ‹ˆλ‹€.

Subject

  • docker-compose μ‚¬μš©
  • 각 도컀 μ΄λ―Έμ§€λŠ” 그에 μƒμ‘ν•˜λŠ” μ„œλΉ„μŠ€ 이름과 κ°™μ•„μ•Ό ν•œλ‹€.
  • μ»¨ν…Œμ΄λ„ˆλŠ” Alpine or Debian 의 λ‘λ²ˆμ§Έ μ•ˆμ •ν™” 버전을 μ‚¬μš©ν•΄μ•Όν•œλ‹€.
  • 각 μ„œλΉ„μŠ€ λ³„λ‘œ λ„μ»€νŒŒμΌμ΄ μžˆμ–΄μ•Όν•¨
  • makefile을 톡해 docker-compseλ₯Ό 톡해 dockerfiles κ°€ λΆˆλ €μ•Όν•œλ‹€.
  • NGINX with TLSv1.2 or TLSv1.3 μ»¨ν…Œμ΄λ„ˆ
  • WordPress + php-fpm μ»¨ν…Œμ΄λ„ˆ
  • MariaDB μ»¨ν…Œμ΄λ„ˆ
  • WordPress 데이터λ₯Ό μˆ˜μš©ν•˜λŠ” volume
  • WordPress website files λ₯Ό κ°€μ§€λŠ” λ‘λ²ˆμ§Έ λ³Όλ₯¨
  • 각 μ»¨ν…Œμ΄λ„ˆλŠ” 도컀 λ„€νŠΈμ›Œν¬λ‘œ 이어져 μžˆλ‹€.
  • μ»¨ν…Œμ΄λ„ˆκ°€ crash λ‹€λ©΄ μž¬μ‹œμž‘ν•΄μ•Όν•œλ‹€.
  • WordPress database 에 두 μœ μ €κ°€ μžˆμ–΄μ•Όν•œλ‹€.
    • administrator β†’ X (e.g., admin, administrator, Administrator, admin-123, and so forth).
  • λ³Όλ₯¨μ€ /home/login/data ν΄λ”μ—μ„œ μ‚¬μš©ν•  수 μžˆμŠ΅λ‹ˆλ‹€.
  • domain name β†’ jahlee.42.fr λ¦¬λ‹€μ΄λ ‰νŠΈν•΄μ„œ ipμ£Όμ†Œλ‘œ
  • latest tag μ‚¬μš©κΈˆμ§€
  • λ„μ»€νŒŒμΌμ— λΉ„λ°€λ²ˆν˜Έ κΈˆμ§€
  • ν™˜κ²½λ³€μˆ˜λ₯Ό μ‚¬μš©ν•΄μ•Ό ν•œλ‹€.
    • .env νŒŒμΌμ„ μ‚¬μš©ν•˜λŠ”κ²ƒμ„ ꢌμž₯ν•œλ‹€. /srcs/.env
  • 443 포트만 μ‚¬μš©
Β 

docker-compose

Version

  • Docker Compose 파일의 버전을 λͺ…μ‹œν•©λ‹ˆλ‹€. 이 버전은 μ‚¬μš©ν•  수 μžˆλŠ” ꡬ성 μ˜΅μ…˜κ³Ό 도컀 μ—”μ§„μ˜ ν˜Έν™˜μ„±μ„ κ²°μ •ν•©λ‹ˆλ‹€.

Services

  • 이 νŒŒμΌμ—μ„œ μ •μ˜ν•˜κ³ μž ν•˜λŠ” μ„œλΉ„μŠ€λ“€μ˜ μ‹œμž‘μ μž…λ‹ˆλ‹€.

MariaDB (Service μ˜ˆμ‹œ)

  • mariadb:: MariaDB μ„œλΉ„μŠ€μ˜ μ‹œμž‘μ„ λ‚˜νƒ€λƒ…λ‹ˆλ‹€.
    • container_name: mariadb: 이 μ„œλΉ„μŠ€μ˜ μ»¨ν…Œμ΄λ„ˆ 이름을 mariadb둜 μ„€μ •ν•©λ‹ˆλ‹€.
    • build: requirements/mariadb: requirements/mariadb 디렉토리에 μžˆλŠ” Dockerfile을 μ‚¬μš©ν•˜μ—¬ 이미지λ₯Ό λΉŒλ“œν•©λ‹ˆλ‹€.
    • restart: always: μ»¨ν…Œμ΄λ„ˆκ°€ μ‹€νŒ¨ν•˜κ±°λ‚˜ 도컀가 μž¬μ‹œμž‘λ  λ•Œλ§ˆλ‹€ μžλ™μœΌλ‘œ μž¬μ‹œμž‘ν•©λ‹ˆλ‹€.
    • env_file: .env: ν™˜κ²½ λ³€μˆ˜λ₯Ό .env νŒŒμΌμ—μ„œ λΆˆλŸ¬μ˜΅λ‹ˆλ‹€.
    • volumes: - db-volume:/var/lib/mysql: db-volume λ³Όλ₯¨μ„ μ»¨ν…Œμ΄λ„ˆμ˜ /var/lib/mysql 디렉토리에 λ§ˆμš΄νŠΈν•©λ‹ˆλ‹€.
    • networks: - inception: 이 μ„œλΉ„μŠ€λ₯Ό inception λ„€νŠΈμ›Œν¬μ— μ—°κ²°ν•©λ‹ˆλ‹€.
    • ports: - {host 번호}:{container 번호}: 호슀트 포트 번호λ₯Ό μ»¨ν…Œμ΄λ„ˆ 포트 λ²ˆν˜Έμ— λ°”μΈλ“œν•©λ‹ˆλ‹€.
    • depends_on: - other 이 μ„œλΉ„μŠ€κ°€ μ‹œμž‘λ˜κΈ° 전에 other μ„œλΉ„μŠ€κ°€ λ¨Όμ € μ‹œμž‘λ˜μ–΄μ•Ό 함을 λͺ…μ‹œν•©λ‹ˆλ‹€.
    • Β 

Volumes

  • volumes:: μ‚¬μš©ν•  λ³Όλ₯¨λ“€μ„ μ •μ˜ν•˜λŠ” μ„Ήμ…˜μž…λ‹ˆλ‹€.
    • db-volume:, wp-volume:: 각 μ„œλΉ„μŠ€μ— μ‚¬μš©λ  λ³Όλ₯¨μ„ μ •μ˜ν•©λ‹ˆλ‹€.(μ˜ˆμ‹œ mariadb, wordpress λ³Όλ₯¨)
      • driver: local: λ³Όλ₯¨μ˜ λ“œλΌμ΄λ²„λ₯Ό 둜컬둜 μ„€μ •ν•©λ‹ˆλ‹€.
      • driver_opts:: λ³Όλ₯¨ λ“œλΌμ΄λ²„μ— λŒ€ν•œ μΆ”κ°€ μ˜΅μ…˜μ„ μ„€μ •ν•©λ‹ˆλ‹€.
        • type: none, device: /home/jahlee/data/db-data λ˜λŠ” /home/jahlee/data/wp-files: 둜컬 파일 μ‹œμŠ€ν…œμ˜ νŠΉμ • 경둜λ₯Ό λ³Όλ₯¨μ˜ 데이터 μ†ŒμŠ€λ‘œ μ‚¬μš©ν•©λ‹ˆλ‹€.
        • o: bind: μ§€μ •λœ λ””λ°”μ΄μŠ€λ₯Ό 마운트 μ˜΅μ…˜μœΌλ‘œ λ°”μΈλ“œν•©λ‹ˆλ‹€.

Networks

  • networks:: μ‚¬μš©ν•  λ„€νŠΈμ›Œν¬λ“€μ„ μ •μ˜ν•˜λŠ” μ„Ήμ…˜μž…λ‹ˆλ‹€.
    • inception:: inception λ„€νŠΈμ›Œν¬λ₯Ό μ •μ˜ν•©λ‹ˆλ‹€.
      • driver: bridge: λ„€νŠΈμ›Œν¬ λ“œλΌμ΄λ²„λ₯Ό bridge둜 μ„€μ •ν•©λ‹ˆλ‹€. μ΄λŠ” μ»¨ν…Œμ΄λ„ˆλ“€μ΄ λ…λ¦½λœ κ³΅κ°„μ—μ„œ μ‹€ν–‰λ˜λ©΄μ„œλ„ μ„œλ‘œ 톡신할 수 있게 ν•΄μ€λ‹ˆλ‹€.
Β 

PID 1

PIDλŠ” 'Process ID'의 μ•½μžλ‘œ, μš΄μ˜μ²΄μ œμ—μ„œ 각 ν”„λ‘œμ„ΈμŠ€λ₯Ό μ‹λ³„ν•˜λŠ” 고유 λ²ˆν˜Έμž…λ‹ˆλ‹€. λͺ¨λ“  μš΄μ˜μ²΄μ œμ—μ„œ PID 1은 μ‹œμŠ€ν…œμ΄ λΆ€νŒ…λ  λ•Œ κ°€μž₯ λ¨Όμ € μ‹œμž‘λ˜λŠ” ν”„λ‘œμ„ΈμŠ€λ₯Ό 가리킀며, μ΄λŠ” μ‹œμŠ€ν…œμ˜ λ‹€λ₯Έ λͺ¨λ“  ν”„λ‘œμ„ΈμŠ€μ˜ λΆ€λͺ¨ ν”„λ‘œμ„ΈμŠ€ 역할을 ν•©λ‹ˆλ‹€.
전톡적인 λ¦¬λˆ…μŠ€ μ‹œμŠ€ν…œμ—μ„œ PID 1은 주둜 init ν”„λ‘œμ„ΈμŠ€κ°€ μ°¨μ§€ν•©λ‹ˆλ‹€. 이 ν”„λ‘œμ„ΈμŠ€λŠ” μ‹œμŠ€ν…œμ΄ λΆ€νŒ…λ˜λŠ” λ™μ•ˆ ν•„μš”ν•œ μ„œλΉ„μŠ€μ™€ ν”„λ‘œκ·Έλž¨μ„ μ‹œμž‘ν•˜κ³ , μ’…λ£Œ μ‹œμ—λŠ” μ‹œμŠ€ν…œμ„ μ•ˆμ „ν•˜κ²Œ μ’…λ£Œν•©λ‹ˆλ‹€. λ˜ν•œ, μ‹œμŠ€ν…œμ΄ μ •μƒμ μœΌλ‘œ μž‘λ™ν•˜λŠ” λ™μ•ˆμ—λŠ” μ’€λΉ„ ν”„λ‘œμ„ΈμŠ€(μžμ‹ ν”„λ‘œμ„ΈμŠ€κ°€ μ’…λ£Œλœ 후에도 μ—¬μ „νžˆ μ‹œμŠ€ν…œ μžμ›μ„ μ°¨μ§€ν•˜λŠ” ν”„λ‘œμ„ΈμŠ€)λ₯Ό μ •λ¦¬ν•˜λŠ” 역할을 ν•©λ‹ˆλ‹€.

Docker PID 1

Docker μ»¨ν…Œμ΄λ„ˆ λ‚΄μ—μ„œμ˜ PID 1은 μ»¨ν…Œμ΄λ„ˆ λ‚΄μ—μ„œ κ°€μž₯ λ¨Όμ € μ‹œμž‘λ˜λŠ” ν”„λ‘œμ„ΈμŠ€λ₯Ό μ˜λ―Έν•©λ‹ˆλ‹€. Docker μ»¨ν…Œμ΄λ„ˆλŠ” 격리된 ν™˜κ²½μ—μ„œ 단일 ν”„λ‘œμ„ΈμŠ€λ₯Ό μ‹€ν–‰ν•˜λŠ” λ°©μ‹μœΌλ‘œ μ„€κ³„λ˜μ—ˆκΈ° λ•Œλ¬Έμ—, μ»¨ν…Œμ΄λ„ˆ λ‚΄μ—μ„œ μ‹€ν–‰λ˜λŠ” 첫 번째 ν”„λ‘œμ„ΈμŠ€κ°€ PID 1을 κ°€μ§€κ²Œ λ©λ‹ˆλ‹€. μ΄λŠ” κ·Έ ν”„λ‘œμ„ΈμŠ€κ°€ μ»¨ν…Œμ΄λ„ˆ λ‚΄μ—μ„œμ˜ init ν”„λ‘œμ„ΈμŠ€μ™€ μœ μ‚¬ν•œ 역할을 ν•˜κ²Œ 됨을 μ˜λ―Έν•©λ‹ˆλ‹€.
κ·ΈλŸ¬λ‚˜ Docker μ»¨ν…Œμ΄λ„ˆμ—μ„œ μ‹€ν–‰λ˜λŠ” PID 1 ν”„λ‘œμ„ΈμŠ€λŠ” 전톡적인 λ¦¬λˆ…μŠ€ μ‹œμŠ€ν…œμ˜ init ν”„λ‘œμ„ΈμŠ€μ™€λŠ” λ‹€λ₯΄κ²Œ, μžλ™μœΌλ‘œ μ’€λΉ„ ν”„λ‘œμ„ΈμŠ€λ₯Ό μ •λ¦¬ν•˜μ§€ μ•ŠμŠ΅λ‹ˆλ‹€. μ΄λŠ” κ°œλ°œμžκ°€ μ»¨ν…Œμ΄λ„ˆλ₯Ό 섀계할 λ•Œ κ³ λ €ν•΄μ•Ό ν•  μ€‘μš”ν•œ 사항 쀑 ν•˜λ‚˜μž…λ‹ˆλ‹€. μ’€λΉ„ ν”„λ‘œμ„ΈμŠ€κ°€ 계속 μŒ“μ΄κ²Œ 되면, μ‹œμŠ€ν…œ μžμ›μ„ λΆˆν•„μš”ν•˜κ²Œ μ‚¬μš©ν•˜μ—¬ μ„±λŠ₯ μ €ν•˜λ₯Ό μΌμœΌν‚¬ 수 μžˆμŠ΅λ‹ˆλ‹€. 이λ₯Ό ν•΄κ²°ν•˜κΈ° μœ„ν•΄, Docker μ»¨ν…Œμ΄λ„ˆμ—μ„œλŠ” tini와 같은 μž‘μ€ init μ‹œμŠ€ν…œμ„ μ‚¬μš©ν•˜μ—¬ PID 1의 역할을 보완할 수 μžˆμŠ΅λ‹ˆλ‹€. TiniλŠ” μ’€λΉ„ ν”„λ‘œμ„ΈμŠ€λ₯Ό 적절히 μ²˜λ¦¬ν•˜κ³ , μ‹œκ·Έλ„ 전달과 같은 init ν”„λ‘œμ„ΈμŠ€κ°€ ν•΄μ•Ό ν•  일을 μˆ˜ν–‰ν•¨μœΌλ‘œμ¨, μ»¨ν…Œμ΄λ„ˆ λ‚΄λΆ€μ—μ„œ 보닀 μ•ˆμ •μ μΈ ν™˜κ²½μ„ μœ μ§€ν•  수 μžˆλ„λ‘ λ„μ™€μ€λ‹ˆλ‹€.
Docker μ»¨ν…Œμ΄λ„ˆμ—μ„œμ˜ PID 1 κ΄€λ¦¬λŠ” μ»¨ν…Œμ΄λ„ˆμ˜ μ•ˆμ •μ„±κ³Ό μ„±λŠ₯에 직접적인 영ν–₯을 미치기 λ•Œλ¬Έμ— μ€‘μš”ν•©λ‹ˆλ‹€. λ”°λΌμ„œ κ°œλ°œμžλŠ” μ»¨ν…Œμ΄λ„ˆλ₯Ό μ„€κ³„ν•˜κ³  ꡬ성할 λ•Œ μ΄λŸ¬ν•œ 사항을 κ³ λ €ν•΄μ•Ό ν•©λ‹ˆλ‹€.
Β 

Tini

TiniλŠ” Docker μ»¨ν…Œμ΄λ„ˆ λ‚΄μ—μ„œ PID 1의 역할을 효과적으둜 μˆ˜ν–‰ν•˜κΈ° μœ„ν•΄ λ§Œλ“€μ–΄μ§„ μ΄ˆκ²½λŸ‰ μœ ν‹Έλ¦¬ν‹°μž…λ‹ˆλ‹€. TiniλŠ” μ»¨ν…Œμ΄λ„ˆ λ‚΄μ—μ„œ μ‹€ν–‰λ˜λŠ” 첫 번째 ν”„λ‘œμ„ΈμŠ€λ‘œ λ™μž‘ν•˜μ—¬, 전톡적인 λ¦¬λˆ…μŠ€ μ‹œμŠ€ν…œμ˜ init ν”„λ‘œμ„ΈμŠ€κ°€ ν•˜λŠ” 일을 λ‹΄λ‹Ήν•©λ‹ˆλ‹€. μ£Όμš” κΈ°λŠ₯은 μ’€λΉ„ ν”„λ‘œμ„ΈμŠ€μ˜ μ²˜λ¦¬μ™€ μ‹œκ·Έλ„μ˜ μ μ ˆν•œ μ „λ‹¬μž…λ‹ˆλ‹€.

Tini의 μ£Όμš” κΈ°λŠ₯

  1. μ’€λΉ„ ν”„λ‘œμ„ΈμŠ€ 처리: μ»¨ν…Œμ΄λ„ˆ λ‚΄μ—μ„œ μžμ‹ ν”„λ‘œμ„ΈμŠ€κ°€ μ’…λ£Œλ  λ•Œ, 이듀이 μ’€λΉ„ ν”„λ‘œμ„ΈμŠ€λ‘œ 남지 μ•Šλ„λ‘ μ²˜λ¦¬ν•©λ‹ˆλ‹€. μ’€λΉ„ ν”„λ‘œμ„ΈμŠ€λŠ” μžμ›μ„ ν•΄μ œν•˜μ§€ μ•Šκ³  μ‹œμŠ€ν…œμ— λ‚¨μ•„μžˆλŠ” μ’…λ£Œλœ ν”„λ‘œμ„ΈμŠ€λ₯Ό λ§ν•©λ‹ˆλ‹€. TiniλŠ” μ΄λŸ¬ν•œ ν”„λ‘œμ„ΈμŠ€λ“€μ΄ μ‹œμŠ€ν…œ μžμ›μ„ 계속 μ μœ ν•˜λŠ” 것을 λ°©μ§€ν•©λ‹ˆλ‹€.
  1. μ‹œκ·Έλ„ 핸듀링: μ‹œκ·Έλ„μ€ μš΄μ˜μ²΄μ œμ—μ„œ ν”„λ‘œμ„ΈμŠ€μ— λ³΄λ‚΄λŠ” 톡지 λ©”μ‹œμ§€μž…λ‹ˆλ‹€. 예λ₯Ό λ“€μ–΄, μ»¨ν…Œμ΄λ„ˆλ₯Ό μ •μƒμ μœΌλ‘œ μ’…λ£Œν•˜λ €κ³  ν•  λ•Œ λ³΄λ‚΄λŠ” SIGTERM μ‹œκ·Έλ„μ΄ μžˆμŠ΅λ‹ˆλ‹€. TiniλŠ” μ΄λŸ¬ν•œ μ‹œκ·Έλ„μ„ 적절히 μžμ‹ ν”„λ‘œμ„ΈμŠ€μ— μ „λ‹¬ν•˜μ—¬, 예λ₯Ό λ“€μ–΄ μ»¨ν…Œμ΄λ„ˆκ°€ μ •μƒμ μœΌλ‘œ μ’…λ£Œλ  수 μžˆλ„λ‘ ν•©λ‹ˆλ‹€.

Tini μ‚¬μš© 방법

Docker 이미지에 Tiniλ₯Ό ν¬ν•¨μ‹œν‚€κ±°λ‚˜, Docker의 --init ν”Œλž˜κ·Έλ₯Ό μ‚¬μš©ν•˜μ—¬ μ»¨ν…Œμ΄λ„ˆλ₯Ό μ‹€ν–‰ν•  λ•Œ Tiniλ₯Ό ν™œμ„±ν™”ν•  수 μžˆμŠ΅λ‹ˆλ‹€.
  • Dockerfile에 Tini μΆ”κ°€ν•˜κΈ°:
    • dockerfileCopy code FROM ubuntu:latest # Tini μ„€μΉ˜ ADD https://github.com/krallin/tini/releases/download/v0.19.0/tini /tini RUN chmod +x /tini ENTRYPOINT ["/tini", "--"] # μ‹€μ œ μ‹€ν–‰ν•  λͺ…λ Ήμ–΄ CMD ["your_application", "argument1", "argument2"]
  • Docker μ‹€ν–‰ μ‹œ -init ν”Œλž˜κ·Έ μ‚¬μš©: Docker 1.13.0 μ΄μƒμ—μ„œλŠ” docker run λͺ…령어에 -init ν”Œλž˜κ·Έλ₯Ό μΆ”κ°€ν•˜μ—¬ Tiniλ₯Ό ν™œμ„±ν™”ν•  수 μžˆμŠ΅λ‹ˆλ‹€. 이 방법을 μ‚¬μš©ν•˜λ©΄ λ³„λ„λ‘œ Tiniλ₯Ό μ„€μΉ˜ν•  ν•„μš”κ°€ μ—†μŠ΅λ‹ˆλ‹€.
    • bashCopy code docker run --init -d your_image
Tini의 μ‚¬μš©μ€ μ»¨ν…Œμ΄λ„ˆκ°€ 보닀 μ•ˆμ •μ μœΌλ‘œ λ™μž‘ν•˜λ„λ‘ ν•˜λ©°, 특히 μ—¬λŸ¬ ν”„λ‘œμ„ΈμŠ€λ₯Ό 관리해야 ν•˜λŠ” λ³΅μž‘ν•œ μ• ν”Œλ¦¬μΌ€μ΄μ…˜μ—μ„œ κ·Έ μ€‘μš”μ„±μ΄ μ»€μ§‘λ‹ˆλ‹€. TiniλŠ” μ‹ ν˜Έ 전달과 μ’€λΉ„ ν”„λ‘œμ„ΈμŠ€ 처리λ₯Ό μžλ™ν™”ν•˜μ—¬, μ»¨ν…Œμ΄λ„ˆμ˜ 생λͺ…μ£ΌκΈ° 관리λ₯Ό λ‹¨μˆœν™”ν•˜κ³ , κ°œλ°œμžκ°€ μ• ν”Œλ¦¬μΌ€μ΄μ…˜ λ‘œμ§μ— 더 집쀑할 수 μžˆλ„λ‘ λ•μŠ΅λ‹ˆλ‹€.
Β 

WordPress와 PHP-FPM

WordPressλŠ” μ„Έκ³„μ—μ„œ κ°€μž₯ 널리 μ‚¬μš©λ˜λŠ” μ½˜ν…μΈ  관리 μ‹œμŠ€ν…œ(CMS) 쀑 ν•˜λ‚˜λ‘œ, μ‚¬μš©μžκ°€ λΈ”λ‘œκ·Έ, 개인 μ›Ήμ‚¬μ΄νŠΈ, 포트폴리였, μ‹¬μ§€μ–΄λŠ” μ „μž μƒκ±°λž˜ μ‚¬μ΄νŠΈμ™€ 같은 λ‹€μ–‘ν•œ μœ ν˜•μ˜ μ›Ήμ‚¬μ΄νŠΈλ₯Ό μ‰½κ²Œ λ§Œλ“€κ³  관리할 수 있게 ν•΄μ€λ‹ˆλ‹€. WordPressλŠ” PHP둜 μž‘μ„±λ˜μ—ˆμœΌλ©° MySQL λ˜λŠ” MariaDB λ°μ΄ν„°λ² μ΄μŠ€λ₯Ό μ‚¬μš©ν•©λ‹ˆλ‹€.
php-fpm (PHP FastCGI Process Manager)은 PHP 슀크립트λ₯Ό μ²˜λ¦¬ν•˜κΈ° μœ„ν•œ κ³ μ„±λŠ₯ λ°±μ—”λ“œ ν”„λ‘œμ„ΈμŠ€ λ§€λ‹ˆμ €μž…λ‹ˆλ‹€. FastCGI의 κ΅¬ν˜„μ²΄ 쀑 ν•˜λ‚˜λ‘œ, 동적 μ½˜ν…μΈ λ₯Ό μ œκ³΅ν•˜λŠ” μ›Ή μ• ν”Œλ¦¬μΌ€μ΄μ…˜μ„ μœ„ν•΄ μ„€κ³„λ˜μ—ˆμŠ΅λ‹ˆλ‹€. PHP-FPM은 μ›Ήμ„œλ²„μ™€ PHP 슀크립트 μ‚¬μ΄μ˜ μΈν„°νŽ˜μ΄μŠ€ 역할을 ν•˜λ©°, μ›Ήμ„œλ²„λ‘œλΆ€ν„° PHP 슀크립트 μ‹€ν–‰ μš”μ²­μ„ λ°›μ•„ μ²˜λ¦¬ν•©λ‹ˆλ‹€.

WordPress와 PHP-FPM의 연동

WordPress μ›Ήμ‚¬μ΄νŠΈμ—μ„œ PHP-FPM을 μ‚¬μš©ν•˜λŠ” 것은 μ›Ή μ‚¬μ΄νŠΈμ˜ μ„±λŠ₯κ³Ό μ•ˆμ •μ„±μ„ 크게 ν–₯μƒμ‹œν‚¬ 수 μžˆμŠ΅λ‹ˆλ‹€. PHP-FPM은 각각의 μš”μ²­μ„ λ…λ¦½λœ μžμ‹ ν”„λ‘œμ„ΈμŠ€λ‘œ μ²˜λ¦¬ν•˜κΈ° λ•Œλ¬Έμ—, μš”μ²­ 처리 μ‹œ λ°œμƒν•  수 μžˆλŠ” λ¬Έμ œκ°€ λ‹€λ₯Έ μš”μ²­μ— 영ν–₯을 λ―ΈμΉ˜μ§€ μ•ŠμŠ΅λ‹ˆλ‹€. λ˜ν•œ, PHP-FPM은 μš”μ²­ μ²˜λ¦¬λŸ‰μ— 따라 μžλ™μœΌλ‘œ μžμ‹ ν”„λ‘œμ„ΈμŠ€μ˜ 수λ₯Ό μ‘°μ ˆν•  수 있으며, μ΄λŠ” νŠΈλž˜ν”½μ΄ λ§Žμ€ μ‹œκ°„μ—λ„ μ›Ήμ‚¬μ΄νŠΈκ°€ μ•ˆμ •μ μœΌλ‘œ 운영될 수 μžˆλ„λ‘ λ•μŠ΅λ‹ˆλ‹€.

PHP-FPM μ„€μ •ν•˜κΈ°

PHP-FPM을 WordPress와 ν•¨κ»˜ μ‚¬μš©ν•˜κΈ° μœ„ν•΄μ„œλŠ” λͺ‡ 가지 섀정이 ν•„μš”ν•©λ‹ˆλ‹€:
  1. PHP-FPM μ„€μΉ˜: μ„œλ²„μ— PHP-FPM을 μ„€μΉ˜ν•΄μ•Ό ν•©λ‹ˆλ‹€. λŒ€λΆ€λΆ„μ˜ Linux λ°°ν¬νŒμ—μ„œλŠ” νŒ¨ν‚€μ§€ κ΄€λ¦¬μžλ₯Ό 톡해 μ‰½κ²Œ μ„€μΉ˜ν•  수 μžˆμŠ΅λ‹ˆλ‹€.
  1. μ›Ή μ„œλ²„ ꡬ성: Apache λ˜λŠ” Nginx 같은 μ›Ή μ„œλ²„λ₯Ό μ‚¬μš©ν•˜μ—¬ PHP-FPMκ³Ό 연동해야 ν•©λ‹ˆλ‹€. 각 μ›Ή μ„œλ²„λ§ˆλ‹€ μ„€μ • 방법이 μ‘°κΈˆμ”© λ‹€λ₯Ό 수 μžˆμœΌλ‹ˆ, μ„œλ²„ λ¬Έμ„œλ₯Ό μ°Έκ³ ν•˜μ—¬ μ˜¬λ°”λ₯΄κ²Œ μ„€μ •ν•©λ‹ˆλ‹€.
      • Nginx의 경우, location 블둝 λ‚΄μ—μ„œ fastcgi_pass μ§€μ‹œμ–΄λ₯Ό μ‚¬μš©ν•˜μ—¬ PHP-FPMκ³Ό ν†΅μ‹ ν•©λ‹ˆλ‹€.
      • Apache의 경우, mod_proxy_fcgi λͺ¨λ“ˆμ„ μ‚¬μš©ν•˜μ—¬ PHP-FPMκ³Ό 연동할 수 μžˆμŠ΅λ‹ˆλ‹€.
  1. PHP-FPM ν’€(pool) ꡬ성: PHP-FPM μ„€μ • 파일(일반적으둜 www.conf)μ—μ„œ ν”„λ‘œμ„ΈμŠ€ 풀을 ꡬ성할 수 μžˆμŠ΅λ‹ˆλ‹€. 이 섀정을 톡해 μžμ‹ ν”„λ‘œμ„ΈμŠ€μ˜ 수, μ‹œμž‘ ν”„λ‘œμ„ΈμŠ€ 수, μš”μ²­ λŒ€κΈ°μ—΄μ˜ 크기 등을 μ‘°μ ˆν•  수 μžˆμŠ΅λ‹ˆλ‹€.

이점

  • μ„±λŠ₯ ν–₯상: PHP-FPM은 μ›Ή μ• ν”Œλ¦¬μΌ€μ΄μ…˜μ˜ 처리 속도와 응닡 μ‹œκ°„μ„ κ°œμ„ ν•  수 μžˆμŠ΅λ‹ˆλ‹€.
  • μžμ› νš¨μœ¨μ„±: μžμ› μ‚¬μš©μ„ 더 잘 κ΄€λ¦¬ν•˜κ³ , ν•„μš”μ— 따라 ν”„λ‘œμ„ΈμŠ€λ₯Ό λ™μ μœΌλ‘œ μ‘°μ ˆν•  수 μžˆμŠ΅λ‹ˆλ‹€.
  • μ•ˆμ •μ„±: 각 μš”μ²­μ„ λ…λ¦½λœ ν”„λ‘œμ„ΈμŠ€μ—μ„œ μ²˜λ¦¬ν•˜κΈ° λ•Œλ¬Έμ—, ν•˜λ‚˜μ˜ μš”μ²­μ΄ μ‹€νŒ¨ν•΄λ„ 전체 μ‹œμŠ€ν…œμ— 영ν–₯을 λ―ΈμΉ˜μ§€ μ•ŠμŠ΅λ‹ˆλ‹€.
WordPress와 PHP-FPM의 쑰합은 특히 동적 μ½˜ν…μΈ κ°€ 많고, 높은 νŠΈλž˜ν”½μ„ μ²˜λ¦¬ν•΄μ•Ό ν•˜λŠ” μ›Ήμ‚¬μ΄νŠΈμ— μ ν•©ν•œ 해결책을 μ œκ³΅ν•©λ‹ˆλ‹€.

VM μ„€μ •

Β 

References::

Loading Comments...