1. 아마존 EC2 인스턴스 생성

  2. 도메인 구매 → DNS관리툴에 EC2 인스턴스 A타입 퍼블릭 도메인(IPv4) 등록

  3. PUTTY 설치

    1. PuTTY Key Generator 사용하여 PEM 파일을 PPK 파일로 변환
      • PuTTYgen 실행: Windows 메뉴에서 **PuTTYgen**을 실행
      • Load 클릭: EC2 인스턴스를 생성할 때 다운로드한 PEM 파일을 로드.
      • Save private key 클릭: 경고 메시지가 나타나면 "Yes"를 클릭하고, PPK 파일로 저장
    2. **Host Name**에 ec2-user@your-ec2-public-dns
    3. **Connection -> SSH -> Auth**에서 **Private key file for authentication**에 .pem 파일을 변환한 .ppk 파일등
  4. WinSCP 설치

  5. 파일 탐색기 열기

  6. 파일 전송

  7. SSH를 통해 파일 확인

    WinSCP를 통해 파일을 전송한 후, PuTTY를 사용하여 EC2 인스턴스에 접속하여 파일이 제대로 전송되었는지 확인(로그인 아이디 : ec2-user)

    1. PuTTY 실행: Windows 메뉴에서 PuTTY를 실행합니다.
    2. EC2 인스턴스 접속: Host Name에 EC2 인스턴스의 퍼블릭 DNS를 입력하고, Connection -> SSH -> Auth에서 PPK 파일을 선택한 후 Open 버튼을 클릭합니다.
    3. 파일 확인 및 서버 설정하기:
    cd /home/ec2-user
    ls
    # 위 명령어를 통해 전송된 파일이 목록에 나타나는지 확인
    
    # 업로드한 파일 디렉토리로 이동
    cd /home/ec2-user/accident-detection-aiserver
    
    #파일 확인:
    ls
    
    #가상환경 활성화 및 필요 패키지 설치
    python3 -m venv myenv #한번만
    source myenv/bin/activate
    pip install -r requirements.txt
    sudo yum install mesa-libGLU -y
    
    ###메모리 부족 문제를 해결하기 위해 Swap 공간을 생성
    #Swap 파일 생성:
    sudo fallocate -l 4G /swapfile
    #Swap 파일에 올바른 권한 설정:
    sudo chmod 600 /swapfile
    #Swap 파일 형식 지정:
    sudo mkswap /swapfile
    #Swap 파일 활성화:
    sudo swapon /swapfile
    #Swap 활성화 확인:
    sudo swapon --show
    #Swap 파일을 부팅 시 자동으로 활성화:
    echo '/swapfile none swap sw 0 0' | sudo tee -a /etc/fstab
    ###1회용 -> EC2인스턴스를 비싼걸로 해도 됨
    
    # Nginx 설치
    sudo amazon-linux-extras install nginx1 -y
    # Nginx 설정 파일 수정
    sudo nano /etc/nginx/nginx.conf
    # Nginx 파일 내용
    server {
        listen       80
        listen       [::]:80;
        server_name  capstone-aiserver.shop  #실제 도메인 이름
        root         /usr/share/nginx/html;
    
        # Load configuration files for the default server block.
        include /etc/nginx/default.d/*.conf;
    
        location / {
            proxy_pass <http://127.0.0.1:5000>;
            proxy_set_header Host $host;
            proxy_set_header X-Real-IP $remote_addr;
            proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
            proxy_set_header X-Forwarded-Proto $scheme;
        }
    
        error_page 404 /404.html;
        location = /404.html {
        }
    
        error_page 500 502 503 504 /50x.html;
        location = /50x.html {
        }
    }
    # Crtl+O, Enter, Ctrl+C로 편집종
    
    #Nginx 재시작
    sudo systemctl restart nginx
    
    #앱 실행
    python app.py