[django] 배포

이정훈·2023년 3월 2일
0

파이썬

목록 보기
6/7
  • django는 웹을 배포하는 것이 아닌 프레임워크만 제공을 해주기에 웹 서버를 배포하기 위해 리눅스를 통해 해보고자 한다.

setenforce 0
systemctl stop firewalld

  • 시작전 방화벽은 꼭 해제한다음 사용해야한다.

yum install -y httpd-devel python39 python39-devel mysql-devel

  • 배포하기위해 설치한 프로그램들

  • 파이썬 버전은 맞춰주는게 좋다.
    pip3 install virtualenv

  • 파이썬에 있던 가상환경의 경우 윈도우 기반으로 설치가 되어있기 때문에 우린 리눅스에 맞는 가상환경의 프로그램들을 설치할건데 어떤것들이 설치되어있는지 확인하기 위해서 request.txt 파일로 엮어놨다.
    pip freeze > requirements.txt

  • 파이참 개발환경에서 설치되어 있던 정보들을 한번에 설치하기 편하도록 목록을 묶어준것이라고 생각하자

  • 이제 프로젝트를 원하는 방법으로 옮길 수 있는데 나는 파일 질라를 사용하였다. 파일 주고 받기

  • zip 파일이기때문에 unzip으로 해당 파일 을 풀어주었다.
  • 프로젝트 파일에 들어있는 venv는 윈도우 파이썬의 가상환경이기 때문에 우린 리눅스 venv를 사용해야한다.

virtualenv venv

  • 입력해주면 가상환경이 설치가 되고

source [프로젝트폴더]/venv/bin/activate

  • 가상환경을 활성화 시켜주면된다.
  • deactivate 는 가상환경 비활성화 이다.

pip install -r requirements.txt

  • 아까 저장해놓은 라이브러리들을 전부 설치해준다.
  • 아파치와 장고를 연동해주기 위한 프로그램도 설치해준다.
  • 안에 내용들을 아래와 같이 작성해준다. 폴더위치는 절대경로로 잘 작성해줘야한다.
WSGIPythonHome "/django/venv" 
# 위에 두 줄은  mod_wsgi-express module-config 입력 후 출력 결과 붙여넣기 한 것

WSGIScriptAlias / "/[Project 폴더]/[Project 안의 설정 폴더]/wsgi.py"

WSGIPythonPath "/[Project 폴더]"


<Directory "/[Project 폴더]/[Project 안의 설정 폴더]">
	<Files wsgi.py>
		Require all granted
	</Files>
</Directory>



Alias /static/ /[Project 폴더]/static/

<Directory /[Project 폴더]/static/>
	Require all granted
</Directory>



Alias /media/ /[Project 폴더]/media/

<Directory /[Project 폴더]/media/>
	Require all granted
</Directory>

  • 설치도구에서 누구든 접속하게 허용해줬어야 하는데 못해서
    vi /[프로젝트 폴더]/config/settings.py 를 위처럼 수정해줘야한다.

systemctl restart httpd

  • 마무리로 재실행해 준다.

  • 크롬에서 실행하면 메인 화면이 뜨는 것을 확인할 수 있다.

  • 여기서 추가적으로 우리는 database를 연동시켜줘야 한다.
    window에서 만들었던 곳 말고 새롭게 연동 시켜줘야 한다.

DATABASES = {
	    'default': {
	        'ENGINE': 'django.db.backends.mysql',
	        'NAME': 'DB이름',
	        'USER': 'DB접속ID',
	        'PASSWORD': 'DB접속PW',
	        'HOST': 'DB서버 IP주소',
	        'PORT': 'DB서버 포트번호',
	        'OPTIONS': {
	            'init_command': 'SET sql_mode="STRICT_TRANS_TABLES"'
	        }
	    }
	}
  • 수정해줘야 한다.

  • 데이터베이스에 마이그레이션 및 마이그레이트를 해줘야 데이터베이스쪽에 표가 생성된다!
profile
싱숭생숭늉

0개의 댓글