CentOS + python + django + Apache + Oracle


CentOS 설치

pyton + django 설치

1. CentOS에 Python 3.7 설치

python 3.7.4 설치

# 필수 모듈 설치
$ sudo yum install gcc zlib-devel libffi-devel bzip2-devel openssl-devel ncurses-devel sqlite-devel readline-devel tk-devel gdbm-devel libuuid-devel xz-devel

# Python다운
$ wget https://www.python.org/ftp/python/3.7.4/Python-3.7.4.tgz
# 압축해제
$ tar zxvf Python-3.7.4.tgz
$ cd Python-3.7.4
$ ./configure --enable-shared

# 디폴트로 설치된 2.7버젼과 병행사용(make install:기존 2.7을 덮어씀)
$ make altinstall
#
$ su root # <<== 안해도 되는듯...
$ export LD_LIBRARY_PATH=/usr/local/lib

설치확인

# 버전확인
$ python3.7 -V 
# 설치경로 확인
$ which python3.7

참고1
참고2
참고3 << 일단 중지

2. django 설치

2.1 pip

  • pip란?
    • 파이썬으로 작성된 패키지 라이브러리를 관리해주는 시스템
    • pip와 virtualenv는 글로벌 설치되어야 하는 유일한 패키지
    • ubuntu의 apt-get
# 
$ yum install epel-release
# 
$ yum install python-pip
# 
$ pip3.7 install pip --upgrade

참고1

2.2 가상환경

  • Virtualenv
    • 사용자가 정한 임의의 디렉토리 밑에 독립적인 파이썬 개발 환경구축
    • 단독 프로젝트일 경우 생략가능
# 프로젝트를 만들 폴더생성
# user계정(centos)으로 만들자(/home/centos/)
$ mkdir django
$ cd django

# 가상환경관리폴더 env생성
$ python3 -m venv myvenv

# 가상환경사용
$ source myvenv/bin/activate
(myvenv) [root@localhost mytest]

2.3 Django 설치

# 특정버전 장고설치
(myvenv) $ pip3.7 install Django==2.1.2

# 최신버전 장고설치
# Djangoの最新版だとApacheと連携したときにSQLiteのバージョンのエラーが出て起動できないので、
# 一つ古いバージョンをインストールする。(SQLiteの最新版を入れてもダメだった。)
(myvenv) $ pip3.7 install django

# 프로젝트폴더 생성
(myvenv) ~/django$ django-admin startproject mysite .

2.4 Apache

# 설치
$ yum install -y httpd-devel
# 방화벽 설정
$ firewall-cmd --permanent --zone=public --add-service=http
$ firewall-cmd --permanent --zone=public --add-service=https
$ firewall-cmd --reload

# 2.5 mod_wsgi 설치 후 실행
# 아파치 기동
$ systemctl enable httpd.service
$ systemctl start httpd.service

2.5 mod_wsgi

  • PythonとApacheをつなぐもの
$ pip3.7 install mod_wsgi
# 환경파일 아파치 폴더에 복사
$ cp /usr/local/lib/python3.7/site-packages/mod_wsgi/server/mod_wsgi-py37.cpython-37m-x86_64-linux-gnu.so /etc/httpd/modules
  • django.conf 생성
$ vim /etc/httpd/conf.d/django.conf
django.conf
LoadModule wsgi_module modules/mod_wsgi-py37.cpython-37m-x86_64-linux-gnu.so

WSGIScriptAlias / /home/centos/django/mysite/wsgi.py
WSGIPythonPath /home/centos/django/
#virutalenvを使用している場合
#WSGIPythonHome /home/dekosuke/env/django-env

<Directory /home/centos/django/mysite>
<Files wsgi.py>
Require all granted
</Files>
</Directory>
  • settings.py 수정
$ cd mysite
$ vim settings.py

# settings.py 수정
ALLOWED_HOSTS = ["*"]

2.6 폴더 접근권한부여

フォルダにアクセスする権限の関係で開発する際は、SELinuxをdisabaleにしておいたほうがいい。
- SELinuxの設定

それでも発生するようなら、ファイルのアクセスを変更する
- Linux - Apache 설치후 페이지 접근시, 권한 에러
- chmod -R 755 公開するフォルダ

3. 참조

# Centos
$ /var/log/httpd/error_log
# Ubuntu
$ /var/log/apache2/error.log

# 마지막 2줄 확인
$ tail -2 /var/log/httpd/error_log

Oracle 설치

1. 설치

python 3.7.4 설치

$ pip3.7 install cx-Oracle --user