FT_SERVER

pawer·2021년 1월 23일
0

42Seoul

목록 보기
5/5

Subject

문제 이해하기

  • Docker를 설치한 모든 컴퓨터에서 wordpress를 수행할 수 있는 Dockerfile을 만들자.
    • os
      • debian:buster
    • web-server
      • nginx
    • dbms
      • mysql
    • CGI기능을 쓰기위한 프로그램(후술)
      • php7.3-fpm
    • php랑 mysql이랑 연동하는 프로그램
      • 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접속 됨.
  • wordpressphpmyadmin으로 데이터 수정해보면서 연동 확인.
  • 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에 도움되는 링크들

0개의 댓글