Changes

From SME Server
Jump to navigationJump to search
Line 1: Line 1: −
{{WIP box}}
+
<blockquote style="float: right;">
{{Note box|Software Collections is '''only''' available for SME Server '''9, 64-bit!'''}}
+
[[File:softwarecollections.png|100px]]
 +
 
 +
</blockquote>
 
<blockquote style="float: right;">
 
<blockquote style="float: right;">
 
[[File:postgresql.png|250px]]
 
[[File:postgresql.png|250px]]
 
</blockquote>
 
</blockquote>
 
+
__TOC__
 
'''Installing and running PostgreSQL via [[Software collections]]'''
 
'''Installing and running PostgreSQL via [[Software collections]]'''
   Line 10: Line 12:     
Software Collections applications can be started at boot as a system service, manually or in a specific shell.
 
Software Collections applications can be started at boot as a system service, manually or in a specific shell.
 +
    
==PostgreSQL==
 
==PostgreSQL==
Line 22: Line 25:  
====Install application====
 
====Install application====
 
After installing the scl-postgresql92 repository, PostgreSQL can be installed by issuing the following command:
 
After installing the scl-postgresql92 repository, PostgreSQL can be installed by issuing the following command:
  yum install postgresql92 --enablrepo=scl-postgresql
+
  yum install postgresql92 --enablerepo=scl-postgresql92
 
Once installed, the application is installed on your SME Server at '''/opt/rh/postgresql92''' as an isolated environment for the application.
 
Once installed, the application is installed on your SME Server at '''/opt/rh/postgresql92''' as an isolated environment for the application.
   Line 38: Line 41:       −
====Initialize database====
+
=== Database location ===
PostgreSQL requires the initialization of t's database environment. This can be done by the following command:
+
By default postgresql stores it's data in the environment under /opt/rh/postgresql92. We want a different location for the data, for we want to make sure the data is being backed up by the default backup mechanisms of SME Server. The chosen location is '''/home/e-smith/files/pgsql/data'''
  service postgresql92-postgresql initdb
+
 
 +
To be able to do this, we need to create a file as described below, which is the postgresql way of settings variables:
 +
  mkdir -p /opt/rh/rh-postgresql92/root/etc/sysconfig/pgsql
 +
echo PGDATA=/home/e-smith/files/pgsql/data > /opt/rh/rh-postgresql92/root/etc/sysconfig/pgsql/postgresql92-postgresql
    +
{{Note box|Just like MySQL, Postgresql needs pre-backup and pre-restore actions. New actions have to developed to make this possible. Once this is the case, the databases location will have to change to the default /var/lib/pgsql}}
   −
===Start/Stop the application===
  −
PostgreSQL is now installed and initialized, and can be started and stopped via:
  −
/etc/rc.d/init.d/postgresql92-postgres start
  −
and
  −
/etc/rc.d/init.d/postgresql92-postgres start
      +
====Initialize database====
 +
PostgreSQL requires the initialization of the database environment. This can be done by the following command:
 +
/etc/rc.d/init.d/rh-postgresql92-postgresql initdb
    
====Start/Stop PostgreSQL as a system service====
 
====Start/Stop PostgreSQL as a system service====
 
Issue the following commands as root:
 
Issue the following commands as root:
  ln -s /etc/rc.d/init.d/e-smith-service /etc/rc7.d/S99postgresql92-postgresql
+
  ln -s /etc/rc.d/init.d/e-smith-service /etc/rc7.d/S64postgresql92-postgresql
 
  chkconfig postgresql92-postgresql on
 
  chkconfig postgresql92-postgresql on
 
  config set postgresql92-postgresql service
 
  config set postgresql92-postgresql service
Line 60: Line 65:     
====Configure private/public access====
 
====Configure private/public access====
If your SME Server is hosting the application and is being accessed by other hosts either locally (LAN) or remotely (WAN) the ports and access privileges need to be set. For this issue the following commands (where 5432 is the port that PostgreSQL can be reached):
+
If your SME Server is hosting the application and is being accessed by other hosts either locally (LAN) or remotely (WAN) the ports and access privileges need to be set. For this issue the following commands (where 5432 is the port that PostgreSQL can be reached on):
 
  config setprop postgresql92-postgresql TCPPort 5432
 
  config setprop postgresql92-postgresql TCPPort 5432
 
  config setprop postgresql92-postgresql UDPPort 5432
 
  config setprop postgresql92-postgresql UDPPort 5432
Line 67: Line 72:  
  signal-event remoteaccess-update
 
  signal-event remoteaccess-update
 
You can toggle between private and public access followed by the remoteaccess-update command.
 
You can toggle between private and public access followed by the remoteaccess-update command.
 +
 +
===Enable the postgresql92 environment at boot time===
 +
The preferred way to enable scl postgresql environment permanently at logout or (re)boot is to add a custom script called 'enablepostgresql92.sh' to /etc/profile.d/ directory with the following content and make it executable.
 +
 +
#!/bin/sh
 +
source /opt/rh/postgresql92/enable
 +
export X_SCLS="`scl enable postgresql92 'echo $X_SCLS'`"
 +
 +
This will take effect after a logout/login as root or reboot. The simplest way is to log out from the console at this time and login again as root.
 +
 +
 +
===Possible bug and solution===
 +
It seems that the scl-postgresql92 pckages do not create 2 additional directories within the postgresql92 environment. We need to create them manually:
 +
mkdir -p /opt/rh/postgresql92/root/var/lock/subsys/
 +
mkdir -p /opt/rh/postgresql92/root/var/run/
 +
 +
 +
===Start/Stop PostgreSQL manually===
 +
PostgreSQL is now installed and initialized, and can be started and stopped manually via:
 +
/etc/rc.d/init.d/postgresql92-postgresql start
 +
and
 +
/etc/rc.d/init.d/postgresql92-postgresql stop
 +
 +
 +
== Wrap up ==
 +
From here you will have a working PostgreSQL environment that is based on Software Collection and fully transparent with your SME Server. Further PostgreSQL configuration and usage is beyond this how-to, so please refer to the '''[http://www.postgresql.org/docs/9.2/interactive/index.html official PostgreSQL documentation]'''.
 +
 +
The user postgres has been automatically created with the following credentials:
 +
postgres:x:26:26:PostgreSQL Server:/var/lib/pgsql:/bin/bash
 +
 +
So to start using PostgreSQL command line:
 +
su postgres
 +
psql
 +
 +
 +
== Uninstall ==
 +
To remove the scl postgresql92 environment:
 +
/etc/rc.d/init.d/postgresql92-postgresql stop
 +
yum remove \
 +
postgresql92* audit-libs-python libcgroup \
 +
libselinux-python libsemanage-python \
 +
policycoreutils-python setools libs setools-libs-python
 +
config delete postgresql92-postgresql
 +
rm -f /etc/profile.d/enablepostgresql92.sh
 +
rm -f /etc/rc7.d/S64postgresql92-postgresql
 +
All data will still be present in /home/e-smith/files/pgsql/data and can be transferred to another machine, archived or deleted manually. When re-used with another instance of scl-postgresql92, the step regarding initdb can be ommited for the data structure and data is already available.
 +
 +
 +
== TO DO ==
 +
* Re-direct PostgreSQL log file to /var/log/
 +
 +
 +
==Other articles in this category==
 +
{{#ask: [[Category:Software Collections]]}}
          
[[Category:Software Collections]]
 
[[Category:Software Collections]]
 +
[[Category:Howto]]

Navigation menu