본문 바로가기

공부기록/MLOps | Infra

AWS ec2 Ubuntu 18.04에서 apache2로 django 프로젝트 배포

반응형

1. 경로 확인하기

아래와 같은 경로를 가진 프로젝트가 있다고 생각하고 배포 과정을 정리하려고한다.

- Folder Name : /home/ubuntu/Example

 

- Project Name : ExampleProject

- Project Path : /home/ubuntu/Example/ExampleProject

 

- Application Name : ExampleApp

- Application Path :  /home/ubuntu/Example/ExampleProject/ExampleApp

 

- 가상환경 폴더 경로 : /home/ubuntu/Example/venv_ex

- wsgi.py 위치 : /home/ubuntu/Example/ExampleProject/wsgi.py

 

2. settings 파이썬 파일에 Static 파일 변수 추가

import os
STATIC_URL = '/static/'
STATIC_ROOT = os.path.join(BASE_DIR, 'static/')
STATICFILES = [STATIC_ROOT]

3. apache2 

sudo apt-get install appache2

 

4. Apache Config 파일 수정

cd /etc/apache2/sites-available
sudo cp 000-default.conf 000-default.conf_backup # 백업파일 만들기

sudo vi 000-default.conf # config 파일 수정
<VirtualHost *:80>
	# The ServerName directive sets the requests schme, hostname and port that
    # 주석 ~~~~~~
    # ----- 생략 -----
    
    ServerAdmin webmaster@localhost
    DocumentRoot /var/www/html
    
    # Available loglevels : trace8, ..., trace1, debug, info, notice, warn,
    # 주석 ~~~~~~
    # 여기서부터 입력
    Alias /static /home/ubuntu/Example/ExampleProject/static
    <Directory /home/ubuntu/Example/ExampleProject/static>
    	Require all granted
    </Directory>
    
    <Directory /home/ubuntu/Example/ExampleProject> # ExamplePjoect위치
    	<Files wsgi.py>
        Require all granted
        </Files>
    </Directory>
    WSGIPassAuthorization On
    WSGIDaemonProcess ExampleProject python-path=/home/ubuntu/Example/ExampleProject/ python-home=/home/ubuntu/Example/venv_ex
    # python-path 프로젝트 경로 # python -home 가상환경 경로
    WSGIScriptAlias / /home/ubuntu/Example/ExampleProject/wsgi.py # wsgi.py위치
    
</VirtualHost>

wq!를 눌러 수정한 후 설정을 마친 후에 a2ensite를 통해 활성화했을 때 Site 000-default already enabled이라고 뜨면 잘된 것이다.

sudo a2ensite 000-default.conf

5. wsgi mod 

wsgi mod는 Django를 포함한 모든 Python WSGI 애플리케이션을 호스팅할 수 있는 Apache 모듈이다.

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

https://docs.djangoproject.com/ko/3.2/howto/deployment/wsgi/modwsgi/

 

아파치 서버를 재시작하고 아마존에서 받은 IP주소로 접속했을때 정상 접속된다면 성공이다.

sudo apachectl -k restart

실패한다면 로그파일을 보면서 에러를 해결해야한다.

vi /var/log/apache2/error.log

 

도움을 받은 자료

https://youtu.be/qSjSn620vhI

https://moondol-ai.tistory.com/117

https://dev-dain.tistory.com/5?category=816329 

반응형