본문 바로가기

코딩 학습/Azure-Django

[Django] Django Ubuntu에 설치하고 연결하기

현재 진행하고 있는 프로젝트는 기존의 AWS-Apache-php-Mysql 시스템을 이용하지 않고

MS Azure 와 Django, MongoDB를 활용해보기로 하였다.

뭐가됐든 코딩의 가장 어려운 부분은 첫 세팅부분

연결하면서 여러보로 애먹고 있다보니 정리해본다.

 

원래는 애저의 azure-web-app 서비스를 이용해보려고 했는데, az login 이 안먹히는 사태가 발생해서

결국 별도 가상머신을 새로 준비해서 django 서버를 하는 과정을 정리해보았다.

 

1. 가상 머신을 만들고 ssh 접속을 한다. (간단해서 생략, 필요시 추가 예정)

 

2. apache 웹 서버 설치

 - 아직 이해가 잘 안되는 부분이긴 하지만 django도 apahce 혹은 nginx 등의 웹 서버를 통해서 프로덕션을 해야한다(요청 관리, 보안 설정(SSL/TLS) 처리). 본인은 익숙한 apache로 선택했다.

sudo apt-get update
sudo apt-get install apache2

 

3. django와 연결하기 위해서는 mod_wsgi 패키지를 이용해야한다.

그런데, apache 모듈에서도 제공하긴 하는데, 이게 사후 지원을 안해서 안되는 경우가 많다고 한다. 본인 또한 안되어서 python으로 mod_wsgi를 설치하고 apache와 연결하는 과정을 거쳤다. (그러므로 만약 안될 경우, 파이썬 설치가 끝난후 3-1과정을 참조하도록 한다.)

sudo apt-get install libapache2-mod-wsgi-py3

 

**(잠시 딴길로 새서 python3 패키지를 설치하자)

p-1. 파이썬 설치

sudo apt-get install python3 python3-pip python3-venv

p-2. 가상환경 설정

프로젝트 폴더를 만들고 가상환경을 설정하는건데, 웹 서버 위치(/var/www/html/)가 아닌곳을 하기를 권장한다.

#프로젝트 폴더 생성
mkdir myproject && cd myproject

#가상환경 생성
python3 -m venv myvenv

#가상환경 활성화
source myenv/bin/activate

 

p-3. Django 설치

pip install django

p-4. Django 프로젝트 생성

django-admin startproject mysite
cd mysite

 

p-5. 데이터베이스 설정(mongodb와의 연결은 후에 다시 서술)

python manage.py migrate

 

p-6. 개발 서버 실행 (테스트 용도, 테스트가 끝나면 끌것)

python manage.py runserver

p-6-1. runserver끄는것은 아래와 같이 한다.

#PID value 얻어내기
ps aux | grep runserver
#해당 PID 종료
kill -9 PID

 

p-7. 정적파일 모으기

python manage.py collectstatic

을 하면 myproject나 mysite에 static 디렉토리가 생겨있을것이다.

 

(다시 돌아와서) 3번이 잘 안되면 

3-1. pip를 통해 python 모듈을 설치하고 apache와 연결한다.

pip install mod_wsgi

 

module-config 파악을 위해서 

mod_wsgi-express module-config

를 실행해서 나온 값을 잘 기억해두고

sudo nano /etc/apache2/mods-available/wsgi.load

의 값에 수정하여 넣어주도록 한다.

끝나고 나면 mod_wsgi가 제대로 되는지

sudo a2enmod wsgi

를 통해 확인하도록 한다.

 

4. django 서버 보안 설정 변경

mysite 폴더안에 보면 settings.py라는 파일이 있을건데 거기서 보안 설정을 통해 내가 열어주고자 하는 ip(적어도 운용중인 서버 ip)를 추가해주어야 한다.

settings.py를 열어보면 아래와 같이 ALLOWED_HOSTS가 있을건데 거기에 서버 ip를 추가해준다.

ALLOWED_HOSTS = ['15.15.15.15'];

 

5. apache 설정값 작성

django와 연결 설정을 셋팅한다.

/etc/apache2/sites-available/000-default.conf 를 열어서

<VirtualHost *:80>
    ServerAdmin admin@example.com
    ServerName example.com
    ServerAlias www.example.com

    Alias /static /path/to/your/static
    <Directory /path/to/your/static>
        Require all granted
    </Directory>

    Alias /media /path/to/your/media
    <Directory /path/to/your/media>
        Require all granted
    </Directory>

    <Directory /path/to/your/project>
        <Files wsgi.py>
            Require all granted
        </Files>
    </Directory>

    WSGIDaemonProcess your_project python-path=/path/to/your/project python-home=/path/to/your/venv
    WSGIProcessGroup your_project
    WSGIScriptAlias / /path/to/your/project/wsgi.py

    ErrorLog ${APACHE_LOG_DIR}/error.log
    CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>

와 같이 설정하도록 한다.

 

마지막으로 아파치 서버 재부팅!

sudo service apache2 restart

하면 아래와 같은 화면을 볼수 있을거다!



고생했다!

'코딩 학습 > Azure-Django' 카테고리의 다른 글