[Linux]

[Linux] 리눅스 django / SCL / MariaDB

UtakerS 2022. 7. 12. 13:26
반응형

최소 설치부터 시작

 

# yum -y update

# yum -y groupinstall 'Development Tools'

# yum -y install yum-utils zip unzip wget mc git net-tools tree

# yum -y install epel-release

# yum -y makecache

# yum -y install httpd mod_wsgi

# yum -y install mariadb-devel

 

/var/www/myhome 가상환경 만들고 접속한 상태에서 Django 설치 및 운영환경 구성을 위한 각종 모듈을 설치

가상환경을 구성하여 작업 할 경우 동일 시스템에서 다양한 프로젝트 환경구성이 가능하다.

 

1. 패키지 설치 및 Python scl 구성 / 방화벽 설정

2. Python 가상환경 생성 및 모듈 설치

3. Django 프로젝트 생성 및 WEB 접속 테스트

4. Apache Django 연동

5. Database(MariaDB) 구성

6. Database(MariaDB) Django 연동

 


SCL

한 시스템에서 두가지 버전의 python 을 사용해야할때 scl을 사용

 

# yum -y install centos-release-scl

# yum -y install rh-python36 python36-devel httpd-devel rh-python36-mod_wsgi

# scl enable rh-python36 bash

시스템 기본 python 버전을 3.6으로 사용

 

하지만 python2.* 버전으로 실행되는 명령어같은경우 기본 버전을 바꾸어주면 오류가 발생할 수 있음

따라서 

# vi /usr/bin/yum

# vi /usr/libexec/urlgrabber-ext-down

위와 같은 파일들은 

#!/usr/bin/python > #!/usr/bin/python2.7 명시적으로 파이썬 버전을 지정해 주어야 한다. 

 

# cd /var/www

# python -m pip install --upgrade pip

# python -m pip install virtualenv

pip 모듈을 업그레이드 후 virtualenv 모듈을 설치

 

# virtualenv myhome

가상환경 이름 지정 및 생성

# source /var/www/myhome/bin/activate

해당 가상환경 접근하려면 activate 스크립트파일 실행

Python 가상환경 생성 및 활성화 작업

가상환경을 구성하여 작업 할 경우 동일 시스템에서 다양한 프로젝트 환경구성이 가능

 

가상환경에 접속한 후 Django 설치

(myhome) [root@Linux-01 www]# pip install --upgrade pip setuptools

(myhome) [root@Linux-01 www]# pip install django==3.1

(myhome) [root@Linux-01 www]# pip install mysqlclient

(myhome) [root@Linux-01 www]# pip install pylint

(myhome) [root@Linux-01 www]# pip install twisted

가상환경에 접속한 상태에서 Django 설치 및 운영환경 구성을 위한 각종 모듈을 설치

mysqlclient ( MySQL, MariaDB와 연동 시 사용 )

pylint, twisted ( Python Debug Tool )

 

Django 프로젝트 생성

(myhome) # cd /var/www/html/

(myhome) # django-admin startproject config .

현재 경로에 장고 config라는 이름의 프로젝트 생성

     /var/www/html

     ├──── config

     │   ├── __init__.py

     │   ├── asgi.py

     │   ├── settings.py

     │   ├── urls.py

     │   └── wsgi.py

     │

     └── manage.py

 

(myhome) # vi config/settings.py

28    ALLOWED_HOSTS = ['*']

106  LANGUAGE_CODE = 'ko-kr'

108  TIME_ZONE = 'Asia/Seoul'

114  USE_TZ = False

 

(myhome) # python manage.py migrate

(myhome) # deactivate

 

Apache Django 연동

# vi /etc/httpd/conf.d/Django.conf

Apache VirtualHost 설정을 이용하여, "/" 접근 시 Django 프로젝트로 연결되도록 WSGI를 정의

WSGI ( Web Server Gateway Interface ) : Apache Python Django를 연결하는 인터페이스의 역할

 

# cp /opt/rh/httpd24/root/usr/lib64/httpd/modules/mod_rh-python36-wsgi.so /lib64/httpd/modules/

# cp /opt/rh/httpd24/root/etc/httpd/conf.modules.d/10-rh-python36-wsgi.conf /etc/httpd/conf.modules.d/

# systemctl start httpd

# systemctl enable httpd

 

WSGI Moduel 및 설정 파일을 실제 Apache 작업 디렉터리 하위로 복사

Apache Web 서버 시작 및 자동시작 등록

Client PC에서 Apache Web서버로 접속 시 Django Main Page 표시 확인

 

Database(MariaDB) 구성

# vi /etc/yum.repos.d/MariaDB.repo

# yum -y install MariaDB

# mariadb --version

mariadb  Ver 15.1 Distrib 10.4.25-MariaDB, for Linux (x86_64) using readline 5.1

# systemctl start mariadb

# systemctl enable mariadb

 

# mysql_secure_installation

Switch to unix_socket authentication [Y/n] Yes

Change the root password? [Y/n] Yes
New password: admin
Re-enter new password: admin

Remove anonymous users? [Y/n] Yes

Disallow root login remotely? [Y/n] Yes

Remove test database and access to it? [Y/n] Yes

Reload privilege tables now? [Y/n] Yes

 

# vi /etc/my.cnf.d/server.cnf

 

vi /etc/my.cnf.d/mysql-clients.cnf

 

MariaDB 서버 및 연결되는 클라이언트의 Character Set UTF-8 형식으로 정의한다.

 

 

# systemctl restart mariadb

# mysql -u root -p mysql

mysql DB에 root계정으로 password 인증 접속

character_set 설정적용 확인

 

Djnago에서 사용할 데이터베이스 및 DB 사용자 생성 후 권한할당

Database(MariaDB) Django 연동

# source /var/www/myhome/bin/activate

(myhome) # cd /var/www/html

(myhome) # vi config/settings.py

Django와 연동 할 DB Engine 정보와 접속정보를 정의

 

(myhome) # python manage.py migrate

#  python manage.py createsuperuser

프로젝트에서 사용 할 DB 정보를 migrate 후 관리자 계정을 생성

(myhome) # deactivate

 

 # mysql -u django -p django_db

MariaDB에 접속 후 Migrate 된 데이터를 확인

 

# systemctl restart httpd

 

192.168.1.100

 

192.168.1.100/admin

 

접속 확인

반응형