728x90

https://github.com/kairo96/and_node 에서 web 에 폴더 구조를 확인한다.

자세한 내용 확인을 위해서는 책을 구입해야 한다.

책없이 간략하게 동작되는 걸 확인해보고자 한다면 아래 스크립트를 이용하여 node.js 를 설치해 볼 수 있다.

 

# 아래 코드는 root 권한을 가진 관리자 모드에서 실행하기 때문에 #은 주석을 의미한다.
# 방화벽 포트 확인
firewall-cmd --permanent --zone=public --add-port=3000/tcp
firewall-cmd --reload
firewall-cmd --list-all
 
###### nodejs 설치 ##########
yum -y install python gcc-c++ make
 
# 아래 3줄로 설치하면 버전이 낮으니까 이 방식으로 설치하지 말자.
yum -y install epel-release
yum -y install nodejs
yum -y remove nodejs
 
# https://nodejs.org/ 에서 최신버전 LTS를 확인한다.
cd /home
wget https://nodejs.org/dist/v14.15.3/node-v14.15.3-linux-x64.tar.gz
tar xvzf node-v14.15.3-linux-x64.tar.gz
mv node-v14.15.3-linux-x64 nodejs
 
# 실행파일 PATH 지정하기
vi /etc/profile
# pathmunge 윗 줄에 아래 2행 추가
export NODE_HOME=/home/nodejs
export PATH=$PATH:$NODE_HOME/bin
:wq
# 작성한 PATH 적용 시키기
source /etc/profile 
 
# nodejs 버전 확인
node -v
npm -v
 
# nodejs를 실제 설치할 폴더를 만들고 관련 모듈을 설치한다.
cd /home
mkdir node
cd node
 
npm install express-generator -g
# 원래 프로젝트를 생성할 때는 npm init 명령을 사용하지만 express -e www 을 하면 자동으로 만들어진다.
# express-generator 로 설치하면 기본적으로 ejs, jade 모듈은 설치된다.
# jade 기본 형식에서 가장 중요한 것은 들여쓰기이다.
# 들여쓰기는 탭과 띄어쓰기 중 한가지 형태만 사용해야 한다. 혼용하면 에러가 발생한다. 일반적으로 4간 들여쓰기를 한다.
 
express -e www
cd www
npm install
 
# 외부 모듈 설치
npm install formidable mysql --save
 
# nodemon을 어떤 프로젝트에서도 사용할 수 있게 전역으로 설치한다.
npm install nodemon -g
#npm install nodemon --save-dev
 
# npm list 로 설치된 모듈을 확인할 수 있다.
 
# body-parser : POST 요청 데이터를 추출하는 미들웨어
npm install body-parser --save
 
# cookie-parser : 쿠키 요청을 추출하거나 확인하는 미들웨어 모듈
npm install cookie-parser --save
 
# express-session : 세션을 쉽게 생성할 수 있게 도와주는 미들웨어 모듈
npm install express-session --save
 
# 예상하지 못한 오류가 발생했을 때 그 오류를 처리할 수 있는 미들웨어
npm install express-error-handler --save
 
# multer : 파일 업로드하기 위한 미들웨어
# 파일을 업로드할 때는 멀티 파트(multipart) 포멧으로 된 파일 업로드 기능을 사용하며, 
# 파일 업로드 상태 등을 확인할 수 있다.
npm install multer --save
 
# 암호화 저장 미들웨어
npm install crypto --save
 
npm install serve-favicon --save
 
# 로그를 출력하는 미들웨어 모듈 (express 에서 설치되어 있으면 설치할 필요 없음)
npm install morgan --save
 
# 서버 실행 모듈
npm install -g supervisor
# nodejs 같은 단일 쓰레드 기반의 웹 서비스는 예외 하나로 웹 서비스 전체가 죽어버린다.
# 이러한 예외 상황을 대비하고자 만들어진 모듈이 forever 모듈이다.
npm install -g forever
 
#package.json 파일에 추가(fsevents 패키지 모듈은 macOS(OSX)용 이므로 경고 메시지 출력되므로 경고 메시지 제거 목적)
vi package.json
  "optionalDependencies": {
    "fsevents""*"
  }
 
 
# npm 자체 update
npm install -g npm
node -v
npm -v
 
# npm install --no-optional
 
# nodejs 실행
# node는 npm start 명령어를 사용해서 실행하면 app.js 가 실행된다.
# 백그라운드 실행하기 : npm start &
npm start
 
 
# Nodemon은 프로젝트 폴더의 파일들을 모니터링 하고 있다가 파일이 수정되면 서버를 자동으로 restart 시켜주는 패키지이다.
# npm list 로 설치 에러 발생하는 걸 전부 설치해준다.
#nodemon 을 하면 npm start 한 것과 같이 실행된다.
modemon &
 
 
ps -ef | grep node
kill -9 pid_number
 
 
 

 

# CentOS 리눅스를 본인 노트북 또는 PC에 설치하는 방법은 https://link2me.tistory.com/1885 를 따라하면 된다.
# PHP + MariaDB 설치를 하는 것 대신에 MariaDB는 설치하고 node.js 를 설치하면 된다.
 
# Nodemon은 프로젝트 폴더의 파일들을 모니터링 하고 있다가 파일이 수정되면 서버를 자동으로 restart 시켜주는 패키지이다.
# nodemon 을 하면 npm start 한 것과 같이 실행된다.
nodemon &
 
ps -ef | grep node
kill -9 pid_number
 
##### 맛집(bestfood) 앱을 위한 설정 #####
# https://github.com/kairo96/and_node 에서 web 에 폴더 구조를 확인한다.
# 책 저자 사이트인데 MariaDB 테이블 생성 구문에 오타가 있어서 그대로 붙여넣기를 하면 에러가 발생하므로 아래 DB 생성 스크립트를 실행한다.
# routes 폴더에 있는 파일명이 뭔지 체크한다.
# app.js 파일 내용을 확인하고, 내용을 복사하여 붙여넣기 한다.
# db.js 파일을 생성하고 내용 붙여넣기 후 DBname, Username, Password 정보를 수정 입력한다.
# 회원정보 요청 경로는 안드로이드에서는 
 @GET("/member/{phone}")
 Call<MemberInfoItem> selectMemberInfo(@Path("phone") String phone);
# node.js 에서는 /member/:phone 이다.
 
mkdir -p public/member
mkdir -p public/img
cd public
chmod 707 member/
chmod 707 img/
 
############## MariaDB 설치 ##############
mysql -uroot -p
비밀번호 입력 
 
-- DB 생성
drop database bestfood;
create database bestfood default character set utf8;
use mysql;
create user nodejsfox@localhost identified by 'wonderfull!#%';
grant all privileges on bestfood.* to nodejsfox@localhost;
flush privileges;
 
-- 데이터베이스로 이동
use bestfood;
 
-- 맛집 정보 테이블 생성
CREATE TABLE IF NOT EXISTS bestfood_info (
  seq int(11NOT NULL AUTO_INCREMENT,
  member_seq int(11NOT NULL COMMENT '일련번호',
  name varchar(20NOT NULL COMMENT '맛집 이름',
  tel varchar(20NOT NULL COMMENT '전화번호',
  address varchar(50NOT NULL COMMENT '주소',
  latitude double NOT NULL COMMENT '위도',
  longitude double NOT NULL COMMENT '경도',
  description varchar(500NOT NULL COMMENT '설명',
  keep_cnt int(11NOT NULL DEFAULT 0 COMMENT '즐겨찾기 수',
  reg_date timestamp NOT NULL DEFAULT current_timestamp() COMMENT '등록일시',
  PRIMARY KEY (seq)
ENGINE=InnoDB DEFAULT CHARSET=utf8;
 
-- 맛집 이미지 정보 테이블 생성
CREATE TABLE IF NOT EXISTS bestfood_info_image (
  seq int(11NOT NULL AUTO_INCREMENT,
  info_seq int(11NOT NULL COMMENT '일련번호',
  filename varchar(30NOT NULL COMMENT '이미지 파일 이름',
  image_memo varchar(100NOT NULL COMMENT '이미지 메모',
  reg_date timestamp NOT NULL DEFAULT current_timestamp() COMMENT '등록일',
  PRIMARY KEY (seq)
ENGINE=InnoDB DEFAULT CHARSET=utf8;
 
-- 즐겨찾기 테이블 생성
CREATE TABLE IF NOT EXISTS bestfood_keep (
  seq int(11NOT NULL AUTO_INCREMENT,
  member_seq int(11NOT NULL COMMENT '사용자 일련번호',
  info_seq int(11NOT NULL COMMENT '맛집 일련번호',
  reg_date timestamp NOT NULL DEFAULT current_timestamp() COMMENT '등록일',
  PRIMARY KEY (seq)
ENGINE=InnoDB DEFAULT CHARSET=utf8;
 
-- 회원 정보 테이블 생성
CREATE TABLE IF NOT EXISTS bestfood_member (
  seq int(11NOT NULL AUTO_INCREMENT,
  phone varchar(30NOT NULL COMMENT '사용자 전화번호',
  name varchar(30DEFAULT NULL COMMENT '이름',
  sextype varchar(10DEFAULT NULL COMMENT '성별',
  birthday varchar(30DEFAULT NULL COMMENT '생년월일',
  member_icon_filename varchar(50DEFAULT NULL COMMENT '프로필 아이콘',
  reg_date timestamp NOT NULL DEFAULT current_timestamp() COMMENT '등록일',
  PRIMARY KEY (seq)
ENGINE=InnoDB DEFAULT CHARSET=utf8;
 
#############################################################################
https://link2me.tistory.com/1914 게시글을 보고 지도를 보기 위한 정보를 등록해야 한다.
 
# APP 소스는 오래전 생성된 코드라서 최신 Android Studio 에 맞게 변경해야만 동작된다.
 
 
# Sequelize
npm install sequelize
 
 

 

 

https://github.com/jsk005/food_app 에 androidX 버전으로 수정한 소스를 업로드해두었다.

파이썬 장고 등 다른 언어를 배우느라고 이 소스를 분석하진 않았고 동작이 되는 것만 확인했었다.

Google 지도를 활용하지 않고 Naver 지도를 활용한 어플을 만든 적이 있어 Google Map 은 테스트 용으로만 사용해봤다.

블로그 이미지

Link2Me

,