반응형

일전에 cent os에 node.js 설치하기 글을 작성한적 있다.
https://hippalus.tistory.com/607

 

cent os에 node.js 설치하기

linux cent os에 node.js를 설치하기 위해선 yum을 이용하여야 한다. root권한이 있는 계정으로 접속한 후 yum repolist를 실행해보면 아래 스샷처럼 보통 초기엔 epel이란게 없기 마련이다. EPEL 저장소가 없

hippalus.tistory.com


이 방법 말고 더 나은 방법으로 linux에서 node.js를 설치하고자 한다.

먼저 node.js 홈페이지의 다운로드로 이동한다.
https://nodejs.org/en/download

 

Node.js — Download

Node.js® is a JavaScript runtime built on Chrome's V8 JavaScript engine.

nodejs.org

여기서 Linux Binaries가 두 버전이 있는데 일반적이면 x64를 설치하면 된다.
x64: 대부분의 데스크톱 및 서버 시스템에서 사용된다. 일반적으로 인텔 또는 AMD의 64비트 아키텍처를 사용하는 시스템에 적합.
ARM: ARM 아키텍처를 사용하는 시스템에 대한 바이너리로 Raspberry Pi와 같은 임베디드 장치나 ARM 기반의 서버에 설치할 때 적합.

위 화면에서 64-bit의 링크를 마우스 우측으로 눌러 링크 주소 복사하기를 눌러 복사 한다.

복사해보면 2024년 2월 현재 다운로드 주소는 다음과 같다.
https://nodejs.org/dist/v20.11.1/node-v20.11.1-linux-x64.tar.xz

이제 리눅스로 접속 후 su명령어로 관리자 권한으로 진행한다.

노드가 설치될 폴더를 생성 후 해당 폴더로 이동한다.
cd /opt
mkdir nodejs
cd nodejs

앞서 복사했던 주소로 다운로드를 실행한다.
wget https://nodejs.org/dist/v20.11.1/node-v20.11.1-linux-x64.tar.xz

이제 다운로드 된 압축을 푼다.
파일명은 ls명령어로 확인하여 각자 맞는 파일명을 적어주면 된다.
다시 말하지만 파일명 등은 2024년 2월 현재 시점의 파일명이다.
xz -d node-v20.11.1-linux-x64.tar.xz
tar xf node-v20.11.1-linux-x64.tar

심볼릭 링크를 생성한다.
ln -s /opt/nodejs/node-v20.11.1-linux-x64 /opt/nodejs/node
ln 명령어는 심볼릭 링크를 생성하는 명령어로 -s 옵션은 심볼릭 링크를 생성하라는 것을 나타낸다.
그 뒤에는 실제 파일이나 디렉토리의 경로를 지정하고, 마지막에는 생성될 링크의 경로를 지정한다.

/opt/nodejs/node-v20.11.1-linux-x64 경로에 있는 디렉토리를 가리키는 심볼릭 링크를 /opt/nodejs/node라는 이름으로 생성하게 된다.
이렇게 하면 /opt/nodejs/node라는 경로로 접근하면 실제로 /opt/nodejs/node-v20.11.1-linux-x64에 있는 내용을 볼 수 있게 되므로 이는 더 간단하고 직관적인 경로로 Node.js를 사용할 수 있도록 도와준다.

끝으로 환경 변수에 등록해 준다.
vim ~/.bashrc

제일 마지막 라인에 아래 라인을 추가 한다.
export PATH="$PATH:/opt/nodejs/node/bin"

저장 하고 나온 후 추가한 내용을 즉시 적용시킨다.
source ~/.bashrc

이제 아무 디렉토리에 가서 node -v를 실행해보면 현재 설치된 node의 버전이 확인 될 것이다.

반응형
Posted by Hippalus
,

반응형

pm2란?
pm2는 Node.js 애플리케이션을 관리하기 위한 프로세스 매니저로 애플리케이션을 백그라운드에서 실행하고, 자동으로 재시작하며, 여러 가지 기능을 제공한다.

설치와 실행
npm install pm2 -g를 실행하면 설치가 가능하다.
반드시 -g로 전역설치를 해야만 한다.
안그러면 command not found오류를 만나게 될 것이야~

기본 실행방법은 아래와 같다.
(참고로 내 node.js 푸시 서버 이름은 pushServer.js다.)

시작
pm2 start pushServer.js

중지
pm2 stop pushServer.js

만약 실행중인 프로그램을 또 실행하려 들면 기특하게도 이런 오류를 내뱉어준다.

pm2를 사용하는 이유는 로그아웃을 해도 pm2로 돌리면 나중에 관리가 되기 때문이다.



자동 재실행
여기가진 좋다.
그.런.데 
내가 만든 푸시 서버 node.js는 node-cron을 사용하여 1분마다 체크 로직이 들어있는데 이상한게 계속 메모리 점유율이 올라갔다. 59M .. 60M .. 71M ...
의심가는 로직을 주석처리 해보고 별짓 다 해봐도 아무리 용을 써도 메모리 점유율이 그대로였다.
node-cron만 사용하면 그랬다.
혹시나 싶어 pm2 대신 그냥 node pushServer.js로 실행한들 동일했다.

그러다 pm2는 자동 재실행하거나 메모리 사이즈가 일정 수치를 넘어서면 자동 재실행 등 다양한 옵션질이 가능하니 이를 활용하기로 했다.

일단 메모리 오버시 자동 재실행을 하기 위해선 별도의 js를 만들어야 한다.
이름은 process.config.js라 지었다.

module.exports = {
    apps: [{
      script: "pushServer.js",
      instances: "max",
      exec_mode: "cluster",
      max_memory_restart: '100M' // 프로세스의 메모리가 100MB에 도달하면 reload 실행
    }]
  };

이 process.config.js를 저장하고 실행을 시킨다.
pm2 start process.config.js   (종료는 pm2 stop process.config.js)

이 경우 인스턴스가 max로 되어 있는데
내 경우 새벽 3시마다 재실행을 하고 싶고 1개의 인스턴스만 실행되어야 하므로 내용을 이렇게 바꿔줬다.
max대신 1, cluster대신 fork

module.exports = {
    apps: [{
      name: "pushServer",
      script: "/node/push/pushServer.js",
      instances: 1,
      exec_mode: "fork",
      cron_restart: '0 3 * * *',
      log: "/node/push/log/pushServer.log",
    }],
}

이후 pm2 start process.config.js를 실행하면 알아서 잘 동작한다.
해당 파일안의 script를 원하는 인스턴스의 개수 만큼 실행해주고 로그 또한 원하는 위치에 만들어준다.

혹시라도 실수로 instances를 이미 max로 실행해서 프로세스가 여러개 생성되었다면 pm2 list를 실행해보고 
pm2 delete all 명령어로 깨끗하게 다 지워버리면 된다.
성형 후 다시 새롭게 시작할 수 있다.

모니터링
실행중인 node.js 프로그램의 상태를 확인하고 싶다면 monit 기능을 이용하면 된다.
pm2 monit
좌측 상단엔 실행중인 프로세스 리스트로 화살표로 이동이 가능하다.
우측 하단에 Metadata에서 앱 이름과 버전 재실행 횟수 실행기간 등등 정보와 
좌측 하단엔 메모리 정보들을 확인 가능하다.

모니터 툴을 빠져나올 땐 ctrl+c로 빠져나오면 된다.
하단에 기본적인 사용 안내가 나와있는것을 확인할 수 있다.

로그파일
pm2로 실행중인 node.js 프로그램에서 console.log를 찍으면 로그가 .pm2/logs 폴더에 파일로 계속 쌓이는데 이것도 로그 파일 사이즈별로 컨트롤이 가능하다.
이거 안해주면 나중에 어마어마한 사이즈의 로그파일을 경험하게 되니 반드시 해주자.

방법은 특이하게 npm i가 아닌 pm2 install pm2-logrotate 이렇게 설치해야 한다.
당연히 pm2는 제일 위에 언급하였듯이 npm으로 설치를 미리 해두어야 한다.


pm2 set pm2-logrotate:max_size 1K 또는 pm2 set pm2-logrotate:max_size 1M 이런식으로 실행 후 pm2 start pushServer.js를 실행하면 이후 console.log로 찍은 로그는 저 사이즈를 넘을 경우 자동으로 새로운 파일이 생성된다.

만약 이것도 싫고 하루마다 파일을 생성하고 싶다면?
pm2 set pm2-logrotate:rotateInterval '0 0 * * *'




끝으로 자동재실행까진 괜찮은데 이 경우 메모리 누수가 발생하는건 아닌가 불안하다.
여기까진 확인을 못해봤다.

반응형
Posted by Hippalus
,

반응형

1편에서 기본적인 설정을 통해 node.js를 이용한  IPFS에 파일 업로드를 해보았다.
이번엔 다운로드다.
이미 많은걸 해두었기에 다운로드는 더 쉽다.

일단 IPFS는 실행해둬야 한다.
윈도우용이든  CMD에서 ipfs daemon 명령어를 이용해서든

앞서 만들었던 d:\Project\NFT 폴더를 계속 이용할 것이다.
appdown.js란 파일을 만들고 그 안에 이렇게 타이핑 해보자

const IPFS = require("ipfs-api");

const ipfs = new IPFS({
    host: "127.0.0.1",
    port: 5001,
    protocol: "http"
});

const hash = "QmfHZXP......VHfHkuntm86xY1vg"; // 앞서 업로드 하고 받아낸 해시값

ipfs.files.get(hash, (err, files) => {
    if (err) {
        console.error("Error while downloading file:", err);
    } else {
        if (files && files.length > 0) {
            console.log("File download success! Result:", files[0].content.toString());
        } else {
            console.error("No files found for the given hash.");
        }
    }
});

주의할 점은 hash부분이다.
업로드 하고 받아낸 해시값을 입력해야 한다.

저장 후 node appdown.js를 실행하면

업로드시 사용한 txt파일 내용을 확인할 수 있다.

반응형

'NFT' 카테고리의 다른 글

NFT 개발하기 - 1편 IPFS에 node.js로 파일 업로드하기  (1) 2024.01.18
Posted by Hippalus
,

반응형

NFT가 뭐고 왜 해야 하고 그딴 시덥잖은 이야긴 다른 글을 참조하시고 바로 실전으로 들어간다.
묻지도 따지지도 말고 일단 IPFS에 파일 올리는것부터 해야 하는데 IPFS를 이용하는 이유는 NFT는 그림, 음원, 비디오 그딴건데 파일을 안 올리면 어쩌겠는가?
그런데 이걸 한 개인의 서버에 올리면?
서버 다운되거나 해킹되면?
그러니 분산 파일 시스템인 IPFS에 올리는거

궁금하면 더보기~

더보기

NFT(Non-Fungible Token)는 고유한 디지털 자산을 나타내는 토큰으로, 블록체인 기술을 기반으로 합니다. IPFS(InterPlanetary File System)는 분산 파일 시스템으로, 파일을 분산된 네트워크에 저장하고 검색할 수 있게 해줍니다. NFT를 만들 때 IPFS를 이용하는 이유는 여러 가지가 있습니다:

분산 저장: IPFS는 파일을 여러 노드에 분산하여 저장하므로 중앙 서버에 의존하지 않습니다. 이는 단일 지점의 장애나 특정 서버의 다운으로 인한 데이터 손실을 방지할 수 있습니다.

내구성과 신뢰성: IPFS는 데이터를 여러 노드에 복제하여 내구성과 신뢰성을 높입니다. 파일이 한 노드에서 손상되거나 사용 불가능해지더라도 여러 다른 노드에서 해당 파일을 찾아 사용할 수 있습니다.

비용 효율성: IPFS를 사용하면 파일을 저장하고 검색하는 데 필요한 비용을 최적화할 수 있습니다. 중앙화된 서버를 운영하고 유지하는 데 필요한 비용을 줄일 수 있습니다.

방대한 용량과 확장성: IPFS는 대용량 파일을 효과적으로 처리할 수 있으며, 필요에 따라 확장될 수 있습니다. 블록체인이나 중앙 서버에서 처리하기 어려운 큰 용량의 미디어 파일을 다룰 수 있습니다.

안전성과 보안: IPFS는 데이터를 암호화하고 해시값을 통해 무결성을 검증하여 안전성과 보안을 강화합니다. 블록체인과 결합하여 높은 수준의 보안을 제공합니다.

이러한 이유로, NFT를 만들 때 IPFS를 이용하여 디지털 자산을 저장하고 관리하는 것이 일반적으로 권장됩니다. 이를 통해 더 분산화되고 안전한 환경에서 NFT를 다룰 수 있습니다.

IPFS를 다운받기 위해 공홈에 가보면 
https://docs.ipfs.tech/install/ipfs-desktop/#windows

요런 다운로드 페이지 안내 문구를 발견할 수 있다. 
눌러보면 아래 링크로 이동되는데
https://github.com/ipfs/ipfs-desktop/releases
웃기는건 window용 exe가 없다.

Show all 17 assets를 눌러야 아래처럼 윈도우용 IPFS 인스톨 파일을 확인할 수 있다. -_-

다운받고 실행하면 설치할 위치 선택해주고

설치완료되면 실행 가능하다.

기본 설치 경로로 설치하면 IPFS.exe파일은 아래 경로에 들어가 있다.
C:\Program Files\IPFS Desktop\resources\app.asar.unpacked\node_modules\kubo\kubo

이게 왜 중요하냐면
윈도우용은 설치 후 실행되는 프로그램이 daemon의 일을 맡아 하지만 어떤 책에 보면 이런 설명 조차 없이 daemon을 실행하라고만 해서 한참을 헤매게 만들기 때문이다.

설치 후 IPFS를 실행해보면 저런 화면이 나오는데 상태와 파일 등등 좌측 메뉴를 눌러보면 뭐 대충 잘 동작하는것 같다.

만약 웹브라우저로 확인해보고 싶다면
http://127.0.0.1:5001/webui
이렇게 해도 동일한 화면 확인이 가능하다.

별건으로 IPFS를 어디서든 동작하게 하려면 환경변수에 IPFS를 등록해야 하는데

아까 설치한 경로를 등록해주면 된다.
C:\Program Files\IPFS Desktop\resources\app.asar.unpacked\node_modules\kubo\kubo

그리고 실행된 IPFS Desktop은 트레이 아이콘으로 동작중인걸 확인할 수 있다.

눌러보면 재시작, 중지 등 추가 작업이 가능하다.

여기까지 IPFS를 설치하였다면 이제 node.js로 IPFS에 파일 업로드를 해보겠다.
node와 npm설치하는 방법은 다른 구글링하여 블로그를 참조하기 바란다.
엄청 쉽다. (https://nodejs.org/ko 여기서 다운받고 설치하면 그만이다.)

IPFS를 설치하면 포트가 5001로 동작하고 파일 업로드시 필요한 모듈은 ipfs-api, fs, bl 정도이다.
일단 프로젝트의 위치를 지정하겠다.
나는 D:\Project\NFT로 지정하였다.

이제 cmd를 눌러 D:\로 이동 후 CD Project, CD NFT를 입력하여 위치를 이동시키자.
모듈 설치하자.  
npm i ipfs-api
npm i fs
npm i bl
각각의 모듈이 무슨 일을 하는지는 chatgpt에게 물어보라. ㅎㅎ

vscode를 실행하여 아래 코드를 타이핑 후 app.js로 저장하자.
당연히 위치는 D:\Project\NFT다.

const IPFS = require("ipfs-api");
const fs = require("fs");
const bl = require('bl'); // 'bl' 모듈을 추가


const ipfs = new IPFS({
    host: "127.0.0.1",
    port: 5001,
    protocol: "http"
});

const file = fs.readFileSync("./test.txt");
const fileBuffer = bl(new Buffer.from(file)); // 'bl' 모듈로 Buffer를 래핑

ipfs.files.add(fileBuffer, (err, result) => {
    if (err) {
        console.error(err);
    } else {
        console.log("File add success! result :", result[0].hash);
    }
});

이제 node로 만든 app.js를 아래처럼 실행하면 성공 메세지와 함께 암호문자열을 확인 가능할것이다.
참고로 업로드할 파일인 test.txt파일은 D:\Project\NFT에 test.txt 파일을 미리 만들어 두자

result 자체를 찍어보면 다음과 같이 나온다.
  {
    path: '******NVAiMNRcGu6x1AwQ4c5SBnJMH',
    hash: '******NVAiMNRcGu6x1AwQ4c5SBnJMH',
    size: 6
  }
path는 경로 cid는 컨텐츠 식별자 size는 파일 용량이다. path와 cid가 동일함을 알 수 있다.

만약 아래처럼 오류가 난다면 IPFS 프로그램이 중지되었기 때문이다.
IPFS를 실행해둔 상태에서 하길 바란다.
(만약 난 좀 있어보이고 싶다란 사람이라면 cmd창에서 ipfs daemon이라 실행하면 동일한 효과를 볼 수 있다.)

한가지 주의해야 할 점은 이후 node.js로 IPFS로 파일을 업로드 시켜볼 예정인데 이 파일 메뉴에 내가 올린 파일이 바로 나오지 않는다란 점이다.

아까 node.js로 업로드 후 성공 메세지로 받았던 문자열을 Browse에 입력하고 검색하면 확인이 가능하다.
File add success! result : Q *************....H

이렇게 잘 나온다.

만약 빈 파일을 업로드했다면 이렇게 나오니 당황하지 말자.

반응형

'NFT' 카테고리의 다른 글

NFT 개발하기 - 2편 IPFS에 node.js로 파일 다운로드하기  (0) 2024.01.19
Posted by Hippalus
,

반응형

Node.js로 FCM 푸시 서버를 만들어 항상 백그라운드에서 동작하도록 하려면 여러 가지 방법이 있다. 
가장 일반적인 방법은 forever나 pm2와 같은 프로세스 관리 도구를 사용하는 것으로 이러한 도구를 사용하면 서버가 비정상적으로 종료되더라도 자동으로 다시 시작되도록 설정할 수 있다.

일단 pm2를 전역으로 설치한다.
이때 반드시 su 계정으로 로그인하여야 한다.
다시 일반 계정으로 복귀하고자 한다면 su - 일반계정이름 엔터를 치면 된다.

npm install -g pm2
그런 다음, Node.js 애플리케이션을 pm2로 실행할 수 있다.

bash
Copy code
pm2 start your_fcm_server.js
이제 your_fcm_server.js는 백그라운드에서 계속 실행된다.

만약 서버를 중지하려면 다음 명령어를 사용한다.
pm2 stop your_fcm_server.js

또는 모든 프로세스를 중지하려면
pm2 stop all

더 나은 안정성을 위해, 서버가 리부팅될 때 자동으로 시작되도록 만들 수 있다.
이를 위해서는 다음 명령어를 실행한다.

pm2 startup
이 명령어를 실행하면 pm2가 서버 리부팅 시에도 자동으로 시작되도록 설정된다.
이렇게 하면 Node.js 애플리케이션이 항상 백그라운드에서 실행되도록 할 수 있다.

기본적으로 pm2는 로그와 관련된 다양한 기능을 제공하므로, 서버의 상태를 모니터링하고 문제를 디버깅하는 데 도움이 된다.
pm2 logs

특정 프로세스의 로그만 확인하려면 프로세스 이름 또는 ID를 지정할 수 있다.

pm2 logs your_fcm_server

로고 출력 설정:
pm2에서는 로그의 출력을 여러 가지 형식으로 설정할 수 있다.
예를 들어, JSON 형식으로 출력하려면 다음과 같이 명령어를 사용한다.

pm2 logs --json

로그 위치 확인
pm2는 각 프로세스의 로그를 파일로 저장한다. 
로그 파일은 기본적으로 ~/.pm2/logs/ 디렉토리에 저장되며, 특정 프로세스의 로그 파일 위치를 확인하려면 다음과 같이 명령어를 사용한다.

pm2 show your_fcm_server
이 명령어는 프로세스의 상세 정보를 보여주는데, 그 중에서 "log_path" 항목이 로그 파일의 경로를 나타낸다.

로그 파일을 삭제하려면 pm2 flush 명령어를 사용한다.
pm2 flush

실시간 로그 모니터링 중지인 
pm2 logs 명령은 실시간 로그 모니터링을 위한 것이기 때문에 Ctrl+C를 누르면 모니터링이 중지된다.

반응형
Posted by Hippalus
,

반응형

바쁜분들을 위해 그리고 기초는 있다란 가정하에 3줄 요약
1. npm install oracledb@5.2.0

2. 아래 링크로 접속하여 client 설치 후 yum으로 install
https://www.oracle.com/database/technologies/instant-client/linux-x86-64-downloads.html
자신의 오라클 버전에 맞는 파일 다운로드(11g인 경우 Version 11.2.0.4.0의 RPM파일 다운로드)
 yum install oracle-instantclient11.2-basic-11.2.0.4.0-1.x86_64.rpm

3. vi ~/.bashrc를 입력해서 환경변수 설정
export LD_LIBRARY_PATH=/usr/lib/oracle/11.2/client64/lib:${LD_LIBRARY_PATH}

안 바쁘면 이제 시작~

보통 node.js로 oracle로 db connection을 하려면 npm install oracledb로 oracledb를 설치 후 아래와 같이 하기 마련이다.
dbConfig.js에 DB 연결 정보를 설정해 두고

// Oracle DB 연결 정보
const dbConfig = {
    user: 'myid',
    password: 'pwd123',
    connectString : "(DESCRIPTION =(ADDRESS = (PROTOCOL = TCP)(HOST = 200.100.80.10)(PORT = 1521)) (CONNECT_DATA = (SERVER = DEDICATED)(SERVICE_NAME = pos)))"
  };

  module.exports = dbConfig;


이를 require로 불러와서 getConnection으로 연결 후 DB조회, 처리
 

const
oracledb = require('oracledb');
const dbConfig = require('./dbConfig.js'); // dbConfig 파일을 불러옴

oracledb.getConnection(dbConfig, (err, connection) => {
    if (err) {
      console.error('Error connecting to Oracle:', err.message);
      process.exit(1);
      return;
    }
    console.log('=======');
    // 연결이 성공한 경우, 쿼리 실행
    connection.execute(
      'SELECT * FROM YOUR_TABLE', // 적절한 테이블명으로 변경
      [], // 바인드 변수 배열 (여기서는 사용하지 않음)
      { resultSet: true, outFormat: oracledb.OUT_FORMAT_OBJECT },
      (err, result) => {
        if (err) {
          console.error('Error executing query:', err.message);
        } else {
          console.log('Query result:', result.rows);
        }
 
        // 연결 종료
        connection.close((err) => {
          if (err) {
            console.error('Error closing connection:', err.message);
          } else {
            console.log('Connection closed.');
          }
        });
      }
    );
  });


그런데 안된다.
절대 안된다.

thin모드를 지원하지 않는단다.
도대체 왜??????

자랑스럽게 node oracledb 6.0에선 Thin mode를 지원한다고 발표한 상태다.


설치된 oracledb 모듈의 버전도 6.0을 넘어 6.2였다.

이윤즉슨 oracledb 모듈 버전이 6.0으로 올라서면서 thin을 지원하지만 
oracle 11g는 6.0으로 올려도 지원 자체가 불가능하다.
시간 많으면 여기가서 읽어보시라.
https://node-oracledb.readthedocs.io/en/latest/user_guide/appendix_a.html#id1

thin 모드와 thick 모드가 궁금하다면 chat gpt 센세에게 물어보면 잘 가르쳐 주신다.



결론은 node.js가 설치된 서버에 별도의 client를 설치해줘야만 한다.
또한 6.2버전을 thick 모드를 지원하는 5.2.0으로 다운그레이드를 해줘야 한다.
아니면 초장부터 5.2.0으로 설치 하던지
이렇게 말이다.
npm install oracledb@5.2.0

일단 oracledb는 5.2.0으로 설치완료했고
다음엔 망할 클라이언트 설치다.
바쁘면 그냥 아래 링크 눌러 다운받으면 된다.
* 오라클 11g용 Instant Client rpm파일의 다이렉트 링크는 아래와 같다.
https://download.oracle.com/otn/linux/instantclient/11204/oracle-instantclient11.2-basic-11.2.0.4.0-1.x86_64.rpm

바쁘지 않으면 천천히 읽어 내려가면 된다.

https://oracle.github.io/node-oracledb/INSTALL.html#prerequisites

3.2.1을 보면 Node-oracledb Installation on Linux x86_64 with Instant Client ZIP files가 보일것이다.
이걸 선택해주자.

 

그럼 node-oracledb.readthedocs.io란 사이트로 이동 할 것이다.
https://node-oracledb.readthedocs.io/en/latest/user_guide/installation.html#instzip

2.4.3.1. Oracle Instant Client ZIP Files에 x86-634 64-bit가 보일것이다.

이걸 선택하면 최종 종착지는 oracle.com이다.
https://www.oracle.com/database/technologies/instant-client/linux-x86-64-downloads.html

여기서 자신의 오라클 DB 버전에 맞는걸 다운받아 주면 된다.
내 경우 oracle 11g이므로 version 11.2.0.4.0을 눌러 Instant Client Package (RPM)을 다운 받았다.
RPM은 Redhat Package Manager의 약자로 Windows를 예를들면 setup.exe와 비슷하다고 볼 수 있다
그래야 yum으로 리눅스에서 install이 가능하기 때문인데 
YUM은 Yellowdog Update Manager의 약자로 RPM의 단점인 의존성 문제를 해결하기 위해서 제공되는 것으로 특정 패키지를 설치할 때 의존성이 있는 다른 패키지들을 자동으로 먼저 설치해주는 지능적인 툴이다.


다운받은 파일을 적당한 곳에 복사해 두고 해당 디렉토리에서 yum을 이용해 rpm파일을 설치한다.
 yum install oracle-instantclient11.2-basic-11.2.0.4.0-1.x86_64.rpm

혹시 다른 rpm파일을 잘못 설치했다면 리스트로 확인도 가능하고 제거도 가능하니 당황하진 말자
 yum list installed

제거하는 방법은
yum remove 패키지이름


마지막으로 환경변수를 설정해줘야 한다.



 vi ~/.bashrc 를 입력하자

export LD_LIBRARY_PATH=/usr/lib/oracle/11.2/client64/lib:${LD_LIBRARY_PATH}
이렇게 입력해주고 :wq로 저장 후 나가준다.
제대로 설정되었는지 확인하려면 echo $LD_LIBRARY_PATH 를 입력해보자
/usr/lib/oracle/11.2/client64/lib: 
이렇게 뜬다면 정상이다.

이제 클라이언트 설치와 환경변수까지 모두 다 설정해줬다.
다시 node.js로 dbconnect 파일을 실행해보면 정상 접근이 가능한 걸 확인 할 수 있을것이다.

반응형
Posted by Hippalus
,

반응형

linux cent os에 node.js를 설치하기 위해선 yum을 이용하여야 한다.
root권한이 있는 계정으로 접속한 후 yum repolist를 실행해보면 아래 스샷처럼 보통 초기엔 epel이란게 없기 마련이다.

EPEL 저장소가 없으면 아래의 명령어를 입력하여 저장소를 추가한다.
yum install epel-release
Y/N을 물어오는데 이 때 Y키만 눌러주면 된다.

다시 처음처럼 yum repolist를 눌러보면 epel 저장소를 볼 수 있을것이다.

이제 본격적으로 node.js를 설치해본다.
yum install nodejs 을 입력하고 엔터를 치면 아까 yum처럼 쭉 나오면서 Y/N을 물어볼 것이다.
이때도 Y만 눌러주면 된다.

이제 끝으로 npm만 설치하면 된다.
node.js에는 다양하게 개발된 package들이 존재한다.
이를 설치하기 위한 manager가 npm이다.
아래 명령어를 입력하여 NPM을 설치한다.
yum install npm

설치된 node의 버전을 보고 싶다면 node -v; 를 입력하고 엔터를 치면 된다.
설치된 npm의 버전을 보고 싶다.면 npm -v;를 입력하고 엔터를 치면 된다.

참고로 cent os 버전이 4.x면 node.js 설치가 불가능하다.
cent os 5에서부터 지원을 하는것 같긴한데 불확실하고 최소한 7이나 8정도로 업그레이드 해야 하나 보다.

역시 windows가 참 편하게 잘 만든 os다.

반응형
Posted by Hippalus
,

반응형

vue.js를 설치하기 위해선 npm을 통해 설치하여야 하지만 npm을 이용하기 위해선 또 brew를 선설치하여야 한다.
brew.sh/index_ko로 이동해보면 아래와 같이 친절하게 터미널 명령어가 존재하는데 이를 복사하여 터미널에 붙여넣기 후 엔터를 친다.

Homebrew 홈페이지

/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"

그럼 sudo 권한을 위해 아이맥 비밀번호를 물어보고 이를 입력하면 한참을 다운로드에서 머물다 설치가 마무리 된다.
대략 20분 이상 걸린것 같다.(회사라 느린것인지 모름)

Terminal Homebrew 설치화면

Homebrew가 설치 되었다면 이제 node를 설치한다.
터미널에서 brew install node 를 입력하고 엔터

node 설치화면

npm이 설치되었으니 이제 본격적인 vue cli 설치를 진행한다.
터미널에서 npm install -g @vue/cli 를 입력하고 엔터
(CLI란 뷰 프로젝트를 빠르게 개발하고 빌드하고 서비스를 런칭시켜주는 틀)

다른 설치파일들과 달리 1~2분 이내로 금방 설치가 완료 된다.

vue 설치 완료 화면

기본 설치까지 모두 완료 되었으므로 이제 실제 vue 프로젝트를 생성해보도록 한다.
프로젝트 생성방법은 터미널에서 vue create 폴더명이므로
vue create test 입력 후 엔터

참고로 화살표키로 다른 기본 설치와 매뉴얼 설치를 선택할 수 있다.

기본 옵션설치이므로 default에서 엔터 설치

default 그대로 설치 진행 중 화면


프로젝트 설치가 완료되면 아래와 같이 생성된 프로젝트를 실행해 볼 수 있도록 친절히 안내가 나온다.
(node.js를 경험해봤다면 익숙한 방식이다.)

🎉  Successfully created project test.
👉  Get started with the following commands:
 $ cd test
 $ npm run serve

실제 ls 명령어를 통해 폴더를 확인해보면 test란 폴더가 생성되어 있고

우측 끝에 test란 폴더가 보임

cd 명령어를 통해 이동해보면 아래와 같은 구조로 프로젝트가 생성되어 있음을 알 수 있다.
test
    src
        App.vue
        assets
        components
        main.js

생성된 프로젝트를 실행하고 실제 브라우저에서 접속해보도록 한다.
먼저 프로젝트 폴더로 이동하기 위해 터미널에서 
$ cd test 입력 후 엔터

그리고 npm을 통해 프로젝트를 실행하기 위해 터미널에서 
$ npm run serve 입력 후 엔터를 치면 정상설치가 되었을 경우 아래처럼 친절하게 접속 가능한 주소를 알려준다.

App running at:
  - Local:   http://localhost:8080/ 
  - Network: http://000.000.000.000:8080/
  Note that the development build is not optimized.
  To create a production build, run npm run build.

아무 브라우저나 열고 위 주소를 입력해보자

test로 생성해본 프로젝트 웹 접속 화면

여기까지 간단하게 처음 npm 설치부터 vue 테스트 프로젝트 설치 및 접속까지 알아보았다.

반응형
Posted by Hippalus
,