귀퉁이 서재
BLOG - 13. 서버 시작프로그램 본문
EC2 git으로 push하기
로컬에서 작업한 결과물을 EC2 git 계정으로 push를 하면 지난번에 만들어준 post-receive가 빌드와 서버 재부팅을 자동으로 해줄 것입니다. 로컬이 결과물을 EC2 git으로 push해봅시다.
EC2 연결 후
sudo -u git bash
cd
cd .ssh
ls -al
현재 authorized_keys가 root, root 소유이므로 이를 git 계정 소유로 바꿔줘야합니다.
sudo chown git authorized_keys
sudo chgrp git authorized_keys
이제 로컬로 다시 돌아가 terrace_hook 디렉토리로 master브랜치를 push해보겠습니다.
exit
logout
cd terrace
git push git@13.125.232.34:~/terrace_hook master
이렇게 하면 정상적으로 push가 됩니다. EC2 git 계정으로 들어가 terrace_deploy 디렉토리를 보면 frontend, Makefile, src, web_root가 잘 들어와 있습니다.
terrace.service 생성
(EC2 루트 계정에서)
cd /etc
cd systmed
cd system
sudo vi terrace.service
terrace.service에 아래 코드를 복사 붙여넣기 합니다.
[Install]
WantedBy=multi-user.target
[Unit]
Description=Terrace
Requires=network.target
After=network.target
[Service]
WorkingDirectory=/home/git/terrace_deploy
Type=forking
ExecStart=/bin/bash -c 'pkill terrace; ./bin/terrace &'
StandardOutput=syslog
StandardError=syslog
SyslogIdentifier=terraceService
User=git
Group=git
[Install]
WantedBy=multi-user.target
terrace.service는 시작 프로그램이라고 생각하면 됩니다. 서버가 재부팅될 때 자동으로 서버를 실행해줍니다.
git계정에 go 설치 및 환경변수 설정
서버의 git 계정에서 로컬의 작업물을 go로 빌드를 해줄 것이기 때문에 go를 깔아야 합니다.
(EC2 git 계정에서)
cd
cd terrace_deploy
mkdir temp
cd temp
wget https://dl.google.com/go/go1.11.4.linux-amd64.tar.gz
# 다운이 완료 되면 압축풀기
tar -xzvf go1.11.4.linux-amd64.tar.gz
sudo mv go /usr/local
go 디렉토리를 /usr/local로 옮겼기 때문에 아래와 같이 환경 변수를 추가해줍니다.
cd
vi ~/.bashrc
.bashrc에 아래 코드 추가
export PATH=/usr/local/go/bin:$PATH
source ~/.bashrc
Makefile 업데이트
로컬에서 EC2 git으로 push하는 것도 Makefile을 통해 자동화해주겠습니다.
(로컬에서)
cd terrace
vi Makefile
run ,build 아래 아래 코드 추가 후 저장합니다.
Update:
/usr/local/go/bin/go build –x –o ./bin/terrace ./src
sudo setcap CAP_NET_BIND_SERVICE=+eip ./bin/terrace
deploy:
git push git@13.125.232.34:~/terrace_hook master
여기서 make update는 post-receive가 알아서 해줍니다. (새로운 작업물을 push 받으면 make update, 즉 빌드를 해줌) 사용자는 로컬에서 make deploy만 사용할 것입니다.
이제 Makefile을 활용해서 EC2 git으로 push를 해보겠습니다.
(로컬에서)
cd terrace
git add -A
git commit -m "deploy commit"
make deploy
이렇게 EC2 git으로 push를 할 수 있습니다. 그럼 서버에서 새로운 작업물을 받았다고 인지하고 자동으로 post-receive를 실행합니다. 우리가 만든 post-receive는 작업물을 빌드하고 서버를 재부팅합니다. 따라서 EC2 git으로 push를 하고, 크롬을 통해 해당 IP(서버)로 접속하면 로컬에서 작업한 결과물을 볼 수 있는 것입니다.
systemctl 설정
(ec2 루트계정 /etc/systemd/system 폴더 안에서)
sudo systemctl enable terrace.service
sudo systemctl daemon-reload
sudo systemctl start terrace.service
systemctl status terrace.service
terrace.service가 정상적으로 active(running) 된 상황을 볼 수 있습니다. 처음에만 위와 같이 설정해주고 앞으로는 EC2 git으로 push할 때 마다 post-receive가 아래의 코드를 실행해줍니다.
sudo systemctl restart terrace.service
sudo systemctl status terrace.service
이제 크롬 주소창에 각자의 ip를 치면 로컬에서 만들어준 vue 기본 페이지가 뜹니다.
2019. 2. 24.
'블로그 프로젝트' 카테고리의 다른 글
BLOG - 15. 블로그 세팅 마무리 (0) | 2019.04.06 |
---|---|
BLOG - 14. S3 배포 및 Redirect (0) | 2019.04.06 |
BLOG - 12. EC2 git Hook 설정 (0) | 2019.04.06 |
BLOG - 11. Github 연결 (0) | 2019.04.06 |
BLOG - 10. Shell Script, Makefile을 활용한 자동 배포 (0) | 2019.04.06 |