[Oracle DB #3] Ubuntu 18.04 / node.js / Oracle 클라이언트
#0 AWS + nodejs 환경 구축 (node -v 반드시 14 이상)
https://jejestudy.tistory.com/13
AWS + nodejs + Vuejs
$ sudo apt-get update -> 우분트 서버 업데이트 $ curl -fsSL https://deb.nodesource.com/setup_14.x | sudo -E bash - $ sudo apt-get install nodejs $ sudo apt-get install npm -> Node Package Manager..
jejestudy.tistory.com
#1 오라클 모듈 설치 (node를 실행할 폴더에 들어가 설치 여기서는 -> home/ubuntu/node-project/testNode)
sudo npm install oracledb
#2 Oracle Instant Client와 SDK 파일을 저장할 폴더 생성 후 ubuntu 권한 부여
sudo mkdir /opt/oracle
sudo chown -R ubuntu /opt/oracle
#3 오라클 홈페이지에서 아래 zip 파일들을 다운로드 한 후, 해당폴더(/opt/oracle)에 삽입
http://www.oracle.com/technetwork/topics/linuxx86-64soft-092277.html
-instantclient-basic-linux.x64-12.2.0.1.0.zip
-instantclient-sdk-linux.x64-12.2.0.1.0.zip.
#4 오라클 홈페이지에서 아래 zip 파일들을 다운로드 한 후, 해당폴더(/opt/oracle)에 삽입
cd /opt/oracle
sudo apt install unzip
unzip instantclient-basic-linux.x64-12.2.0.1.0.zip
unzip instantclient-sdk-linux.x64-12.2.0.1.0.zip
#5 Oracle 클라이언트 라이브러리 Link 생성
sudo ln -s /opt/oracle/instantclient_12_2/libclntsh.so.12.1 /usr/local/lib/
#6 라이브러리 경로 입력 (LD_LIBRARY_PATH 에 /usr/local/lib 를 추가)
sudo sh -c "echo /opt/oracle/instantclient_12_2 > /etc/ld.so.conf.d/oracle-instantclient.conf"
sudo ldconfig
#7 libaio 설치
cd ~
sudo apt-get install -y libaio1
#8 권한 부여 후 dbconfig.js 파일 추가
sudo chown -R ubuntu /home/ubuntu/node-project/testNode/
dbconfig.js
module.exports = {
user : process.env.NODE_ORACLEDB_USER || "hr",
// Instead of hard coding the password, consider prompting for it,
// passing it in an environment variable via process.env, or using
// External Authentication.
password : process.env.NODE_ORACLEDB_PASSWORD || "hr",
// For information on connection strings see:
// https://github.com/oracle/node-oracledb/blob/master/doc/api.md#connectionstrings
connectString : process.env.NODE_ORACLEDB_CONNECTIONSTRING || "(DESCRIPTION =\n" +
" (ADDRESS = (PROTOCOL = TCP)(HOST = ip-172-31-34-242)(PORT = 1521))\n" +
" (CONNECT_DATA =\n" +
" (SERVER = DEDICATED)\n" +
" (SERVICE_NAME = XE)\n" +
" )\n" +
" )",
// Setting externalAuth is optional. It defaults to false. See:
// https://github.com/oracle/node-oracledb/blob/master/doc/api.md#extauth
externalAuth : process.env.NODE_ORACLEDB_EXTERNALAUTH ? true : false
};
app.js
var createError = require('http-errors');
var express = require('express');
var path = require('path');
var cookieParser = require('cookie-parser');
var logger = require('morgan');
/************************오라클 연결 설정 ************************/
var oracledb = require('oracledb');
var dbConfig = require('./dbconfig.js');
oracledb.getConnection(
{
user : dbConfig.user,
password : dbConfig.password,
connectString : dbConfig.connectString
},
function(err, connection)
{
if (err) {
console.error(err.message);
return;
}
connection.execute(
"SELECT * FROM TAB",
function(err, result)
{
if (err) {
console.error(err.message);
doRelease(connection);
return;
}
console.log(result);
//console.log(result.metaData);
//console.log(result.rows);
doRelease(connection);
});
});
function doRelease(connection)
{
connection.release(
function(err) {
if (err) {
console.error(err.message);
}
});
}
/************************오라클 연결 설정 ************************/
var indexRouter = require('./routes/index');
var usersRouter = require('./routes/users');
var app = express();
// view engine setup
app.set('views', path.join(__dirname, 'views'));
app.set('view engine', 'ejs');
app.set('port', process.env.PORT || 9000);
app.use(logger('dev'));
app.use(express.json());
app.use(express.urlencoded({ extended: false }));
app.use(cookieParser());
app.use(express.static(path.join(__dirname, 'public')));
app.use('/', indexRouter);
app.use('/users', usersRouter);
// catch 404 and forward to error handler
app.use(function(req, res, next) {
next(createError(404));
});
// error handler
app.use(function(err, req, res, next) {
// set locals, only providing error in development
res.locals.message = err.message;
res.locals.error = req.app.get('env') === 'development' ? err : {};
// render the error page
res.status(err.status || 500);
res.render('error');
});
module.exports = app;
var server = app.listen(app.get('port'), function() {
console.log('Express server listening on port ' + server.address().port); });
#9 nodemon app.js 실행 시 연동 확인