본문으로 이동
주 메뉴
주 메뉴
사이드바로 이동
숨기기
둘러보기
대문
최근 바뀜
임의의 문서로
미디어위키 도움말
특수 문서 목록
학교의 모든 지식. SMwiki
검색
검색
보이기
로그인
개인 도구
로그인
로그아웃한 편집자를 위한 문서
더 알아보기
기여
토론
장고:서버 옮기기
편집하기
문서
토론
한국어
읽기
편집
원본 편집
역사 보기
도구
도구
사이드바로 이동
숨기기
동작
읽기
편집
원본 편집
역사 보기
일반
여기를 가리키는 문서
가리키는 글의 최근 바뀜
파일 올리기
문서 정보
보이기
사이드바로 이동
숨기기
경고:
로그인하지 않았습니다. 편집을 하면 IP 주소가 공개되게 됩니다.
로그인
하거나
계정을 생성하면
편집자가 사용자 이름으로 기록되고, 다른 장점도 있습니다.
스팸 방지 검사입니다. 이것을 입력하지
마세요
!
{{장고}} == 개요 == 종종 서버를 이사해야 할 때가 있다. 하드디스크의 손상을 고려해 새 서버로 옮긴다든가... 업그레이드는 업그레이드 문서를 참고하자. = Django 프로젝트 이전 절차 = # 기존 서비스 중단 여부 결정 (무중단 / 점검 시간 확보) # 옮기기 #* 크게 다음 것들만 옮기면 된다. ## 파이썬 가상환경 ## 프로젝트 디렉토리 ## 데이터베이스 == 파이썬 관련 옮기기 == === 기존 서버에서 === {| class="wikitable" !과정 !설명 !비고 |- |Python 버전 확인 |버전 안맞으면 연달아 라이브러리에서 깨지는 경우 있음. |python --version |- |라이브러리 백업 |현재 사용하는 라이브러리 정보 생성. |pip freeze > requirements.txt |- | | | |} === 새 서버에서 === {| class="wikitable" !과정 !설명 !비고 |- |파이썬 설치 |이전에 확인한 버전에 맞게 설치한다. | * sudo apt update * sudo apt install python3.11 python3.11-venv python3-pip <code>python3-dev</code> # 파이썬 버전에 맞게. |- |Python 가상환경 구성 |디렉토리 이사 후 진행하면 서버에서 운영하는 프로젝트가 1개라면 굳이 가상환경을 만들 필요는 없다. 그러나, 만들어두는 게 추후 문제해결 등에서 좋지. 이전 서버와 완전 똑같이 만들어줄 준비를 하자. |python -m venv 가상환경폴더명(가상환경이름) source venv/bin/activate # 가상환경 활성 |- |라이브러리 설치 |위에서 백업한 그대로 진행한다. |pip install -r requirements.txt |} == 디렉토리 옮기기 == {| class="wikitable" !과정 !설명 !비고 |- |프로젝트 디렉토리 | # 처음에 ssh로 로그인 해서 키를 확보한다. # 적당히 옮긴다. | # <code>ssh id8436@100.113.147.102</code> 등으로 로그인하여 키를 생성 # <code>rsync -avz --progress /project/ id8436@100.70.182.23:/home/id8436/django_project/</code> 값은 적당히 바꿔서. |- |자동화 쉘 |편의상 만들었던 자동화 쉘이 있으면 옮긴다. |보통 이것까지 포함하여 프로젝트 디렉토리를 만들어두면 편하지. |} == 데이터 베이스 옮기기 == === 기존 서버에서 === 데이터베이스 종류 확인 (SQLite / PostgreSQL / MySQL 등) {| class="wikitable" !DB 종류 !설명 !비고 |- |SQLite |db.sqlite3 파일을 그대로 복사 | |- |PostgreSQL | |pg_dump dbname > backup.sql |- |MySQL / MariaDB | |mysqldump -u user -p dbname > backup.sql |} * sql을 <code>rsync -avzP ~/backup.sql id8436@100.78.7.18:/home/id8436/</code> 등의 방법으로 옮긴다. === 새 서버에서 === 각 DB에 맞게 sql 파일을 복원하는 명령을 수행하면 된다. {| class="wikitable" !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; * <code>mysql -u user -p my_db < backup.sql</code> |시작하기 전에.. <code># MariaDB 사용 시</code> sudo apt install libmariadb-dev <code># 또는 MySQL 사용 시 (둘 중 하나만 설치!)</code> <code># sudo apt install libmysqlclient-dev</code> |} (PostgreSQL: psql, MySQL/MariaDB: mysql 등) ==== 각종 에러 ==== DB는 버전이 다르거나 기타 등등등 문제점이 많이 생긴다. == 기타 == {| class="wikitable" !DB 종류 !설명 !비고 |- |Redis 설치 | |sudo apt install redis-server <code>sudo systemctl status redis-server</code> <code># 확인</code> <code>sudo systemctl enable redis-server</code> # 부팅 후 자동실행. |- |샐러리 권한 부여 | |sudo mkdir -p /var/run/celery sudo chown id8436 /var/run/celery # 계정명은 알아서. |- |권한 부여 |파일이 있어도 nginx 등에서 다룰 수 없으면 png 등 파일이 웹에 나타나지 않는다. 때문에 nginx 등에서 다룰 수 있도록 권한을 수정해준다. |<code>chmod -R 755 /경로</code> |} 웹서버 설정 등을 옮기면 끝. 프로젝트 파일 안에 nginx 설정 등이 있는 경우 이처럼 심볼릭 링크를 만든다. <code>sudo ln -s /home/id8436/django_project/maintain/nginx_conf /etc/nginx/sites-enabled/</code> https를 쓰는 경우 ssl 인증서가 있어야 하는데, 이것도 프로젝트 디렉토리에 합치면 이사가 쉬워질 듯하다. 이후 웹 서버 설정, systemd 등록 등은 다른 장고 웹호스팅 관련 문서를 참고하자. == 점검 == 점검도 웹호스팅 문서를 따라가자. = 이전 후 체크리스트 = * DEBUG = False 확인 * ALLOWED_HOSTS 확인 * 보안 키 유출 여부 점검 * SSL 인증서 적용 * 백업 정책 설정 * 크론잡 / Celery / Redis 정상 동작 확인 == 참고 사항 == * 대규모 이전 시 Docker 사용을 권장 * 작업 전 반드시 데이터베이스 백업 수행 * 테스트 서버에서 1회 이상 이전 연습 권장(DB는 손상 시 복구가 매우 어렵다)
요약:
학교의 모든 지식. SMwiki에서의 모든 기여는 크리에이티브 커먼즈 저작자표시-동일조건변경허락 라이선스로 배포된다는 점을 유의해 주세요(자세한 내용에 대해서는
학교의 모든 지식. SMwiki:저작권
문서를 읽어주세요). 만약 여기에 동의하지 않는다면 문서를 저장하지 말아 주세요.
또한, 직접 작성했거나 퍼블릭 도메인과 같은 자유 문서에서 가져왔다는 것을 보증해야 합니다.
저작권이 있는 내용을 허가 없이 저장하지 마세요!
취소
편집 도움말
(새 창에서 열림)
이 문서에 포함된 문서:
틀:장고
(
원본 보기
) (보호됨)
검색
검색
장고:서버 옮기기
편집하기
새 주제