2018. 7. 5. 11:01ㆍProgramming/Django
Apache 의 mod_wsgi 서버 설치
정식 Document 설정 blog 설정 blog 설정 Blog nginx 와 Django
Apache 의 mod_wsgi 서버를 설치한다
$ sudo apt-get install apache2 # apache2 설치
$ sudo apt-get install libapache2-mod-wsgi-py3 # 파이썬 연결 모듈
(Django) $ pip install uwsgi # 파이썬 모듈
mod_wsgi 및 apache2 설치확인
$ uwsgi
로 설치를 확인한다- apache2 는
https://localhost:80
로 접속하여 apache2 설치를 확인한다
django 사용 port를 연다
$ sudo ufw allow 8000
로ufw
방화벽에서 해당포트를 개방한다$ sudo iptables -I INPUT -p tcp --dport 8000 -j ACCEPT
로iptables
의 해당포트를 개방한다$ python manage.py runserver 0.0.0.0:8000
로 해당포트가 열린걸 확인한다
apache2에서 설정을 추가한다
/etc/apache2/ports.conf 설정변경
`$ sudo nano /etc/apache2/ports.conf` 파일의 port 설정값을 추가한다 (80 포트는 기본 포트 이므로 **django 포트주소를 추가**한다)
localhost 에서는, 위의 설정값이 django 실행시 해당포트가 이미 작동중이라는 오류가 발생했다. 지정이 없어야 제대로 작동하는 결과를 보여줬다
#Listen 추가포트
Listen 80
Listen 8000
/etc/apache2/sites-available/000-default.conf 설정변경 (새로운 conf 파일을 만든다. ex) myproject.conf )
$ sudo vi /etc/apache2/sites-available/000-default.conf(or myproject.conf)
여기도 포트 80번은 기본값이므로, django 포트 주소를 추가한다.
( 새로운 conf 파일 생성 시, 추가 명령어가 필요하다.
sudo a2dissite 000-default.conf
sudo a2ensite myproject.conf
위 명령어를 수행하면 .conf 파일이 sites-enabled 에 추가 된다.)
WSGIDaemonProcess 프로젝트 python-home=/home/가상경로/env python-path=/home/프로젝트경로
WSGIProcessGroup localhost
WSGIScriptAlias / /home/wsgi.py가 있는 경로/wsgi.py
<VirtualHost *:8080>
ServerName localhost
ServerAlias localhost
Alias /static /my/static/path/static
<Directory /my/static/path/static>
Require all granted
</Directory>
<Directory /my/log/path/logs>
Require all granted
</Directory>
Alias /uploads /my/media/or/upload/path/uploads
<Directory /my/media/or/upload/path/uploads>
Require all granted
</Directory>
<Directory /home/user/django/myProject/myProject>
<Files wsgi.py>
Require all granted
</Files>
</Directory>
WSGIDaemonProcess localhost python-path=/home/user/django/myProject
WSGIProcessGroup localhost
WSGIScriptAlias / /home/user/django/myProject/myProject/wsgi.py
</VirtualHost>
django_server : 웹에서 접속시 연결되는 Domain 주소 값으로 localhost 에서 접속을 사용하려면 $ sudo nano /etc/hosts
에 127.0.0.1 django_server
값을 추가해야한다
WSGIDaemonProcess : 비 윈도우 환경에서 데몬모드(백그라운드 실행하면서 별도 인터페이스를 필요로 하지 않는 실행) 설정을 할때에는 외부도메인과 python 외부 경로를 추가적으로 설정해야 한다
Alias 로 외부 경로를 url에 추가하기
# 리눅스의 경우
Alias /static /my/static/path/static
# 윈도우의 경우; 폴더 구분 기호가 슬래시(/)임에 주의
Alias /aliastest/ "C:/my/static/path/static"
위 설정은 /my/static/path/static
디렉토리에 있는 콘텐츠에 웹 브라우저에서 http://서버의 IP 주소/static/
경로를 통해서 접근할 수 있다.
<Directory /home/사용자/프로젝트/wsgi.py 경로>
< Files wsgi.py >
Require all granted
< / Files >
</Directory>
서버를 재가동 한다
$ sudo service apache2 restart
로 새로운 설정값이 적용된 서버를 재가동한다
Trouble shooting
- django가 lib 경로에 설치 되어 있는지 확인한다. ( pip install django )
- lib 소유권을 변경한다. ( venv를 사용하면 myvenv/lib/site-packages/ 의 소유권을 www-data로 변경해주어야한다.)
/etc/apache2/apache2.conf 내의 User 와 Group 을 원하는 계정으로 변경하고 재기동한다.
출처 : https://yongbeomkim.github.io/django/mdc-wsgi-server/
'Programming > Django' 카테고리의 다른 글
[Django] Nginx설치 (0) | 2020.02.21 |
---|---|
[QuerySet]쿼리셋 수정을 통한 웹서비스 성능 개선 (0) | 2018.02.23 |