CentOS + python + django + Apache + Oracle

# CentOS 설치
- [Download CentOS](https://www.centos.org/download/)
- [VMware에 CentOS 7설치](https://corock.tistory.com/315)

# pyton + django 설치
## 1. CentOS에 Python 3.7 설치

#### python 3.7.4 설치

```python
# 필수 모듈 설치
$ 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
```
#### 설치확인

```python
# 버전확인
$ python3.7 -V 
# 설치경로 확인
$ which python3.7
```
[참고1](https://dodo-it.tistory.com/69)
[참고2](https://narito.ninja/blog/detail/20/)
[참고3](https://snowdeer.github.io/python/2018/02/20/install-python3-on-centos/) << 일단 중지

## 2. django 설치
- [예제로 배우는 Python 프로그래밍](http://pythonstudy.xyz/python/django)
- [장고걸스 튜토리얼](https://tutorial.djangogirls.org/ko/django_installation/)

### 2.1 pip
- [pip란?](https://medium.com/@dan_kim/%ED%8C%8C%EC%9D%B4%EC%8D%AC-%EC%B4%88%EC%8B%AC%EC%9E%90%EB%A5%BC-%EC%9C%84%ED%95%9C-pip-%EA%B7%B8%EB%A6%AC%EA%B3%A0-virtualenv-%EC%86%8C%EA%B0%9C-a53512fab3c2)
    - 파이썬으로 작성된 패키지 라이브러리를 관리해주는 시스템
    - pip와 virtualenv는 글로벌 설치되어야 하는 유일한 패키지
    - ubuntu의 apt-get
    
```python
# 
$ yum install epel-release
# 
$ yum install python-pip
# 
$ pip3.7 install pip --upgrade
```
[참고1](https://rriifftt.hatenablog.com/entry/2015/10/28/142043)


### 2.2 가상환경    
- [Virtualenv](https://medium.com/@dan_kim/%ED%8C%8C%EC%9D%B4%EC%8D%AC-%EC%B4%88%EC%8B%AC%EC%9E%90%EB%A5%BC-%EC%9C%84%ED%95%9C-pip-%EA%B7%B8%EB%A6%AC%EA%B3%A0-virtualenv-%EC%86%8C%EA%B0%9C-a53512fab3c2)
    - 사용자가 정한 임의의 디렉토리 밑에 독립적인 파이썬 개발 환경구축
    - 단독 프로젝트일 경우 생략가능

```python
# 프로젝트를 만들 폴더생성
# user계정(centos)으로 만들자(/home/centos/)
$ mkdir django
$ cd django

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

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

### 2.3 Django 설치
```python
# 특정버전 장고설치
(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
```python
# 설치
$ 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をつなぐもの

```python
$ 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 생성

```python
$ vim /etc/httpd/conf.d/django.conf
```

```python: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 수정

```python
$ cd mysite
$ vim settings.py

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

### 2.6 폴더 접근권한부여
フォルダにアクセスする権限の関係で開発する際は、SELinuxをdisabaleにしておいたほうがいい。
- [SELinuxの設定](https://qiita.com/hanaita0102/items/5d3675e4dc1530b255ba)

それでも発生するようなら、ファイルのアクセスを変更する
- [Linux - Apache 설치후 페이지 접근시, 권한 에러](http://develop.sunshiny.co.kr/960)
- chmod -R 755 公開するフォルダ

## 3. 참조
- [Apache 오류 로그확인](https://zetawiki.com/wiki/아파치_오류_로그_error_log)

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

# 마지막 2줄 확인
$ tail -2 /var/log/httpd/error_log
```
- [파이썬(Python) 3 업데이트 후 YUM 실행 시 SyntaxError: invalid syntax 에러](http://semantics.kr/yum-%EC%8B%A4%ED%96%89-%EC%8B%9C-syntaxerror/?ckattempt=1)
- [Django2.2で開発サーバー起動時にSQLite3のエラーが出た場合の対応](https://qiita.com/rururu_kenken/items/8202b30b50e3bfa75821)

# Oracle 설치
- [Oracle 12c R2(12.2.0.1.0)](https://www.oracle.com/database/technologies/oracle-database-software-downloads.html)
- [설치참조 1](https://confluence.curvc.com/pages/viewpage.action?pageId=11927710)
- [설치참조 2](https://gsk121.tistory.com/384)

## 1. 설치
#### python 3.7.4 설치

- orcle/database 밑에 설치

- [GUI 안뜰때](https://band.tistory.com/18)

```python
$ pip3.7 install cx-Oracle --user
```