진짜 개발자
본문 바로가기

FrameWork/Django

Django - CentOS7 apache mod_wsgi django 연동

728x90

참조 - http://ossian.tistory.com/category/%5BWeb%5D/WEB%20%26%20WAS



Selinux 를 먼저 끄자
1) vi /etc/sysconfig/selinux
2) disabled
3) setenforce 0

Apache 설치

1. 설치

yum install -y httpd


2. 방화벽

firewall-cmd --permanent --add-port=80/tcp

firewall-cmd --reload

firewall-cmd --list-all


3. 실행

systemctl start httpd

systemctl enable httpd


Python 설치

1. EPEL 

rpm -Uvh https://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm

(가끔 알 수 업는 오류가 나타나는데 다시한번 하면 설치가 된다)


2. python3 설치

yum install -y https://centos7.iuscommunity.org/ius-release.rpm(python 설치를 위한 패키지)

yum install -y python36u python36u-libs python36u-devel python36u-pip


3. pip 업그레이드

python3.6 -m pip install -U pip




MOD_WSGI 설치

mod_wsgi 설치

yum install -y python36yu-mod_wsgi



Django 설치

pip 3.6 install django



Django 프로젝트 생성





Apache 설정

1. vhost.conf 파일 생성후 아래 내용 추가

- vi /etc/httpd/conf.d/vhost.conf

<VirtualHost *:80>

 ServerName localhost


 WSGIScriptAlias / /opt/Web/Web/wsgi.py

 WSGIDaemonProcess Web python-path=/opt/Web/Web


 <Directory /opt/Web/Web>

  <Files wsgi.py>

   AllowOverride none

   Require all granted

  </Files>

 </Directory>

</VirtualHost>

<VirtulaHost *:80>  그림에서는 소문자이지만 'V' 대문자가 맞다



2. static file 설정 (image, css, js)

1) vi /etc/httpd/conf.d/vhost.conf 를 다시 편집하여 아래 빨간네모의 내용을 추가한다

- Alias /static "/opt/Web/authentication/static"

=>  html 파일 내에서 /static 이라는 link를 사용할때 /opt/Web/authentication/static으로 치환하겠다는 뜻


 1. Alias /static : 치환을 당할 문자열을 지정

 2. "/opt/Web/authentication/static" : 치환될 문자열을 지정

- 따라서 실제 static 파일들이 위치하고 있는 경로를 지정해주어야 한다

 




* 추가적으로 django에서 테스트하기 위해 사용했던 {% load staticfiles %} 는 필요가 없다

   html단에서 static 파일들의 위치만 알 수 있다면 알아서 불러와 html파일을 만들어 표시할 수 있기 때문이다




3. gedit으로 wsgi.py 파일 편집후 빨간 네모안의 내용들 추가


4. httpd.conf 파일의 Directory 권한 변경

- vi /etc/httpd/conf/httpd.conf


5. Apache 재시작

- systemctl restart httpd



Error

Internal Server Error

- 이경우 apache의 error log를 확인하는것이 좋다

vi /var/log/httpd/error_log

=> django 가 설치되지 않아 나타나는 오류이다


Forbidden

- selinux가 켜져있는지 확인한다

=> setenforce 0




가상환경에서 벗어나 Django 설치

1. deactivate 를 통해 가상환경에서 벗어난다


2. 장고를 설치한다

pip3.6 install django 



접속





virtualEnv

python3.6 -m pip install virtualenv

python3.6 -m virtualenv venv

cd venv

source bin/activate 

python3.6 -m pip install django


1) django-admin startproject testproject

장고 프로젝트 생성

2) python3.6 manage.py migrate

3) python3.6 manage.py startapp testapp

4) vi testapp/views.py 

 from django.shortcuts import render, HttpResponse


 def main(request):

     return HttpResponse(request, 'hi')


5) vi testproject/urls.py