스터디를 하면서 백엔드를 찍먹하기로 했다.

이후에 참고용으로 순서만 적어두고, 삽질 기록을 적어본다.

 

1. EC2 인스턴스 생성 (우분투 AMI)

2. 탄력적 IP 연결, 보안그룹 설정

    -> 인바운드 규칙에서 SSH 접근 가능 IP를 내 IP로 제한하니까 EC2 Instance Connect로 연결이 안 되었음. PuTTY로 연결하니 정상적으로 연결 됨

3. 도메인 연결

    -> 가비아에서 산 도메인을 route53에 연결할 때... 호스팅 영역을 만들고 NS레코드에 있는 값들을 복사해서 가비아 홈페이지의 도메인 관리에 네임 서버로 옮겨야 한다. (라우트53에서 만들어진 NS 레코드의 값들이 곧 가비아 해당 도메인의 새로운 네임 서버인 것) 이렇게 하니까 10분만에 됨 (...)

4. PuTTY와 연결

5. 타임존 변경, 호스트네임 변경

6. 도커 설치

7. 도커에 아파치2, MySQL, vsftpd 이미지 생성

  - 도커 파일 작성해서 아파치2 이미지를 생성하던 와중... 명령어를 실행하고 싶어서 CMD 구문을 추가했는데 계속 이미지 생성할 때 알 수 없는 명령어라고 나옴.. 알고보니까 'CMD apachectl -D -FOREGROUND' 그대로 입력해야 했음. (대괄호 ㄴㄴ)

  - 도커 이미지 삭제가 안 될 때, <none>으로 뜰 때는 해당 이미지로 만든 컨테이너가 존재하는지 확인한다. 해당 컨테이너가 실행중이라면 컨테이너를 중지하고(docker stop [컨테이너명]) 컨테이너를 삭제한 뒤(docker rm [컨테이너명]) 이미지를 삭제하면(docker rmi [이미지명 또는 이미지 ID]) 된다. 

  - 도커 파일을 각 이미지별로 하나씩 만들어야 했다.

8. 7에서 받은 이미지를 이용해서 컨테이너로 만들기

  - volumes로 로컬 폴더를 컨테이너의 폴더로 마운트할 때... 파일 경로를 잘못 입력해서 마운트가 안 됐음. (보내는 곳에서 절대 경로로 써 주고, 받는 곳도 /var/www/html/ 로 설정함.. 파일이 마운트가 안 된다면 내 로컬 폴더에 있는 경로인지 꼭 확인할 것!

  - 도커 컴포즈 파일 작성해서 아파치 2 컨테이너를 생성하려고 docker-compose up을 했는데 attaching to... 단계에서 너무 오랜 시간이 걸리는 것임... 근데 그냥 'docker-compose up -d' 를 해 주면 되는 거였다.

  - ports contains an invalid type, it should be a number, or an object 라는 에러를 뱉을 때는

      > 포트 각 항목을 따옴표로 묶는다 (0.0.0.0:20:20이 아닌 '0.0.0.0:20:20')

      > ip 빼고 포트 번호만 입력한다. ('0.0.0.0:20:20'이 아닌 '20:20'으로 입력한다.)

  - vsftpd는 컴포즈 파일로 만들다가 무슨 문제가 나서 그냥 명령어로 컨테이너를 만들었음..

docker run -d -v /var/ftp:/home/vsftpd \
-p 20:20 -p 21:21 -p 50000-50010:50000-50010 \
-e PASV_ADDRESS={아이피주소} -e PASV_MIN_PORT=50000 -e PASV_MAX_PORT=50010 \
-e FILE_OPEN_MODE=0644 -e LOCAL_UMASK=022 \
--name vsftpd2 --restart=always {도커 이미지 이름}

9. 방화벽 설정하기 (ufw allow ...)

10. 각 서비스 별 기본 세팅 하기

  - mysql : 문자셋을 UTF-8로 설정

    > vim이 설치가 안 되어 있는데 bash 안에서 설치하려고 하면 멈춰서 (...) 도커 파일에서 이미지 생성 시 만드도록 함. (RUN microdnf install -y vim)

  - vsftpd :

    > 익명으로도 접속이 안 될 때 : 도커 이미지 만들 때 EXPOSE로 포트 열었는지 확인

    > 익명으로는 접속이 되는데 유저로는 안 될 때 :

      - 해당 유저가 있는지 확인

      - /etc/pam.d/vsftpd 에서 auth required pam_shells.so를 주석(#)처리

      - /etc/passwd 에서 해당 사용자 맨 끝에 /bin/bash를 /sbin/nologin으로 수정

      - /etc/vsftpd/vsftpd.conf 에서 pam_service_name=vsftpd로 되어있는지 확인

11. 각 서비스 실제로 사용 할 프로그램과 연결

  - mysql -> heidiSQL => docker-compose 파일에 포트를 지정 안 해 줘서 연결이 안 되고 자꾸 에러 코드 10061만 내뱉음.. 포트 지정해주니까 정상 연결 됨

 

 

 

 

 

기타 삽질 내용

1. vi 로 새 파일 만들었는데 저장을 못한대 <- sudo vi 써야 함 (파일 편집 단계에서 해결할 수 있는 걸로 암.. 검색 ㄱㄱ)

2. 권한이 없대 <- sudo 붙이면 됨

+ Recent posts