Technique

Google Cloud, Docker로 간단하게 웹서비스 구축하기(feat. Django) 2

JAY-GO 2018. 1. 17. 00:17
반응형

(본 포스팅은 Docker를 이용한 Windows에서 Linux 개발환경 구축 (feat, Django) 을 참고하신 후 활용하시면 좋습니다.)


우리는 로컬에서 평소 사용하던 도구들을 활용해 개발하고, 이를 서버에 배포하고자 합니다.


이번 포스팅에서는 google cloud에 배포할 docker 이미지에 포함시킬 django 프로젝트, 그리고 각종 설정파일들을 준비해 보겠습니다.

1. django 프로젝트 생성
 ㅇ 로컬에 django 프로젝트를 생성 합니다. 상세 방법은 django 공식 튜토리얼 참조하여 주세요


2. django - uwsgi - nginx 로 서버를 구성하기 위한 필수 파일 확보
 ㅇ uwsgi_params 파일을 프로젝트 폴더에 포함 합니다. nginx와 uwsgi 간의 상호작용을 위한 파일이며, nginx github을 그래도 사용하시면 됩니다.
 <uwsgi_params>
uwsgi_param  QUERY_STRING       $query_string;
uwsgi_param REQUEST_METHOD $request_method;
uwsgi_param CONTENT_TYPE $content_type;
uwsgi_param CONTENT_LENGTH $content_length;

uwsgi_param REQUEST_URI $request_uri;
uwsgi_param PATH_INFO $document_uri;
uwsgi_param DOCUMENT_ROOT $document_root;
uwsgi_param SERVER_PROTOCOL $server_protocol;
uwsgi_param REQUEST_SCHEME $scheme;
uwsgi_param HTTPS $https if_not_empty;

uwsgi_param REMOTE_ADDR $remote_addr;
uwsgi_param REMOTE_PORT $remote_port;
uwsgi_param SERVER_PORT $server_port;
uwsgi_param SERVER_NAME $server_name;
 ㅇ nginx 설정파일을 프로젝트 폴더에 생성합니다. Setting up Django and your web server with uWSGI and nginx 튜토리얼에서 해당 파일의 레퍼런스를 제공 합니다. 우리는 이 파일을 토대로 필요한 부분을 수정하여 사용할 예정입니다.
<mysite_nginx.conf>
# mysite_nginx.conf

# the upstream component nginx needs to connect to
upstream django {
# server unix:///path/to/your/mysite/mysite.sock; # for a file socket
server 127.0.0.1:8001; # for a web port socket (we'll use this first)
}

# configuration of the server
server {
# the port your site will be served on
listen 8000;
# the domain name it will serve for
server_name .example.com; # substitute your machine's IP address or FQDN
charset utf-8;

# max upload size
client_max_body_size 75M; # adjust to taste

# Django media
location /media {
alias /path/to/your/mysite/media; # your Django project's media files - amend as required
}

location /static {
alias /path/to/your/mysite/static; # your Django project's static files - amend as required
}

# Finally, send all non-media requests to the Django server.
location / {
uwsgi_pass django;
include /path/to/your/mysite/uwsgi_params; # the uwsgi_params file you installed
}
}
 ㅇ .sh(쉘 스크립트) 파일 생성. 서버 구동 시 명령줄에서 실행시킬 명령어들을 작성해 놓은 파일입니다. 컨테이너를 실행 시킬때 nginx 서버를 자동으로 구동하도록 명령어들을 순서대로 시행하기 위한 파일 입니다.
<docker_start.sh>

/etc/init.d/nginx start & uwsgi --socket /tmp/mysite.sock --module mywebapp.wsgi --chmod-socket=666


3. nginx 설정파일 수정
 ㅇ 위에서 생성해 놓은 mysite_nginx.conf 파일을 앞으로 배포할 환경에 맞게 수정하여야 합니다.
<mysite_nginx.conf>
# mysite_nginx.conf

# the upstream component nginx needs to connect to
upstream django {
server unix:///tmp/mysite.sock; # for a file socket
#server 127.0.0.1:8001; # for a web port socket (we'll use this first)
}

# configuration of the server
server {
# the port your site will be served on
listen 80;
# the domain name it will serve for
server_name .example.com; # substitute your machine's IP address or FQDN
charset utf-8;

# max upload size
client_max_body_size 75M; # adjust to taste

# Django media
location /media {
alias /mysite/media; # your Django project's media files - amend as required
}

location /static {
alias /mysite/static; # your Django project's static files - amend as required
}

# Finally, send all non-media requests to the Django server.
location / {
uwsgi_pass django;
include /mysite/uwsgi_params; # the uwsgi_params file you installed
}
}

  - server unix:///tmp/mysite.sock : nginx와 django 통신을 unix 소켓으로 하도록 변경

  - listen 80 : django프로젝트를 제공할 포트. 향후 google cloud에서 컨테이너의 80번 포트를 사용하게 됨으로 80으로 변경

  - /mysite/ : 각종 프로젝트 구성 파일들의 위치를 지정. 향후 docker 컨테이너의 /mysite/ 위치에 프로젝트 파일들을 배치할 예정 


4. 현재까지의 파일 구성



다음번에는 지금까지 생성한 django 프로젝트와 nginx uwsgi 관련 파일들을 포함하여 google cloud에 배포하기 위한 docker 이미지를 만들어 보도록 하겠습니다.

반응형