« Deploy/SpaceWalk/PostgresqlSetup » : différence entre les versions

De TartareFR
Aller à la navigation Aller à la recherche
Aucun résumé des modifications
Aucun résumé des modifications
 
(2 versions intermédiaires par le même utilisateur non affichées)
Ligne 1 : Ligne 1 :
[[Fichier:LogoSpacewalk.svg|right]]
[[Fichier:LogoSpacewalk.svg|right]]
= Setup of the PostgreSQL database =
''' Setup of the PostgreSQL database '''


You should have PostgreSQL server running somewhere. Let's assume you will run the server on the same machine as Spacewalk itself:
==== Installation de PostgreSQL ====


<pre>
Installation via les RPM
yum install -y 'postgresql-server > 8.4'
* Pour '''RHEL 5''' et '''CentOS 5'''<pre>yum install postgresql84-server postgresql84-pltcl postgresql84-contrib</pre>
# we do this to get postgresql84-server on RHEL 5
* Pour les '''versions supérieures'''<pre>yum install postgresql-server postgresql-pltcl postgresql-contrib</pre>
chkconfig postgresql on
Initialisation et lancement automatique au démarrage
# on Fedoras (16, 17), run:
* Pour '''Fedora'''<pre>postgresql-setup initdb</pre><pre>systemctl enable postgresql</pre><pre>systemctl start postgresql</pre>
postgresql-setup initdb
* Pour '''les autres'''<pre>chkconfig postgresql on</pre><pre>service postgresql initdb</pre><pre>service postgresql start</pre>
# everywhere else run:
service postgresql initdb
 
service postgresql start
</pre>
 
Create database, user, and plpgsql language there:


==== Creation de la base de données, de l'utilisateur ajout du langage plpgsql ====
<pre>
<pre>
su - postgres -c 'PGPASSWORD=spacepw; createdb -E UTF8 spaceschema ; createlang plpgsql spaceschema ; yes $PGPASSWORD | createuser -P -sDR spaceuser'
su - postgres
createdb -E UTF8 spaceschema
createlang plpgsql spaceschema
createlang pltclu spaceschema
createuser -P -sDR spaceuser
exit
</pre>
</pre>


Configure the user to use md5 password to connect to that database. Put the lines like following to
===== Configuration de l'utilisateur =====
<pre>/var/lib/pgsql/data/pg_hba.conf</pre>. Avoid the common pitfall: '''Make sure you put them *before* those existing lines that are for ''all'''''.
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>.
{{Admon/important|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'''.}}


<pre>
<pre>
Ligne 31 : Ligne 31 :
local spaceschema postgres  ident
local spaceschema postgres  ident
</pre>
</pre>
{{Admon/note|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.}}
{{Admon/tip|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
<pre>host  spaceschema spaceuser 192.168.0.1/32 md5</pre>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<pre>listen_addresses = '*'</pre>
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.
<pre>service postgresql reload</pre>


Then reload PostgreSQL:
==== Test de connexion ====
 
<pre>
service postgresql reload
</pre>
 
and test the connection:


<pre>
<pre>
Ligne 45 : Ligne 46 :
</pre>
</pre>


Please note that you will want the TCP connection allowed as well because the JDBC driver cannot use the Unix domain socket. So even if the Python and Perl stack will use the Unix domain socket if you do not specify the hostname, JDBC will still go to localhost via TCP.
==== Tuning PostgreSQL ====


If you want to have the database on a separate box you will likely need to change this line in pg_hba.conf from 127.0.0.1/8 to something else:
Amélioration des performances de PostgreSQL avec l'utilitaire <app>pgtune</app>


<pre>
<pre>
host  spaceschema spaceuser 127.0.0.1/8 md5
yum install pgtune
pgtune --type=web -c 600 -i /var/lib/pgsql/data/postgresql.conf >/tmp/pgtune.conf
</pre>
</pre>
 
Visualisation et application des améliorations
and also to add line to /var/lib/pgsql/data/postgresql.conf
 
<pre>
<pre>
listen_addresses = '*'
</pre>
=== The contrib package ===
If your PostgreSQL server is installed on different machine than where you setup your Spacewalk server, please make sure the <package>postgresql-contrib >= 8.4</package> (or postgresql84-contrib on RHEL 5) is installed on the PostgreSQL server.
= Tune up PostgreSQL =
Tune up PostgreSQL's performance by running pgtune:
<pre>
yum install pgtune
pgtune --type=web -c 600 -i /var/lib/pgsql/data/postgresql.conf >/tmp/pgtune.conf
# Review the changes by
diff -u /var/lib/pgsql/data/postgresql.conf /tmp/pgtune.conf
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 /var/lib/pgsql/data/postgresql.conf /var/lib/pgsql/data/postgresql.conf.bak
Ligne 77 : Ligne 62 :
</pre>
</pre>


or at least increase maximal number of connections to 600:
ou simplement restreindre le nombre maximum de connexions à 600
<pre>
<pre>
echo max_connections = 600 >>/var/lib/pgsql/data/postgresql.conf
echo max_connections = 600 >>/var/lib/pgsql/data/postgresql.conf
</pre>
</pre>

Dernière version du 14 août 2013 à 13:59

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