안쓰는 노트북으로 서버를 만들어보자(2)

안상철·2023년 1월 6일
1

이번 포스팅에서는 홈 서버를 만들기 위한 단계중에서

  1. 우분투 서버에 프로젝트를 올린다.
  2. mySQL과 자바, Nginx 등등을 설치한다.
  3. 24시간 돌린다

을 진행 해 본다.

4. 우분투 서버에 프로젝트를 올린다.

1. 프론트

참고: https://hplayground.tistory.com/105

1. Vue.js를 Ubuntu(18.04)에 배포하기
  1. nginx 설치
$ sudo apt upgrade

위와 같이 업데이트/업그레이드를 해준 후,
$ sudo apt-get install nginx

nginx를 설치한다.

그리고 nginx를 테스트하기 전에 방화벽 소프트웨어를 조정하여 서비스에 액세스 할 수 있도록 해야한다고 한다.


Available applications:
  Nginx Full
  Nginx HTTP
  Nginx HTTPS
  OpenSSH
  

ufw app list를 치면 아래의 output과 같이 나오는데,

Nginx Full :이 프로필은 포트 80 (암호화되지 않은 일반 웹 트래픽)과 포트 443 (TLS / SSL 암호화 트래픽) 모두를 연다.
Nginx HTTP :이 프로필은 포트 80 (일반, 암호화되지 않은 웹 트래픽)을 연다
Nginx HTTPS :이 프로필은 포트 443 (TLS / SSL 암호화 트래픽)을 연다.
라고 한다.

일단 HTTP를 열어준다.

$ sudo ufw allow 'Nginx HTTP'

  1. nginx 설정파일 만지기

vue를 직접 설치하거나 dist파일을 꽂아주기 전에 config 설정 파일을 수정 해 줘야 한다.

$ sudo vi /etc/nginx/sites-available/default
위 명령어로 conf 파일에 접근한 다음

server {
        listen 3000 default_server;
        listen [::]:3000 default_server;

        root /var/www/html/vue-front/dist;

        index index.html;

        server_name _;

        location / {
                try_files $uri $uri/ /index.html;
        }
}

3000포트로 접속될 수 있게 수정 해 준다.. 원래 기본이 80포트로 되어있는데 각자가 원하는 포트로 설정 해 주면 된다..

그리고 root는 vue dist 디렉토리를 지정하면 된다. 이 또한 기본으로 /var/www/html 디렉토리 안에 vue를 설치하거나 dist를 직접 꽂아주면 된다.

index는 index.html로 설정하였다.

location / { ... }의 try_files $uri $uri/ /index.html; 는

링크를 참고하여 설정해주었다.

esc키 -> :wq 를 입력하여 저장, 닫기 한다.

설정 해 준 위치에 dist 파일을 꽂고 포트에 접속하면 vue화면을 볼 수 있다.

다음은 API를 올려보자.

원래 도커 ~ 젠킨스로 CI/CI환경을 구축하려 했으나 SSH 문제로 잘 되지 않아서 putty를 이용해 직접 빌드된 api를 올려줬다.

putty 사용방법 역시 구글링을..

중요한건 api를 24시간 돌릴 수 있도록 해 주는 스크립트이다.

api를 돌릴 디렉토리에 빌드.jar war 파일을 올려준 후 원하는 곳에 다음과 같은 스크립트를 작성 해 준다.

CURRENT_PID=$(ps -ef | grep java | awk '{print $2}')

 if [ -z $CURRENT_PID ]; then
echo "> 현재 구동중인 어플리케이션이 없습니다."

else
echo '>실행중인 어플리케이션 종료'
echo "> kill -9 $CURRENT_PID"
kill -9 $CURRENT_PID
echo '>실행중인 어플리케이션 종료 완료'
fi
echo ">어플리케이션 배포"
rm -rf /home/anna/api/server.log
nohup java -jar -Dspring.profiles.active=product /home/anna/api/api-0.0.1-SNAPSHOT.jar >> /home/anna/api/server.log &

echo ">어플리케이션 배포 완료"

echo 부분은 로그 확인을 위해 작성 한 것이므로 삭제해도 무방하다.
현재 구동중인 어플리케이션이 있다면 종료하고 다시 실행하고, nohup을 통해 정해준 위치에 있는 jar파일을 24시간 가동한다. 스프링 프로필은 운영서버로 둘 것이기 때문에 product로 설정하였다.

5. mySql와 JAVA 설치

는 구글링을 하면 쏟아져 나오기 때문에 따로 작성하지 않겠다.

이상으로 홈서버를 구축 해 보았다.
글은 짧지만 모두 이해하고 구현하는데 까지는 정말 오랜 시간이 걸렸다..ㅠㅠ
이제 여러분은 비싼 클라우드 서비스를 사용하는 대신 월 n만원 정도의 전기세만으로 서버를 돌릴 수 있다!

쿠버네틱스나 도커 등으로 서버를 쪼개 여러서버를 사용하는 방법도 있던데 차차 알아봐야겠다.

profile
웹 개발자(FE / BE) anna입니다.

0개의 댓글