모두 모여라, 모모 서비스에는 이미지를 관리하는 기능이 있다. 미리 저장해둔 이미지를 조회하는 용도로만 관리하는 카테고리 이미지와 생성한 모임에 대해 원하는 썸네일을 지정할 수 있는 모임 이미지가 있다. 서버 구축을 AWS 를 사용하는 개발자들은 대부분 이미지 관리를 위해 S3 를 사용할 것이다. 하지만 우아한테크코스에서 제공하는 AWS 의 서버는 EC2 로 제한되어 있었기 때문에 EC2 만을 이용하여 원하는 서버를 구현해야 하는 문제가 있었다.
일단 이미지 서버를 구축하기에 앞서, 이미지를 관리하는 서버에서 어떤 기능들을 제공해야 하는지 정리해보았다.
이미지 서버의 역할 | 동작 기능 | |
---|---|---|
카테고리 | 미리 저장되어 있는 이미지 조회 | 카테고리 아이콘 조회 |
모임 | 미리 저장되어 있는 이미지 조회 | 모임 썸네일 조회 |
새로운 이미지 업로드 | 모임 썸네일 수정 |
간단하게 이미지를 저장 및 조회하는 기능만을 구현할 예정이다. 이미지 서버에 저장되어 있는 이미지를 조회하기 위해서 웹 서버
가, 이미지를 저장하기 위해서 스프링 애플리케이션
을 구현하려고 한다.
웹 서버의 종류는 다양하지만 보통 많이 사용하는 것은 Apache, Nginx 이다. 두 개의 웹 서버 중 메모리의 사용량을 아끼고 비교적 성능이 좋은 Nginx 를 선택하였다.
일단 EC2 에 Nginx 를 설치한다.
$ sudo apt-get install nginx
$ sudo nginx -v
nginx version: nginx/1.18.0 (Ubuntu)
$ curl -I 127.0.0.1
HTTP/1.1 200 OK
Server: nginx/1.18.0 (Ubuntu)
Date: Sun, 19 Mar 2023 04:13:09 GMT
Content-Type: text/html
Content-Length: 612
Last-Modified: Sun, 19 Mar 2023 04:11:40 GMT
Connection: keep-alive
ETag: "64168b7c-264"
Accept-Ranges: bytes
기본 경로로 접속해보면 Nginx 의 동작을 확인할 수 있다.
Nginx 를 설치했으니 웹 서버가 해주어야 하는 기능만 conf 파일에 설정하면 된다. conf 파일에 설정해야 하는 것들은 아주 간단하다. 이후에 Spring 애플리케이션으로 저장할 이미지를 외부에서 접근할 수 있도록 설정해주면 된다.
/etc/nginx/momo/image.conf
http {
server {
location / {
root /home/ubuntu/momoimage/build/libs/image-save;
}
}
}
기본으로 제공되는 conf 파일에 이미 여러 셋팅이 포함되어 있어 내가 추가한 부분을 구분하기 위해 별도의 conf 파일을 생성 후 include 부분을 추가하였다.
/etc/nginx/nginx.conf
...
http {
...
include /etc/nginx/conf.d/*.conf;
include /etc/nginx/sites-enabled/*;
include /etc/nginx/momo/*.conf; // 추가
}