PostgreSQL'in CentOS'a kurulumundan sonra ve başlatmadan önce gereken ilk yapılandırma.


Yayın Tarihi:17 Aralık 2020.



INFOMARTION > PostgreSQL'in CentOS'a kurulumundan sonra ve başlatmadan önce gereken ilk yapılandırma.

Genel bakış.

Bu, PostgreSQL'i CentOS'a yüklemek ve başlatmak için gereken ilk yapılandırma prosedürüdür. Bilgiler CentOS7 kullanıldığı varsayımına dayanmaktadır. Güvenlikle ilgili bölüm de buna dahildir.

PostgreSQL ücretsiz ve son derece işlevsel olduğu için tavsiye edilir. PostgreSQL fonksiyonlarının eskiden yavaş olduğunu duymuştum, ancak yeni fonksiyonlar gelişti ve daha hızlılar.

Versiyonlar aşağıdaki gibidir.

CentOS sürümü7.6 (1810)
PostgreSQL Sürümü9.2.24

İçindekiler

  1. yükleyin
  2. Kurulum ayrıntıları
  3. özet

1. yükleyin

Bu bölümde PostgreSQL'i yükleme prosedürü açıklanmaktadır.

1-1. PostgreSQL'i Yükleme

Yum komutunu kullanarak PostgreSQL kurulumunu gerçekleştirin. Çalışmayı kök kullanıcı olarak gerçekleştirin.

[username@hostname ~]$ su -
[root@hostname ~]# yum -y install postgresql-server

2. Kurulum ayrıntıları

Bu bölümde PostgreSQL'in başlatılmasına kadar olan yapılandırma açıklanmaktadır.

2-1. Özel bir PostgreSQL kullanıcısı oluşturun.

PostgreSQL'i yönetmek için özel bir kullanıcı oluşturmak istedim (psql komutlarını kullanın), ancak kullanıcı zaten oluşturulmuştu. Kullanıcıları geçmişte oluşturduğumu hatırlıyorum, bu yüzden belki de özellikler değişmiştir.

Aşağıdaki komutla bir kullanıcıya geçmeyi deneyin.

[root@hostname ~]# su - postgres

Bazı kişiler PostgreSQL'in eski bir sürümünü kullanıyor olabileceğinden, aşağıdaki ".bashrc" dosyasını değiştirerek ortam değişkenlerini ayarlama prosedürünün artık gerekli olmadığını belirtmek gerekir.

.bashrc


export PGHOME=/var/lib/pgsql
export PGDATA=/var/lib/pgsql/data
export PGHOST=localhost

Postgres kullanıcıları için varsayılan PGDATA artık '/var/lib/pgsql/data' olarak görünüyor. "/usr/lib/systemd/system/postgresql.service" adresine atıfta bulunduğu belirtilmektedir.

2-2. PostgreSQL veri hazırlama

PostgreSQL verileri oluşturun. Kodlama UNICODE'dur. "/var/lib/pgsql/data" dizini varsayılan olarak oluşturulmuştur, ancak oluşturmamış olanlardan da bir klasör oluşturmaları istenir.

-bash-4.2$ initdb --encoding=UNICODE

"PGDATA=/var/lib/pgsql/data" "/usr/lib/systemd/system/postgresql.service" içinde ayarlandığından, "initdb --encoding=UNICODE" "/var/lib/pgsql/" altında bir DB oluşturacaktır. data/", DB ise "/var/lib/pgsql/data/" altında oluşturulur.

2-3. Yapılandırma dosyasının değiştirilmesi

IP adreslerinin PostgreSQL'e erişmesine izin verin. Sistemi, yerel olmayan erişim için parola doğrulamalı olacak şekilde kurun.

[root@hostname ~]# vi /var/lib/pgsql/data/postgresql.conf

'postgresql.conf' dosyasını aşağıdaki gibi değiştirin.

postgresql.conf【Değişimden önce】


#------------------------------------------------------------------------------
# CONNECTIONS AND AUTHENTICATION
#------------------------------------------------------------------------------

# - Connection Settings -

#listen_addresses = 'localhost'         # what IP address(es) to listen on;

postgresql.conf【değişiklikten sonra】


#------------------------------------------------------------------------------
# CONNECTIONS AND AUTHENTICATION
#------------------------------------------------------------------------------

# - Connection Settings -

listen_addresses = '*'         # what IP address(es) to listen on;

Güvenliğin önemli bir parçası olduğu için buna ek olarak, bu ayarı koyarsanız, siteye herhangi bir IP'den erişebilirsiniz. Erişilecek IP sabit ise lütfen sabit IP'yi belirtiniz.

Bu ayar, PostgreSQL'in kurulu olduğu sunucudan başka bir sunucudan oturum açarken gereklidir, örn. pgadmin. Sunucuda oturum açar ve psql komutunu çalıştırırsanız bu ayar gerekli değildir. (bağlantı kendisinden (localhost) kaynaklandığı için)

Bu önemli bir güvenlik ayarıdır, bu nedenle buna erişebilecek kullanıcı sayısını mümkün olduğunca en aza indirin.

Ardından 'pg_hba.conf' dosyasını değiştirin.

[root@hostname ~]# vi /var/lib/pgsql/data/pg_hba.conf

Aşağıdaki bilgileri belgenin sonuna ekleyin.

pg_hba.conf


#Dışarıdan şifre doğrulama.
host    all             all             0.0.0.0/0            md5

Bu ayar dahil edildiğinde, dışarıdan bağlanırken bir şifre gereklidir. Bu alanlar ayarlanmadığında veya yanlış ayarlandığında ciddi güvenlik açıklarına neden olabilir, bu nedenle lütfen bunları en son özenle ayarlayın.

2-4. bootstrap kontrolü

Ön yapılandırma tamamlandığına göre, PostgreSQL'in başladığını kontrol edin. DB bir postgres kullanıcısı olarak oluşturulduğundan, başlamadan önce postgres kullanıcısına geçin.

[root@hostname ~]# su - postgres
-bash-4.2$ pg_ctl start

PostgreSQL başarıyla başlatıldıktan sonra psql komutunun sorunsuz çalışıp çalışmadığını kontrol edin. Psql komutunu postgres kullanıcısı olarak çalıştırın.

-bash-4.2$ psql -l
                                         Database List
   Name    |  Owner   | Encoding         |  Collation Order   | Ctype(conversion operator) |      Access rights
-----------+----------+------------------+--------------------+----------------------------+-----------------------
 postgres  | postgres | UTF8             | ja_JP.UTF-8        | ja_JP.UTF-8                |
 template0 | postgres | UTF8             | ja_JP.UTF-8        | ja_JP.UTF-8                | =c/postgres          +
           |          |                  |                    |                            | postgres=CTc/postgres
 template1 | postgres | UTF8             | ja_JP.UTF-8        | ja_JP.UTF-8                | =c/postgres          +
           |          |                  |                    |                            | postgres=CTc/postgres
(3 lines)

Yukarıdaki sonuçlar döndürülürse sorun yoktur.

2-5. Otomatik başlatma ayarı

Zorunlu olmamakla birlikte, sunucu her yeniden başlatıldığında PostgreSQL'i başlatmak zordur, bu nedenle sunucu başlatıldığında PostgreSQL otomatik olarak başlayacak şekilde yapılandırılır. Ayrıca systemctl komutuna da kaydolur. Lütfen bu prosedürün CentOS7 için olduğunu unutmayın, bu nedenle CentOS7'den başka bir şey kullanıyorsanız, bununla başa çıkmak için Service komutunu kullanmanız gerekecektir.

'/usr/lib/systemd/system/postgresql.service' dosyasının var olup olmadığını kontrol edin. Değilse, aşağıdaki prosedürü kullanarak 'postgresql.service' dosyasını oluşturun. Kök kullanıcı olarak çalıştırın.

[root@hostname ~]# touch /etc/systemd/system/postgresql.service
[root@hostname ~]# vi /etc/systemd/system/postgresql.service

Aşağıdaki bilgiler verilmiştir.

postgresql.service


[Unit]
#Açıklama.
Description=PostgreSQL
#Yürütme öncesi ve sonrası kontrol.
#Before=xxx.service
After=network.target

[Service]
#Kullanıcı ve grup tanımlama
User=postgres
Group=postgres
#Etkinleştirildikten sonra durumu Etkinleştirildi olarak ayarlayın.
Type=oneshot
RemainAfterExit=yes
#Başlat, durdur ve yeniden yükle.
Environment=PGDATA=/var/lib/pgsql/data
ExecStart=/usr/bin/pg_ctl start -D /var/lib/pgsql/data
ExecStop=/usr/bin/pg_ctl stop
ExecReload=/usr/bin/pg_ctl reload

[Install]
#Çalışma seviyesi 3 eşdeğer ayarları.
WantedBy=multi-user.target

Ardından, systemctl komutu ile kayıt olun.

[root@hostname ~]# systemctl enable postgresql
[root@hostname ~]# systemctl is-enabled postgresql
enabled
[root@hostname ~]# systemctl list-unit-files --type=service | grep postgresql
postgresql.service                                enabled
[root@hostname ~]# systemctl daemon-reload

2-6. PostgreSQL'e yönetici kullanıcı ekleme

PostgreSQL uygulaması içinde kullanılmak üzere, PostgreSQL'i Linux'tan çalıştıran kullanıcıdan ayrı bir kullanıcı oluşturun. Bu, pgadmin vb. ile çalışırken kullanıcıdır. Varsayılan olarak var olan postgres kullanıcısının şifresini değiştirmek ve kullanmak istiyorum.

Aşağıdaki komutu postgres kullanıcısı olarak çalıştırın.

-bash-4.2$ psql
postgres=# alter role postgres with password '(bilgisayar) şifre';
postgres=# \q

※Ayarlamak istediğiniz şifreyi 'Şifre' alanına girin.

2-7. Güvenlik duvarlarının delinmesi

PostgreSQL bağlantı noktasına erişime izin verin çünkü güvenlik duvarı (CentOS6 ve öncesi için iptables) CentOS7'de varsayılan olarak yalnızca ssh erişimine izin verir. Yapılandırmayı kalıcı hale getirmek için 'kalıcı' seçeneğini de ekleyin.

[root@hostname ~]# firewall-cmd --permanent --zone=public --add-port=5432/tcp
[root@hostname ~]# firewall-cmd --reload
[root@hostname ~]# firewall-cmd --list-all
public (active)
  target: default
  icmp-block-inversion: no
  interfaces: eth0
  sources:
  services: dhcpv6-client http https ssh
  ports: 8080/tcp 5432/tcp
  protocols:
  masquerade: no
  forward-ports:
  source-ports:
  icmp-blocks:
  rich rules:

Eğer 'ports: 5432/tcp' yazıyorsa, sorun yok demektir.

pgadmin üzerinden erişim. Yeni belirlediğiniz parola ile bir postgres kullanıcısı olarak oturum açabilmeniz gerekir.

3. özet

PostgreSQL kurulduğunda gereken ilk yapılandırmayı açıkladık. PostgreSQL'in ilk kurulumu zor olabilir, bu nedenle lütfen bu bölüme bakın.

Sonuna kadar izlediğiniz için teşekkür ederiz.