본문으로 이동

장고:서버 옮기기: 두 판 사이의 차이

학교의 모든 지식. SMwiki
잔글편집 요약 없음
잔글편집 요약 없음
158번째 줄: 158번째 줄:
프로젝트 파일 안에 nginx 설정 등이 있는 경우 이처럼 심볼릭 링크를 만든다.  
프로젝트 파일 안에 nginx 설정 등이 있는 경우 이처럼 심볼릭 링크를 만든다.  


mv ~/django_project/maintain/nginx_conf ~/django_project/maintain/my_django_project.conf
<code>sudo ln -s /home/id8436/django_project/maintain/nginx_conf /etc/nginx/sites-enabled/</code>
 
https를 쓰는 경우 ssl 인증서가 있어야 하는데, 이것도 프로젝트 디렉토리에 합치면 이사가 쉬워질 듯하다.


이후 웹 서버 설정, systemd 등록 등은 다른 장고 웹호스팅 관련 문서를 참고하자.
이후 웹 서버 설정, systemd 등록 등은 다른 장고 웹호스팅 관련 문서를 참고하자.

2025년 12월 24일 (수) 16:59 판

장고! 웹 프레임워크! 틀:장고

  1. 장고:개요
  2. 장고:웹페이지설계
    1. 장고:앱
    2. 장고:url
    3. 장고:model
      1. 장고:DB
      2. 장고:모델 필드
      3. 장고:모델의 변경
    4. 장고:view
      1. 장고:클래스형 뷰, 제네릭 뷰
      2. 장고:view 각종 기능
    5. 장고:template
    6. 장고:static. 정적파일 사용하기
      1. 장고:CSS 사용하기
      2. 장고:JS 사용하기
      3. 장고:글꼴 사용
      4. 장고:부트스트랩
    7. 장고:media. 미디어 파일 사용하기
  3. 장고:관리자페이지
  4. 장고:settings.py
  5. 장고:기능구현
    1. 장고:회원관리
    2. 장고:유저
    3. 장고:커스텀 유저
    4. 장고:소셜로그인
    5. 장고:입력받기
    6. 장고:저장된 내용 활용하기
    7. 장고:변수 내보내기
    8. 장고:글쓰기
    9. 장고:페이징(페이지나누기)
    10. 장고:답변쓰기(댓글쓰기)
    11. 장고:추천,즐겨찾기
    12. 장고:새글(최신글) 나타내기
    13. 장고:썸머노트 설치
    14. 장고:네비게이션 바 만들기
    15. 장고:검색기능
    16. 장고:카테고리 만들기
    17. 장고:사진 올리기
    18. 장고:파일 업로드
    19. 장고:이메일app 만들기
    20. 장고:매직 그리드
  6. 장고:웹서비스
    1. 장고:Git
    2. 장고:리눅스에 올리기
    3. 장고:우분투에 올리기(nginx 사용)
    4. 장고:도커로 올리기
    5. 장고:서버 옮기기
  7. 장고:팁

개요

종종 서버를 이사해야 할 때가 있다. 하드디스크의 손상을 고려해 새 서버로 옮긴다든가...

업그레이드는 업그레이드 문서를 참고하자.

Django 프로젝트 이전 절차

  1. 기존 서비스 중단 여부 결정 (무중단 / 점검 시간 확보)
  2. 옮기기
    • 크게 다음 것들만 옮기면 된다.
    1. 파이썬 가상환경
    2. 프로젝트 디렉토리
    3. 데이터베이스

파이썬 관련 옮기기

기존 서버에서

과정 설명 비고
Python 버전 확인 버전 안맞으면 연달아 라이브러리에서 깨지는 경우 있음. python --version
라이브러리 백업 현재 사용하는 라이브러리 정보 생성. pip freeze > requirements.txt

새 서버에서

과정 설명 비고
파이썬 설치 이전에 확인한 버전에 맞게 설치한다.
  • sudo apt update
  • sudo apt install python3.11 python3.11-venv python3-pip python3-dev # 파이썬 버전에 맞게.
Python 가상환경 구성 디렉토리 이사 후 진행하면

서버에서 운영하는 프로젝트가 1개라면 굳이 가상환경을 만들 필요는 없다. 그러나, 만들어두는 게 추후 문제해결 등에서 좋지. 이전 서버와 완전 똑같이 만들어줄 준비를 하자.

python -m venv 가상환경폴더명(가상환경이름)

source venv/bin/activate # 가상환경 활성

라이브러리 설치 위에서 백업한 그대로 진행한다. pip install -r requirements.txt

디렉토리 옮기기

과정 설명 비고
프로젝트 디렉토리
  1. 처음에 ssh로 로그인 해서 키를 확보한다.
  2. 적당히 옮긴다.
  1. ssh [email protected]   등으로 로그인하여 키를 생성
  2. rsync -avz --progress /project/ [email protected]:/home/id8436/django_project/ 값은 적당히 바꿔서.
자동화 쉘 편의상 만들었던 자동화 쉘이 있으면 옮긴다. 보통 이것까지 포함하여 프로젝트 디렉토리를 만들어두면 편하지.

데이터 베이스 옮기기

기존 서버에서

데이터베이스 종류 확인 (SQLite / PostgreSQL / MySQL 등)

DB 종류 설명 비고
SQLite db.sqlite3 파일을 그대로 복사
PostgreSQL pg_dump dbname > backup.sql
MySQL / MariaDB mysqldump -u user -p dbname > backup.sql
  • sql을 rsync -avzP ~/backup.sql [email protected]:/home/id8436/ 등의 방법으로 옮긴다.

새 서버에서

각 DB에 맞게 sql 파일을 복원하는 명령을 수행하면 된다.

DB 종류 설명 비고
MySQL / MariaDB (어차피 외부접속 안되니, 드러내놓는다.)
  • sudo mysql -u root -p
  • CREATE DATABASE my_db;
  • ALTER DATABASE my_db CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci; -- 기본 언어 세트 변경.
  • CREATE USER 'user'@'localhost' IDENTIFIED BY '1234';
  • GRANT ALL PRIVILEGES ON my_db.* TO 'user'@'localhost' IDENTIFIED BY '1234';
  • FLUSH PRIVILEGES; -- 반영
  • EXIT;
  • mysql -u user -p my_db < backup.sql
시작하기 전에..

# MariaDB 사용 시

sudo apt install libmariadb-dev

# 또는 MySQL 사용 시 (둘 중 하나만 설치!)

# sudo apt install libmysqlclient-dev

(PostgreSQL: psql, MySQL/MariaDB: mysql 등)

각종 에러

DB는 버전이 다르거나 기타 등등등 문제점이 많이 생긴다.

기타

DB 종류 설명 비고
Redis 설치 sudo apt install redis-server

sudo systemctl status redis-server # 확인 sudo systemctl enable redis-server # 부팅 후 자동실행.

샐러리 권한 부여 sudo mkdir -p /var/run/celery

sudo chown id8436 /var/run/celery # 계정명은 알아서.

웹서버 설정 등을 옮기면 끝.

프로젝트 파일 안에 nginx 설정 등이 있는 경우 이처럼 심볼릭 링크를 만든다.

sudo ln -s /home/id8436/django_project/maintain/nginx_conf /etc/nginx/sites-enabled/

https를 쓰는 경우 ssl 인증서가 있어야 하는데, 이것도 프로젝트 디렉토리에 합치면 이사가 쉬워질 듯하다.

이후 웹 서버 설정, systemd 등록 등은 다른 장고 웹호스팅 관련 문서를 참고하자.

점검

점검도 웹호스팅 문서를 따라가자.

이전 후 체크리스트

  • DEBUG = False 확인
  • ALLOWED_HOSTS 확인
  • 보안 키 유출 여부 점검
  • SSL 인증서 적용
  • 백업 정책 설정
  • 크론잡 / Celery / Redis 정상 동작 확인

참고 사항

  • 대규모 이전 시 Docker 사용을 권장
  • 작업 전 반드시 데이터베이스 백업 수행
  • 테스트 서버에서 1회 이상 이전 연습 권장(DB는 손상 시 복구가 매우 어렵다)