# ubuntu crawler server 세팅
프로젝트에 필요한 data를 모으기 위하여 인스턴스를 확장하기 위해서 작성한 문서입니다.
인스턴스 생성을 제외한 프로그램 설치, 환경 설정 등의 반복 작업을 줄이기 위해 GCP 스냅샷 기능을 이용했습니다. 현재는 첫 인스턴스 생성이기에 가능합니다.
하지만, 추후 크롤러의 업그레이드가 일어난다면 자동 배포를 할 수 있도록 스크립트를 짜야할 것입니다.
## python 약어 설정 및 패키지 매니저 설치
```
# python3 -> python : python 약어 설정
sudo update-alternatives --install /usr/bin/python python /usr/bin/python3 10
# pip3 -> pip : 패키지 매니저 설치
sudo apt-get update
sudo apt-get install -y python3-pip
sudo update-alternatives --install /usr/bin/pip pip /usr/bin/pip3 1
```
> pip란?
> [요약 정리 보러가기](https://m.blog.naver.com/complusblog/221177123238)
## 서버 시간세팅
본인은 크롤러에서 현재 시간 log를 찍을 것이기에 KST 로 변경함. UCT 사용한다면 굳이 하지 않아도 됨.
### 변경 전 시간 확인
```
date
```

### root 로그인
권한이 있는 root로 로그인해서 localtime 을 변경해야한다.
```
sudo su - root
```
```
sudo rm /etc/localtime
sudo ln -s /usr/share/zoneinfo/Asia/Seoul /etc/localtime
```

### 재접속 후 결과 확인
다시 ubuntu 계정으로 돌아가고 싶다면 재접속을 하던지 다음 코드를 입력하면 된다.
```
su - ubuntu
```
다시 ubuntu 계정으로 돌아와 date 로컬타임인지 확인

## 파이썬 패키지 설치
### pip requirements.txt 파일로 패키지 설치
KoreaNewsCrawler-master/ 폴더로 이동해서 다음 코드 실행하면 우리 파이썬 크롤러에 필요한 패키지 자동 설치
```
pip install -r requirements.txt
```
## snapshot 복제
크롤러를 여러개 돌리기 위해서 gcp에서 스냅샷을 찍고 인스턴스 복제합니다.
스냅샷이란 클라우드에서 사용하고 있는 os 자체를(내부에 설치한 파일 및 프로그램, 설정 포함) 복제하고 추후에 만들 인스턴스에 사용하도록 저장해 놓는 것 입니다.
### 스냅샷 만들기
스냅샷 만들기 버튼 클릭

이름과 저장해둘 소스 디스크를 설정합니다.

스냅샷 완성

## 스냅샷으로 인스턴스 만들기
인스턴스 만들기 클릭

원하는 이름과 머신 유형 설정

부팅 디스크에서 방금 만든 스냅샷으로 만들도록 설정 및 선택

마지막 인스턴스 `만들기` 버튼 클릭

방금 만든 인스턴스 생성중!

이제 각 인스턴스의 상태는 동등하고 nohup으로 py 파일을 돌리면 됨.
## 접속하기
본인은 mobaXterm 사용
터미널에서 ssh 접속을 해도 됨.

1. session 창 눌러 세션 세팅하기
2. ssh 접속을 할 것이므로 클릭
3. `Remote host` 칸에 gcp 외부 ip 넣기
4. `Specify username`에 ubuntu username 넣기(아무런 설정 하지 않았을 경우 기본은 `ubuntu`)
5. SFTP 프로토콜 설정 후 `Use private key` 체크한 후 gcp 메타데이터 ssh 설정한 공개키와 대응하는 개인키 파일을 설정
6. ok 버튼 클릭하여 접속

접속 성공!
원하는 파일 혹은 크롤러 nohup 실행
## 현재 python돌아가는 중인지 확인하는 법
1. nohup.out 파일을 접근해서 최근에 log찍힌게 있는지 확인
nohup 실행한 폴더로 이동하여 다음 코드 실행
```
vi nohup.out
```
## ubuntu 18.04 세팅
### 재접속 후 결과 확인
```
sudo apt install python3.8
sudo update-alternatives --install /usr/bin/python python /usr/bin/python3.8
```
## pip 업그레이드
```
python -m pip install --upgrade pip
```