Kullanıcıların Postgresql'de tutulması

Kurulum

Jabberd varsayılan olarak Mysql veritabanını seçmektedir, ancak belgenin bu kısmında Jabber sunucusunu Postgresql ile kullanacağımızdan, Openssl ve Libidn kullanılarak sistemi yapılandıralım:

cd jabberd-2.2.7.1
./configure --enable-pgsql --enable-ssl --enable-idn

Not

Eğer yukarıdaki komutu uygulamanıza rağmen halen Mysql ile derleme konusunda ısrarla karşılaşırsanız aşağıdaki komutu deneyin:

./configure --disable-mysql --enable-pgsql --enable-ssl --enable-idn

Eğer ek olarak path ya da kütüphane eklemek istiyorsanız: -with-extra-include-path ve -with-extra-library-path seçeneklerini kullanabilirsiniz.

Örnek bir komut için:

./configure --disable-mysql --enable-pgsql --enable-ssl --enable-idn \
-with-extra-include-path=/etc/postgresql:/usr/include/postgresql:/usr/share/postgresql \
-with-extra-library-path=/usr/lib/postgresql

Yapılandırma sorunsuz bittikten sonra;

make
make install
komutlarını vererek kurulum işini bitirin.

Yapılandırma

Jabberd dosyalarının içerdiği bilgiler arasında parolalar da olduğu için gerekli izinleri aşağıdaki gibi ayarlayalım:

chown -R root:jabber /usr/local/etc/jabberd/*
chmod -R 640 /usr/local/etc/jabberd/*

Böylece artık yalnızca jabber kullanıcısı ve root'un yapılandırma dosyalarını okuyabilmesini ve değiştirebilmesini sağladık.

İpucu

Kolaylık için yapılandırma dosyalarına bir sembolik link atayabilirsiniz:

ln -s /usr/local/etc/jabberd/ /etc/jabberd

Şimdi /etc/jabberd dizinine geçip ve yapılandırma dosyalarını düzenleme işine başlayalım. Jabberd'de yapılandırma dosyaları xml halinde bulunurlar. İlk iş olarak sm.xml ve c2s.xml dosyalarındaki hostname'i ayarlayın. Bunun için sm.xml dosyasının ilk paragrafında localhost gördüğünüz yere kendi alan adınızı yazın:

<!-- Session manager configuration -->
<sm>
 <!-- Our ID on the network. Users will have this as the domain part of
      their JID. If you want your server to be accessible from other
      Jabber servers, this ID must be resolvable by DNS.s
      (default: localhost) -->
 <id>jabber.comu.edu.tr</id>

c2s.xml dosyasında ise "Local Network Configuration" ile başlayan kısımda localhost yazan yere kendi alan adınızı yazın:

<!-- Local network configuration -->
 <local>
   <!-- Who we identify ourselves as. This should correspond to the
        ID (host) that the session manager thinks it is. You can
        specify more than one to support virtual hosts, as long as you
        have additional session manager instances on the network to
        handle those hosts. The realm attribute specifies the auth/reg
        or SASL authentication realm for the host. If the attribute is
        not specified, the realm will be selected by the SASL
        mechanism, or will be the same as the ID itself. Be aware that
        users are assigned to a realm, not a host, so two hosts in the
        same realm will have the same users.
        If no realm is specified, it will be set to be the same as the
        ID. -->
   <id>jabber.comu.edu.tr</id>

Şimdi Postgresql ile olan işimizi halledelim. Öncelikle Jabberd için bir veritabanı yaratın:

createdb -U postgres jabberd2

Daha sonra da jabberd2 kullanıcısını oluşturun:

createuser -P -U postgres jabberd2

Daha sonra açtığınız Jabberd kaynak kodlarının bulunduğu dizindeki tools dizinine geçerek;

psql -U jabberd2 jabberd2
ve ardından;
jabberd2 -i db-setup.pgsql
komutlarını çalıştırarak db-setup.pgsql betiğini çalıştırın.

Şimdi yapılandırma dosyanızda veritabanı için ufak bir kaç ayar yapmanız gerekiyor. Öncelikle sm.xml dosyasında "Storage database configuration" ile başlayan satıra gidip driver etiketleri arasında yazılı olan mysql'i pgsql'e çevirin.

<!-- Storage database configuration -->
       <storage>
         <!-- By default, we use the MySQL driver for all storage -->
         <driver>pgsql></driver>

Sonra yine aynı dosyada postgresql ile olan kısımdaki ("PostgreSQL driver configuration" etiketi ile başlayan) "secret" kelimesi yerine kendi parolanızı yazın.

<!-- PostgreSQL driver configuration -->
     <pgsql>
       <!-- Database server host and port -->
       <host>localhost</host>
       <port>5432</port>

       <!-- Database name -->
       <dbname>jabberd2</dbname>

       <!-- Database username and password -->
       <user>jabberd2</user>
       <pass>secret</pass>

       <!-- Transaction support. If this is commented out, transactions
            will be disabled. This might make database accesses faster,
            but data may be lost if jabberd crashes. -->
       <transactions/>
     </pgsql>

Şimdi c2s.xml dosyasını açın ve "Authentication/registration database configuration" ile başlayan etikette module tagındaki mysql'i pgsql'e çevirin.

<!-- Authentication/registration database configuration -->
     <authreg>
       <!-- Backend module to use -->
       <module>pgsql</module>

Sonra yine aynı dosyadaki "PostgreSQL module configuration" ile başlayan etikette "Database username and password" kısmındaki secret kelimesinin yerine jabberd2 kullanıcısının veritabanı parolasını yazın.

<!-- PostgreSQL module configuration -->
     <pgsql>
       <!-- Database server host and port -->
       <host>localhost</host>
       <port>5432</port>

       <!-- Database name -->
       <dbname>jabberd2</dbname>

       <!-- Database username and password -->
       <user>jabberd2</user>
       <pass>secret</pass>
     </pgsql>