---
description: 이렇게 예발자닷컴의 front 서버에 접속했다. 이제 직접 빌드와 배포를 할 수 있는 권한이 생겼다! 신나 🤭
---

# 3. 예발자닷컴 프론트서버 업데이트 하기

## 1. GCP ssh 접속하는법

### 1.1. rsa키 생성

```
$ ssh-keygen -t rsa -f ~/.ssh/gcp_rsa -C hidaehyunlee@gmail.com
```

* $ ssh-keygen -t rsa -f \~/.ssh/\[KEY\_FILE\_NAME] -C \[USERNAME]
* \[KEY\_FILE\_NAME] 부분은 아무 이름이나 사용해도 상관 없음.

### 1.2. _key_ 내용 확인 및 복사

```
$ cat ~/.ssh/gcp_rsa.pub
```

동일위치의 `.pub` 파일의 내용을 확인하고 복사한다. \


### 1.3. GCP 에 입력

![image-202007231614337589](https://user-images.githubusercontent.com/37580034/88264667-235d3e80-cd07-11ea-8ffb-eda52d49e434.png)

* GCP의 **Compute Engine -> 메타데이터 -> SSH 키** 위치에 복사한 키 값을 붙여넣는다.

### 1.4. 터미널에서 인스턴스로 접속

```
$ ssh -i ~/.ssh/gcp_rsa hidaehyunlee@11.11.111.111
```

위와 같이 터미널에서 인스턴스로 접속한다.

* 인스턴스의 IP는 **GCP -> VM 인스턴스** 에서 미리 확인해야한다.&#x20;
* 해당 IP는 기본적으로 임시 IP이기 때문에 변경될 수도 있으니 주의가 필요하다.

> 이렇게 예발자닷컴의 front 서버에 접속했다. 이제 직접 빌드와 배포를 할 수 있는 권한이 생겼다! 신나

### 1.5. 참고

* [GCP 처음들어가서 해야할 일](https://velog.io/@taelee/gcp-%EC%B2%98%EC%9D%8C%EB%93%A4%EC%96%B4%EA%B0%80%EC%84%9C-%ED%95%B4%EC%95%BC%ED%95%A0%EC%9D%BC)
* [인스턴스에 SSH로 접속하기](https://jybaek.tistory.com/611)

## 2. 예발자닷컴 front 서버 빌드하기

*   GCP shh 에 접속한 상태라면

    ```
    hidaehyunlee@yb-frontend:/home/liasqui31/yebalja.com$
    ```

    위 경로에 우리 master 브랜치가 클론 받아져 있다. 우리는 얘를 빌드해서 배포하는 것!
* 서버를 관리하려면 관리자 권한이 필요하기 때문에 `sudo su` 명령어를 통해 루트로 접속해야한다.

### 서버 모니터링

```
$ pm2 monit
```

우리 서버가 돌아가고 있는 걸 모니터링 할 수있다.

![image-20200723165618742](https://user-images.githubusercontent.com/37580034/88264685-2bb57980-cd07-11ea-8587-f1cbc908e944.png)

### 서버 종료

```
$ pm2 kill
```

예발자닷컴에 들어가보면 `502 bad gate` 가 뜬다.

![image-20200723170226861](https://user-images.githubusercontent.com/37580034/88264642-150f2280-cd07-11ea-9a2a-6eefb2eaa296.png)

### 서버 재시작

```
$ pm2 start npm --name "next" -- start
```

* `--name "next"` 옵션은 `pm2 monit` 했을 때 보여지는 프로세스의 이름을 정해준 것이다.

### 정적파일 생성

```
$ npx next build
```

master 브랜치에 수정사항이 생기면 서버를 업데이트 해줘야하니까, 위 명령어로 새로운 `.next` 정적파일을 생성해준다.

![image-20200723154731036](https://user-images.githubusercontent.com/37580034/88264677-2821f280-cd07-11ea-961f-01910fc2f44b.png)

그럼 요렇게 컴파일 된 정적파일이 생성된다. 얘를 배포해주면 된다. \


### 서버 업데이트

```
$ pm2 reload next
```

수정된 정적파일을 재배포해준다.

* 이 명령어는 서버가 켜져있는 상태에서 서버를 종료하지 않고 업데이트하는 개념.
