본문 바로가기

개인공부

Nginx 2-1(무중단 배포1/2)

목표 : 깃헙에서 풀받아서 배포 가능하게 만들기


1. AWS에서 EC2를 구매 한다
(저는 리눅스 CentOs로 프리티어로 구매를 했습니다)
2. 보안에서 인바운드 규칙에서 포트를 80과 443 열어준다
3. 터미널로 가서 구매한 EC2로 들어갑니다
4. 깃을 클론하기 위해서 java를 설치합니다

[java 버전 확인하기]
java -version
[java 8]
sudo yum install -y java-1.8.0-openjdk-devel.x86_64
sudo /usr/sbin/alternatives --config java
[기본 제공되는 java7를 삭제한다]
sudo yum remove java-1.7.0-openjdk


5.깃 클론을 하기 위해서 git을 설치한다
[git 설치하기]
sudo yum install git
[git 버전 확인하기]
git --version
[git을 clone 할 디렉토리를 생성한다]
mkdir ~/app
mkdir ~/app/git

6. 깃 클론 한다
[깃 디렉토리로 들어 간다]
cd {내가 설정한 디렉토리}
[깃을 클론 한다]
git clone {클론 받을 내 깃헙 리포지토리 주소}
[깃 클론한 프로젝트로 들어가서 클론이 잘 되었는지 확인한다]
ll
ls -al

[프로젝트 수행해 보기]
./gradlew test
[수행이 되지 않을때(permission denied) 실행 권한 부여하기]
chmod +x gradlew

결과가 build successful 되면 성공!!

[deploy 스크립트 생성]
vim ~/app/git/deploy.sh

[깃에서 pull을 받고 build해서 배포하는 스크립트 작성]

REPOSITORY=/home/ec2-user/app/git
cd $REPOSITORY/{내가 클론한 프로젝트 이름}/
echo "> Git Pull"
git pull echo "> 프로젝트 Build 시작"
./gradlew build echo "> Build 파일 복사"
cp ./build/libs/*.jar $REPOSITORY/
echo "> 현재 구동중인 애플리케이션 pid 확인"
CURRENT_PID=$(pgrep -f {내가 클론한 프로젝트 이름})
echo "$CURRENT_PID"
if [ -z $CURRENT_PID ]; then
echo "> 현재 구동중인 애플리케이션이 없으므로 종료하지 않습니다."
else
echo "> kill -2 $CURRENT_PID"
kill -15 $CURRENT_PID
sleep 5 fi
echo "> 새 어플리케이션 배포"
JAR_NAME=$(ls $REPOSITORY/ |grep '{내가 클론한 프로젝트 이름}' | tail -n 1)
echo "> JAR Name: $JAR_NAME"
nohup java -jar $REPOSITORY/$JAR_NAME &

[deploy 를 실행시키기 위해 권한을 설정해준다]
sudo chmod 755 ./deploy.sh
또는
sudo chmod 700 ./deploy.sh #권한을 다 열어 준다

[deploy를 실행 시킨 후 nohup.out이 생성 되었는지 확인하기]
cd ~/app/build
ll
또는
ls

[nohup.out로그 확인하기]
tail -f /home/ec2-user/app/build/nohup.out

[실행되고 있는 프로세스 확인하기]
ps -ef|grep {내가 클론한 프로젝트 이름}

[크롬에서 서버가 잘 돌아가는지 확인하기]
{구매한 서버 DNA 또는 퍼블릭 IPv4 주소 } :8080

[부가 설명]

EC2 : 웹서버를 설치하고 이 웹서버를 통해서
사용자가 웹브라우저를 통해 요청하는 웹페이지나 이미지, 동영상 등을 제공하는 것
인스턴스 : 1대의 컴퓨터를 의미하는 단위

리눅스 : 유닉스를 기반으로하는 무료 오픈 소스 운영체제

-커널을 기반
-UNIX 기반 OS(Operating System)
-프로그래밍 지식을 가진 사용자는 누구나 수정하여 사용이 가능하다
-프로그램을 실행하고 코드를 변경하며 수정 된 사본을 재배포 할 수 있다
-다중 사용자 시스템
-멀티 태스킹이며 많은 프로세스를 동시에 실행이 다능하다
-개인용 컴퓨터, 게임 콘솔, 임베디드 시스템, 데스크탑 및 서버에 사용
-신뢰성이 높고 안정적인 엔터프라이즈 급 응용 프로그램에 사용

우분투 : 리눅스 배포판

-Red Hat, CentOS, Debian, Fedora, Linux Mint
-그래픽 사용자 인터페이스 (GUI)와 명령 행 인터페이스 (CLI)
-개인용 컴퓨터, 서버, 클라우드 컴퓨팅 및 IoT에 사용

Linux와 우분투 유사점

  • 둘 다 무료이며 오픈 소스입니다.
  • 다중 사용자를 지원합니다.
  • 둘 다 멀티 태스킹과 멀티 스레딩을 허용합니다.
  • 그들은 다중 처리를 허용합니다.
  • 그들은 매우 안전하고 안정적입니다.

'개인공부' 카테고리의 다른 글

csrf 에러 - csrf란 무엇인가?  (0) 2021.11.20
[SQL] 기본 명령어02  (0) 2021.07.09
[React]기초 문법  (0) 2021.06.30
[운영체제] 시스템 구조  (0) 2021.06.23
[운영체제]운영체제 개념 및 컴퓨터 시스템 구조  (0) 2021.06.23