오늘은 쉘 스크립트를 통해 Django 에서 자주 사용하는 명령어들을 


한 번에 실행시켜 보도록 하겠습니다.


먼저 , 실습환경은 OS X 입니다.




그럼 시작해 보도록 하겠습니다.


먼저, Django Project 에서 자주 사용하는 명령어들에는  어떤 것 들이 있나요?


저는 개발 할 때 기본적으로 터미널을 두개를 사용합니다. 


1개는 로컬서버를 기본적으로 실행시켜 놓고, 다른 하나로는 git 명령어나 , shell 명령어를 실행합니다.

 


첫번 째 만들 shell script 는  프로젝트 디렉토리로 이동 그리고 가상환경을 만든 후 python3


manage.py runserver 명령어를 통해 개발서버를 띄우는 스크립트입니다.



기존 실행 방법.


1.  cd dev/project


2. source myvenv/bin/activate


3. python3 manage.py runserver


매 번 지루하셨죠 ?



이 3가지 명령어를 아주 간단한 쉘 스크립트 만들어서 한 줄로 만들어 실행해 보도록 하겠습니다.


먼저 결과 부터 보여 드리겠습니다. home directory에서 바로 shell script를 실행시킴으로써  한 번에 가상환경에서 로컬 서버를 띄운 것을


확인 할 수 있습니다.

 



그럼 이제 본격적으로 쉘 스크립트를 만들어 보도록 하겠습니다.  



1. 먼저 저는 저의 basmania 프로젝트를 가상환경에서 


개발 서버를 띄울 것이기 때문에 script 이름을 mybasmania.sh 라고 만들겠습니다.



* 여러분도 자신의 프로젝트명을 이용하세요.



쉘 스크립트 파일을 만드는 명령어는


echo '#!/bin/sh' > mybasmania.sh  입니다.


명령어를 수행 후 vi을 통해 들어가보면 다음과 같은 파일이 만들어 진 것을 확인할 수 있습니다. 


(다른 editor를 이용하셔도 상관없습니다.)




2. 이제 우리가 수행 할 명령어들을 추가합니다. (기존에 우리가 이용하는 언어들의 문법과 큰 차이가 없습니다.)



echo 'this shell sript make basmain local server'

cd dev/basmania && source myvenv/bin/activate &&python3 manage.py runserver



cd 명령어와 나머지 실행 명령어는 기존과 같고, && 나눠서 실행했던 것들을 연결해 줍니다.




3. 이제 실행하기 전에 한 가지 설정을 해줘야합니다. 쉘 스크립트 파일이란 것을 알려주기 위해 해당 명령어를 실행합니다.


chmod 755 mybasmania.sh



- chmod 란 ?


chmod(change mode의 축약어)명령어는 유닉스 유닉스 계통 환경 안에서 쓰이는  명령어이다. 이 명령어는 파일들이나 디렉터리의 파일 시스템 모드들을 바꾼다. 그 모드들은 허가나 특별한 모드들을 포함한다.


출처 : 위키백과


자세한 사항은 https://ko.wikipedia.org/wiki/Chmod



4. 이제 준비가 끝났습니다.


파일을 실행시켜보도록 하겠습니다. 


./mybasmania.sh





이제 부터 개발서버를 한 번에 띄울 수 있게 됐습니다 !!



감사합니다.





Django admin url 은 default로  /admin 으로 설정되어 있습니다.





이를 안다고해서 해킹 할 수 있는건 아니지만 그래도 자신이나 자신의 팀만 아는 url 주소로 바꾼다면 조금이나마 보안을 강화할 수 있습니다.



저는 https://hackernoon.com/5-ways-to-make-django-admin-safer-eb7753698ac8   여기 내용 중 1단계를 참고해서 변경해 보았습니다.



저같은 경우 AWS 를 이용해서 배포하고 있는데 git 배포 내역을 통해 deploy를 하기 때문에 


위에 써있는 것 같이 url 주소를 단순히 바꾸면 git에 유출이 되기 때문에 json 을 이용해 key를 전달하는 것 처럼 url 주소를 전달해야겠다고 생각했습니다.



이를 구현 하던 중 공식문서에서 url의 첫 번째 인자가 정규표현식인걸 보고... 정규표현식안에 변수를 넣을 수 없을까 생각하고 있었는데....


askdjango 페이스북에 질문을 올리고


 ->첫번자 인자가 문자열로서 정규 표현식 패턴을 기입하는 것이므로, 변수와 조합하시면 됩니다.  라는 답변을 받았습니다.




생각을 해보니 ... 정규표현식은 문자열을 표현하는 식이고, 정규표현식 자체도 문자열 데이터 type 이라는 생각이들었습니다...! (삽질삽질)





그래서 다음과 같이 코드를 구현했습니다. 


with open("/Users/-----/dev/myportfolio/envs.json") as f:
envs = json.loads(f.read())

ADMIN_KEY=envs['ADMIN_KEY']

urlpatterns = [
url(r'^admin/'+ADMIN_KEY, admin.site.urls),
url(r'^',include('portfolio.urls',namespace='portfolio')),
]

다음과 같이 json에서 ADMIN_KEY 를 가져와서 admin url 주소를 다른 사람이 알 수 없도록 설정하였습니다.




  1. Django조아 2017.09.16 00:30 신고

    좋은 자료 감사합니다!!👊

+ Recent posts