처음에는 파이썬 flask 사용하려다 nodejs로 갈아탐 ...
nodejs만 사용하면 오류가 존재한다고 nginx를 거쳐서 들어오는 것을 추천한다고 한다.
사실 개인적으로 사용할 것이라 굳이 nginx를 사용하지 않아도 되지만... 익숙해질겸 사용해본다.
환경은 라즈베리파이3 buster이다.
1. 필요 패키지 설치
1-1. nginx 설치
sudo apt-get install nginx
1-2. nodejs 설치
sudo apt-get install nodejs
node -v로 설치 확인
1-3. npm 설치
nodejs를 설치하면 npm도 같이설치된다길래 그런가보다 했는데 설치가 안됨. 따로 설치
sudo apt-get install npm
1-4. express 설치
참고로 나의 경로는 /home/park/www에 설치
sudo npm init
sudo npm install express
https://expressjs.com/en/starter/installing.html
2. 설정
2-1.nginx 설정
/etc/nginx/nginx.conf 파일 수정한다. log파일 경로만 바꿔줄 것이니 필수는 아니다.
http 구역에 access_log와 error_log 경로만 수정해준다. 경로에 logs폴더가 없으면 생성하자.
# sudo vim /etc/nginx/nginx.conf
access_log /home/park/logs/nginx_access.log;
error_log /home/park/logs/nginx_error.log;
/etc/nginx/site-available/ftp-server를 생성한다.
nodejs를 80번 포트로 두는 것 보다는
nginx 80번으로 들어와 라우트하는 것이 더 안정성이 높다고 한다.
그리고 기존에 존재하는 default는 삭제한다.
# sudo vim /etc/nginx/site-available/ftp-server
server {
listen 80;
location / {
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header Host $http_host;
proxy_set_header X-NginX-Proxy true;
proxy_pass http://127.0.0.1:3000/;
proxy_redirect off;
}
gzip on;
gzip_comp_level 2;
gzip_proxied any;
gzip_min_length 1000;
gzip_disable "MSIE [1-6]\."
gzip_types text/plain text/css application/json application/x-javascript text/xml application/xml application/xml+rss text/javascript;
}
심볼릭 링크를 생성해준다.
sudo ln -s /etc/nginx/sites-available/ftp-server /etc/nginx/sites-enabled
nginx를 재시작한다.
sudo service nginx restart
2-2. npm start
이전 nginx에서 nodejs 포트를 3000번으로 지정해줬기 때문에 포트는 3000번으로
/home/park/www/app.js를 수정한다.
# sudo vim /home/park/www/app.js
const express = require('express')
const app = express()
const port = 3000
app.get('/', (req, res) => {
res.send('Hello World!')
})
app.listen(port, () => {
console.log(`Example app listening on port ${port}`)
})
수정하였으면 스타트시킨다.
# 위치는 /home/park/www/
sudo node app.js
'프로그래밍 > NodeJS' 카테고리의 다른 글
[NodeJS] 프롬프트 기반 입출력 처리 (0) | 2024.09.23 |
---|---|
[NodeJS] Sematic URL여러개를 하나의 변수로 받아오기 (0) | 2023.03.02 |
npm nodemodules import하기 (0) | 2023.01.30 |
[JS] webserver 최대 크기 문제 해결(feat. dropzone) (2) | 2022.12.18 |
[NodeJS] Buffer 함수 사용법 (0) | 2021.01.26 |
댓글