@마크다운
django로 API를 만들고 API서버를 만들었는데 permission이 먹히지 않는 경우가 발생했다.
#
로컬에서 다 확인하고 올렸는데 왜 안되나 한참을 고민했는데 도저히 확인할 방법이 없어 온갖 삽질을 다했다.
서버에서 나는 에러는 확실한데 확인할 방법이 마땅치 않아서 한참 절망에 빠져있을때
얼떨결에 나와 비슷한 경우의 글들을 보았다.
#
[실마리1](https://stackoverflow.com/questions/14877249/django-rest-framework-authenticate-header)
[실마리2](https://stackoverflow.com/questions/9780966/where-do-i-put-wsgipassauthorization-on)
#
서버에서 AuthorizationHTTP를 사용하기 위해선 WSGIPassAuthorization 옵션이 on으로 있어야 한다는 것이었다.
#
원인을 알았으니 해결방법은?
#
WSGIPassAuthorization On으로 바꾸면 된다는데..
저 옵션이 어디에 위치해야하는지 까지는 나와있지 않았다.
#
[검색어 : WSGIPassAuthorization On](https://stackoverflow.com/questions/9780966/where-do-i-put-wsgipassauthorization-on)
EC2안에 들어가서 /etc/httpd/conf.d 폴더에 wsgi.conf 파일을 수정하라고 한다
> 수정하려면 권한이 없을 것이다 sudo chmod 666 wsgi.conf 라고 하면 읽기와 쓰기가 가능한 권한으로 바뀐다.
```
WSGIScriptAlias밑에다가 적힌대로 따라하자
```
근데 의문점이 갑자기들어 본인은 위의과정을 진행하지 않았다.
#
서버가 재배포 되었을때 이와 같은 과정을 계속해야 될텐데 너무나도 귀찮지 않은가
그래서 다른 방법을 찾기로 했다.
#
원인은 알았으니 해결책을 찾는건 의외로 쉬웠다.
#
[eb공식문서](http://docs.aws.amazon.com/elasticbeanstalk/latest/dg/create-deploy-python-container.html)
```
packages:
yum:
libmemcached-devel: '0.31'
container_commands:
collectstatic:
command: "django-admin.py collectstatic --noinput"
01syncdb:
command: "django-admin.py syncdb --noinput"
leader_only: true
02migrate:
command: "django-admin.py migrate"
leader_only: true
03wsgipass:
command: 'echo "WSGIPassAuthorization On" >> ../wsgi.conf'
99customize:
command: "scripts/customize.sh"
```
공식문서를 읽다보면 위와 같은 내용이 나타나는데
03wsgipass를 주목하자
##
경로가 약간 미심쩍지만 일단 시키는대로 해보자
##
ebextensions파일에 wsgipass 커맨드를 그대로 입력하고 실행하니
##
API가 permission을 제대로 적용하고 있었다.
단 한줄의 코드로 인해 엄청난시간을 잡아먹혀버렸다.
>교훈 : 영어를 잘하면 금방 찾는다.
'etc' 카테고리의 다른 글
한강수온 크롤링 (selenium,phantomjs,beautifulsoup) (1) | 2017.12.22 |
---|---|
스레드를 사용한 이메일 비동기 전송(django email) (0) | 2017.11.08 |
elastic beanstalk (geo django 사용시 에러) (0) | 2017.11.01 |
임시저장저장 (0) | 2017.10.10 |
다른사람의 코드를 다른서버로 옮기기(elastic beanstalk,requirements.txt is invalid) (0) | 2017.10.09 |