-
[Django] Ubuntu에서 Django + Apache2 연결하기Web/Django 2020. 7. 7. 23:46
장고나 MySQL이 아직 설치되어 있지 않다면 아래 링크들을 참고하기를 바란다.
MacOS/Ubuntu 장고 개발환경 설정
Ubuntu(우분투)에 MySQL 설치하기Apache
프로젝트를 로컬에서만 보는 것이 아니라 어디에서나 IP주소를 사용해서 접속할 수 있게 하려면 웹서버를 사용해야 한다.
웹 서버 소프트웨어는 Apache(아파치)를 사용할 것이다. Nginx라는 웹 서버도 있다.
서버에서는 python3 manage.py runserver를 사용해도 접속할 수가 없다. 따라서 웹 서버를 사용한다.
아래는 아파치를 설치할 때 사용하는 명령어다.
sudo apt update
sudo apt install apache2 libapache2-mod-wsgi-py3아파치가 설치되면 인터넷 브라우저에 IP 주소를 입력해보자. 입력하면 위처럼 아파치의 default page가 뜬다.
이는 우리가 아직 아파치를 프로젝트에 연결하지 않았기 때문이다. IP주소를 입력해서 프로젝트가 뜨게 하려면 아파치의 설정을 바꿔주어야 한다. 이에 대해서 아래에 설명하겠다.
cd /etc/apache2/sites-available
vi 000-default.conf위 명령어를 입력하면 아파치의 기본 설정이 되어 있는 파일이 열린다. 이 파일은 아래와 같이 생겼다.
위 파일을 수정해주면 된다.
ErrorLog 와 CustomLog는 현재 아파치의 log 디렉토리 안에 생기게 설정되어있는데 저장하고 싶은 위치가 있으면 바꿔주어도 되고 그냥 냅둬도 괜찮다.
중요한 부분은 CustomLog 밑(전)에 더해야 하는 부분이다.
여기서 { } 이 괄호는 헷갈리지 않게 넣은 것이니 입력할 필요가 없다.<VirtualHost *:80>
ServerAdmin webmaster@localhost
DocumentRoot /var/www/html
ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined
<Directory {wsgi.py가 있는 디렉토리 주소}>
<Files wsgi.py>
Require all granted
</Files>
</Directory>
WSGIDaemonProcess tutor python-path={manage.py가 있는 디렉토리의 절대주소} python-home={이 프로젝트를 돌릴 때에 사용하는 virtual environment의 절대주소}
WSGIProcessGroup {프로젝트이름}
WSGIScriptAlias / {wsgi.py가 있는 디렉토리의 주소/wsgi.py}
</VirtualHost>이렇게만 써놓으면 이해가 잘 안갈수도 있으니 아래에 실제로 사용한 예제가 있다.
<VirtualHost *:80>
ServerAdmin webmaster@localhost
DocumentRoot /var/www/html
ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined
<Directory /home/dodo/project/django_project/photo>
<Files wsgi.py>
Require all granted
</Files>
</Directory>
WSGIDaemonProcess tutor python-path=/home/dodo/project/django_project python-home=/home/dodo/.virtualenvs/django_environment
WSGIProcessGroup photo
WSGIScriptAlias / /home/dodo/project/django_project/photo/wsgi.py
</VirtualHost>설정이 다 끝났으면 아래 명령어로 아파치를 재시작한다.
sudo service apache2 restart
이제 IP주소로 접속하면 아래처럼 장고 프로젝트의 페이지가 뜬다. 아래는 처음 장고 프로젝트를 만든 상태에서 연결했기 때문에 장고 default 페이지가 뜬다.
MySQL도 연결하고 싶으면 아래 포스트를 참고하자!
'Web > Django' 카테고리의 다른 글
[Django] webhook을 사용하여 잔디(JANDI)에 알림 보내기 (0) 2020.08.18 [Django] Python 3.5에서 Python 3.7로 업그레이드 하기(mod_wsgi업그레이드) (Ubuntu) (0) 2020.08.09 [Django] Google 계정으로 로그인하기 (로컬 서버 + 실제 서버) (0) 2020.08.05 [Django] Django와 MySQL 연동하기 (0) 2020.07.09 [Django] MacOS 장고 개발환경 설정 (2) 2020.06.24