UNPKG

2.16 kBMarkdownView Raw
1크로키 서비스 서버를 위한 배포 스크립트
2
3# 적용
4
51. deploy.yaml을 작성한다.
61. devDependencies에 "@croquiscom/croquis.deployer": "0.10.0" 추가
71. Cakefile에 require '@croquiscom/croquis.deployer/cakefile' 추가
8
9# 사용법
10
11* cake deploy - 서버에 배포
12* cake run - 개발 모드로 서버 실행
13* cake run:test - 테스트 모드로 서버 실행
14* cake start - 실 서버에서 데몬으로 서비스 실행
15* cake stop - 데몬 중지
16
17# EC2 배포
18
19## deploy.yaml 설정
20* server: 배포할 서버 주소
21* project: 프로젝트 명. 디렉토리 이름이 된다
22
23## 과정
24cake deploy를 실행하면
25
26bin/deploy (클라이언트)
271. 현 디렉토리를 서버의 work/<project> 디렉토리에 복사한다.
281. 서버에서 bin/\_deploy\_on\_server.sh를 실행한다.
29
30bin/\_deploy\_on\_server.sh (서버)
311. 필요한 모듈을 설치한다.
321. running/<project>/versions 밑에 신선한 복사본을 만든다. (문제가 생겼을 떄 되돌아가기 쉽게 하기 위해서)
331. running/<project>/current에 최신 복사본에 대한 링크를 건다.
341. bin/start를 실행한다.
35
36bin/start
371. forever로 lib/server.js를 데몬으로 띄운다.
38
39# Elastic Beanstalk 배포
40
41## deploy.yaml 설정
42* elasticbeanstalk.region: 배포 리전
43* elasticbeanstalk.application\_name: 어플리케이션 이름
44* elasticbeanstalk.environment\_name: 환경 이름
45
46## AWS 설정
47* awscli 설치: pip install awscli
48* jq 설치: brew install jq
49* IAM 설정
50```
51{
52 "Version": "2012-10-17",
53 "Statement": [
54 {
55 "Effect": "Allow",
56 "Action": [
57 "elasticbeanstalk:*",
58 "elasticloadbalancing:*",
59 "autoscaling:*",
60 "s3:*",
61 "cloudformation:*"
62 ],
63 "Resource": "*"
64 }
65 ]
66}
67```
68
69# 시그널
70
71server.js 프로세스에 시그널을 보내면 다음과 같은 처리를 한다.
72
73* SIGHUP
74 * 모든 Worker를 재시작한다.
75* SIGUSR2
76 * 로그파일을 다시 연다.
77
78server.js 프로세스는 자식 Worker를 재시작할 때 기존 자식 프로세스에 SIGTERM을 보낸다.