원했던 기능을 구현은 했지만 구동을 위해 노트북을 계속 켜 놓을 순 없습니다. 방치중인 라즈베리 파이에 환경을 옮겨 봅니다.
이쪽 전문이 아니라서 용어나 설명은 미흡할 수 있습니다. 이해 부탁드리고, 잘못된 부분은 지적해 주시면 감사하겠습니다~^^
1. OS 설치
일단 OS 는 Ubuntu Server 를 사용하기로 합니다.
ubuntu.com/download/raspberry-pi
Install Ubuntu on a Raspberry Pi 2, 3 or 4 | Ubuntu
Ubuntu is an open-source operating system for cross platform development, there's no better place to get started than with Ubuntu on a Raspberry Pi.
ubuntu.com
자신의 Pi 기기에 맞는 OS 를 선택합니다.
ubuntu.com/tutorials/how-to-install-ubuntu-on-your-raspberry-pi#1-overview
How to install Ubuntu Server on your Raspberry Pi | Ubuntu
Ubuntu is an open source software operating system that runs from the desktop, to the cloud, to all your internet connected things.
ubuntu.com
가이드대로 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 을 설치해 줍니다.
nvm-sh/nvm
Node Version Manager - POSIX-compliant bash script to manage multiple active node.js versions - nvm-sh/nvm
github.com
위 페이지의 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/
Run node.js service with systemd - Axllent.org
Automatically starting a node.js service is easy and reliable with systemd. There is now no need to install additional node.js modules (such as ‘forever’).
www.axllent.org
로컬에서 했듯이 SSH 접속을 통해 Ubuntu 에서 Node js 프로젝트를 실행시키면 잘 돌아 갑니다.
근데 SSH 접속한 PC 가 꺼지면 서버도 같이 내려가는 듯 합니다.
원인을 찾아보니 제가 실행시킨 방법은 SSH 연결이 되있는 동안 살아있는 프로세스를 만든 것 입니다.
진짜 서버 처럼 구동하기 위해서는 Ubuntu Deamon 설정을 해 백그라운드로 돌아가게 해 주어야 한다고 합니다.
실행중인 Node js 의 로그는 다음 방법으로 확인할 수 있습니다.
$ journalctl -u [서비스 명].service
위의 명령어를 실행시켰을 때에는 기록된 모든 로그가 나와 보기 힘듭니다.
필요한 옵션을 확인해 조절 해서 사용하면 편리합니다.
추가 적으로 로그양이 너무 많아 용량이 문제가 되는 케이스도 위 명령어를 통해 해결 가능하다고 합니다.
www.lesstif.com/system-admin/linux-journalctl-82215080.html
Linux journalctl 사용법
www.lesstif.com
이사하고 나서 텔레그램의 Webhook 이 되지 않습니다.
개발 노트북에서 테스트 해보니 SSL 을 막으면 Webhook 이 작동하지 않는 것 같습니다.
SSL 인증서를 Ubuntu 로 옮기던가, 새로 SSL 인증을 받아야 할 것 같습니다..
community.letsencrypt.org/t/moving-and-merging-certs-from-server-a-to-b/19015
Moving and merging certs from Server A to B
I have 2 AWS Ubuntu servers. Each are running a single site. Each have Let’s Encrypt certs installed and are redirecting to https and have nginx in front of them. Let’s encrypt is setup to auto-renew - a setting in crontab. I’m moving one of the site
community.letsencrypt.org
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
lets encrypt 인증서 갱신 실패
crontab을 이용해서 인증서를 자동 갱신하도록 만들어놨는데.. 오늘 확인해보니 인증서가 갱신이 되지 않았습니다. sudo certbot renew --renew-hook "sudo /opt/bitnami/ctlscript.sh restart apache" 위와 같이..
darkstart.tistory.com
blog.realsangil.net/2018/10/letsencrypt-wildcard-certification-renew/
Let's Encrypt 와일드카드 인증서 갱신해보기
blog.realsangil.net
$ 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 |
댓글