Server

[Ubuntu-Nginx] EC2 인스턴스를 로컬 서버로 마이그레이션

박현국 2025. 4. 15. 20:23

 

목차 

1. Ubuntu Ios, Nginx, PHP, Mysql, Java 설치 (본인 사용할 거 세팅에 맞게 설치하면 됨)

2. EC2 인스턴스 복제 (키 파일이 있으면 복제 안해도됨)

3. USB 파일 마운트

4. Nginx 설정

5. db 설정

6. ssl 설정 (포트포워딩 설정)

 

 

1. Ubuntu Ios, Nginx, PHP, Mysql, Java 설치

 

 

Ubuntu 설치 

  1. Ubuntu 웹 페이지에서 iso 파일 다운로드
  2. 부팅 USB 로 다운 받은 우분투 ISO 파일을 선택하여 설치
  3. 이후 BIOS 에서 Ubuntu 접속

Nginx, PHP, Mysql, Java 는 apt install 이름 만 하면 됨

  • sudo apt install nginx
    sudo add-apt-repostitory ppa: ondrej/php
    sudo apt install php8.2 php8.2-fpm php-mysql
    sudo apt install mysql mysql-server

단, 버전에 다 맞게 깔아줘야하며, PHP 의 경우 버전에 맞는 확장팩들이 있는데, 설치가 안돼있다면 다 수동으로 해줘야함.

 

 

EC2 인스턴스 복제 (키파일 있으면 그냥 SSH 접속해서 해도됨)

 

키 파일이 없는 경우 EC2 인스턴스를 복제하는 방법은 2가지가 있다. 

 

1. AMI 이미지 생성 

   : EC2 인스턴스의 전체 백업(인스턴스 + 저장소) 생성하는 것으로 이미지를 복원할 때는 새로운 인스턴스와 EBS 볼륨을 생성하여 복원 해야한다. 해당 AMI 를 가지고 인스턴스를 새로 만들면 됨

 

2. EBS 볼륨 스냅샷 생성

   : 해당 인스턴스에 해당하는 EBS 볼륨을 스냅샷을 찍어 EBS 만 백업한다. -> 이때는 새로운 인스턴스가 아닌 기존 인스턴스에서 작업해야한다.

 

 

 

USB File 마운트

 

명령어

  • lsblk 또는 sudo fdisk - l: usb 꽃아져있는지 확인 및 어떤 파일인지
  • 이후 마운트할 디렉토리 생성 후 해당 usb 경로 파일을 mount 하면 된다. -> sudo mount /dev/sda1 /media/usb

 

 

 

Nginx 설정

설정법은 https://hyunkook.tistory.com/94

 

[Nginx] Reverse Proxy Port Forwarding

목차1. Nginx 란?2. Reverse Proxy 와 Forward Proxy3. Nginx 를 통한 Port Forwarding  Nginx 란?   Nginx 는 경량 웹서버로 정적파일을 서빙하는 web server, 또는 요청을 다른 서버로 전달하는 reverse proxy server 로 활

hyunkook.tistory.com

해당 블로그 참고하면 됨.

 

여기서 다룰 것은 conf.d 디렉토리와 sites-available + sites-enabled 디렉토리의 차이이다.

 

결론부터 말하면 둘 중에 한 곳에서 선택해서 사용하면 된다.

이유는 Nginx 에서 즉, nginx.conf 에는 전체 nginx 에 설정되는 명령어들이 있다. 그 중 conf.d + sites-available + sites-enabled 파일을 import 하는 설정도 있다.

 

conf.d : 커스텀 conf 파일을 만들어 사용한다. 여기선 따로 설정해줄 필요 없다. 만약 비활성화 해야할 경우 삭제하거나 변경 요소 필요

 

sites-available : 서비스 구성 내용 작성

sites-enabled : sites-available 에 대해 심볼릭 링크를 걸어서 실제 파일을 설정해주는 곳

 

여기서 80 포트로 갈 지, 443 포트로 갈 지 가면 어떻게 될지 뭘 실행하면 되는지 이런 것들을 설정해준다고 생각하면 된다.

 

 

DB 설정

 

최초 db 접속 안될 경우 

3306 포트 ip 연결할 수 있도록 허용해야함.

1. my.cnf 가 있는 파일을 찾아서 해당 파일에 bind-address 자신 ip 또는 0.0.0.0 (전체인데 해킹 확률 높아짐) 로 변경

2. sudo systemctl resatrt mysql * mysql restart 해주기) 

3. netstat -nltp | grep 3306 (바인딩 정상 잘 적용 됐는지 확인)

 

 

테이블 dump 파일 필요한 경우 + root 계정이 아닌 커스텀 계정으로 mysql 접속권한을 줘야할 경우

dump 파일 생성

  • mysqldump -u username -p dbName tableName> admin_info.sql

커스텀 계정 

  • mysql -u root -p 로 접속 (절대권한 있는 root 로 접속)
  • create user 'userName'@'ip' identified by 'password' (커스텀 계정 생성)
  • create database dbname character set urf8mb4 collate utf8mb4_general_ci (루트 계정으로 db생성)
  • grant all privileges on dbname.* to username@ip (커스텀 계정에 새로 만든 db 권한 부여) 
  • fulsh privileges (저장)

 

SSL 설정

SSL 설정은 꼭 해줘야 한다. 안하면 인증서가 없어서 https 로 접속 못함.

sudo apt-get install python3-certbot nginx
sudo apt-get install certbot

- ssl 인증서 있는지 확인
sudo certbot certificate

 

- ssl 인증서 본인 도메인에 적용

/etc/letsencrypt/live/aaaa.com

 

이 설정들이 다 됐다, 기존 aws 서버를 사용했다면, route53 에 도메인이 등록되어 있을 건데, 해당 도메인을 도메인 구매 사이트에서 네임서버 관련 설정들을 상황에 맞게 추가해주면 됩니당

'Server' 카테고리의 다른 글

[Nginx] Reverse Proxy Port Forwarding  (1) 2025.03.21
IP-PBX 와 IP-Centrex 방식의 차이  (1) 2025.02.18
OSI 7 Layer, TCP/IP 4Layer  (0) 2025.02.17