Deploy/SpaceWalk/PostgresqlSetup

De TartareFR
Aller à la navigation Aller à la recherche
LogoSpacewalk.svg

Setup of the PostgreSQL database

Installation de PostgreSQL

Installation via les RPM

  • Pour RHEL 5 et CentOS 5
    yum install postgresql84-server postgresql84-pltcl postgresql84-contrib
  • Pour les versions supérieures
    yum install postgresql-server postgresql-pltcl postgresql-contrib

Initialisation et lancement automatique au démarrage

  • Pour Fedora
    postgresql-setup initdb
    systemctl enable postgresql
    systemctl start postgresql
  • Pour les autres
    chkconfig postgresql on
    service postgresql initdb
    service postgresql start

Creation de la base de données, de l'utilisateur ajout du langage plpgsql

su - postgres
createdb -E UTF8 spaceschema
createlang plpgsql spaceschema
createlang pltclu spaceschema
createuser -P -sDR spaceuser
exit
Configuration de l'utilisateur

On configure l'utilisateur pour qu'il utilise un mot de passe md5 afin de se connecter à la base de données. Ajout des lignes suivantes au fichier <path>/var/lib/pgsql/data/pg_hba.conf</path>.

Important.png
'Emplacement des lignes dans le fichier
Ces lignes doivent être ajoutés avant les définitions de connexion par défaut, c'est à dire avant les lignes commençant par
all.
local spaceschema spaceuser md5
host  spaceschema spaceuser 127.0.0.1/8 md5
host  spaceschema spaceuser ::1/128 md5
local spaceschema postgres  ident
Note.png
Acceptation des connexions TCP
On doit aussi accepter les connexions TCP, car le driver JDBC ne peut pas utiliser de socket unix. Donc, même si les couches en Python ou en Perl utilise cette socket dans le cas où l'hôte n'est pas spécifié, JDBC continuera à utiliser localhost comme nom d'hôte.
Idea.png
Serveur de base de données externe à Spacewalk
Dans le cas d'un serveur de base de données externe à notre serveur Spacewalk, il faut aussi définir une autorisation pour celui-ci, du style
host  spaceschema spaceuser 192.168.0.1/32 md5
Il faut aussi faire écouter le serveur Postgresql sur l'interface LAN, car par défaut, il n'écoute que sur la boucle locale. Pour ce faire, on édite le fichier <path>/var/lib/pgsql/data/postgresql.conf</path> pour ajouter/modifier la ligne
listen_addresses = '*'
Il faut, en outre, installer le paquet <package>postgresql-contrib</package> (ou <package>postgresql84-contrib</package> pour RHEL 5 ou CentOS 5) sur le serveur Postgresql.
Prise en compte des modifications

On force PostgreSQL à rafraichir sa configuration, ou on le redémarre.

service postgresql reload

Test de connexion

PGPASSWORD=spacepw psql -a -U spaceuser spaceschema
PGPASSWORD=spacepw psql -h localhost -a -U spaceuser spaceschema

Tuning PostgreSQL

Amélioration des performances de PostgreSQL avec l'utilitaire <app>pgtune</app>

yum install pgtune
pgtune --type=web -c 600 -i /var/lib/pgsql/data/postgresql.conf >/tmp/pgtune.conf

Visualisation et application des améliorations

diff -u /var/lib/pgsql/data/postgresql.conf /tmp/pgtune.conf
cp /var/lib/pgsql/data/postgresql.conf /var/lib/pgsql/data/postgresql.conf.bak
cp /tmp/pgtune.conf /var/lib/pgsql/data/postgresql.conf
service postgresql restart

ou simplement restreindre le nombre maximum de connexions à 600

echo max_connections = 600 >>/var/lib/pgsql/data/postgresql.conf