[express] 라즈베리파이 이미지서버 사용
프로젝트/소규모프로젝트들

[express] 라즈베리파이 이미지서버 사용

728x90

 

라즈베리파이를 활용해서 이미지서버를 올려보았다.

 

간단하게 이미지를 받으면 이를 파일로 저장하고, 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

 

라즈베리파이로 웹서버 만들기 (1) - 밖에서 라파 접속하기

이번에 새롭게 웹 프로젝트를 시작하려 하니 서버가 마음에 걸렸다. nCloud나 AWS나 몇몇 선택지가 있긴 했지만 가격이 아무래도 마음에 좀 걸렸었다... 그러던 중 집에 굴러다니던 라즈베리파이

supersfel.tistory.com

 

해당 시리즈를 한번 읽어보면 좋을 것 같다.

728x90