IAM
키별로 권한을 부여하는 것이다.
AWS CLI(예를 들면, 스크립트로 만들어서 사용 가능) 기능이 있는데, 그러기 위해서는 유저별로 권한을 줘야한다.
- IAM > Users > Add user - 이름 입력 - Access type Programmatic access 체크
- Next
- Attach existing policies directly > ec2 검색, AmazonEC2FullAccess 체크 > Next > Create user > Access key ID, Secret access key 발급 확인
# project 이동
$ l
total 24
drwxr-xr-x 9 limhm staff 306B 3 6 11:40 .
drwxr-xr-x 21 limhm staff 714B 3 6 15:43 ..
drwxr-xr-x 4 limhm staff 136B 3 6 11:51 .conf-secret
drwxr-xr-x 12 limhm staff 408B 3 6 22:23 .git
-rw-r--r-- 1 limhm staff 2.7K 3 6 11:40 .gitignore
drwxr-xr-x 8 limhm staff 272B 3 6 20:41 .idea
-rw-r--r-- 1 limhm staff 11B 3 6 11:21 .python-version
drwxr-xr-x 6 limhm staff 204B 3 6 11:40 django_app
-rw-r--r-- 1 limhm staff 31B 3 6 11:29 requirements.txt
# 패키지 설치
$ pip install awscli
$ aws configure
AWS Access Key ID [None]: YOUR_Key_ID
AWS Secret Access Key [None]: YOUR_Access_key
Default region name [None]: ap-northeast-2
Default output format [None]: json
# configure 입력내용 확인
$ cd ~/.aws
$ l
total 16
drwxr-xr-x 4 limhm staff 136B 3 7 11:18 .
drwxr-xr-x+ 71 limhm staff 2.4K 3 7 11:23 ..
-rw------- 1 limhm staff 48B 3 7 11:18 config
-rw------- 1 limhm staff 116B 3 7 11:18 credentials
$ vi config
[default]
region = ap-northeast-2
output = json
Nginx 관련 설정
$ sudo apt-get install software-properties-common python-software-properties
$ sudo add-apt-repository ppa:nginx/stable
$ sudo apt-get update
$ sudo apt-get install nginx
$ nginx -v
nginx version: nginx/1.10.3
$ cd /etc/nginx/sites-available
# default 확인
$ l
total 12K
drwxr-xr-x 2 root root 4.0K Mar 6 08:35 .
drwxr-xr-x 8 root root 4.0K Mar 6 08:35 ..
-rw-r--r-- 1 root root 2.4K Jan 18 23:05 default
Security Groups에 inbound rule 추가
- HTTP
- TCP
- 80
- Anywhere
YOUR_PublicDNS 주소로 접속하여, Welcome to nginx!
문구를 확인한다.
# vi /etc/nginx/sites-available/default 에서 자세한 내용 확인
Nginx 가상서버 설정 파일 작성
$ cd /etc/nginx/sites-available
$ sudo vi app
server {
listen 80;
server_name localhost Your_Public_DNS;
charset utf-8;
client_max_body_size 128M;
location / {
uwsgi_pass unix:///tmp/app.sock;
include uwsgi_params;
}
}
설정파일 심볼릭 링크 생성
$ cd /etc/nginx/sites-enabled
$ sudo ln -s ../sites-available/app .
$ sudo systemctl restart nginx
# could not build server name 에러가 발생하면,
# nginx 설정 파일에서 server_names_hash_bucket_size를 늘려준다.
$ sudo vi /etc/nginx/nginx.conf
http {
# ...
server_names_hash_bucket_size 512;
# ...
}
개념 확인
ip:80 요청이 들어올 때,
- Nginx > sites-enabled > app = 80, app2 = ...
: 요청 들어온 포트와 app을 연결
1. /etc/nginx/sites-enabled/app 파일에 listen 80
2. '/' (root url)
3. /tmp/app.sock (/etc/nginx/sites-enabled/app 파일에 unix:///tmp/app.sock)
- app.sock이 uWSGI에 연결
- app.sock <-> uWSGI > chdir > Django > project_name.wsgi
: uWSGI 설정은 /etc/uwsgi/sites/app.ini 파일에서 확인
* uWSGI가 app.ini 파일을 이용해 app.sock을 생성 (app.sock은 단순히 통로)
Socket이란?
두 프로그램이 네트워크를 통해 서로 통신을 수행 할 수 있도록 양쪽에 생성되는 링크의 단자입니다.
두 소켓이 연결되면 서로 다른 프로세스끼리 데이터를 전달 할 수 있습니다. 결국 소켓이 구현됨으로써 네트워크 및 전송 계층의 캡슐화가 가능해 집니다.
도메인 연결
Cloud Flare - DNS에서 DNS Records
추가
- CNAME
- Name : www
- IPv4 address : Your_Public_DNS
nginx 설정에 server_name 추가
$ cd /etc/nginx/sites-available
$ sudo vi app
server {
# ...
server_name localhost Your_Public_DNS devlim.net;
# ...
$ sudo systemctl daemon-reload
$ sudo systemctl nginx
Caching 삭제
Cloud Flare - Caching에서 purge Everything
해서 캐시 삭제
SSL 적용
Cloud Flare - Page Rules에서 Create Edge Certificates
http://*.devlim.net/*
- Always Use HTTPS
Docker
도커는 컨테이너 기반의 오픈소스 가상화 플랫폼입니다.
- 컨테이너 like 가상머신 1개
- 이미지는 컨테이너 실행에 필요한 파일과 설정값등을 포함하고 있는 것으로 상태값을 가지지 않고 변하지 않습니다(Immutable). > 데이터를 저장할수없다.
Docker 설치하고 실행하기
Docker 설치
Docker 다운로드에서 Stable 버전 .dmg 파일
을 받아 설치한다.
# 설치확인
$ docker version
# Client와 Server 정보 정상 출력 확인
Docker 실행
# ubuntu 16.04 컨테이너 생성
$ docker run ubuntu:16.04
# 컨테이너 실행
$ docker run --rm -it ubuntu:16.04 /bin/bash
root@e2ef5a339502:/# l
bin/ dev/ home/ lib64/ mnt/ proc/ run/ srv/ tmp/ var/
boot/ etc/ lib/ media/ opt/ root/ sbin/ sys/ usr/
# 컨테이너 종료
$ exit