수행원이 튜토리얼, Django, Gunicorn 및 nginx를 설정할 수 있었습니다.virtualenv 내부AWS EC2 인스턴스(Ubuntu 16.04 실행)에서 Upstart 파일을 생성하여 전체를 "데몬화"합니다.
virtualenv를 활성화한 후 다음을 확인했습니다.
- 장고 작동- 다음을 실행하여 포트 8000을 통해 Django 프로젝트에 액세스할 수 있었습니다.
./manage.py runserver 0.0.0.0:8000
방문했을 때 mydomain.com:8000
기본 Django 페이지가 환영을 받았습니다.
- Gunicorn은 작동하며 Django 앱을 제공할 수 있습니다.- 내 프로젝트 폴더에서 다음을 실행하여 내 Django 앱에 액세스할 수 있었습니다(
projectname
실제 프로젝트 이름으로 대체).
gunicorn --bind 0.0.0.0:8000 projectname.wsgi:application
이번에 방문했을 때 mydomain.com:8000
다시 웰컴 페이지가 반겨주었고, /admin
URL 끝에 추가하면 로그인 화면을 볼 수 있었습니다.마이너스CSS(Gunicorn은 정적 CSS 파일을 인식하지 못하기 때문에 튜토리얼에 따르면 지금은 괜찮습니다).
여기에서 다음 systemd 파일을 생성했습니다( masterfolder
모든 작업이 수행되는 폴더를 표시하는 데 사용되는 경우 myuser
내 시스템 사용자( ubuntu
, Ubuntu 인스턴스이므로)).
[Unit]
Description=gunicorn daemon
After=network.target
[Service]
User=myuser
Group=www-data
WorkingDirectory=/home/myuser/masterfolder
ExecStart=/home/myuser/masterfolder/myvirtualenv/bin/gunicorn --workers 3 --bind unix:/home/myuser/masterfolder/projectname.sock$
[Install]
WantedBy=multi-user.target`
두 가지 문제가 발생했습니다.
- 소켓이 생성되지 않습니다.- nginx 로그 파일을 확인할 때외부도 그렇고 내부도 그렇고virtualenv(왜 같은지 잘 모르겠습니다. btw) 동일한 오류가 발생했습니다.
2017/01/17 15:12:43 [crit] 12403#12403: *3 connect() to unix:/home/myuser/masterfolder/projectname.sock failed (2: No such file or directory) while connecting to upstream
이제 다음을 실행할 때 생성되는 masterfolder
폴더 계층 구조와 일치합니다 .django-admin
startproject
masterfolder/ ├── manage.py └── projectname ├── __init__.py ├── settings.py ├── urls.py └── wsgi.py
내부를 들여다보면 masterfolder
실제로는.sock 파일이 전혀 없습니다, 라는 이름은 신경쓰지 마세요 projectname.sock
.
- 따라서 nginx가 작동한다는 사실에도 불구하고 502 오류가 발생합니다.-
내 etc/nginx/sites-availabe/projectname
파일은 다음과 같습니다.
server {
listen 80;
server_name www.mydomain.com mydomain.com MYIPADDRESS;
location = /favicon.ico { access_log off; log_not_found off; }
location /static/ {
root /home/masterfolder/projectname;
}
location / {
include proxy_params;
proxy_pass http://unix:/home/myuser/mastefolder/projectname.sock;
}
}
물론 올바르게 심볼릭 링크되어 있으며 모든 변경 후에는 이를 수정하기 위해 다음을 실행합니다.
sudo systemctl daemon-reload
sudo systemctl start gunicorn
sudo systemctl enable gunicorn
sudo systemctl restart nginx
이 모든 인프라가 함께 작동하는 방식을 이해하는 데 있어 기본적인 내용이 누락된 것 같습니다. 물론 제가 이해한 과정에 오류가 있으면 자유롭게 지적해 주세요.
답변1
디렉토리 의 권한을 확인하셨나요 masterfolder
?
권한은 이어야 합니다 myuser:www-data
.
또한 nginx 구성 파일에 철자 오류가 있습니다. 오타이길 바랍니다 :)