Changes

Jump to navigation Jump to search
5,471 bytes added ,  18:31, 5 March 2022
Line 1: Line 1:  
==db command tutorial==
 
==db command tutorial==
   −
The db command is unique to sme server. It is used to add settings to the various configuration databases which are then incorporated into the standard configuration files in /etc/.... via the template expansion process.
+
The '''db''' command is unique to SME Server, and is the command line user interface to the '''db system'''. It is used to manipulate configuration setting of the various configuration databases which are then incorporated into the standard configuration files in /etc/.... via the template expansion process.
   −
To display the syntax, at a command prompt type
+
The '''db system''' comes with default values that can be manipulated by either manually through the CLI or fully automatic through the Server Manager. This tutorial explains manipulating the '''db system''' manually through the CLI.
  db
+
 
then press Enter, which displays the usage:
+
 
 +
To display the syntax issue the following command:
 +
  /sbin/e-smith/db
 +
which will result in the db help output below, for we did not pass any parameters.
 
  /sbin/e-smith/db dbfile keys
 
  /sbin/e-smith/db dbfile keys
 
  /sbin/e-smith/db dbfile print [key]
 
  /sbin/e-smith/db dbfile print [key]
Line 21: Line 24:  
  /sbin/e-smith/db dbfile delprop key prop1 [prop2] [prop3] ...
 
  /sbin/e-smith/db dbfile delprop key prop1 [prop2] [prop3] ...
   −
{{Note box|Note that on a properly setup SME Server (path wise) you do not need to include the
+
{{Note box|Note that on a properly setup SME Server (path wise) '''you do not need''' to include the
/sbin/e-smith/ part, only use db since you are in the Path of your environment}}
+
/sbin/e-smith/ part, '''only use db or config''' since you are in the Path of your environment}}
    
===Only for the configuration database===
 
===Only for the configuration database===
you have a shortcut command only for the '''configuration database'''
+
{{Note box| Use of 'config' is a shorthand version for 'db configuration' and therefore only works with the configuration database}}
 
  db configuration
 
  db configuration
 
is
 
is
Line 31: Line 34:     
Note this only applies to this one often used database file, all others must be referred to using the format
 
Note this only applies to this one often used database file, all others must be referred to using the format
  db dbname xxxx yyyy zzzz
+
  db dbname command key [property value] [property2 value2]
    
All database files are in
 
All database files are in
Line 59: Line 62:  
     status=enabled
 
     status=enabled
    +
we can retrieve a value
 
  [root@sme8dev64 ~]# db configuration getprop imap status
 
  [root@sme8dev64 ~]# db configuration getprop imap status
 
which gives something like
 
which gives something like
Line 67: Line 71:  
  12
 
  12
   −
You could also do
+
Compare the above displayed actual element values of the db command with the syntax result from issuing the db command where each element or piece equates to:
[root@sme8dev64 ~]# config show dansguardian
+
 
 +
===Keys/Properties/values===
 +
 
 +
All turn around A key with properties and values of the properties, no more, no less. You can have a lot of properties under a key which is unique
    
  imap=service
 
  imap=service
    ConcurrencyLimit=400
+
  ConcurrencyLimit=400
    ConcurrencyLimitPerIP=12
+
  ConcurrencyLimitPerIP=12
    TCPPort=143
+
  TCPPort=143
    access=private
+
  access=private
    status=enabled
+
  status=enabled
      −
Compare the above displayed actual element values of the db command with the syntax result from issuing the db command where each element or piece equates to:
+
{| class="wikitable"
 +
|-
 +
! Database name !! Unique key !! Property name !! Default value || Possible values || Description
 +
|-
 +
| configuration ||style="text-align:center;"| imap || ||style="text-align:center;"|'''service'''|| || Unique key name
 +
|-
 +
| || || Concurrenstyle || style="text-align:center;"|'''400''' || style="text-align:center;"|nnn || User defined value
 +
|-
 +
| || || ConcurrencyLimitPerIP || style="text-align:center;"|'''12''' || style="text-align:center;"|nn || User defined value
 +
|-
 +
| || || TCPPort || style="text-align:center;"|'''143''' || style="text-align:center;"|nnn || TCP port or port range [nnn] or [nnn-nnn]
 +
|-
 +
| || || access || style="text-align:center;"|'''private''' || style="text-align:center;"|private / public || Specify LAN only or LAN and WAN access.<br> The firewall will be adjusted accordingly
 +
|-
 +
| || || status || style="text-align:center;"|'''enabled''' || style="text-align:center;"|enabled / disabled || Enable or disable this service.<br> The firewall will be adjusted accordingly
 +
|}
   −
db = command
  −
configuration = '''database name'''
  −
show = part of a command
  −
keys = part of a command
  −
imap = '''key'''
  −
status = '''property'''
  −
enabled = '''value'''
  −
ConcurrencyLimitPerIP = '''property'''
  −
12 = '''value'''
      
Apply the above "reasoning" to any database and the the syntax presented by issuing db then makes sense.
 
Apply the above "reasoning" to any database and the the syntax presented by issuing db then makes sense.
Line 101: Line 114:  
===show all available databases===
 
===show all available databases===
 
To show a list of existing databases do
 
To show a list of existing databases do
  cd /home/e-smith/db
+
  ls -al /home/e-smith/db
ls -al
      
which gives something like for official databases
 
which gives something like for official databases
    
  total 304
 
  total 304
  -rw-r----- 1 root admin  1921 f�vr. 18  2014 accounts
+
  -rw-r----- 1 root admin  1921 févr. 18  2014 accounts
  -rw-r--r-- 1 root admin      0 f�vr.  2  2013 backups
+
  -rw-r--r-- 1 root admin      0 févr.  2  2013 backups
 
  -rw-r----- 1 root admin  8816 nov.  4 19:38 configuration
 
  -rw-r----- 1 root admin  8816 nov.  4 19:38 configuration
  -rw-r----- 1 root admin    361 f�vr.  2  2013 domains
+
  -rw-r----- 1 root admin    361 févr.  2  2013 domains
  -rw-r----- 1 root admin    816 f�vr.  7  2013 hosts
+
  -rw-r----- 1 root admin    816 févr.  7  2013 hosts
  drwxr-x--- 2 root ldap    4096 f�vr. 22  2013 ldap
+
  drwxr-x--- 2 root ldap    4096 févr. 22  2013 ldap
  -rw-r----- 1 root admin  3098 f�vr.  2  2013 mailpatterns
+
  -rw-r----- 1 root admin  3098 févr.  2  2013 mailpatterns
 
  drwxr-x--- 2 root root    4096 avril 27  2014 mysql
 
  drwxr-x--- 2 root root    4096 avril 27  2014 mysql
 
  drwxr-xr-x 2 root root    4096 nov.  3 21:42 navigation
 
  drwxr-xr-x 2 root root    4096 nov.  3 21:42 navigation
  -rw-r----- 1 root admin    299 f�vr.  2  2013 networks
+
  -rw-r----- 1 root admin    299 févr.  2  2013 networks
 
  -rw-r----- 1 root admin      0 mars 11  2010 portforward_tcp
 
  -rw-r----- 1 root admin      0 mars 11  2010 portforward_tcp
 
  -rw-r----- 1 root admin      0 mars 11  2010 portforward_udp
 
  -rw-r----- 1 root admin      0 mars 11  2010 portforward_udp
  -rw-r----- 1 root admin    271 f�vr.  2  2013 spamassassin
+
  -rw-r----- 1 root admin    271 févr.  2  2013 spamassassin
 
  -rw-r--r-- 1 root root  201371 nov.  4 04:04 yum_available
 
  -rw-r--r-- 1 root root  201371 nov.  4 04:04 yum_available
 
  -rw-r--r-- 1 root root  37419 nov.  4 04:04 yum_installed
 
  -rw-r--r-- 1 root root  37419 nov.  4 04:04 yum_installed
  -rw-r----- 1 root admin  4459 f�vr. 18  2014 yum_repositories
+
  -rw-r----- 1 root admin  4459 févr. 18  2014 yum_repositories
 
  -rw-r--r-- 1 root root      70 nov.  4 04:04 yum_updates
 
  -rw-r--r-- 1 root root      70 nov.  4 04:04 yum_updates
       
To show the keys for the two main databases do:
 
To show the keys for the two main databases do:
  db configuration keys |more
+
  db configuration show |less
 
That can be abbreviated to
 
That can be abbreviated to
  config keys |more
+
  config show |less
   −
  db accounts keys |more
+
  db accounts show |less
Note after using the |more switch, press Enter to scroll down a line at a time, or press Space to scroll down a page at a time
+
Note after using the |less switch, press Enter to scroll down a line at a time, or press Space to scroll down a page at a time. 'q' to quit.
   −
===Create a db key===
+
===Usage===
 +
{{Note box| Use of 'config' is a shorthand version for 'db configuration' and therefore only works with the configuration database}}
 +
====Create a key in a database====
 
the generic command is :
 
the generic command is :
  /sbin/e-smith/db dbfile set key type [prop1 val1] [prop2 val2] ...
+
  db dbfile set key type [prop1 val1] [prop2 val2] ...
    
  dbfile : choose the database in /home/e-smith/db
 
  dbfile : choose the database in /home/e-smith/db
 
  key : the name of key
 
  key : the name of key
  type : generally 'service' or configuration but it can be other things as webbapps or url or ...
+
  type : generally 'service' or 'configuration' but it can be other things as webbapps or url or ...
 
   
 
   
 
If you want to create a keys called 'plop' in the configuration database with a type as 'configuration you can do like this
 
If you want to create a keys called 'plop' in the configuration database with a type as 'configuration you can do like this
Line 150: Line 164:  
  config show plop
 
  config show plop
 
or  
 
or  
  db configuration show
+
  db configuration show plop
 +
 
 
   plop=configuration
 
   plop=configuration
 
     DbName=wordpress
 
     DbName=wordpress
Line 158: Line 173:  
     WpLang=en
 
     WpLang=en
 
     status=enabled
 
     status=enabled
 +
 +
====Change values of properties====
 +
The generic command line is
 +
db dbfile setprop key prop1 val1 [prop2 val2] [prop3 val3] ...
 +
 +
dbfile : choose the database in /home/e-smith/db
 +
key : the name of key
 +
 +
Then if you want to modify some values of our example above
 +
db configuration setprop plop PublicAccess public WpLang fr
 +
or
 +
config setprop plop PublicAccess public WpLang fr
 +
 +
We want to verify
 +
config show plop
 +
or
 +
db configuration show plop
 +
 +
plop=configuration
 +
    DbName=wordpress
 +
    DbUser=wordpress
 +
    Name=wordpress
 +
    PublicAccess=public  <----------Here
 +
    WpLang=fr            <----------Here
 +
    status=enabled
 +
 +
====Create a property under a key====
 +
 +
Same as above, really not difficult
 +
 +
db configuration setprop plop PlopTheWorld YES           
 +
or
 +
config setprop plop PlopTheWorld YES           
 +
 +
and to display modification
 +
 +
db configuration show plop
 +
or
 +
config show plop
 +
 +
plop=configuration
 +
    DbName=wordpress
 +
    DbUser=wordpress
 +
    Name=wordpress
 +
    PlopTheWorld=YES    <----------Here
 +
    PublicAccess=public
 +
    WpLang=fr
 +
    status=enabled
 +
 +
==== Setting db variables to default values ====
 +
{{Note box| Use of 'config' is a shorthand version for 'db configuration' and therefore only works with the configuration database}}
 +
 +
Any db variable that has a default value can be reset to the default by deleting the variable entirely, then re-initializing the default database values as follows:
 +
config delprop <key> <prop>
 +
/etc/e-smith/events/actions/initialize-default-databases
 +
 +
for example
 +
db configuration delprop plop WPlang
 +
/etc/e-smith/events/actions/initialize-default-databases
 +
or
 +
config delprop plop WpLang
 +
/etc/e-smith/events/actions/initialize-default-databases
 +
 +
==== Delete a property value ====
 +
To delete the property
 +
db dbfile delprop <key> <prop>
 +
for example
 +
db configuration delprop plop WpLang
 +
or
 +
config delprop plop WpLang
 +
 +
==== Delete a Key ====
 +
To delete the Key
 +
db dbfile delete <key>
 +
for example
 +
db configuration delete plop
 +
or
 +
config delete plop
 +
 +
==== Reset a property to an empty value ====
 +
To reset to an empty value
 +
db dbfile setprop <key> <prop> <nowiki>''</nowiki>
 +
 +
for example
 +
db configuration setprop plop WpLang <nowiki>''</nowiki>
 +
or
 +
config setprop plop WpLang <nowiki>''</nowiki>
 +
 +
====Check if a key is used====
 +
To check if a key is used, grep templates
 +
 +
Eg :
 +
 +
grep -irn grapCutof /etc/e-smith/templates
 +
 +
 +
grep -rn AutoBlock /etc/e-smith/templates
 +
 +
{{Note box|: via CLI so it is easy to make mistakes.
 +
 +
Hence it is safer to user server manager when there is an entry to configure key.}}
 +
 +
 +
{{Warning box|Database parameters are case sensitive so take great care when typing at the server shell because no error messages are given should you make a mistake.}}
 +
 +
===Signal-event===
 +
 +
Once you have '''adjusted/modified/created''' your '''keys/properties/values''', it is not finished because you have to do a signal-event to read all templates and add the values you have set in all configuration files.
 +
 +
signal-event are called like this, the most known is
 +
signal-event post-upgrade; signal-event reboot
 +
This one reboot your server and reconfigure all templates and initialize all default db entries. It is an SME Server requirement that all database entries and configuration files must be correctly configured after a "reconfiguration reboot"
 +
 +
signal-event console-save
 +
This one is useful when you don't want to restart your server, a lot of event are called with this command line but The console-save event is not a "reconfigure everything" event, and only changes items which can be configured from the text-mode console. It is convenient in this case as it performs database initialization and migration.
 +
 +
all specific events can be found  at [[DB_Variables_Configuration]] and in the [[SME_Server:Documentation:Developers_Manual#Signalling_events|developer manual]] with more informations
    
===References===
 
===References===
3,070

edits

Navigation menu