ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 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
킹수빈닷컴