Programming/Python

Django 프로젝트 백업하기

remake 2026. 7. 4. 16:02

Django로 작업한 프로젝트 백업받기

 

먼저 패키지 백업 받고 zip으로 압축합니다.

pip freeze > requirements.txt

zip -r fav_pure_code_backup.zip fav/ \
    -x "fav/media/*" \
    -x "fav/static/admin/*" \
    -x "fav/staticfiles/*" \
    -x "fav/fenv/*" \
    -x "fav/.git/*" \
    -x "fav/db.sqlite3"

 

복원하기

 

unzip fav_pure_code_backup.zip

cd fav/

# 1. fenv라는 이름으로 새 가상환경 생성
python3 -m venv fenv

# 2. 가상환경 활성화
source fenv/bin/activate

# 3. 백업해 두었던 패키지 목록 재설치
pip install --upgrade pip
pip install -r requirements.txt

백업에서 staticfiles와 static/admin을 제외했기 때문에, 
Django 명령어로 배포용 스태틱 파일들을 다시 한 자리에 모아주어야 합니다.
python manage.py collectstatic


SQLite를 썼던 경우: 압축에서 제외했던 db.sqlite3 파일을 원래 위치(fav/ 폴더 루트)로 복사해 넣어주거나, 

새로 시작하는 경우 python manage.py migrate를 실행해 빈 DB를 생성합니다.

 

타 패키지 백업

 

1. Celery 서비스 파일 등록하기

새로운 서버 환경(또는 초기화된 서버)에 Celery 설정을 다시 심어줍니다.

Bash
 
# systemd 서비스 파일 편집기를 엽니다.
sudo nano /etc/systemd/system/celery.service

편집기가 열리면 올려주신 설정을 그대로 붙여넣고 저장합니다 (Ctrl + O 후 엔터, Ctrl + X로 빠져나오기).

Ini, TOML
 
[Unit]
Description=Celery Worker for Fencing Hub
After=network.target

[Service]
Type=simple
User=ubuntu
WorkingDirectory=/home/ubuntu/fav
# 가상환경 내부의 celery 명령어를 직접 호출합니다.
ExecStart=/home/ubuntu/fav/fenv/bin/celery -A config worker --loglevel=info -E
Restart=always

[Install]
WantedBy=multi-user.target

(💡 맨 아래에 [Install] 섹션을 추가해 주어야 서버가 부팅될 때 Celery가 자동으로 같이 켜집니다.)

2. 서비스 적용 및 재가동

파일을 저장했다면 리눅스 시스템에 이 서비스 파일을 인식시키고 활성화해야 합니다.

Bash
 
# 1. 새로운 서비스 파일이 추가되었음을 시스템에 알립니다 (새로고침)
sudo systemctl daemon-reload

# 2. 서버가 재부팅되어도 Celery 워커가 자동 실행되도록 설정합니다.
sudo systemctl enable celery.service

# 3. 지금 바로 Celery 워커를 가동합니다.
sudo systemctl start celery.service

3. 정상 작동 확인 (필수)

워커가 에러 없이 잘 돌고 있는지 아래 명령어로 상태를 확인합니다.

Bash
 
sudo systemctl status celery.service

출력 결과에 녹색 불로 active (running)가 떠 있다면 완벽하게 복구된 것입니다. 만약 에러가 난다면 Django 가상환경(fenv) 내에 celery 패키지가 설치되지 않았거나, WorkingDirectory 경로에 프로젝트가 정확히 위치하지 않은 것이 원인일 수 있으니 경로를 다시 확인해 보시면 됩니다.

 

전체 패키지 실행

준비가 다 됬다면 아래처럼 설정하고 실행합니다.

#nginx 설정
sudo nginx -t

sudo nano /etc/nginx/sites-enabled/default

sudo service nginx restart

source fenv/bin/activate

#테스트용
python manage.py runserver 0.0.0.0:8180

#실제 실행
gunicorn --bind 127.0.0.1:8180 config.wsgi:application --daemon

sudo pkill -9 gunicorn