1. CentOS์— PostgreSQL ์„ค์น˜

์„ค์น˜ ํ™˜๊ฒฝ

  • NHN Cloud ์ธ์Šคํ„ด์Šค ๋˜๋Š” Docker ์ปจํ…Œ์ด๋„ˆ
  • CentOS 7.9

 

Workflow

  1. ์Šคํฌ๋ฆฝํŠธ ์‹คํ–‰์‹œ ์„ค์น˜ํ•˜๊ณ ์ž ํ•˜๋Š” ๋ฒ„์ „์ด ์ž…๋ ฅ๋˜์—ˆ๋Š”์ง€ ํ™•์ธ
  2. ์„ค์น˜ํ•˜๊ณ ์ž ํ•˜๋Š” PC์˜ OS, ์•„ํ‚คํ…์ฒ˜๊ฐ€ ์ ํ•ฉํ•œ์ง€ ํ™•์ธ
  3. CentOS 7์ธ์ง€ ํ™•์ธ
  4. PostgreSQL์ด ์ด๋ฏธ ์„ค์น˜๋œ ๊ฒฝ์šฐ ์ œ๊ฑฐ
  5. ํ•„์š”ํ•œ ํŒจํ‚ค์ง€ ์„ค์น˜ ๋ฐ yum ๋ ˆํฌ์ง€ํ† ๋ฆฌ ์—…๋ฐ์ดํŠธ
  6. PostgreSQL ์„ค์น˜
  7. ์ดˆ๊ธฐํ™” ๋ฐ ์œ ์ € ๋น„๋ฐ€๋ฒˆํ˜ธ ์„ค์ •
  8. ์™ธ๋ถ€ ์ ‘์†์„ ์œ„ํ•œ pg_hba.conf์™€ postgresql.conf ์ˆ˜์ • ๋ฐ ์žฌ์‹œ์ž‘
  9. PostgreSQL ์‹คํ–‰

 

์„ค์น˜ ์Šคํฌ๋ฆฝํŠธ

#!/usr/bin/env bash

# ์„ค์น˜ํ•˜๊ณ ์ž ํ•˜๋Š” ๋ฒ„์ „
version=$1
major_version=${version%%.*}  # 15.2 -> 15

# ์„ค์น˜ํ•˜๋ ค๋Š” ๋ฒ„์ „ ๋ฒˆํ˜ธ๋ฅผ ๋ฐ›์•˜๋Š”์ง€ ํ™•์ธ
if [ $# -eq 0 ]; then
    echo -e "\033[31;1m>> Error: Version number is missing. Usage: ./install_postgres_yum.sh <version>\033[0m"
    exit 1
fi

# OS๊ฐ€ Linux x86_64์ธ์ง€ ํ™•์ธ
if [ "$(uname -s)" != "Linux" ]; then
    echo -e "\033[31;1m>> Error: Your OS is not supported.\033[0m"
    exit 1
fi
if [ "$(uname -m)" != "x86_64" ]; then
    echo -e "\033[31;1m>> Error: Your architecture is not supported.\033[0m"
    exit 1
fi

# CentOS๊ฐ€ Enterprise Linux 7 (EL7)์ธ์ง€ ํ™•์ธ
if [ "$(rpm -q --queryformat '%{VERSION}' centos-release)" != "7" ]; then
    echo -e "\033[31;1m>> Error: This script is only compatible with Enterprise Linux 7 (EL7)\033[0m"
    exit 1
fi

# PostgreSQL์ด ์ด๋ฏธ ์„ค์น˜๋˜์–ด ์žˆ๋‹ค๋ฉด ์ œ๊ฑฐ
if yum list installed | grep postgresql; then
    echo -e "\033[31;1m>> Remove PostgreSQL already installed...\033[0m"
    sudo yum -y remove postgresql*
fi

# ํ•„์š”ํ•œ ํŒจํ‚ค์ง€ ์„ค์น˜
echo -e "\033[31;1m>> Install required packages...\033[0m"
yum install -y sudo
sudo yum -y update
sudo yum install -y epel-release
sudo yum install -y zstd

# PostgreSQL ์„ค์น˜
echo -e "\033[31;1m>> Install PostgreSQL...\033[0m"
sudo yum install -y https://download.postgresql.org/pub/repos/yum/${major_version}/redhat/rhel-7-x86_64/postgresql${major_version}-libs-${version}-1PGDG.rhel7.x86_64.rpm
sudo yum install -y https://download.postgresql.org/pub/repos/yum/${major_version}/redhat/rhel-7-x86_64/postgresql${major_version}-${version}-1PGDG.rhel7.x86_64.rpm
sudo yum install -y https://download.postgresql.org/pub/repos/yum/${major_version}/redhat/rhel-7-x86_64/postgresql${major_version}-server-${version}-1PGDG.rhel7.x86_64.rpm

# ์ดˆ๊ธฐํ™”
echo -e "\033[31;1m>> Initialize PostgreSQL...\033[0m"
sudo /usr/pgsql-${major_version}/bin/postgresql-${major_version}-setup initdb

# ์‹œ์ž‘
echo -e "\033[31;1m>> Start PostgreSQL...\033[0m"
sudo systemctl start postgresql-${major_version}
sudo systemctl enable postgresql-${major_version}

# ์œ ์ € ์ƒ์„ฑ
username="postgres"
password="nhnpostgres123"

sudo adduser $username
echo "$username:$password" | sudo chpasswd

# postgres user๋กœ ๋ณ€๊ฒฝ ํ›„ ์„ค์ •ํŒŒ์ผ ์ˆ˜์ •
echo -e "\033[31;1m>> Edit pg_hba.conf and postgresql.conf\033[0m"
sudo su - postgres <<EOF
    echo "host    all             all             133.186.251.35/22       md5" >> /var/lib/pgsql/${major_version}/data/pg_hba.conf

    sed -i "s/#listen_addresses = 'localhost'/listen_addresses = '*'/g" /var/lib/pgsql/${major_version}/data/postgresql.conf

    exit
EOF

# ์žฌ์‹œ์ž‘
echo -e "\033[31;1m>> Restart PostgreSQL...\033[0m"
sudo systemctl restart postgresql-${major_version}

# ์‹คํ–‰
echo -e "\033[31;1m>> Run PostgreSQL...\033[0m"
sudo su - postgres -c "psql"

 

+ Recent posts