원했던 기능을 구현은 했지만 구동을 위해 노트북을 계속 켜 놓을 순 없습니다. 방치중인 라즈베리 파이에 환경을 옮겨 봅니다.
이쪽 전문이 아니라서 용어나 설명은 미흡할 수 있습니다. 이해 부탁드리고, 잘못된 부분은 지적해 주시면 감사하겠습니다~^^
1. OS 설치
일단 OS 는 Ubuntu Server 를 사용하기로 합니다.
ubuntu.com/download/raspberry-pi
자신의 Pi 기기에 맞는 OS 를 선택합니다.
ubuntu.com/tutorials/how-to-install-ubuntu-on-your-raspberry-pi#1-overview
가이드대로 Raspberry Pi Imager 를 다운받아 설치하고 진행하면 됩니다.
단, 마지막에 추천해 주는 다음 두가지는 저는 추천하지 않습니다.
sudo apt install xubuntu-desktop
sudo apt install lubuntu-desktop
Visual OS 인데, 설치해 봤는데 제 경우 매우 느려지는 단점을 경험 했습니다.
2. Node js 설치 (NVM, NPM)
구현해 둔 기능은 Node js 기반으로 돌아갑니다.
설치한 Ubuntu OS 에 Node js 환경을 구성해 줍시다.
우선 NVM 을 설치해 줍니다.
위 페이지의 README.md 에 나와 있는 대로 설치를 진행해 봅시다.
$ curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.37.2/install.sh | bash
설치가 끝나면 환경 변수 값을 업데이트 해 줍니다.
$ source ~/.bashrc
NVM 이 정상적으로 설치 되었는지 확인해 봅니다.
$ nvm --version
개발환경과 같은 버전의 Node js 를 설치해 줍니다.
$ nvm install --lts
Node js 가 정상적으로 설치 되었는지 확인해 봅니다.
$ node -v
NPM 을 설치해 줍니다.
$ sudo apt-get install npm
3. Git 설치 및 프로젝트 클론
이제 작업한 파일들을 Ubuntu Server 에 복사해 주어야 합니다.
저는 Git 을 이용해 작업해 왔었기 때문에 Ubuntu Server 에 Git Clone 을 생성하겠습니다.
Git 은 기본적으로 설치가 되어 있습니다.
4. MariaDB 복사
로컬 -> 원격
준비
1. 로컬, 원격 같은 혹은 호환되는 버전의 MariaDB 가 설치되어 있어야 함.
2. 원격으로 접근 가능한 계정 추가
3. DB 데이터 복제
$ mysqldump -h [주소] -u [계정] -p [패스워드] [DB명] > [파일명].sql
$ mysql -h [주소] -u [계정] -p [패스워드] [DB명] < [파일명].sql
예)
로컬에 정의된 loaclDB 를 192.168.0.1 원격에 remoteDB 로 복사
$ mysqldump -u local -p local localDB > dump.sql
$ mysql -h 192.168.0.1 -u remote -p remote remoteDB < dump.sql
5. Ubuntu Deamon 설정
www.axllent.org/docs/nodejs-service-with-systemd/
로컬에서 했듯이 SSH 접속을 통해 Ubuntu 에서 Node js 프로젝트를 실행시키면 잘 돌아 갑니다.
근데 SSH 접속한 PC 가 꺼지면 서버도 같이 내려가는 듯 합니다.
원인을 찾아보니 제가 실행시킨 방법은 SSH 연결이 되있는 동안 살아있는 프로세스를 만든 것 입니다.
진짜 서버 처럼 구동하기 위해서는 Ubuntu Deamon 설정을 해 백그라운드로 돌아가게 해 주어야 한다고 합니다.
실행중인 Node js 의 로그는 다음 방법으로 확인할 수 있습니다.
$ journalctl -u [서비스 명].service
위의 명령어를 실행시켰을 때에는 기록된 모든 로그가 나와 보기 힘듭니다.
필요한 옵션을 확인해 조절 해서 사용하면 편리합니다.
추가 적으로 로그양이 너무 많아 용량이 문제가 되는 케이스도 위 명령어를 통해 해결 가능하다고 합니다.
www.lesstif.com/system-admin/linux-journalctl-82215080.html
이사하고 나서 텔레그램의 Webhook 이 되지 않습니다.
개발 노트북에서 테스트 해보니 SSL 을 막으면 Webhook 이 작동하지 않는 것 같습니다.
SSL 인증서를 Ubuntu 로 옮기던가, 새로 SSL 인증을 받아야 할 것 같습니다..
community.letsencrypt.org/t/moving-and-merging-certs-from-server-a-to-b/19015
ivanderevianko.com/2019/03/migrate-letsencrypt-certificates-certbot-to-new-server
$ certbot renew --dry-run
Certbot 버전이 달라 에러가 납니다. Ubuntu 버전은 0.40.0 이고 원래 버전은 1.10.1 이라 문제가 있다고 합니다.
구글링으로 찾아서 설치해 줬던걸, Certbot 가이드 대로 다시 설치 해 줍니다.
$ sudo apt install snapd
$ sudo snap install core; sudo snap refresh core
$ sudo apt-get remove certbot
$ sudo snap install --classic certbot
$ sudo ln -s /snap/bin/certbot /usr/bin/certbot
다른 에러로 바뀌었습니다.
'An authentication script must be provided with --manual-auth-hook when using the manual plugin non-interactively.'
darkstart.tistory.com/109?category=871909
blog.realsangil.net/2018/10/letsencrypt-wildcard-certification-renew/
$ certbot renew
테스트가 아닌 갱신을 해봤더니 아직 시간이 남아서 갱신되지 않는다고 합니다.
'Works > Web' 카테고리의 다른 글
[Web] 원격 배포를 쉽게 하기 (Jenkins) (0) | 2021.01.31 |
---|---|
[Web] Maria DB 설치 및 사용 (0) | 2021.01.16 |
[Web] Mac OS 에서 SSL 인증 받기 (1) | 2021.01.02 |
[Web] 공통 HTML 코드 별도로 관리하기 (0) | 2021.01.02 |
[Web] Cloud FireStore 관리자 생성 및 관리자 접근 권한 부여 (0) | 2020.12.31 |
댓글