-
ubuntu server 설정DevOps 2023. 4. 9. 10:07
간단한 웹 앱을 만들어 배포하고 싶었는데 GCP 에서 VM 을 생성해서 쓰려니 e2-medium 정도만 해도 월 30불이 넘어가서 너무 비싸게 느껴졌어요.
집에 게임하려고 사둔 데스크탑이 있는데 잘 안 써서 서버로 쓰려고 하는 과정을 중간에 삽질을 좀 했어서 메모해 둬요.
가끔 윈도우도 쓰고 싶을 테니 멀티부팅으로 설치했어요.0. 초기 설정
타임존 설정
sudo timedatectl set-timezone Asia/Seoul
sudo systemctl reboot
패키지 업데이트
sudo apt update
sudo apt-get --purge --no-install-recommends dist-upgrade
sudo apt-get --purge --no-install-recommends autoremove
neovim 설치
sudo apt-get --purge --no-install-recommends install neovim
sudo update-alternatives --set vim /usr/bin/nvim
1. ssh 설정
맥에서 접근하기 편하게 설정해 줘요.
OpenSSH 설치
sudo apt-get update
sudo apt-get instlal openssh-server
포트 설정
/etc/ssh/sshd_config
에서 port 주석 해제 후 원하는 포트(2222)로 변경sudo ufw allow 2222/tcp
systemctl status ssh
ssh key 생성
미리 생성하고 github 에 키를 등록해줘요.ssh-keygen -t ed25519
desktop authorized_key 추가
- 맥의 공개키 데스크탑의
~/.ssh/authorized_key
에 추가
mac ssh config 설정
vim ~/.ssh/config
Host [host] HostName [hostname] Port 2222 User [user]
2. DNS 설정
kingsubin.com 도메인을 쓰기 위해 DNS A 레코드를 추가해요.
멋진 이름이 생각이 안 나서 일단api.kingsubin.com
으로 해요.3. 공유기 포트포워딩
iptime 공유기를 쓰고 있어서 공유기 관리자 페이지(192.168.0.1 )에서 외부에서 접속할 수 있게 80, 443 포트를 desktop의 IP(내부 IP) 80, 443 포트로 연결해 줘요.
4. ssl 인증서 발급
https 로 접속하기 위해 ssl 인증서를 발급받아요.
인증서 발급받기
sudo apt-get update
sudo apt-get install --purge --no-install-recommends certbot python3-certbot-nginx
sudo certbot --nginx -d api.kingsubin.com
5. nginx 설정
nginx 에서 인증서 관련 설정을 해줘요.
sudo vim /etc/nginx/sites-available/default
listen 443 ssl; ssl_certificate /etc/letsencrypt/live/api.kingsubin.com/fullchain.pem; ssl_certificate_key /etc/letsencrypt/live/api.kingsubin.com/privkey.pem;
sudo systemctl restart nginx
sudo systemctl status nginx
정상 작동하는지 https://api.kignsubin.com 으로 들어가 보니 nginx 페이지가 잘 있어요.
5. docker 설치
나중에 여러 앱을 띄울 수도 있으니 docker 를 설치해서 사용해요.
나중에 쓸 것 같으니 네트워크도 따로 만들어줘요.
docker network create network-1
외부에서 잘 접속이 되는지 확인하기 위해 간단한 node app 을 도커 이미지로 만들어요.
포트를 열고 컨테이너를 띄워서 확인해 봐요.
docker run -p 3000:3000 --network=network-1 -d subin/node-web-app
curl -v http://api.kingsubin.com:3000
6. postgresql 설치
모두 docker container 로 띄울 것 같아서 데이터베이스도 도커로 설치해 봐요.
docker pull postgres:latest
postgres 를 위해 docker volume 을 생성해 줘요.
docker volume create postgres15-data
postgres 를 실행시켜 봐요.
docker run -p 5432:5432 --name postgres --network=network-1 -v postgres15-data:/var/lib/postgresql/data -e POSTGRES_PASSWORD=postgres -d postgres
로그에 UTC 가 찍히는데 KST 로 바꿔서 보기 편하게 해 줘요.
docker exec -it postgres bash
apt-get update
apt-get install vim
vim /var/lib/postgresql/data/postgresql.conf
맥에서 SQL 클라이언트로 접속하기 편하게 5432 포트도 열어줘요.
기본 설정은 끝났고 추가 페이지가 생기면 nginx 에서 proxy_pass 설정만 해주면 될 것 같아요.
아직 배포할 게 없어서 여기까지만 설정할게요.
다음에는 뭐든 배포해 볼게요. 빠잉'DevOps' 카테고리의 다른 글
Github Actions self-hosted runners (1) 2023.06.03 GCP Monitoring Mattermost Notification (0) 2023.05.12 AWS GCP 도메인 이전 (0) 2023.01.04 Google Cloud Translation API detect confidence (0) 2022.09.24 AWS 정적 웹 사이트 배포 과정 (1) 2022.01.11