Subject
문제 이해하기
Docker
를 설치한 모든 컴퓨터에서 wordpress
를 수행할 수 있는 Dockerfile을 만들자.
- os
- web-server
- dbms
- CGI기능을 쓰기위한 프로그램(후술)
- php랑 mysql이랑 연동하는 프로그램
- wordpress란?
- CMS툴이다.
남들이 만들어 놓은 테마같은걸 적용해서 쉽게 홈페이지를 만들 수 있는 도구
1. wordpress를 실행하기위해 필요한 것.
웹 서버
- wordpress는 웹 브라우저에서 실행되는 도구이다.
- 따라서 wordpress가 실행되기 위한 서버가 필요하다.
nginx
를 설치할 것이다.
DBMS(Database Management System)
- DBMS란 말 그대로 데이터베이스를 관리해주는 하나의 소프트웨어이다.
- wordpress로 만든 홈페이지에서 관리되는
데이터
를 저장하기 위해 사용한다.
- mysql을 사용할 것이다.
- 긍데 subject에서 요구하는 운영체제 debian:buster에서는 MariaDB를 사용해야 한단다. MariaDB는 MySQL과 동일한 소스 코드 기반의 DBMS이다.
php7.3-fpm
- 데이터 베이스 연동이 필요없다면, 그냥 html로 화면을 보여주면 끝이다.
- 그러나, 단순히 게시판기능만 존재한다고해도 서로다른사람이 작성한 글들을 저장하고있다가 보여줄 수 있어야 한다.
- 또한, 대부분 게시판은 내가 등록한 글이 바로 홈페이지에서 조회되야 한다.
- 이러한 페이지를
동적인 페이지
라고 한다.
- 동적인 페이지를 구현하기위해
서버에서 실행되는 프로그래밍 언어
가 필요하다.
- 여기선 php를 사용한다.
- 웹서버 자체에서는 php처리를 못한다. 그래서 다른 프로그램한테 일을 시킨다.
- 이런 기능을 CGI(Common Gateway Interface)라 한다.
- 즉, CGI의 기능을 해주기위한 프로그램이 필요하다.
- cgi기능을 더 빠르게(fast)하게 동작해주는 프로그램이
php7.3-fpm
- php-fpm은 웹 서버가 일을 시켜야하니깐, 두 프로그램
nginx <-> php7.3-fpm
은 연동되어야 한다.
php-mysql
- php는 동적인 페이지를 표현하기위한 서버사이드 스크립트이다.
- 따라서 dbms랑 통신할 수 있어야한다.
- php와 우리가 설치한 dbms인 mysql을 연동하기 위한 프로그램이 필요하다.
- 그게
php-mysql
2. 추가적으로 필요한 것
openssl
- subject 요구사항 중
Your server should be able to use the SSL protocol.
항목이 존재한다.
- ※ 요기강의를
CA를 통해서 인증서 생성
전까지는 보고 이해 해야한다. ※
- 간단하게, ssl프로토콜을 사용해 브라우저에서 전송되는 데이터를
암호화
할 수 있고, 내 사이트가 신뢰할 수 있는 사이트임을 인증서
로써 증명할 수 있다.
- 원래는
CA
라는 기관을통해 돈주고 인증서를 발급받아야 되는데.. 프로그램으로 개인 인증서와 암호화 개인키를 발급받을 수 있다.
- 최소한 아래 두개는 이해하고
openssl
을 사용해보자..
- 인증서를 받는데 개인키가 필요한 이유 ?
- 인증서가 있으면 내 서버가 안전한지를 어떻게 믿을 수 있는지 ?
phpmyAdmin
- dbms를 웹사이트로 쉽게 관리할 수 있는 프로그램이다.
- 즉, phpmyAdmin에서 내 dbms를 사용할 수 있도록 데이터베이스와 테이블을 만들어줘야한다.
- phpmyAdmin을 받을때 제공되는 sql스크립트를 내 dbms에 적용하기만 하면 된다.
mysql < /var/www/html/phpmyadmin/sql/create_tables.sql -u root --skip-password
- phpmyAdmin은 php기반으로 동작한다.
wordpress
- 우리의 최종 목표, 웹브라우저에서 동작하는
CMS도구
이다.
- 소스코드를 다운받고, dbms랑 연동해줘야 한다.
- wordpress가 동작할 때, 참조해야 할 dbms의 host이름과 접속할 계정정보(id, pw) 그리고 데이터베이스의 이름을 정해준다.(이름은 wordpress)
- 사용하는 데이터베이스만 만들면 필요한 테이블은 알아서 만들어주네?
3. 진행과정
1. 필요한 패키지 설치.
2. 필요한 프로그램 추가설치 및 환경설정
3. 설치한 프로그램 실행하기.
4. 1~3의 과정을 DockerFile로 정리하기.
4. 결과확인.
1. Docker파일 build하여 image 생성.
docker build . -t ft_server
2. 생성한 image로 컨테이너 생성.
docker run -it -p 80:80 -p 443:443 --name ft_server ft_server
3. 결과확인
- 정상적으로 되었다면,
localhost
접속 됨.
- 설치한
wordpress
, phpmyadmin
접속 됨.
wordpress
과 phpmyadmin
으로 데이터 수정해보면서 연동 확인.
http
로 접근할 때 301
과함께 redirect
되어야 함.
4. Docker의 장점
- 내가만든 Dockfile로 1~2의 명령어를 mac os에서 수행했다.
- localhost접속해서 wordpress를 조작할 수 있다.
- 내가만든 Dockfile로 1~2의 명령어를 wsl에서 수행했다.
- localhost접속해서 wordpress를 조작할 수 있다.
- 나는이제
wordpress
를 수행하는 서버를 구축하고싶을 때
- Docker를 다운받고
- DockerFile을 이용해 컨테이너를 실행만하면 된다.
5. 흠..
- mysql의 root계정 초기비번 설정하면, 접근할때마다 무조건
-p
쓰라고 함.
- 애초에 root에 비번 설정안하면, 이 에러는 안만남.. 하지만 실제 서버에서는 당연히 비밀번호를 설정해서 써야 함.
- 못고치겠으면.. mysql다시받고, root비번 설정하지말고, 그냥 새로운 USER만들고 wordpress 접근 권한 주기..
4. subject에 도움되는 링크들