spring to ec2

Spring 프로젝트에서 /build에서 ./gradlew clean build 하면 /build/libs에 jar 파일 생성

jar 파일은 .gitignore에 지정되어있기 때문에 올라가지 않음 그래서 git add -f crud-0.0.1-SNAPSHOT.jar 해서 git에 build 된 jar 파일 올리기

서버의 /var/www에서 git clone
/var/www/makeserver/crud/build/libs에서 jar 파일 실행
java -jar crud-0.0.1-SNAPSHOT.jar 하면 실행됨

그 전에 nginx 설정 등 할게 많음

내 생각에는 nginx 와 apache2 동시에 올려놓을 수 없음

이걸로 엄청 애먹었다. nginx 끄고 apache2 켜고 다시 nginx start 할라니까 안되고 근데 알고봤더니 원래 안되는것 이었다.

많은 설정할 것들

EC2 보안그룹

nginx

nginx 서버 연동

도메인 연결

서버 블록 생성

sudo vi /etc/nginx/sites-available/{donain}

server { # server 블록
	listen 80;

    server_name {domain} www.{domain};
    
    access_log /var/log/nginx/proxy/access.log;
    error_log /var/log/nginx/proxy/error.log;

    location / { # location 블록
        include /etc/nginx/proxy_params;
        proxy_pass http://{퍼블릭IP주소}:8088;	# reverse proxy의 기능
    }
}

이 코드로 location 블록의 proxy_pass로 8088번 포트로 접속해야 볼 수 있는 화면(Spring 프로젝트 화면)을 80번 포트에 접속했을 때 확인할 수 있도록 설정. Reverse proxy 기능 설정

nginx는 이제 listen 지시문에 의해 포트 80으로 들어오는 요청들에 대해 servername과 정확하게 일치하는 서버 블록을 찾으러고 시도한다. server_name 추가할 때 버킷 메모리 문제가 발 생할 수 있기에 아래와 같이 주석처리를 제거합니다.

/etc/nginx/nginx/nginx.conf

http { ...
	server_names hash_bucke_size 64;	# 주석 처리를 제거
	...
}
sudo ln -s /etc/nginx/sites-available/{domain} /etc/nginx/sites-enabled/
sudo rm  /etc/nginx/sites-available/default
sudo rm  /etc/nginx/sites-enabled/default
sudo nginx -t
sudo service nginx reload
java -jar {jar 파일명}.jar

nohup java -jar {jar 파일명}.jar & // 무중단 배포 (백그라운드 실행)