Chemicloud Python 3.12 환경부터 장고 준비까지, 진짜 삽질 기록 2편

Chemicloud Python 3.12

“왜 자꾸 3.6이야…” Chemicloud Python 3.12 전쟁의 시작

secondlife.lol 도메인까지 연결했으니,
이제 “장고만 올리면 끝!”이라고 생각했죠.

하지만 SSH를 딱 열고 python3 --version을 쳐보니…
3.6.x 🤯

내 마음 속 계획은 “Chemicloud Python 3.12 환경 + 최신 장고 + AI 확장”인데,
서버는 묵직하게 예전 버전 Python을 들고 버티고 있는 겁니다.
처음엔 python3 -m venv virtualenv/studymate_venv로 직접 venv를 만들다가
get-pip.py 버전 에러에 치이고, 경로 헷갈리고,
“케미클라우드 파이썬 3.12는 없는 건가?”라는 멘붕까지 왔죠.

결론부터 말하면,
정답은 “SSH에서 억지로 만들지 말고, cPanel의 Setup Python App를 활용하자”였습니다.
이 2편에서는 그 과정을 케미클라우드 파이썬 3.12 기준으로 정리해봅니다.

Use cases: 왜 굳이 케미클라우드 파이썬 3.12여야 했나?

1. 최신 장고 + AI 라이브러리를 쓰려면

요즘 나오는

  • Django 최신 버전
  • OpenAI·Anthropic·Groq 같은 LLM 클라이언트
  • FastAPI, LangChain, Pydantic 계열 라이브러리

다들 최소 요구 버전이 Python 3.10 이상인 경우가 많아요.
사내벤처에서 AI 기반 웹서비스를 만들려면,
케미클라우드 파이썬 3.12 환경이 사실상 기본 스펙이 되어버린 거죠.

그래서

  • 로컬 개발: Python 3.12
  • 서버: 케미클라우드 파이썬 3.12
  • 장고: dev / prod 설정 분리

이렇게 맞춰두면, 나중에 AI 기능을 붙이든 뭘 하든
버전 충돌 없이 확장하기가 훨씬 수월합니다.

2. 사내벤처 데모를 “빠르게” 돌리고 싶을 때

사내벤처는 속도 싸움이니까요.

  • 서버 OS 직접 관리 X
  • docker-compose 복잡한 세팅 X
  • 그냥 Chemicloud Python 3.12+ Setup Python App
    “URL만 있으면 어디서든 접속되는 데모”를 빨리 만드는 게 핵심.

LLM 기반 기능을 추가해도,
이미 케미클라우드 파이썬 3.12 가상환경 안에 필요한 패키지들을 설치해 두면
바로 장고 뷰에서 불러 쓰면 됩니다.

3. 여러 프로젝트를 한 서버에서 나눠 돌리고 싶을 때

기존 프로젝트도 같은 서버에 있었기 때문에,

이렇게 여러 사이트를 하나의 ChemiCloud 계정에서 돌려야 했죠.
이때 각 도메인별로 Setup Python App + 별도 venv 구조를 쓰면,

  • 케미클라우드 파이썬 3.12 환경을 프로젝트별로
    독립(venv) + 독립(Document Root) 시킬 수 있어서
  • 나중에 패키지 버전이 달라도 서로 영향을 거의 주지 않습니다.

Organizing: 케미클라우드 파이썬 3.12 + 장고 세팅 단계별 가이드

studymate_project image

이제 실제로 했던 순서를
“다시 해도 그대로 따라할 수 있게” 단계별로 정리해볼게요.

1단계. Application root 만들기 – studymate_project

  1. cPanel 로그인 → File Manager
  2. 홈 디렉토리 아래에 studymate_project 폴더 생성
  3. 로컬에서 개발하던 장고 프로젝트를 이 폴더로 업로드

이제 케미클라우드 파이썬 3.12 환경이 붙을 “집”이 생겼습니다.

※ 기존에 public_html이나 다른 프로젝트 폴더가 있어도 상관 없음.
studymate.secondlife.lol 도메인은 /home2/secondlife/studymate.secondlife.lol 를 Document Root로 쓰고,
거기서 passenger_wsgi.pystudymate_project를 바라보게 할 수도 있고,
Application root 자체를 studymate_project로 지정하는 방식도 가능합니다.
여기서는 Setup Python App에서 Application root를 studymate_project로 설정하는 케이스로 설명합니다.

2단계. Setup Python App에서 Chemicloud Python 3.12 アプリ作成

Chemicloud Python 3.12 setup image
  1. cPanel에서 Setup Python App クリック
  2. Create Application ボタンクリック
  3. 다음처럼 입력:
    • Python version: 3.12.11 (케미클라우드 파이썬 3.12)
    • Application root: studymate_project
    • Application URL: secondlife.lol /
    • Application startup file: passenger_wsgi.py
    • Application Entry point: application
  4. 저장하면, 상단에 이런 안내 문구가 나옵니다
    • source /home2/secondlife/virtualenv/studymate_project/3.12/bin/activate && cd /home2/secondlife/studymate_project
    • 이게 바로 Chemicloud Python 3.12 가상환경 진입용 명령어そうです。

이 단계가 끝나면:

  • /home2/secondlife/virtualenv/studymate_project/3.12/
    경로에 Chemicloud Python 3.12 기반 venv가 자동으로 생성됩니다.

3단계. SSH에서 venv 진입 + 패키지 설치

로컬 터미널이나 ChemiCloud 웹 터미널에서

cd /home2/secondlife
source virtualenv/studymate_project/3.12/bin/activate
cd studymate_project

python --version

ここで

Python 3.12.11

이 나오면,
“지금 이 쉘은 Chemicloud Python 3.12 가상환경 위에 있다”는 뜻입니다.

이제 장고와 각종 패키지를 설치해 줍니다.

pip install --upgrade pip
pip install -r requirements.txt
# requirements.txt가 없다면 최소한
# pip install django
# 정도는 설치

さあ python manage.py check 를 실행했을 때
케미클라우드 파이썬 3.12 환경 기준으로 에러가 없는지 확인할 수 있어요.

DJANGO_SETTINGS_MODULE=config.settings.prod python manage.py check

4단계. passenger_wsgi.py를 장고용으로 정리

케미클라우드 Setup Python App는
기본 템플릿 passenger_wsgi.py를 만들어 주는데,
이걸 그대로 쓰면 load_source 같은 코드 때문에
자기 자신을 재귀 import 하는 문제가 생길 수 있습니다.

최종적으로 정리된 버전은 이렇게 심플했어요:

# /home2/secondlife/studymate_project/passenger_wsgi.py
import os
import sys
from pathlib import Path

# 프로젝트 루트 (manage.py가 있는 폴더)
BASE_DIR = Path(__file__).resolve().parent

# 프로젝트 루트를 PYTHONPATH에 추가
if str(BASE_DIR) not in sys.path:
    sys.path.insert(0, str(BASE_DIR))

# 운영용 settings 모듈 지정
os.environ.setdefault("DJANGO_SETTINGS_MODULE", "config.settings.prod")

# Django WSGI application 생성
from django.core.wsgi import get_wsgi_application
application = get_wsgi_application()

이렇게 해두면

  • 케미클라우드 파이썬 3.12 venv에서
  • config/settings/prod.py를 기준으로
  • 장고 앱이 깔끔하게 올라옵니다.

5단계. .env + base.py로 환경변수 관리

env + base.py image

장고 설정은

  • config/settings/base.py
  • config/settings/dev.py
  • config/settings/prod.py

이렇게 나눠서 관리했어요.
핵심은 BASE_DIR에 .env를 두고, base.py에서 딱 한 번 load_dotenv()를 호출하는 것.

base.py 상단은 이렇게 맞췄습니다:

import os
from pathlib import Path
from dotenv import load_dotenv

BASE_DIR = Path(__file__).resolve().parent.parent.parent
env_path = BASE_DIR / ".env"
load_dotenv(env_path)

.env 예시는:

SECRET_KEY=랜덤_영문_숫자_기호_키
DEBUG=False
ALLOWED_HOSTS=secondlife.lol,www.secondlife.lol

DATABASE_URL=sqlite:////home2/secondlife/studymate_project/db.sqlite3

SECURE_SSL_REDIRECT=True
SECURE_HSTS_SECONDS=31536000

여기서 하나 크게 배운 점:

.env 값에는 한글 쓰면 안 된다!!
(케미클라우드 파이썬 3.12 환경의 os.environ이 ASCII 로케일이라
한글이 들어가면 UnicodeEncodeError로 500 에러🔥)

그래서 설명은 전부 # 주석으로 빼고,
실제 값에는 영문·숫자·기호만 사용하는 방식으로 정리했습니다.

6단계. migrate, collectstatic, 그리고 Restart

마지막은 루틴이에요.

python manage.py migrate
python manage.py collectstatic
python manage.py createsuperuser  # 처음 한 번

그리고 cPanel → Setup Python App → secondlife.lol 앱 → Restart 버튼 클릭.

これで、ブラウザで https://studymate.secondlife.lol에 접속하면,
케미클라우드 파이썬 3.12 기반의 장고 서비스가 드디어 살아납니다 🎉

정리: 케미클라우드 파이썬 3.12 세팅, 한 줄 요약

  • SSH로 직접 venv 만들려고 애쓰기보다,
    Setup Python App에서 케미클라우드 파이썬 3.12 앱을 먼저 만들 것
  • 생성된 venv 경로
    /home2/계정명/virtualenv/앱이름/3.12/
    를 그대로 사용
  • passenger_wsgi.py는 딱 세 줄만 기억:
    1. sys.path에 BASE_DIR 추가
    2. DJANGO_SETTINGS_MODULE=config.settings.prod
    3. get_wsgi_application() 呼び出し
  • .env는 BASE_DIR에 두고,
    값에는 한글 금지, 설명은 주석에만

이 구조만 잡아두면,
앞으로 다른 프로젝트를 올릴 때도
“케미클라우드 파이썬 3.12 세팅 → 장고 붙이기”는
거의 템플릿처럼 재사용할 수 있습니다.

다음 3편에서는

dev / prod 설정을 분리하는 방법,
.env 설계 팁,
그리고 사내벤처 환경에서 “실수해도 복구 쉬운 구조”를 어떻게 만드는지

를 이야기해 볼게요.

類似の投稿