개요
Django를 설치하고 MariaDB와 연동 및 Gunicorn을 통해 bind 시켜 Web UI에 띄우는 것 까지 진행하도록 하겠습니다.
진행환경
OS : CentOS 7.6
Python : 3.6
Django :
MariaDB :
Django Install
1. Python Install
SCL 즉 소프트웨어 컬렉션 저장소에서 Python을 설치할 것입니다. SCL을 사용하면 최신 버전의 Python 3.x를 설치할 수 있습니다.
CentOS 추가 저장소를 설치하고 SCL을 활성화 하고, Python 3.6을 설치합니다.
$ sudo yum -y install centos-release-scl
$ sudo yum -y install rh-python36
2. 가상 환경 생성
* Python 3.6부터는 vev 모듈을 사용하는 것이 좋다.
2.1 Python 3 가상 환경을 저장할 디렉토리를 생성하고 이동합니다.
$ mkdir django-project
$ cd django-project
2.2 Python 3.6에 접근하기 위해 scl 도구를 사용해서 shell instance를 실행합니다.
$ scl enable rh-python36 bash
2.3 새 가상 환경 생성
$ python3 -m venv venv
venv 디렉토리를 생성하고, Python Binary, pip 패키지 관리자, Python 라이브러리 및 기타 지원 파일의 복사본이 포함됩니다.
2.4 가상 환경 사용 시작
$ source venv/bin/activate
3. Django Install
3.1 pip 를 사용해서 Django를 설치합니다.
$ pip install django
$ python -m django --version
4. Django Project 생성
4.1 django-admin utility를 사용해 프로젝트 생성
$ django-admin startproject djangoproject
4.2 위 명령어를 통해 현재 디렉토리에 'djangoproject' 디렉토리가 생성됩니다.
$ tree djangoproject/
tree 명령어를 통해 어떤 파일이 생성되었는지 확인합니다.
4.3 생성한 프로젝트로 이동합니다.
$ cd djangoproject
5. Database 연동 (MariaDB)
기본적으로 Django는 SQLite DB를 사용하지만, 저는 MariaDB를 구성하여 연동하겠습니다.
5.1 CentOS에 MariaDB Install
$ sudo yum -y install mariadb-server
$ sudo systemctl start mariadb.service
$ sudo systemctl status mariadb.service
MariaDB를 설치하고 실행시켜 정상적으로 동작하는지 확인합니다.
5.2 임의상 root 계정으로 진행하겠습니다.
$ mysql -u root -p # root 계정으로 로그인
mysql> show databases;
mysql> use mysql;
mysql> UPDATE user SET password = password('비밀번호') WHERE user = 'root'; # root 계정 비밀번호 변경
mysql> flush privileges;
mysql> CREATE DATABASE 'DB명' DEFAULT CHARACTER SET utf8; # DB 생성
root 계정 비밀번호 변경과 Database를 생성해 줍니다.
5.3 MariaDB 연결
5.3.1 pymsql 라이브러리를 설치합니다.
$ (venv) pip install pymysql
5.3.2 __init__.py 파일에 추가해줍니다.
import pymysql
pymysql.install_as_mySQLdb()
5.4 settings.py에 DATABASES 부분 설정 변경해 줍니다.
import os #추가
ALLOWED_HOSTS = ['*'] #수정
LANGUAGE_CODE = 'ko-kr' #수정
TIME_ZONE = 'Asia/Seoul' #수정
#수정
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.mysql',
'NAME': 'db-name', # DB 명
'USER': 'root', # DB 계정
'PASSWORD': 'password', # 비밀번호
'HOST': 'db-adress', #공백으로 냅두면 default localhost
'PORT': 'port-number' #공백으로 냅두면 default 3306
}
}
# 끝 부분에 다음 내용 추가
STATIC_URL='/static/'
STATIC_ROOT=os.path.join(BASE_DIR. 'static_collection')
5.4.1 docker-compose 환경변수 적용
향후 docker-compose를 통해 mariadb 설정 값들을 환경변수로 적용할 것입니다. 방법은 다음과 같습니다.
# settings.py
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.mysql',
'NAME': os.environ.get('DB_NAME'),
'USER': os.environ.get('DB_USER'),
'PASSWORD': os.environ.get('DB_PASSWORD'),
'HOST': os.environ.get('DB_HOST'),
'PORT': os.environ.get('PORT')
}
}
5.5 migration
manage.py 파일이 존재하는 경로에서 실행합니다.
(venv) ./manage.py makemigrations
(venv) ./manage.py migrate
5.6 Static Data를 모아줍니다.
manage.py 파일이 존재하는 경로에서 실행합니다.
(venv) ./manage.py collectstatic
6. Server 구동
Server가 잘 구동하는지 실행합니다.
(venv) ./manage.py runserver 0.0.0.0:8000
# 또는
(venv) python manage.py runserver 0.0.0.0:8000
7. Gunicorn
7.1 Gunicorn Install
(venv) pip install gunicorn
7.2 Gunicorn 구동
(venv) gunicorn --bind 0.0.0.0:8000 '폴더명'.wsgi:application
# 저는 djangoproject로 프로젝트를 실행하였기 때문에 djangoproject.wsgi:application
8. Django 접속 화면
http://[server IP]:8000/
'Web &App > Django' 카테고리의 다른 글
[Django] Django + Gunicorn + Nginx + MariaDB (0) | 2022.09.22 |
---|