django 서버 포트번호 바꾸기 및 외부 접속 허용

2015. 1. 29. 00:11·Python/Django
반응형

Django에서 기본 포트 번호 변경 및 외부 접속 허용 방법

소개

Django를 사용하여 웹 애플리케이션을 개발할 때, python manage.py runserver 명령어는 개발자가 로컬 환경에서 애플리케이션을 테스트할 수 있는 개발 서버를 제공합니다. 기본적으로 이 서버는 포트 번호 8000에서 실행되며, 로컬 호스트(127.0.0.1)에서만 접근이 가능합니다. 그러나 개발 과정에서 다음과 같은 상황이 발생할 수 있습니다:

  • 포트 8000이 이미 다른 애플리케이션에서 사용 중일 때
  • 동시에 여러 Django 프로젝트를 실행해야 할 때
  • 모바일 기기나 다른 컴퓨터에서 개발 중인 애플리케이션을 테스트해야 할 때

이러한 경우를 위해 포트 번호를 변경하고 외부 접속을 허용하는 방법을 알아보겠습니다.

포트 번호 변경하기

기본 방법

기본 포트 번호인 8000을 다른 번호로 변경하려면 runserver 명령어 뒤에 원하는 포트 번호를 지정하면 됩니다.

python manage.py runserver 8080
  • 설명: 위 명령어는 Django 개발 서버를 포트 번호 8080에서 실행합니다.
  • 접속 방법: 웹 브라우저에서 http://localhost:8080/ 또는 http://127.0.0.1:8080/을 입력하여 서버에 접속할 수 있습니다.

외부 접속 허용하기

기본 설정 방법

개발 서버를 외부 기기에서 접근 가능하도록 설정하려면, 호스트 주소를 0.0.0.0으로 지정해야 합니다.

python manage.py runserver 0.0.0.0:8000
  • 설명: 위 명령어는 모든 IP 주소에서 Django 개발 서버에 접근할 수 있도록 설정합니다.
  • 접속 방법: 로컬 네트워크 내의 다른 기기에서 http://[서버_IP_주소]:8000/을 통해 접속할 수 있습니다.

settings.py 설정 변경

외부 접속을 허용하려면 settings.py 파일의 ALLOWED_HOSTS 설정도 변경해야 합니다.

# settings.py

# 개발 환경에서만 사용할 경우
ALLOWED_HOSTS = ['*']

# 또는 특정 IP만 허용할 경우
ALLOWED_HOSTS = ['127.0.0.1', '192.168.0.100', '서버_IP_주소']
  • 설명: ALLOWED_HOSTS에 '*'를 추가하면 모든 호스트에서의 접근을 허용합니다.
  • 주의: 프로덕션 환경에서는 보안을 위해 특정 호스트만 허용하는 것이 좋습니다.

자신의 IP 주소 확인 방법

Windows에서:

ipconfig

Mac/Linux에서:

ifconfig

또는

ip addr

보안 고려사항

개발 서버의 제한사항

Django의 개발 서버는 개발 목적으로만 설계되었으며, 다음과 같은 제한사항이 있습니다:

  • 보안 설정이 최적화되어 있지 않음
  • 성능이 프로덕션 서버에 비해 떨어짐
  • 동시 접속자가 많을 경우 안정성이 떨어짐

문제 해결

포트 충돌 문제

이미 사용 중인 포트 번호를 확인하는 방법:

Windows에서:

netstat -ano | findstr :8000

Mac/Linux에서:

lsof -i :8000

자주 발생하는 오류

  1. "That port is already in use": 해당 포트가 이미 사용 중입니다. 다른 포트를 사용하거나 기존 프로세스를 종료하세요.
  2. "You don't have permission to access this port": 권한 문제입니다. 1024 이하의 포트는 관리자 권한이 필요할 수 있습니다.
  3. "Invalid HTTP_HOST header": ALLOWED_HOSTS 설정을 확인하세요.

참고 자료

  • Django 공식 문서 - runserver 명령어
  • Django 배포 가이드
  • Django 보안 모범 사례
  • Django 설정 가이드
반응형

'Python > Django' 카테고리의 다른 글

django 테스트 기반 개발 환경을 위한 설치  (0) 2015.04.19
파이썬 가상환경 virtualenvwrapper 설정  (0) 2015.01.29
django 설치  (0) 2015.01.29
'Python/Django' 카테고리의 다른 글
  • django 테스트 기반 개발 환경을 위한 설치
  • 파이썬 가상환경 virtualenvwrapper 설정
  • django 설치
Ethan Kang
Ethan Kang
Digital nomad + Software Engineer
    반응형
  • Ethan Kang
    Software Engineer Ethan
    Ethan Kang
  • 전체
    오늘
    어제
    • Programming (105) N
      • Java (22)
        • Spring Framework (6)
        • Spring (8)
        • Spring Security (0)
        • JPA (3)
        • MyBatis (1)
        • Servlet, JSP (2)
      • DevOps (4) N
        • Kubernetes (2)
        • Docker (1)
        • Terraform (0)
        • Jenkins (0)
        • Bazel (1) N
      • Front-End (18)
        • ReactJS (0)
        • Typescript (3)
        • JQuery (1)
        • Java Script (13)
        • RxJS (0)
        • CSS (1)
      • Messaging Queue (1)
        • Kafka (1)
      • Linux (Ubuntu based) (8)
        • Ubuntu (0)
        • CentOS (2)
        • Shell Scripting (2)
      • PHP (5)
        • Laravel (2)
        • PHP 문법 (3)
      • Go (1)
        • Basics (1)
      • Python (16)
        • Flask (1)
        • Django (4)
      • App Development (4)
        • Android (1)
        • Cordova (0)
        • React Native (0)
        • Hybrid Programming (2)
        • IOS (1)
      • Database (4)
        • SQL (0)
        • My SQL (4)
        • MongoDB (0)
      • Shader Programming (0)
      • Tools (5)
        • GIT (2)
      • C# (3)
        • ASP.NET MVC (2)
        • CSharp 파헤치기 (1)
      • 서평 (1)
      • ETC (4)
        • C++ (0)
        • Geo Server (0)
        • NodeJS2 (0)
        • Ruby (2)
        • Elastic Search (0)
        • Camera (0)
        • Open Source (2)
        • WebVR (0)
      • 소프트웨어 이론 (2)
        • TDD (1)
        • Architecture (1)
        • WEB DEV (0)
  • 블로그 메뉴

    • 홈
    • 태그
    • 미디어로그
    • 위치로그
    • 방명록
  • 링크

    • 컬러스크립터
  • 공지사항

    • 좋은 프로그래머가 되는 24가지 방법
  • 인기 글

  • 태그

    Python
    spring
    java
    스프링
    JPA
    autoloading
    자바
    Kotlin
    이미지 #jsp
    데이터베이스캐쉬
    db
    django #장고
    스프링데이타
    데이터베이스
    psr-4
    mysql데이터복구
    mysql
    N+1
    mybatis
    VersionControl
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.3
Ethan Kang
django 서버 포트번호 바꾸기 및 외부 접속 허용
상단으로

티스토리툴바