본 프로젝트의 개요와 프로젝트를 진행하기 위한 개념 확립
Docker, Dockerfile, Docker Compose에 관한 개념 설명은 다음의 글에 정리해 두었다.
version : 도커 컴포즈 버전
services : 애플리케이션을 구성할 서비스 목록 (컨테이너를 실행할 때 필요한 정보 명시)
서비스이름 : (아래의 목록은 순서가 상관없음)
build : 빌드할 Dockerfile의 경로
image : 컨테이너를 올릴 때 사용할 이미지
command : 컨테이너에서 수행할 명령어
ports : 포트포워딩 지정
working_dir : 작업할 경로
container_name : 컨테이너 이름
volumes : 마운트할 볼륨
environment : 컨테이너에서 사용될 환경변수
networks : 사용할 네트워크 정의
depends_on : 실행순서를 보장받고 싶을 때 사용
volumes : 미리 생성해두고 컨테이너에서 불러와서 사용할 볼륨
볼륨 이름 (볼륨 이름만 명시하면 기본 옵션을 사용)
driver
driver_opts 드라이버 옵션 설정
networks : 컨테이너 간 네트워크 설정
네트워크 이름
listen
server {}
블록의 내용에 맞게 처리하겠다는 뜻server_name
localhost
라고 적으면 됨error_page
location
index.html
, index.htm
으로 정의된 파일들을 보여줌HTTPS(Hypertext Transfer Protocol over Secure Socket Layer)는 SSL위에서 돌아가는 HTTP의 평문 전송 대신 암호화된 통신을 하는 프로토콜이다. 이런 HTTPS를 통신을 서버에서 구현하기 위해서는 신뢰할 수 있는 상위 기업이 발급한 인증서가 필요한데 이런 발급 기관을 CA(Certificate Authority)라고 한다. CA의 인증서를 발급받는 것은 무료가 아니다. self-signed SSL 인증서는 자체적으로 발급받은 인증서이며, 로그인 및 기타 개인 계정 인증 정보를 암호화한다. self-signed SSL 인증서를 만드는 방법 중 하나는 무료 오픈소스인 openssl을 이용해 만드는 것이다. HTTPS를 위해 필요한 개인키(.key)
, 서면요청파일(.csr)
, 인증서파일(.crt)
을 openssl이 발급해준다.
WordPress는 오픈 소스 블로그 소프트웨어이며 템플릿 시스템을 사용한다. PHP
와 HTML
코드 편집 없이도 다시 정리할 수 있는 위젯이 포함되어 있고, 테마도 설치해 자유롭게 전환할 수 있다. 테마 안의 PHP
와 HTML
코드는 좀 더 세분화된 맞춤 페이지를 위해 편집할 수 있다.
또한 통합 링크 관리 체계가 갖추어져 있어, 검색 엔진에 친화적이고, 깔끔한 퍼머링크 구조와, 기사에 여러 카테고리를 설정할 수 있는 것을 물론, 여러 명의 저자를 설정할 수 있고, 기사와 포스트에 태그를 지원한다. 또한 트랙백과 핑백 표준을 지원하며 마지막으로 사용자와 개발자는 리치 플러그인 아키텍처를 통해 기능을 확장할 수 있다.
또한 WP-CLI는 PHAR
로 작성된 유틸리티로써 명령어로 Wordpress 를 관리할 수 있는 유틸리티이다.
플러그인 관리, 워드프레스 업그레이드등의 관리 작업을 커맨드로 실행할 수 있으므로 자동화된 관리가 가능하며 다수의 워드프레스 사이트를 손쉽게 운영할 수 있는 장점이 있다.
CGI는 Common Gateway Interface의 약자로 웹서버와 외부 프로그램을 연결해주는 표준화된 프로토콜이다. 웹서버로 요청이 들어왔을 때 그것이 웹서버가 처리 할 수 없는 정보일 때 그 정보를 처리 할 수 있는 외부 프로그램을 호출해서 외부 프로그램이 처리한 결과를 웹서버가 받아서 브라우저로 전송하는 것이다. 외부 프로그램은 C
, C++
, Perl
, PHP
, Python
등 어떤 언어로든 작성될 수 있는데, 이것이 가능한 것은 웹서버와 외부 프로그램 사이에 통용되는 공통의 규칙이 정의되어 있기 때문이다.
Apache
, Nginx
등의 웹 서버를 쓰고 PHP
프로그래밍이나 Python
프로그래밍 등의 여러가지 언어를 쓰는데 이것들이 문제 없이 communication 할 수 있는 것은 그 사이에 CGI라는 표준이 있기 때문이다. 그렇기 때문에 Apache
에 PHP
가 붙기도 하고 Apache
에 Python
이 붙기도 하고 Nginx
에 PHP
가 붙기도 하고 Nginx
에 Python
이 붙기도 하는 것이다.
하지만 CGI는 하나의 request 당 하나의 process가 배정되는 속도의 한계가 있었고 이를 개선한 것이 FastCGI다. FastCGI는 여러 개의 request가 들어와도 이미 만들어져있는 process를 공유해서 처리하기 때문에 process를 생성하고 삭제하는데 소요되는 리소스, 시간 등이 절약된다.
PHP-FPM는 PHP FastCGI Process Manager의 약자로 PHP를 FastCGI 모드로 동작하게 해준다. 하나의 process로 여러 개의 request들을 처리해주는 manager인 것이다.
Reference