라즈베리파이를 활용해서 이미지서버를 올려보았다.
간단하게 이미지를 받으면 이를 파일로 저장하고, url로 해당 이미지를 띄워주는 간단한 기능을 하는 서버라 크게 어려울 것은 없다.
라이브러리는 아래 3개를 사용한다.
"dotenv": "^16.3.1",
"express": "^4.18.2",
"multer": "^1.4.5-lts.1"
프로젝트를 하나 만들어준 후 3개의 라이브러리를 설치해주자.
npm init
npm install --save dotenv
npm i express
npm i multer
express를 통해서 간단하게 서버를 열어 두고 이미지를 받는 API 를 하나 만들었다.
multer 라이브러리를 통해서 파일을 받고 저장하는걸 관리한다.
import express from "express";
import multer from "multer";
import path from "path";
import "dotenv/config";
const app = express();
const port = process.env.PORT;
const url = process.env.URL;
const storage = multer.diskStorage({
destination: (req, file, cb) => {
cb(null, "images/");
},
filename: (req, file, cb) => {
const uniqueSuffix = Date.now() + "-" + Math.round(Math.random() * 1e9);
cb(
null,
file.fieldname + "-" + uniqueSuffix + path.extname(file.originalname)
);
},
});
const upload = multer({ storage });
app.post("/upload", upload.single("image"), (req, res) => {
// 업로드된 이미지의 URL 생성
const imageUrl = `${url}:${port}/images/${req.file.filename}`;
// 이미지 URL과 함께 응답 전송
res.json({ message: "이미지 업로드 완료", imageUrl: imageUrl });
});
app.use("/images", express.static("images"));
app.listen(port, () => {
console.log(`서버가 ${url}:${port} 에서 실행 중입니다.`);
});
해당 파일을 라즈베리파이 올리기 위해서 git을 활용할 것이기에 url과 port 번호를 .env로 감춰주었다.
.env에 원하는 포트번호와 url을 입력하면 된다.
PORT = 포트번호
URL = url입력
이대로만 라즈베리파이에서 실행하면 동작이 되지 않을 것이다. port를 새로 추가해주었으니 포트포워드를 통해서 외부에서 해당 포트에 접근할 수 있도록 열어주어야 한다.
이전글들에 해당 과정을 잘 서술해 두었으니 참조해도 좋을 것 같다.
개인적으로 공부용으로 서버를 두고 있어 굉장히 포트를 많이 사용하고 있다..
아무튼 이제 라즈베리파이에 ssh접속을 통해서 들어가자.
이후 git clone 명령어를 통해서 위 파일을 다운받은 후, nano나 vi 텍스트 편집기를 활용해서 .env파일을 직접 추가해주자.
마지막으로 pm2를 활용해서 해당 파일을 실행시켜주면 이미지 서버가 완성된다.
pm2 start server.js
아래처럼 url로 올린 이미지에 접근할 수 있는 이미지서버가 생성되었다.
만약 라즈베리파이에서 서버를 구동하는 방법이 헷갈린다면
https://supersfel.tistory.com/368
해당 시리즈를 한번 읽어보면 좋을 것 같다.
'프로젝트 > 소규모프로젝트들' 카테고리의 다른 글
[React,Emotion] 회전 Dial 컴포넌트 만들기 (0) | 2023.12.07 |
---|---|
라즈베리파이로 웹 서버 만들기 (3) - 배포하기 (0) | 2023.01.27 |
라즈베리파이로 웹 서버 만들기 (2) - 라파 DB 서버로 사용하기 (1) | 2023.01.24 |
라즈베리파이로 웹서버 만들기 (1) - 밖에서 라파 접속하기 (3) | 2023.01.24 |
mdx Editor만들기 (마크다운 에디터) (1) | 2022.11.27 |