3

在 Amazon Linux 2 上运行 PostgreSQL

 3 years ago
source link: https://old-panda.com/2020/04/09/amazon-linux-2-postgresql/
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.
neoserver,ios ssh client

在 Amazon Linux 2 上运行 PostgreSQL

Posted on 2020-04-09 by OldPanda 数据库 运维 0
amazon-toy-scaled.jpg?resize=940%2C529&ssl=1

中国有一句话叫“闷声大发财”

用过 AWS 的人都知道,想用他们家的 PostgreSQL 数据库的话,每个月的起价是十五块钱,但作为小本生意,也没有一个数据,上来就一个月十五块着实有些铺张,扭脸一看,他们的 EC2 服务器最便宜一个月只要三块五,所以个人项目想用 PostgreSQL ,何不自己搭一个呢?

在 Linux 系统上运行 PostgreSQL 的教程很多,找起来不费吹灰之力,所以这篇文章主要记录一个不太好找教程的系统—— Amazon Linux 2 。顾名思义,这是 Amazon 自己基于 CentOS 魔改的一个的 Linux 发行版,但和 CentOS 不同,上来就执行 yum install 是搞不定的。这也是为什么写作本文,简单整理一下安装运行过程的目的。

首先假设我们有了一台最便宜的 EC2 ,运行 Amazon Linux 2 ,也就是下图这个系统

image.png?resize=588%2C78&ssl=1
Amazon Linux 2

其他的配置不再赘述,根据自己的需要配置即可。

Amazon Linux 2 提供了一个 amazon-linux-extras 工具,可以在保证系统稳定运行的同时,使其上运行的软件尽量保持最新,避免每次升级时候的要仔细阅读软件的发布文档,最后升级的时候还要小心翼翼随时准备回滚,对于我这样的运维小白是很友好的。先看看 PostgreSQL 支持到哪个版本了

$ amazon-linux-extras list
 ...
 41  postgresql11             available    [ =11  =stable ]
 ...

目前最新的版本其实是12,但11也已经足够新了,我们来 enable 它

$ sudo amazon-linux-extras enable postgresql11
 ...
 41  postgresql11=latest      enabled      [ =11  =stable ]
 42  php7.4                   available    [ =stable ]

Now you can install:
 # yum clean metadata
 # yum install postgresql

然后一次安装所有需要的组件

$ sudo yum install postgresql postgresql-server postgresql-devel postgresql-contrib postgresql-docs 

初始化数据库并启动服务

$ sudo postgresql-setup initdb

这个时候启动服务也是连不上数据库的,我们还有个配置文件要改,否则在用 psql 命令连接的时候会说

psql: FATAL:  Peer authentication failed for user "postgres"

打开文件 /var/lib/pgsql/data/pg_hba.conf ,把原有的内容改成

# TYPE  DATABASE        USER            ADDRESS                 METHOD

# "local" is for Unix domain socket connections only
local   all             all                                    	trust
# IPv4 local connections:
host    all             all             127.0.0.1/32            md5
# IPv6 local connections:
host    all             all             ::1/128                 md5
# Allow replication connections from localhost, by a user with the
# replication privilege.
local   replication     all                                     trust
host    replication     all             127.0.0.1/32            md5
host    replication     all             ::1/128                 md5

这个时候再用 systemd 启动服务

$ sudo systemctl start postgresql

然后执行 psql 命令,熟悉的界面就出现了

$ psql -U postgres
psql (11.5)
Type "help" for help.

postgres=#

回到 AWS 控制台界面,把这台刚刚配置好的 EC2 机器加到打开了 5432 端口的安全组中,一个便宜可靠的 PostgreSQL 数据库服务就建好了。

文章的脚注信息由WordPress的wp-posturl插件自动生成


About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK