백엔드 개발자
[#2 Mattermost 알림봇 만들기] -서버연결 본문
//ec2 서버 ssh 연결
AWS ec2서버를 만들어 준다.
나는 아마존 리눅스 이미지로 만들어줬다.
그리고 연결을 해주려하였는데
bad permissions 이 나왔다.
chmod 400 ~/downloads/mmkey.cer
만들어준 키의 권한을 제한해줘야한다.
이것은 필수로 요구된다.
//다시 연결
ssh -i "~/downloads/mmkey.cer" ec2-user@ec2-54-145-71-82.compute-1.amazonaws.com
SSH 클라이언트 방식으로 연결해주었다.
연결에 성공하면 멋진 새를 볼 수 있다.
ssh key 생성
ssh-keygen -t rsa -b 4096 -m PEM
--> Your public key has been saved in /home/ec2-user/.ssh/id_rsa.pub
생성 후 저장된 위치를 알려준다.
cd /home/ec2-user/.ssh
cat id_rsa.pub
ssh key 가 생성된 위치로 이동 후 출력하여 복사해주었다.
//github 에 등록
내 깃허브로 가서 settings -> SSH and GPG Keys 에 ssh key를 등록해준다.
복사해준 key로 만들어준다.
//ec2서버에 git 설치
sudo yum install git
git clone [원하는 레파지토리 ssh]
깃을 설치해 준 후 내 레파지토리와 연결해 주었다.
이제 내 코드 변경 사항을 쉽게 가져오고 쓸 수 있다.
//추가로 git 정보도 등록해주겠다.
git config --global user.name [이름]
git config --global user.email [이메일]
git config --list // 확인
//python 설치
sudo yum install python
우리의 프로그램을 실행하기 위해 python을 설치해주었다.
//가상환경
//격리된 공간에서 라이브러리 관리 해주기.
python -m venv myenv
source myenv/bin/activate
가상환경을 만들고 활성화 시켜주었다.
cd mattermostBot
python main.py
git pull 로 받아온 내 프로젝트의 이름이 mattermostBot이다.
이동 후 실행해주었다.
//필요한 module 이 없다고 나온다.
//pip install apscheduler;
pip insatll [module]로 없는 것들 모두 설치해준다.
이렇게 다 설치해주고
pip freeze
이 명령어로 설치된 모듈들을 모두 확인할 수 있다.
패키지 관리를 한 곳에서 해주기 위해 requirements.txt 파일을 만들어 한 곳에서 관리해 줄 것이다.
pip freeze > requirements.txt
requirements.txt에 저장하여 관리해주도록 하겠다.
여기서도 urllib3 를 버전 1.26.6로 변경해주어야 한다.
vim requirements.txt
들어가서 i누르고 버전을 수정한다.
그리고 esc 키를 누르고 :wq로 저장하여 나온다.
source ~/requirements.txt // 변경내용 저장.
pip install -r requirements.txt
// 다시 이 파일에 기록된 버전으로 설치한다.
## 문제 발생
이제 다 완료되었는데 안돼서 정말 엄청나게 삽질을 했다.
모듈이 하나 없는게 있었는데 그것때문인줄 알고 엄청 고생했는데 서버시간 동기화가 안돼서 원하는 결과가 안나오는 것이었다
date 명령어로 시간을 확인하니 내 local 시간과 다르게 나왔고 서버시간과 동기화를 해주었다.
이 글을 참조했다.
sudo vim /etc/chrony.conf
# use the Amazon Time Sync Service (if available)
server 169.254.169.123 prefer iburst minpoll 4 maxpoll 4
이 코드를 추가해준다.
# 시스템 부팅될 때마다 시작하도록 설정
sudo chkconfig chronyd on
sudo vim /etc/sysconfig/clock
//기존코드를 seoul로 설정하기 위해 대체해준다.
ZONE="Asia/Seoul" KST=True
//UTC 삭제
sudo rm /etc/localtime
//한국 표준시간대로 변경
sudo ln -s /usr/share/zoneinfo/Asia/Seoul /etc/localtime
이제 date 를 확인해보면 제대로 나오는 것을 볼 수 있다.
이제 프로젝트로 이동하여
코드의 변경사항이 있다면 pull 해주고 실행해본다.
-> cd 프로젝트명
-> git pull
pip install -r requirements.txt //안되면 pip3로 변경
//실행해준다.
python main.py
//mm 봇알림 화면
이제 드디어 원하는 결과를 얻는데 성공했다!!!
자 그런데 이제 터미널을 종료해도 -> 서버와 연결이 끊어져도
프로그램은 항상 실행이 되게 해주어야한다.
demon프로그램으로 실행되도록 할 수 있지만 자동배포 빌드까지 관리해주기 위해 jenkins를 도전해보자!!!
그럼 여기부터 다음편에 이어지겠다 ~~
'SSAFY' 카테고리의 다른 글
[#1 MatterMost 알림봇 만들기] with Python (1) | 2023.06.27 |
---|---|
[SSAFY] 9기 코딩테스트, 면접(인터뷰) 후기, 추가합격!! (3) | 2023.01.05 |