서버세팅

한라봉봉·2025년 4월 30일

Ubuntu
sudo apt update, sudo apt upgrade 먼저 하고 아래 내용 진행

1. java 설치

# 1. OpenJDK 17 풀 버전 설치
sudo apt update
sudo apt install -y openjdk-17-jdk

# 2. 설치 경로 확인
ls /usr/lib/jvm/
# 보통은 /usr/lib/jvm/java-17-openjdk-amd64 로 설치됨

# 3. 환경 변수 설정
sudo vi /etc/profile
#/etc/profile 맨 아래에 추가:
export JAVA_HOME=/usr/lib/jvm/java-17-openjdk-amd64
export PATH=$PATH:$JAVA_HOME/bin
export CLASSPATH=$JAVA_HOME/lib

# 4. 변경 적용
source /etc/profile

# 5. 확인
echo $JAVA_HOME
java -version
javac -version

2. nvm 설치

curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.3/install.sh | bash
source ~/.bashrc
nvm install 22.14.0
node -v
특정 버전을 사용하기
nvm use <version>

위 과정에서 계속 time spent 만 변화하고, 설치가 되지 않는다면, 외부 443포트로 아웃바운드 요청이 안되고 있는것일 수있으므로 아래 내용을 확인하고 패킷로스가 100% 라면 인프라에 외부인테넷에 접근이 안된다고 열어달라고 요청

curl -I https://www.google.com

3. nginx 설치

sudo apt install nginx

아래 내용 에러시, 클라우드 서버, VPS, 가상머신에서 종종 나오는 현상으로, IPv6가 문제임.
/etc/nginx/sites-available/default 파일에서 아래 내용(v6) 주석처리
listen [::]:80 default_server;

nginx: [emerg] socket() [::]:80 failed (97: Unknown error)
nginx: configuration file /etc/nginx/nginx.conf test failed

정상 설치 확인

sudo systemctl status nginx

/etc/nginx/sites-available 폴더에 설정파일(도메인명과 같게 파일명 설정) 아래와 같이 생성

server {
    listen 80;
    server_name 퍼블릭 IP나 도메인 적어주십쇼;

    # Vue.js 정적 파일 서빙 설정
    root /var/www/classhub/dist;
    index index.html;

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

    # API 요청을 스프링 부트 서버로 프록시 설정
    location /api/ {
        proxy_pass http://127.0.0.1:8087;
        proxy_redirect off;
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Forwarded-Proto $scheme;
        proxy_set_header X-NginX-Proxy true;
    }
    # 웹소켓 프록시 설정
    location /whiteboard {
        proxy_pass http://127.0.0.1:8087;  # 웹소켓 서버가 스프링 부트 애플리케이션과 동일한 포트에서 실행 중이어야 합니다.
        proxy_http_version 1.1;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection "Upgrade";
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Forwarded-Proto $scheme;
    }
}

/etc/nginx/sites-available 내의 default 파일 전부 주석처리

symlink 생성 및 Nginx 설정 테스트, 재가동

sudo ln -s /etc/nginx/sites-available/어쩌구.conf /etc/nginx/sites-enabled/어쩌구.conf
sudo nginx -t
sudo systemctl restart nginx
  1. /etc/nginx/ nginx.conf 에서 include /etc/nginx/sites-enabled/*; 가 되어있는지 확인
  2. 기존 심볼릭링크 파일삭제 sudo rm /etc/nginx/sites-enabled/어쩌구.conf
  3. sites-available에 있던 파일 복사 sudo cp /etc/nginx/sites-available/dtb.aitextbook.co.kr /etc/nginx/sites-enabled/어쩌구.conf
  4. 재시작 sudo systemctl restart nginx
  5. /etc/nginx/nginx.conf, /etc/nginx/conf.d/.conf, /etc/nginx/conf.d//*.conf 전체 파일에 http 블록에 disable_symlinks on 설정

4. 폴더 생성, jenkins 배포 대상 권한 부여

/apps 폴더 생성
-> 내부에 deploy.sh 생성
-> sudo chmod -R 777 apps/

/var/www/ats 폴더 생성-> sudo chmod -R 777 ats/

5. 기타 프로그램 추가

FFmpeg is the leading multimedia framework

sudo apt install ffmpeg  
ffmpeg -version
ffprobe -version

which ffmpeg
which ffprobe

일반적으로 아래 위치 중 하나:

/usr/bin/ffmpeg

/usr/bin/ffprobe

6. 젠킨스에서 아이템 추가

profile
백엔드 개발공부 로그를 기록합니다

0개의 댓글