🧠
Hi, Daehuyn Lee
  • Fork-my-brain
  • Network
    • 7. "데이터가 전달되는 원리" OSI 7계층 모델과 TCP:IP 모델
    • [Netwhat] 연습문제 정리
    • 11. IP 라우팅(routing) 동작 과정
    • 3. IP address 란?
    • 2. 컴퓨터 구조를 통해 이해하는 파일(File)과 소켓(Socket)
    • 10 "더 편리한 인터넷을 위해" DHCP && DNS 프로토콜
    • 9. 데이터? 세그먼트? 패킷? 헷갈릴 땐 PDU를 알아보자
    • 8. TCP 와 UDP 차이를 자세히 알아보자
    • 5. 서브넷팅(subnetting)으로 네크워크를 효율적으로 관리하자
    • 4. 넷마스크(Netmask)와 서브넷마스크(Subnetmask)
    • 1. 비유로 이해하는 컴퓨터 구조
    • 6. 공인(Public) && 사설(Private) IP의 차이점
  • Django
    • [Django 1] 가상환경에 Django 설치하기
    • [Django 3] Hello World 웹사이트 만들기
    • [Django 9] static 으로 css 로드하기
    • [Django 10] 한 템플릿에서 복수의 css 파일 적용하기
    • [Django 11] URL app별로 관리하기
    • [Django 8] 템플릿 상속
    • [Django 4] MTV 패턴
    • [Django 6] 블로그 model 만들기
    • [Django 2] Django는 어떻게 작동할까
    • [Django 7] '새 글 작성' 기능 만들기
    • [Django 5] 템플릿 언어
  • Projects
    • 예발자닷컴
      • 4. 프론트엔드의 역할은 어디까지 - 더미데이터 만들기
      • 7. [React 리팩토링] CSS Inline Styling에 Props 사용하기
      • 6. [React 리팩토링] JSX에서 조건문 사용해 렌더링하기
      • 3. 예발자닷컴 프론트서버 업데이트 하기
      • 8. [React 리팩토링] 예발자 프로젝트에 Redux 적용하기
      • 5. [React 리팩토링] JSX로 HTML 렌더링하기
      • 1. 👨‍👨‍👦‍👦 Github로 협업 프로젝트 관리하기
      • 2. React Component를 활용한 웹페이지 디자인 연습
  • Git
    • [Git] Interactive Rebase 실습
    • 오픈소스 개발 참여에 필요한 Git 명령어 정리
    • 개발자가 오픈소스를 읽는 방법
    • 오픈소스 프로젝트 시작하기
    • SSH agent ; Passphrase 입력 없이 Push하기
    • SSH로 원격저장소 접속하기
    • [Github] 개인 저장소를 팀 저장소로 변경하기
    • GitHub Dependabot
    • Git add, commit, push 취소하기
    • 깃헙 잔디 관리 팁
    • 원격저장소 여러개 연결하기
    • Typora(마크다운 에디터) 사용법
  • C
    • C Piscine
      • 메모리 구조를 알아보자
      • Makefile 만들기
      • GCC로 정적 라이브러리 파일 만들기
      • 외부 라이브러리 GCC로 컴파일 하기
      • 정적(Static) 변수
      • 저수준 파일 입출력
      • Makefile 자주 사용하는 문법 정리
      • segmentation fault 해결하기
      • C의 구조체 개념
      • 연결 리스트(linked list)에서 이중 포인터 사용하기
      • 로컬에 Norminette 설치하기
    • GetNextLine
      • [GetNextLine] 과제소개-Reading a line on a fd is way too tedious
      • [GetNextLine] 삽질의 기록
      • [GetNextLine] 리팩토링-프로그램의 목적을 고려한 코드
    • ft_printf
      • 1. 과제소개
      • 2. 가변인자 (Variadic Arguments)
      • 3. 형식태그와 서식지정자 printf 함수의 옵션 알아보기
    • Libft
      • [Libft] Bonus
      • [Libft] Test Program
      • [Libft] 나만의 C 라이브러리 만들기
      • [Libft] Part 2
      • [Libft] Part 1
  • UNIX shell
    • [minishell] 4. 종료상태와 에러메세지 처리
    • [minishell] 1. 과제소개 및 선행지식
    • [minishell] 2. 프로그램 구조 및 개발 기록들
    • [minishell] 5. 파이프(Pipe) 처리
    • [minishell] 3. 시그널(Signal) 처리하기
    • [minishell] 6. 리다이렉션(Redirection) 처리
  • Web
    • Next.js
      • [Next.js] CSS모듈과 복수의 class 사용하기
    • Node.js
      • [Node.js] 웹페이지에 파일 띄우기
      • [Node.js] URL에서 쿼리스트링 추출하기
      • [Node.js] '새 글 작성' 페이지 만들기
    • React
      • [React] 2. 컴포넌트(Component) 생성 및 파일별로 분리하기
      • [React] 1. 파일 구조 이해하기
      • [React] 4. 컴포넌트의 State 란
      • [React] 3. 컴포넌트의 Props 란
    • Javascript
      • Click, Enter 두 개의 이벤트 동시에 등록하기
      • Click eventListener 등록하기
      • JavaScript & C 문법 비교
      • JavaScript 객체 지향의 특징
    • CSS
      • [CSS] box-model, display, position
  • Docker
    • ft_server
      • 2. 도커 설치부터 워드프레스 구축까지
      • 1. 선행지식-Docker? Debian Buster? Nginx? ...
      • 3. Dockerfile 만들기
  • Kubernetes
    • 🌌[쿠버네티스 아키텍처] 3. API 호출
    • 🌌[쿠버네티스 아키텍처] 1. 구성 및 설계
    • 🌌[쿠버네티스 아키텍처] 2. 오브젝트 (Objects)
  • Operating System
    • Philosophers
      • [Philosophers] 예시예제로 보는 뮤텍스와 세마포어의 차이
      • [Philosophers] 식사하는 철학자 문제 소개
  • CPP
    • [CPP-08] STL containers, iterators, algorithms
    • [CPP-06] CPP 형변환 연산자
    • [CPP-04 ex02] 인터페이스(Interface) 클래스
    • [CPP-04 ex00] 다형성(Polymorphism) 및 가상함수
    • [CPP-02] Canonical 클래스 복사 생성자와 대입 연산자 오버로딩
    • [CPP-07] Templates
    • [CPP-01] this 포인터와 문자열 스트림(stringstream)
    • [CPP-01] 클래스의 정적할당과 동적할당 new, delete
    • [CPP-01] 파일 입출력 및 문자열 치환하기
    • [CPP-01] 참조자(reference)와 포인터는 다르다
    • [CPP-02] 정수부동소수값 - 고정소수값 변환
    • [CPP-04 ex01] 추상 클래스의 필요성 순수 가상함수
    • [CPP-00] Megaphone! CPP 표준입출력
    • [CPP-03] (ClapTrap이 뭐지) 다중 상속과 가상 상속
    • [CPP-05] 예외 처리 (exception handling)
    • [CPP-00] 객체지향의 관점으로 클래스 이해하기
    • [CPP-01] 랜덤값 얻기
  • IBM Cloud
    • [IBM Cloud] 1. 클라우드 컴퓨팅 개요
    • [IBM Cloud] 5. 클라우드 컴퓨팅의 구성 요소
    • [IBM Cloud] 3. 클라우드 서비스 모델 및 배포 모델
    • [IBM Cloud] 2. 클라우드를 활용하는 새 기술들
    • [IBM Cloud] 4. 떠오르는 클라우드 트렌드
    • [IBM Cloud] 6. 클라우드 스토리지 유형 및 CDN
  • Assembly
    • [libasm] 어셈블리 프로그램 구조와 x64 레지스터 이해하기
    • [libasm] strlen 함수를 어셈블리어로 짠다면
    • [libasm] 어셈블리 명령어(opcode) 정리
Powered by GitBook
On this page
  • 1. 도커 설치 및 주요 명령어 확인
  • 2. 도커로 데비안 버스터 이미지 생성
  • 3. 도커로 데비안 버스터 환경 실행 및 접속
  • 4. 데비안 버스터에 Nginx, cURL 설치
  • 5. Nginx 서버 구동 및 확인
  • 6. self-signed SSL 인증서 생성
  • 6.1. openssl 설치
  • 6.2. 개인키 및 인증서 생성
  • 6.3. 권한제한
  • 7. nginx에 SSL 설정 및 url redirection 추가
  • 8. php-fpm 설치 및 nginx 설정
  • 9. nginx autoindex 설정
  • 10. MariaDB(mysql) 설치
  • 11. Wordpress 설치
  • 11.1. 설치 및 압축해제
  • 11.2. 유저 그룹 권한설정
  • 11.3. wp-config.php 파일 수정
  • 11.4. wordpress를 위한 DB 테이블 생성
  • 11.5. wordpress 로컬로 접속해보기
  • 12. phpMyAdmin 설치
  • 12.1. 설치 및 압축해제
  • 12.2. 쿠키 권한을 위한 blowfish 암호 설정
  • 12.3. phpmyadmin을 위한 DB테이블 생성
  • 12.4. phpmyadmin 로컬로 접속해보기

Was this helpful?

  1. Docker
  2. ft_server

2. 도커 설치부터 워드프레스 구축까지

과제 시작부터 마무리까지 기록한 내용들.

Previousft_serverNext1. 선행지식-Docker? Debian Buster? Nginx? ...

Last updated 3 years ago

Was this helpful?

감사하고 유용하게 참고한 글들

1. 도커 설치 및 주요 명령어 확인

  • 에서 Stable 버전 설치

  • 설치가 완료되면 상단바에 고래 아이콘 등장한다. 도커가 실행중이라는 의미, 즉 터미널에서 도커 접근 가능.

    • 컨테이너 조회 (실행 중, 중지된 것까지 포함)

      docker ps -a
    • 컨테이너 중지

      docker stop <컨테이너 이름 혹은 아이디>
    • 컨테이너 시작 (중지 된 컨테이너 시작) 및 재시작 (실행 중인 컨테이너 재부팅)

      docker start <컨테이너 이름 혹은 아이디>
      docker restart <컨테이너 이름 혹은 아이디>
    • 컨테이너 접속 (실행중인 컨테이너에 접속)

      docker attach <컨테이너 이름 혹은 아이디>

2. 도커로 데비안 버스터 이미지 생성

docker pull debian:buster

확인하려면 docker images

3. 도커로 데비안 버스터 환경 실행 및 접속

docker run -it --name con_debian -p 80:80 -p 443:443 debian:buster
  • -i옵션은 interactive(입출력), -t 옵션은 tty(터미널) 활성화

    • 일반적으로 터미널 사용하는 것처럼 컨테이너 환경을 만들어주는 옵션

  • --name [컨테이너 이름] 옵션을 통해 컨테이너 이름을 지정할 수 있다. 안하면 랜덤으로 생성?

  • -p 호스트포트번호:컨테이너포트번호 옵션은 컨테이너의 포트를 개방한 뒤 호스트 포트와 연결한다.

  • buster를 명시하지 않아도 자동으로 최신 버전을 불러온다.

터미널 창이 아래처럼 바뀌면 데비안 bash에 접속한 것이다.

종료하고 싶다면 exit. 종료한다고 컨테이너가 중지되는 것은 아니다. 컨테이너는 실행 중인 상태에서 접속만 끊은 것이라고 생각하면 된다. 다시 접속하고 싶다면 attach 명령어 사용.

4. 데비안 버스터에 Nginx, cURL 설치

apt-get -y install nginx curl
  • 데비안에서는 패키지 매니저로 apt-get을 사용한다.

    • 뭔가 설치가 잘 안되면 apt-get update, apt-get upgrade 순서대로 진행하고 다시 설치.

  • cURL은 서버와 통신할 수 있는 커맨드 명령어 툴이다. url을 가지고 할 수 있는 것들은 다할 수 있다. 예를 들면, http 프로토콜을 이용해 웹 페이지의 소스를 가져온다거나 파일을 다운받을 수 있다. ftp 프로토콜을 이용해서는 파일을 받을 수 있을 뿐 아니라 올릴 수도 있다.

5. Nginx 서버 구동 및 확인

  • nginx 서버 실행

    service nginx start
  • nginx 상태 확인

    service nginx status

    [ ok ] nginx is running. 가 뜨면 서버가 잘 돌아가고 있다는 뜻이다.

    localhost:80 에 접속해보면 서버와의 성공적인 첫 소통을 확인할 수 있다.

    같은 내용을 터미널을 통해서도 확인할 수 있다. 아까 다운받은 curl 을 사용한 방식이다.

    curl localhost
  • nginx 중지

    service nginx stop

6. self-signed SSL 인증서 생성

  • 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이 발급해준다.

6.1. openssl 설치

apt-get -y install openssl

6.2. 개인키 및 인증서 생성

openssl req -newkey rsa:4096 -days 365 -nodes -x509 -subj "/C=KR/ST=Seoul/L=Seoul/O=42Seoul/OU=Lee/CN=localhost" -keyout localhost.dev.key -out localhost.dev.crt

localhost.dev.key 와 localhost.dev.crt가 생성된다. 옵션들을 하나하나 확인해보면,

  • req : 인증서 요청 및 인증서 생성 유틸.

  • -newkey : 개인키를 생성하기 위한 옵션.

  • -keyout <키 파일 이름> : 키 파일 이름을 지정해 키 파일 생성.

  • -out <인증서 이름> : 인증서 이름을 지정해 인증서 생성.

  • days 365 : 인증서의 유효기간을 작성하는 옵션.

6.3. 권한제한

mv localhost.dev.crt etc/ssl/certs/
mv localhost.dev.key etc/ssl/private/
chmod 600 etc/ssl/certs/localhost.dev.crt etc/ssl/private/localhost.dev.key

7. nginx에 SSL 설정 및 url redirection 추가

  • etc/nginx/sites-available/default 파일을 수정해줄건데, 좀 더 편한 접근을 위해 vim을 설치해준다.

    apt-get -y install vim
    vim etc/nginx/sites-available/default
  • default 파일에 https 연결을 위한 설정을 작성한다.

    원래는 서버 블록이 하나이며 80번 포트만 수신대기 상태인데, https 연결을 위해 443 포트를 수신대기하고 있는 서버 블록을 추가로 작성해야 한다.

    server {
        listen 80;
        listen [::]:80;
    
        return 301 https://$host$request_uri;
    }
    
    server {
        listen 443 ssl;
        listen [::]:442 ssl;
    
        # ssl 설정
        ssl on;
        ssl_certificate /etc/ssl/certs/localhost.dev.crt;
        ssl_certificate_key /etc/ssl/private/localhost.dev.key;
    
        # 서버의 root디렉토리 설정
        root /var/www/html;
    
        # 읽을 파일 목록
        index index.html index.htm index.nginx-debian.html;
    
        server_name ft_server;
        location / {
            try_files $uri $uri/ =404;
        }
    }
    • 80번 포트로 수신되면 443 포트로 리다이렉션 시켜준다.

    • 443 포트를 위한 서버 블록에는 ssl on 과 인증서의 경로를 작성해준다. 나머지는 기존에 있던 설정 그대로.

  • 바뀐 설정을 nginx에 적용한다

    service nginx reload
  • mac의 chrome에서는 ‘고급’ 설정을 통해서 안전하지 않은 사이트임을 인지하고 접속하는 버튼이 없다.

    임시 조치 (꼭 신뢰하는 사이트에서만 사용할 것)

    1. NET::ERR_CERT_REVOKED 화면의 빈 공간의 아무 곳에서 마우스 좌클릭.

    2. 키보드로 thisisunsafe 문자열 입력. (화면에 보이지 않으니 그냥 입력)

    3. 접속하고자 하는 화면이 보이면 성공. 보이지 않으면 화면 Refresh 하시고 다시 시도.

8. php-fpm 설치 및 nginx 설정

  • php란?

    대표적인 서버 사이드 스크립트 언어.

  • CGI(공통 게이트웨이 인터페이스) 란?

    nginx는 웹서버이기 때문에 정적 콘텐츠밖에 다루지 못한다. 동적 페이지를 구현하기 위해서는 웹 서버 대신 동적 콘텐츠를 읽은 뒤 html로 변환시켜 웹 서버에게 다시 전달해주는 외부 프로그램(php 모듈)이 필요하다. 이런 연결 과정의 방법 혹은 규약을 정의한 것이 CGI이다.

  • php-fpm (PHP FastCGI Process Manager) 란?

    일반 GCI 보다 빠른 처리가 가능한 FastGCI. 정리하자면,

    php-fpm 을 통해 nginx와 php를 연동시켜 우리의 웹 서버가 정적 콘텐츠 뿐만 아니라 동적 콘텐츠를 다룰 수 있도록 만드는 것이다.

apt-get install php-fpm

위 명령으로 php-fpm 7.3 버전을 설치해주고 nginx default 파일에 php 처리를 위한 설정을 추가한다.

vim /etc/nginx/sites-available/default
server {
    listen 80;
    listen [::]:80;

    return 301 https://$host$request_uri;
}

server {
    listen 443 ssl;
    listen [::]:442 ssl;

    # ssl setting
    ssl on;
    ssl_certificate /etc/ssl/certs/localhost.dev.crt;
    ssl_certificate_key /etc/ssl/private/localhost.dev.key;

    # Set root dir of server
    root /var/www/html;

    # Auto index
    index index.html index.htm index.nginx-debian.html index.php;

    server_name ft_server;
    location / {
        try_files $uri $uri/ =404;
    }

    # PHP 추가
    location ~ \.php$ {
        include snippets/fastcgi-php.conf;
        fastcgi_pass unix:/var/run/php/php7.3-fpm.sock;
    }
}
  • 원래 친절히 기본 default 파일에 php 설정이 주석처리 되어있다. 주석 해제만 하면되는걸 나는 모르고 다 지워버려서 새로 작성했다.

  • autoindex 리스트에 index.php도 추가해주자.

9. nginx autoindex 설정

  • autoindex 가 뭔지 알고싶다면 먼저 웹서버가 리소스 매핑과 접근을 어떻게 하는지 부터 알아야한다.

    웹 서버는 어떻게 수 많은 리소스 중 요청에 알맞은 콘텐츠를 제공할까?

    일반적으로 웹 서버 파일 시스템의 특별한 한 폴더를 웹 콘텐츠를 위해 사용한다. 이 폴더를 문서루트 혹은 docroot라고 부른다. 리소스 매핑의 가장 단순한 형태는 요청 URI를 dotroot 안에 있는 파일의 이름으로 사용하는 것이다.

    만약 파일이 아닌 디렉토리를 가리키는 url에 대한 요청을 받았을 때는, 요청한 url에 대응되는 디렉토리 안에서 index.html 혹은 index.htm으로 이름 붙은 파일을 찾아 그 파일의 콘텐츠를 반환한다. 이를 autoindex 라고 부른다.

그래서 우리는 autoindex 기능을 켜줘야한다. nginx default 파일에서 location / 부분에 autoindex on 을 추가한다.

# etc/nginx/sites-available/default
# Autoindex
    index index.html index.htm index.php #index.ngiinx-debian.html;

    server_name ft_server;
    location / {
      # autoindex on 추가
        autoindex on;
        try_files $uri $uri/ =404;
    }
  • 만약 autoindex가 꺼져 있거나 해당 디렉토리에 index 목록에 해당하는 파일이 없다면, 웹 서버는 자동으로 그 디렉토리의 파일들을 크기, 변경일, 해당 파일에 대한 링크와 함께 열거한 HTML 파일을 반환한다.

  • 루트 디렉터리인 /var/www/html 에 존재하는 index.ngiinx-debian.html 을 주석처리해보면, 읽을 파일이 없다고 생각하고 아래처럼 전체 파일 목록을 반환하는 것을 확인할 수 있다.

10. MariaDB(mysql) 설치

apt-get -y install mariadb-server php-mysql php-mbstring
  • ft_server 과제에서는 mysql을 설치하라고하지만, 데비안 버스터에서는 mariaDB만을 지원한다. mariaDB도 mysql을 기반으로 만들어졌기때문에 mysql 명령어와 완전히 호환된다.

  • php-mysql은 php에서 mysql에 접근할 수 있게 해주는 모듈이다.

  • php-mbstring은 2바이트 확장 문자를 읽을 수 있도록 해주는 모듈이다.

11. Wordpress 설치

11.1. 설치 및 압축해제

wget https://wordpress.org/latest.tar.gz
tar -xvf latest.tar.gz
mv wordpress/ var/www/html/

11.2. 유저 그룹 권한설정

chown -R www-data:www-data /var/www/html/wordpress
  • nginx.conf를 보면 user로 www-data가 작성되어있다. wordpress의 유저 그룹을 그에 맞게 설정해준 것이다.

11.3. wp-config.php 파일 수정

  • wp-config-sample.php 을 복사해 wp-config.php 를 만든다.

    cp -rp var/www/html/wordpress/wp-config-sample.php var/www/html/wordpress/wp-config.php
  • wp-config.php 파일의 DB_NAME, DB_USER, DB_PASSWORD 3가지 항목을 수정해준다.

    vim var/www/html/wordpress/wp-config.php

    undefined

11.4. wordpress를 위한 DB 테이블 생성

  • db 설정을 위해 mysql을 실행시킨다.

    service mysql start
  • mysql 접속 및 DB 생성

    mysql # 실행시키면 mysql로 들어가짐
    
    CREATE DATABASE wordpress;
    # `;` 꼭 입력하기;

    SHOW DATABASES; 명령어를 통해 DB목록을 확인할 수 있다.

  • 유저 생성

    # on mysql
    CREATE USER 'daelee'@'localhost' IDENTIFIED BY 'daelee';
    GRANT ALL PRIVILEGES ON wordpress.* TO 'daelee'@'localhost' WITH GRANT OPTION;

    @'localhost' 는 로컬 접속만 허용하겠다는 뜻이고 @'%'로 작성하면 외부 접속을 허용하겠다는 뜻이다.

  • 설정 업데이트

    # on mysql
    USE wordpress;
    SHOW TABLES;

    exit 로 mysql을 빠져나올 수 있다.

  • php7.3-fpm 재시작

    service php7.3-fpm restart

    php-mysql로 php 설정이 변경되었기 때문.

11.5. wordpress 로컬로 접속해보기

이제 wordpress DB 설정이 모두 끝났다.

  • 계속 을 누르면 몇 가지 설정을 마친 뒤 wordpress를 설치할 수 있다. 대시보드 및 나의 첫 워드프레스 홈페이지를 확인해보자.

12. phpMyAdmin 설치

12.1. 설치 및 압축해제

apt-get install -y wget
wget https://files.phpmyadmin.net/phpMyAdmin/5.0.2/phpMyAdmin-5.0.2-all-languages.tar.gz
tar -xvf phpMyAdmin-5.0.2-all-languages.tar.gz
mv phpMyAdmin-5.0.2-all-languages phpmyadmin
mv phpmyadmin /var/www/html/
  • phpMyAdmin 은 wget으로 설치한다.

  • 압축 해제 후 폴더 이름을 phpmyadmin 으로 바꿔서 우리 서버의 루트 디렉토리(/var/www/html)에 위치시킨다.

12.2. 쿠키 권한을 위한 blowfish 암호 설정

  • phpmyadmin 폴더에 들어가보면 정말 많은 파일들이 있다. 그 중 config.sample.inc.php을 복사해 config.inc.php 파일을 만든다.

    cp -rp var/www/html/phpmyadmin/config.sample.inc.php var/www/html/phpmyadmin/config.inc.php
  • vim var/www/html/phpmyadmin/config.inc.php
    $cfg['blowfish_secret'] = ''; /* YOU MUST FILL IN THIS FOR COOKIE AUTH! */
  • nginx 재시작

    service nginx reload

12.3. phpmyadmin을 위한 DB테이블 생성

  • db 설정을 위해 mysql을 실행시킨다.

    service mysql start
  • phpmyadmin/sql 폴더의 create_table.sql 파일을 mysql로 리다이렉션 시켜준다.

    mysql < var/www/html/phpmyadmin/sql/create_tables.sql

12.4. phpmyadmin 로컬로 접속해보기

이제 지금까지의 과정을 Dockerfile로 만들어 관리해보자.

컨테이너 포트와 호스트 포트에 대한 개념이 궁금하다면 참고.

자세한 curl 사용법과 옵션은 참고.

브라우저에서 로 접속했을 때 경고문구가 뜨면 성공.

혹시 중간에 에러가 나서 MariaDB를 완전 삭제하고 다시 설치하고 싶다면 참고. 쥬륵..

그 외 mysql 문법이 궁금하다면 확인!

로 접속했을때 아래와 같은 페이지가 나오면 성공이다.

에서 키를 생성/복사한 뒤 config.inc.php에 추가한다.

에 접속한 뒤 wordpress/wp-config.php 에서 설정한 ID와 PW를 입력하면 아래 사진처럼 데이터베이스를 GUI로 편리하게 관리할 수 있다.

yeosong's 가이드라인
seolim's 오십보백보 ft_server 시작하기
ft_server 서버 돌려보기
초보를 위한 도커 안내서
ft_server(self-signed SSL, Nginx)
https://www.docker.com/resources/what-container
간단히 보는 Dockerfile 개념(명령어 종류, 빌드, 이미지 레이어)
Dockerfile 개요 및 간단한 작성법 가이드
Docker Desktop for Mac
도커 명령어 모음
여기
여기
https://localhost
여기
예제로 익히는 SQL 문법
https://127.0.0.1/wordpress/
blowfish 암호 생성 사이트
https://127.0.0.1/phpmyadmin