Linux 서버에 PostgreSQL 도입~외부 서버 접속까지
7660 단어 PostgreSQLDBNode.js
이번 흐름
➀PostgreSQL 도입
➁ 로컬 앱 연결(Node.js)
➂ 외부 서버 앱 연결(Node.js)
➀PostgreSQL 도입
서버는 사쿠라 VPS의 CentOS8입니다.
우선 아래에서 OS에 따른 리포지토리 URL을 취득합니다.
htps // 유 m. 포스트g sql. 오 rg/레포파 c카게 s/
이번에는 CentOS 8 - x86_64 링크를 복사합니다.
그런 다음 서버에 설치합니다.
sudo dnf install -y https://download.postgresql.org/pub/repos/yum/reporpms/EL-8-x86_64/pgdg-redhat-repo-latest.noarch.rpm
sudo dnf -qy module disable postgresql
sudo dnf install -y postgresql13-server
위에서 순서대로 리포지토리 추가, 기본 PostgreSQL 모듈 중지, PostgreSQL 설치가 됩니다.
덧붙여 옵션에 대해서는 q:메시지 출력하지 않는다, y:모두 yes 이므로, 있어도 없어도 됩니다.
이제 자동으로 postgres 사용자가 생겼다고 생각하므로 su하고 환경 변수를 확인합니다.
제 환경에서는 「PGDATA=/var/lib/pgsql/13/data」가 되어 있었습니다.
sudo su - postgres
env | grep PGDATA
그런 다음 초기 데이터베이스 작성
export PGSETUP_INITDB_OPTIONS="--encoding=UTF8 --locale=ja_JP.UTF-8 --lc-collate=ja_JP.UTF-8 --lc-ctype=ja_JP.UTF-8"
/usr/pgsql-13/bin/postgresql-13-setup initdb
데이터베이스 시작
--now를 붙이면 enable과 start를 동시에 할 수 있습니다.
systemctl enable postgresql-13 --now
postgres 사용자로 DB에 연결, 데이터베이스 생성, 역할 생성
psql
create database first_db
create role test login password 'test';
일단 빠져 test 사용자로 연결을 시도합니다.
psql -U test -d first_db
psql: error: FATAL: Peer authentication failed for user "test"
오류가 발생했습니다.
뭐든지 PostgreSQL은 Peer 인증이라고 하는 것에 디폴트로 되어 있어, Linux의 유저명과 PostgreSQL의 유저명이 같지 않으면 안 된다고 합니다.
불편하기 때문에 거기를 바꿉니다./var/lib/pgsql/13/data/pg_hba.conf
를 만나갑니다.
pg_hba.conf_bklocal all all peer
↓
pg_hba.conflocal all postgres peer
local all all md5
peer를 md5로 바꾸고 있습니다.
이제 암호 인증이 됩니다.
다만, postgres 유저는 디폴트에서는 패스워드가 설정되어 있지 않고, 패스워드 인증으로 하면 사용할 수 없게 되어 버리기 때문에, peer 인증 그대로 하고 있습니다.
비밀번호를 설정하면됩니다.
이제 PostgreSQL을 다시 시작하고 다시 test 사용자로 연결
sudo systemctl restart postgresql-13
psql -U test -d first_db
비밀번호를 듣기 때문에 설정한 "test"를 입력하여 확인 OK
이것으로 일단 PostgreSQL 도입 완료로 합니다!
➁ 로컬 앱 연결(Node.js)
그런 다음 Node.js에서 만든 앱에서 DB에 연결을 시도합니다.
새 디렉토리를 만들고 npm을 초기화하고 pg 모듈을 설치합니다.
mkdir db_connect
cd $_
npm init -y
npm install pg
알맞은 파일 만듭니다.
index.jsconst pg = require('pg');
// 接続先文字列
const connectionString = 'postgres://test:test@localhost:5432/first_db';
console.log(`開始 : ${connectionString}`);
const pool = new pg.Pool({
connectionString: connectionString
});
pool.query('SELECT * FROM user')
.then(result => {
// 結果データの表示
if (result.rows) {
result.rows.forEach((row) => {
console.log(row);
});
}
})
.catch(err => {
console.log('err: ', err);
})
.then(() => {
console.log('切断');
pool.end();
});
이 근처는 이쪽의 기사를 참고로, 라고 할까 거의 둥근 파크리입니다.
pg 패키지를 사용하여 로컬 PostgreSQL 또는 Heroku Postgres에 연결
이것을 실행하고 결과가 반환되었으므로 OK라고 가정합니다.
$ node index.js
開始 : postgres://test:test@localhost:5432/first_db
{ user: 'test' }
切断
➂ 외부 서버 앱 연결(Node.js)
마지막으로 수중의 로컬 머신(Windows)으로부터 Linux상의 PostgreSQL에 접속해 보겠습니다.
Node.js 파일은 ➁에서 사용한 것을 유용합니다.
그러나 연결 대상 문자열만 변경합니다.
postgres://test:test@[接続先サーバのアドレス]:5432/first_db
이 작업을 수행하면 연결 오류가 발생합니다.
PostgreSQL은 기본적으로 localhost에서만 연결을 허용합니다.
그러므로, 이 변의 설정을 만나 갑니다.
먼저 청취 대상을 *(모두)로 설정하여 포트 5432를 허용합니다.
/var/lib/pgsql/13/data/postgresql.conf_bk#listen_addresses = 'localhost'
#port = 5432
↓
/var/lib/pgsql/13/data/postgresql.conflisten_addresses = '*'
port = 5432
이어서 pg_hba.conf
에 아래의 한 줄을 추가
/var/lib/pgsql/13/data/pg_hba.confhost first_db test [接続元アドレス]/32 md5
이제 PostgreSQL 재부팅
sudo systemctl restart postgresql-13
그리고는 방화벽 등으로 5432 포트를 개방합니다.
사쿠라의 VPS는 브라우저에서 패킷 필터링 설정을 변경할 수 있기 때문에 거기에서 5432 포트를 열었습니다.
이제 수중의 머신으로부터 node index.js
라고 하면(자), 접속에 성공해 결과를 취득할 수 있었습니다!
Reference
이 문제에 관하여(Linux 서버에 PostgreSQL 도입~외부 서버 접속까지), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/sa9ra4ma/items/7c67cd8a368f2bd2dd88
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
서버는 사쿠라 VPS의 CentOS8입니다.
우선 아래에서 OS에 따른 리포지토리 URL을 취득합니다.
htps // 유 m. 포스트g sql. 오 rg/레포파 c카게 s/
이번에는 CentOS 8 - x86_64 링크를 복사합니다.
그런 다음 서버에 설치합니다.
sudo dnf install -y https://download.postgresql.org/pub/repos/yum/reporpms/EL-8-x86_64/pgdg-redhat-repo-latest.noarch.rpm
sudo dnf -qy module disable postgresql
sudo dnf install -y postgresql13-server
위에서 순서대로 리포지토리 추가, 기본 PostgreSQL 모듈 중지, PostgreSQL 설치가 됩니다.
덧붙여 옵션에 대해서는 q:메시지 출력하지 않는다, y:모두 yes 이므로, 있어도 없어도 됩니다.
이제 자동으로 postgres 사용자가 생겼다고 생각하므로 su하고 환경 변수를 확인합니다.
제 환경에서는 「PGDATA=/var/lib/pgsql/13/data」가 되어 있었습니다.
sudo su - postgres
env | grep PGDATA
그런 다음 초기 데이터베이스 작성
export PGSETUP_INITDB_OPTIONS="--encoding=UTF8 --locale=ja_JP.UTF-8 --lc-collate=ja_JP.UTF-8 --lc-ctype=ja_JP.UTF-8"
/usr/pgsql-13/bin/postgresql-13-setup initdb
데이터베이스 시작
--now를 붙이면 enable과 start를 동시에 할 수 있습니다.
systemctl enable postgresql-13 --now
postgres 사용자로 DB에 연결, 데이터베이스 생성, 역할 생성
psql
create database first_db
create role test login password 'test';
일단 빠져 test 사용자로 연결을 시도합니다.
psql -U test -d first_db
psql: error: FATAL: Peer authentication failed for user "test"
오류가 발생했습니다.
뭐든지 PostgreSQL은 Peer 인증이라고 하는 것에 디폴트로 되어 있어, Linux의 유저명과 PostgreSQL의 유저명이 같지 않으면 안 된다고 합니다.
불편하기 때문에 거기를 바꿉니다.
/var/lib/pgsql/13/data/pg_hba.conf
를 만나갑니다.pg_hba.conf_bk
local all all peer
↓
pg_hba.conf
local all postgres peer
local all all md5
peer를 md5로 바꾸고 있습니다.
이제 암호 인증이 됩니다.
다만, postgres 유저는 디폴트에서는 패스워드가 설정되어 있지 않고, 패스워드 인증으로 하면 사용할 수 없게 되어 버리기 때문에, peer 인증 그대로 하고 있습니다.
비밀번호를 설정하면됩니다.
이제 PostgreSQL을 다시 시작하고 다시 test 사용자로 연결
sudo systemctl restart postgresql-13
psql -U test -d first_db
비밀번호를 듣기 때문에 설정한 "test"를 입력하여 확인 OK
이것으로 일단 PostgreSQL 도입 완료로 합니다!
➁ 로컬 앱 연결(Node.js)
그런 다음 Node.js에서 만든 앱에서 DB에 연결을 시도합니다.
새 디렉토리를 만들고 npm을 초기화하고 pg 모듈을 설치합니다.
mkdir db_connect
cd $_
npm init -y
npm install pg
알맞은 파일 만듭니다.
index.jsconst pg = require('pg');
// 接続先文字列
const connectionString = 'postgres://test:test@localhost:5432/first_db';
console.log(`開始 : ${connectionString}`);
const pool = new pg.Pool({
connectionString: connectionString
});
pool.query('SELECT * FROM user')
.then(result => {
// 結果データの表示
if (result.rows) {
result.rows.forEach((row) => {
console.log(row);
});
}
})
.catch(err => {
console.log('err: ', err);
})
.then(() => {
console.log('切断');
pool.end();
});
이 근처는 이쪽의 기사를 참고로, 라고 할까 거의 둥근 파크리입니다.
pg 패키지를 사용하여 로컬 PostgreSQL 또는 Heroku Postgres에 연결
이것을 실행하고 결과가 반환되었으므로 OK라고 가정합니다.
$ node index.js
開始 : postgres://test:test@localhost:5432/first_db
{ user: 'test' }
切断
➂ 외부 서버 앱 연결(Node.js)
마지막으로 수중의 로컬 머신(Windows)으로부터 Linux상의 PostgreSQL에 접속해 보겠습니다.
Node.js 파일은 ➁에서 사용한 것을 유용합니다.
그러나 연결 대상 문자열만 변경합니다.
postgres://test:test@[接続先サーバのアドレス]:5432/first_db
이 작업을 수행하면 연결 오류가 발생합니다.
PostgreSQL은 기본적으로 localhost에서만 연결을 허용합니다.
그러므로, 이 변의 설정을 만나 갑니다.
먼저 청취 대상을 *(모두)로 설정하여 포트 5432를 허용합니다.
/var/lib/pgsql/13/data/postgresql.conf_bk#listen_addresses = 'localhost'
#port = 5432
↓
/var/lib/pgsql/13/data/postgresql.conflisten_addresses = '*'
port = 5432
이어서 pg_hba.conf
에 아래의 한 줄을 추가
/var/lib/pgsql/13/data/pg_hba.confhost first_db test [接続元アドレス]/32 md5
이제 PostgreSQL 재부팅
sudo systemctl restart postgresql-13
그리고는 방화벽 등으로 5432 포트를 개방합니다.
사쿠라의 VPS는 브라우저에서 패킷 필터링 설정을 변경할 수 있기 때문에 거기에서 5432 포트를 열었습니다.
이제 수중의 머신으로부터 node index.js
라고 하면(자), 접속에 성공해 결과를 취득할 수 있었습니다!
Reference
이 문제에 관하여(Linux 서버에 PostgreSQL 도입~외부 서버 접속까지), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/sa9ra4ma/items/7c67cd8a368f2bd2dd88
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
mkdir db_connect
cd $_
npm init -y
npm install pg
const pg = require('pg');
// 接続先文字列
const connectionString = 'postgres://test:test@localhost:5432/first_db';
console.log(`開始 : ${connectionString}`);
const pool = new pg.Pool({
connectionString: connectionString
});
pool.query('SELECT * FROM user')
.then(result => {
// 結果データの表示
if (result.rows) {
result.rows.forEach((row) => {
console.log(row);
});
}
})
.catch(err => {
console.log('err: ', err);
})
.then(() => {
console.log('切断');
pool.end();
});
$ node index.js
開始 : postgres://test:test@localhost:5432/first_db
{ user: 'test' }
切断
마지막으로 수중의 로컬 머신(Windows)으로부터 Linux상의 PostgreSQL에 접속해 보겠습니다.
Node.js 파일은 ➁에서 사용한 것을 유용합니다.
그러나 연결 대상 문자열만 변경합니다.
postgres://test:test@[接続先サーバのアドレス]:5432/first_db
이 작업을 수행하면 연결 오류가 발생합니다.
PostgreSQL은 기본적으로 localhost에서만 연결을 허용합니다.
그러므로, 이 변의 설정을 만나 갑니다.
먼저 청취 대상을 *(모두)로 설정하여 포트 5432를 허용합니다.
/var/lib/pgsql/13/data/postgresql.conf_bk
#listen_addresses = 'localhost'
#port = 5432
↓
/var/lib/pgsql/13/data/postgresql.conf
listen_addresses = '*'
port = 5432
이어서
pg_hba.conf
에 아래의 한 줄을 추가/var/lib/pgsql/13/data/pg_hba.conf
host first_db test [接続元アドレス]/32 md5
이제 PostgreSQL 재부팅
sudo systemctl restart postgresql-13
그리고는 방화벽 등으로 5432 포트를 개방합니다.
사쿠라의 VPS는 브라우저에서 패킷 필터링 설정을 변경할 수 있기 때문에 거기에서 5432 포트를 열었습니다.
이제 수중의 머신으로부터
node index.js
라고 하면(자), 접속에 성공해 결과를 취득할 수 있었습니다!
Reference
이 문제에 관하여(Linux 서버에 PostgreSQL 도입~외부 서버 접속까지), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/sa9ra4ma/items/7c67cd8a368f2bd2dd88텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)