2018년 12월 18일 화요일

PostgreSQL RHEL(RedHat) 7.4 설치

RHEL(RedHat) 은 유료 프로그램이다.
CD 이미지 (iso 파일) 은 무료로 배포하고, 기술지원을 돈을 받는 형태이다.
또한 yum 을 돈을 받고 사용할 수 있도록 하고 있다.
그걸 sub scription 이라고 부르고 있다.

결국,,,, 뭐, 설치 및 사용은 자유롭게 해도 되지만,
yum 은 돈 내고 해라 라는 의미라서,
yum 을 사용할라면, 아래 처럼 명령어를 실행해 줘야 하는거 같다.

# subscription-manager register --username <username> --password <password> --auto-attach

만약 그게 싫다면 rpm 을 알아서 설치해 줘야 하는 삽질을 해야 한다.
dependencies 때문에 이게 좀 골치가 아프다.
aaa.RPM 설치하려고 하면 bbb.RPM 이 필요하다고 하고.....
bbb.RPM 설치하려고 하면 ccc.RPM 이 필요하다고 하고.....

일단 내 목적은 RHEL(RedHat) 에 PostgreSQL 이 정상적으로 돌아가도록 하는것이므로,
거기에만 촛점을 맞춰서 시도를 해봤다.

redhat 은 아래 경로에서 download 가능하다.
https://access.redhat.com/downloads/content/

부팅을 해보면, 아래처럼 설치화면이 나온다.


"설치소스"는 건드리지 말고,
"설치대상"은 입맛대로 하면 되고,
"네트워크 및 호스트명"은 입맛대로 하면 되고,
"최소설치"를 클릭한다.


"선택한 환경의 기능"에서 "디버깅도구, 호환성 라이브러리, 개발용 도구, 보안 도구"를 선택한다. "보안 도구"는 안해도 상관없다.


"설치 시작"을 클릭해서, 설치를 진행하고 마무리 한다.

RHEL(RedHat) 설치가 완료되었으면, PostgreSQL 을 설치해 보자.


https://www.postgresql.org
접속해서, Download 를 클릭하자


직접 컴파일해서 설치를 할 것이므로, Source 를 클릭하자.


2018.12 기준 최신 버전이 v11.1 이므로 이거를 클릭하자.


tar.gz 존재하는지 확인하자.


마우스 오른쪽 버튼을 눌러서, "링크 주소 복사" 를 클릭하자.

RHEL(RedHat) 에 접속해서, 다운로드 하자.
% curl -O https://ftp.postgresql.org/pub/source/v11.1/postgresql-11.1.tar.gz

압축을 해제하자.
% tar vxzf postgresql-11.1.tar.gz

설정을 하자.
% cd postgresql-11.1
% ./configure --prefix=/tmp/postgresql

아래와 같은 에러가 발생한다.
If you have readline already installed, see config.log for details on the
failure.  It is possible the compiler isn't looking in the proper directory.
Use --without-readline to disable readline support.

환경설정, 컴파일에 필요한 library 가 없어서 발생하는 에러다.
yum 을 통해서 library 를 설치해 주면 편할텐데 앞서 말한것처럼,
무료 RHEL(RedHat) 는 yum 을 사용할 수 없다.
그러므로 수동으로 RPM 을 설치해 줘야 한다.


RHEL(RedHat) iso 파일을 넣어준다.

read-only 형태로 마운트 한다.
% mount -r /dev/cdrom /mnt
% cd /mnt/Packages
% ls

RPM 파일들이 주루룩 나오는걸 볼 수 있다.
이것들을 수동으로 설치해 줘야 한다.

dependencies 에 걸리지 않도록 아래 순서대로 설치를 진행한다.

rpm -Uvi wget-1.14-15.el7.x86_64.rpm
rpm -Uvi ncurses-devel-5.9-13.20130511.el7.x86_64.rpm
rpm -Uvi readline-devel-6.2-10.el7.x86_64.rpm
rpm -Uvi zlib-devel-1.2.7-17.el7.x86_64.rpm
rpm -Uvi keyutils-libs-devel-1.5.8-3.el7.x86_64.rpm
rpm -Uvi libcom_err-devel-1.42.9-10.el7.x86_64.rpm
rpm -Uvi libkadm5-1.15.1-8.el7.x86_64.rpm
rpm -Uvi libverto-devel-0.2.5-4.el7.x86_64.rpm
rpm -Uvi libsepol-devel-2.5-6.el7.x86_64.rpm
rpm -Uvi pcre-devel-8.32-17.el7.x86_64.rpm
rpm -Uvi libselinux-devel-2.5-11.el7.x86_64.rpm
rpm -Uvi krb5-devel-1.15.1-8.el7.x86_64.rpm
rpm -Uvi openssl-devel-1.0.2k-8.el7.x86_64.rpm
rpm -Uvi xz-devel-5.2.2-1.el7.x86_64.rpm
rpm -Uvi libxml2-devel-2.9.1-6.el7_2.3.x86_64.rpm
rpm -Uvi pam-devel-1.1.8-18.el7.x86_64.rpm
rpm -Uvi python-devel-2.7.5-58.el7.x86_64.rpm
rpm -Uvi cyrus-sasl-2.1.26-21.el7.x86_64.rpm
rpm -Uvi cyrus-sasl-devel-2.1.26-21.el7.x86_64.rpm
rpm -Uvi openldap-devel-2.4.44-5.el7.x86_64.rpm
rpm -Uvi tcl-8.5.13-8.el7.x86_64.rpm
rpm -Uvi tcl-devel-8.5.13-8.el7.x86_64.rpm
rpm -Uvi libgpg-error-devel-1.12-3.el7.x86_64.rpm
rpm -Uvi libgcrypt-devel-1.5.3-14.el7.x86_64.rpm
rpm -Uvi libxslt-devel-1.1.28-5.el7.x86_64.rpm
rpm -Uvi systemd-devel-219-42.el7.x86_64.rpm
rpm -Uvi libuuid-devel-2.23.2-43.el7.x86_64.rpm

설치 완료 후, 다시 시도해 보자.
% cd postgresql-11.1
% ./configure --prefix=/tmp/postgresql

잘 되었으면 컴파일을 하자.
% make

잘 되었으면 설치를 하자.
% make install

Database 초기화가 잘 되는지 확인해 보자.
% initdb -D DATA

DB 실행이 잘 되는지 확인해 보자.
% pg_ctl -D DATA start

2018년 10월 26일 금요일

Thunderbird 기부

현대사회의 사람들은 email을 많이 사용한다.
나도 현대사회의 사람이므로 email을 많이 사용하고 있다.

개인적으로 사용하기도 하고,
회사에서 사용하기도 하고.

email을 사용할때 일반적으로 email client 프로그램을 사용한다.
세상에는 수 많은 email client 프로그램이 존재한다.

Microsoft Outlook
Mail for Windows 10
eM Client
Mailbird
Inky
TouchMail
Thunderbird
Opera Mail
........ (더 많이 있다)
등등 너무 많다.

그 중에서 아무래도 사람들에게 가장 널리 알려진건 Outlook일 것이다.
아무래도 Windows, Office 가 널이 보급되어 있으니 당연한 현상일 것이다.

개인적으로 Thunderbird를 많이 사용했었다.
공짜이기도 하고,
왠지...... "공돌이는 이런거 써야 해~" 라는 마음가짐 때문에?
암튼.

저번 Ubuntu 기부 이후 문득,
또 다시 너무 신세만 지고 살아온게 아닌가 라는 생각이 들었다.
http://kimchki.blogspot.com/2017/10/ubuntu.html

Thunderbird는 나에게 많은 것을 아낌없이 주었는데,
나는 해준것도 없이 받기만 한거 같았다.
그래서, 기부를 하기로 했다.

기부 하는 방법은 간단하다.
"https://www.thunderbird.net/ko - 기부하기" 로 이동한다.


기부하고 싶은 금액을 선택하거나,
직접 금액을 입력할 수 있다.


\11,160 기부하기로 했다.


대략 $9.78 정도 되는거 같다.


기부자의 정보를 입력한다.


뭔가 작업이 빙글빙글 되더니, 고맙다고 ㅋㅋ


email에서도 고맙다고 ㅋㅋ


카드 명세서에도 나온다.
환율이랑 수수료에 따라 금액은 다를 수 있다.
업종이.......자선단체 ???


기부를 하니, 뿌듯하다.


뭔가 감사의 표시를 한거 같아서 좋다.
많은 사람들을 위해, Thunderbird가 계속 잘 발전했으면 좋겠다.

2018년 9월 28일 금요일

PostgreSQL 에서 pg_hba.conf 의 ADDRESS 설정

저번 포스트에서 postgresql.conf 의 listen_addresses 에 대해 기록을 했다.
listen_addresses 는 PostgreSQL 서버 입장에서 listen 을 할때에 대한 내용이었다.

pg_hba.conf 는 다른 컴퓨터(클라이언트)에 대한 control 내용이다.

편집기를 통해 pg_hba.conf 파일을 열어보면, 아래와 같은 형태로 되어 있다.

# TYPE  DATABASE        USER            ADDRESS                 METHOD

이번에는 ADDRESS 항목에 대해서만 기록해 보자.

pg_hba.conf 의 초기 내용은 아래와 같다.

# "local" is for Unix domain socket connections only
local   all             all                                     trust
# IPv4 local connections:
host    all             all             127.0.0.1/32            trust
# IPv6 local connections:
host    all             all             ::1/128                 trust

# Allow replication connections from localhost, by a user with the
# replication privilege.
local   replication     all                                     trust
host    replication     all             127.0.0.1/32            trust
host    replication     all             ::1/128                 trust

"127.0.0.1/32" 라고 되어 있다.
클라이언트 IP 주소가 127.0.0.1 경우만 접속을 허용하겠다는 의미다.
클라이언트 IP 주소가 127.0.0.1 이라는것은,
결국 localhost 접속만 허용하겠다는 의미다.

% psql -h localhost
이 형태의 접속만 허용하겠다는 의미다.

다른 컴퓨터(클라이언트)의 접속을 허용하기 위해서는,
해당 컴퓨터의 IP 주소를 입력하면 된다.

예를 들어,
10.0.2.20 주소를 가지고 있는 클라이언트의 접속을 허용하기 위해서는,
"10.0.2.20/32" 라고 입력하면 된다.
이렇게 하면 10.0.2.20 주소를 가지고 있는 컴퓨터(클라이언트)만 접속할 수 있다.

host    all             all             10.0.2.20/32            trust

만약에,
10.0.2.30 주소를 가지고 있는 클라이언트도 접속을 허용하기 위해서는,
"10.0.2.30/32" 라고 추가적으로 입력하면 된다.
이렇게 하면 10.0.2.30 주소를 가지고 있는 컴퓨터(클라이언트)도 접속할 수 있다.

host    all             all             10.0.2.20/32            trust
host    all             all             10.0.2.30/32            trust

특정 IP 주소 말고, IP 주소 대역대를 입력할 수 있다.
"/32" 를 다른 값으로 넣어주면 된다.
"/32" "/24" 는 서브넷마스크를 의미한다.

host    all             all             10.0.2.0/24            trust

이렇게 하면 IP 주소가 10.0.2.x 대역의 주소를 가지고 있으면 접속이 가능하다.

만약 IP 주소 상관없이 모든 접속을 허용하고 싶게 하고 싶다면,
"/0" 을 입력하면 된다.

host    all             all             10.0.2.0/0            trust

지금까지는 TCP/IP socket 접속에 대한 내용이다.
그렇다면, local 은 무엇인가?

local   all             all                                     trust

local 은 Unix-domain socket(UDS) 을 의미한다.
그러므로 IP 주소를 입력하지 않는다.

아래 내용은 구글링을 통해서 얻은 정보이다.
--------------------------------------------------------------------------------------------
유닉스 도메인 소켓(Unix Domain Socket)은 프로세스간의 데이터 교환을 위한 기술 중 하나로, 파일 시스템을 통해 소켓통신 방식으로 내부 프로세스간의 통신을 하는 구조로 이뤄져있다. 약칭으로 UDS라고 표기하며, 간단하게 ‘유닉스 소켓(Unix socket)‘이라고 부르기도 한다. IPC(Inter Process Communication)의 일부로서 분류할 때는 ‘IPC소켓’이라고 부르기도 한다. POSIX의 표준 운영체제 구성요소 중 하나로 포함되어있다.

UDS의 가장 큰 특징은 소켓통신 방식을 써서 만든 프로세스에 사용이 가능하기 때문에 소켓프로그래밍 구조를 유지한 채로 로컬 프로세스와의 효율적 통신을 가능케 한다는 점이다. TCP, 혹은 UDP형식 데이터를 파일 시스템을 이용해서 통신하는 구조로, 파일 시스템을 통해 파일 주소 및 inode로 각 프로세스에서 참조되며, 통신은 운영체제의 커널상에서 이뤄지기 때문에 inet소켓을 이용해서 네트워크단을 이용해 전달하는 것보다 빠르며 부하가 적게 걸린다.(기본적으로 소켓통신 방식이 TCP/IP의 4계층을 거쳐 전달되기 때문에 지연이 발생하는데 반해서 유닉스 소켓은 어플리케이션 계층에서 TCP계층으로 내려가 바로 데이터를 전달하고, 수신측도 TCP계층에서 수신해 어플리케이션 계층으로 올라간다)
--------------------------------------------------------------------------------------------

Unix-domain socket(UDS)의 특징은 소켓프로그래밍 구조를 유지한 채로 프로세스간 통신이 가능하다.
장점은 모듈화를 잘 하면 소켓 코드를 재사용할 수 있다는 것과, 개발 공수가 적게 들어간다는 것이다.
일반 소켓프로그래밍과 차이점은 TCP 계층 2개만(Application, Transport) 사용한다는 것이다.

% psql
아무런 옵션없이 접속하는 경우, Unix-domain socket 으로 접속한다.

pg_hba.conf 를 사용해서 적절하게 접근 권한을 설정해서 보안을 설정하면 된다.
수정후에는 반드시 restart 혹은 reload 를 해야 한다.

% pg_ctl reload
% pg_ctl restart




출처

2018년 9월 27일 목요일

PostgreSQL 에서 postgresql.conf 의 listen_addresses 설정

PostgreSQL 은 DBMS 이다.
당연히 socket 을 통한 접속 기능을 제공하고 있다.

처음 설치를 하면, 보안을 위해서 socket 외부 접속이 막혀있다.
이것을 열어주기 위해서는 postgresql.conf 파일을 수정해야 한다.

편집기를 통해서 postgresql.conf 파일을 열어보면,
listen_addresses 항목이 있는데 이것을 수정하면 된다.

listen_addresses 앞에 주석표시를 삭제한다.
(당연한 것이겠지만, 혹시나 하고)

listen_addresses = 'localhost' # what IP address(es) to listen on;
                                       # comma-separated list of addresses;
                                       # defaults to 'localhost'; use '*' for all
                                       # (change requires restart)

기본값이 localhost 로 되어 있다.
localhost 와 127.0.0.1 은 같은 의미다.

뭐, 예를 들어, 실제 PostgreSQL 소스 코드에
listen("localhost");
이런식으로 들어간다는 말이다.

아래 명령어를 통해서,
실제로 네트워크가 어떻게 되고 있는지 확인할 수 있다.

% netstat -nap | grep 5432

tcp        0      0 127.0.0.1:5432          0.0.0.0:*               LISTEN      30702/postgres

이 말은 PostgreSQL 이 네트워크를 listen 하고 있는데,
127.0.0.1 으로 listen 하고 있겠다는 의미다.
로컬 접속만 허용하겠다는 의미다.

어떤 서버가 psql 을 통해서 PostgreSQL 에 접속을 하려고 할때,
"psql -h localhost" 이런식으로 접속 해야 된다는 것이다.
혹은 "psql -h 127.0.0.1"

결국, 다른 컴퓨터가 아닌, 자기 자신의 접속만 허용한다는걸 의미한다.

만약 다른 컴퓨터에서 접속할 수 있게 하려면 어떻게 해야 할까?

listen_addresses = '자신의 IP 주소'
이런식으로 하면 된다.

만약 자신의 IP 주소가 10.0.2.12 일 경우,
listen_addresses = '10.0.2.12'
이런식으로 하면 된다.

아래 명령어를 통해서,
실제로 네트워크가 어떻게 되고 있는지 확인할 수 있다.

% netstat -nap | grep 5432

tcp        0      0 10.0.2.12:5432          0.0.0.0:*               LISTEN      30702/postgres

어떤 서버가 psql 을 통해서 PostgreSQL 에 접속을 하려고 할때,
"psql -h 10.0.2.12" 이런식으로 접속 하면 된다.

만약 자신의 IP 주소가 2개일 경우,
listen_addresses = '10.0.2.12,10.0.2.14'
이런식으로 콤마(,)를 사용해서 추가하면 된다.

아래 명령어를 통해서,
실제로 네트워크가 어떻게 되고 있는지 확인할 수 있다.

% netstat -nap | grep 5432

tcp        0      0 10.0.2.12:5432          0.0.0.0:*               LISTEN      30702/postgres
tcp        0      0 10.0.2.14:5432          0.0.0.0:*               LISTEN      30702/postgres

어떤 서버가 psql 을 통해서 PostgreSQL 에 접속을 하려고 할때,
"psql -h 10.0.2.12" 혹은
"psql -h 10.0.2.14" 이런식으로 접속 하면 된다.

IP 주소를 신경쓰고 싶지 않다면,
listen_addresses = '*' 혹은
listen_addresses = '0.0.0.0' 이런식으로 하면 된다.

IP 주소 상관없이 listen 을 하겠다는 의미다.

아래 명령어를 통해서,
실제로 네트워크가 어떻게 되고 있는지 확인할 수 있다.

% netstat -nap | grep 5432

tcp        0      0 0.0.0.0:5432          0.0.0.0:*               LISTEN      30702/postgres

적용 후, PostgreSQL restart 를 반드시 해야 한다.
% pg_ctl restart


※ 만약, PostgreSQL 을 Active-Standby 형식으로 구성할거라면,
반드시 listen_addresses = '*' 으로 설정해야 한다.
왜냐하면 Active 와 Standby 의 IP 주소가 서로 다르기 때문이다.
물론 각각 별도로 postgresql.conf 를 수정하면 되지만,
일반적으로 처음 동기화를 수행할 때, postgresql.conf 도 동기화 되기 때문이다.



출처
http://justckh.blogspot.com/2013/10/postgresql-ip.html

Linux Timezone(UTC) 시간 변경 (tzdata)

서버 시간이, 실제 자신이 거주하고 있는 곳 시간과 다를 수 있다.

시간을 맞추는 방법은 아래와 같다.

% sudo dpkg-reconfigure tzdata

자신에게 맞는 시간을 선택한다.



2018년 9월 21일 금요일

CentOS 7 IP 주소 설정

CentOS 7 IP 주소 설정

네트워크 설정이 기록되어 있는 파일을 수정하면 된다.

% vi /etc/sysconfig/network-scripts/ifcfg-enp3s0

ifcfg-enp3s0 파일 이름은 서버 상황에 따라 다를 수 있다.

% ip a
명령어를 통해서 네트워크 카드 이름을 확인하자.

% ls -l /etc/sysconfig/network-scripts
해당하는 파일이 존재하는지 확인하자.

붉은색으로 표시된 내용만 수정 혹은 추가하면 된다.

TYPE=Ethernet
PROXY_METHOD=none
BROWSER_ONLY=no
BOOTPROTO=static
DEFROUTE=yes
IPV4_FAILURE_FATAL=no
IPV6INIT=yes
IPV6_AUTOCONF=yes
IPV6_DEFROUTE=yes
IPV6_FAILURE_FATAL=no
IPV6_ADDR_GEN_MODE=stable-privacy
NAME=enp3s0
UUID=227c9d90-2be8-4427-a098-3fd3b22e4271
DEVICE=enp3s0
ONBOOT=yes
IPADDR=172.21.70.116
NETMASK=255.255.255.0
GATEWAY=172.21.70.1
DNS1=172.21.17.2
DNS2=168.126.63.1

서버를 재부팅 하거나, 네트워크를 다시 시작하면 된다.
% service network restart



출처
http://devhoma.tistory.com/112

Linux Timezone(UTC) 시간 변경

서버 시간이, 실제 자신이 거주하고 있는 곳 시간과 다를 수 있다.

시간을 맞추는 방법은 여러가지 방법이 있다.
아래 3가지 방법 중 원하는 방법을 사용하면 된다.

(1) localtime 을 링크로 연결해 준다.
% ln -sf /usr/share/zoneinfo/Asia/Seoul /etc/localtime

% ls -l /usr/share/zoneinfo
디렉토리를 보면, 다양한 나라들이 존재한다.

다른 시간을 기준으로 하고 싶다면
위처럼 해당 시간을 맞추면 된다.

(2) tzselect 명령어 사용


(3) "dpkg-reconfigure tzdata" 명령어 사용






출처
http://jhproject.tistory.com/136
https://xmlangel.blogspot.kr/2016/06/ubuntu-utc.html
http://misoin.tistory.com/68
http://ngee.tistory.com/643
https://cjh5414.github.io/ubuntu-timezone

화곡 어쩌라고, 굴사냥

석화찜(굴찜)을 먹으러 여의도로 갔다 그런데 재료가 모두 소진되었다고 마감이라고 한다 응? 다들 굴에 미쳤나? 굴을 찾아 헤매다 보니, 화곡까지 가게 되었다. 화곡은 처음 가본다. 첫인상은 "술집 겁네 많네" 피똥쌀때까지 마실 수 있...