[Linux] 리눅스 django / SCL / MariaDB
최소 설치부터 시작
# 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
접속 확인