Difference between revisions of "Template Tutorial"
RayMitchell (talk | contribs) (added masq example) |
RayMitchell (talk | contribs) (added mysql section) |
||
Line 88: | Line 88: | ||
Check your change is working | Check your change is working | ||
+ | |||
+ | ====mysql==== | ||
+ | |||
+ | Q) Is slaving SME's MySQL server for replication possible? Is binary logging possible? If so, do you edit the my.cnf file or some file to initiate binary logging? | ||
+ | |||
+ | A) First step is to go to the mysql web site and research what you want to do, see http://dev.mysql.com/doc/ | ||
+ | |||
+ | When you find out what needs to be added to the /etc/my.cnf file, you can then make appropriate changes via a sme server custom template. | ||
+ | |||
+ | Examine the template fragments in /etc/e-smith/templates/etc/my.cnf | ||
+ | |||
+ | Determine which fragment your revised code needs to go into. See the 000readme fragment for info. | ||
+ | |||
+ | If no fragment is suitable you will need to create a new fragment. In the following example replace 005mysql with the appropriate existing or new fragment name. | ||
+ | |||
+ | Let's say you wish to modify the /etc/e-smith/templates/etc/my.cnf/005mysqld | ||
+ | |||
+ | Copy the existing template to the custom template tree (or create a new custom template) | ||
+ | cp /etc/e-smith/templates/etc/my.cnf/005mysqld /etc/e-smith/templates-custom/etc/my.cnf/005mysqld | ||
+ | Edit and make your required additions & changes. This is where you add the changes determined from the mysql documentation. | ||
+ | pico -w /etc/e-smith/templates-custom/etc/my.cnf/005mysqld | ||
+ | Save and exit | ||
+ | Ctrl o | ||
+ | Ctrl x | ||
+ | Expand template and restart mysqld | ||
+ | expand-template /etc/my.cnf | ||
+ | sv t /service/mysqld | ||
+ | Check status of the service | ||
+ | sv s /service/mysqld | ||
+ | |||
+ | In this particular example there appears to be a requirement to share the mysql databases with LAN (local) or WAN (external) users. To achieve this you may need to change access permissions to your mysql databases, refer | ||
+ | http://wiki.contribs.org/SME_Server:Documentation:FAQ#Access_MySQL_from_the_local_network | ||
+ | http://wiki.contribs.org/SME_Server:Documentation:FAQ#Access_MySQL_from_a_remote_network | ||
+ | http://wiki.contribs.org/SME_Server:Documentation:FAQ#Create_MySQL_user.28s.29_with_access_from_other_computers | ||
+ | |||
+ | |||
+ | Check your changes are working | ||
+ | |||
+ | Removal | ||
+ | To remove these custom changes you delete the custom template, expand the template and then restart the service, as follows | ||
+ | rm /etc/e-smith/templates-custom/etc/my.cnf/005mysqld | ||
+ | expand-template /etc/my.cnf | ||
+ | sv t /service/mysqld | ||
+ | Check status of the service | ||
+ | sv s /service/mysqld | ||
====php.ini==== | ====php.ini==== |
Revision as of 02:42, 5 March 2010
Overview and Description
This document is meant to serve as a "plain english" description of the template system in SME server. Refer to the Configuration file templates of the SME Server Developer's Guide for more technical descriptions.
The template system is unique to SME Server. It is used to create the standard configuration files in /etc/.... in conjunction with the expand template event.
Templates are made up of fragments which add together to create the whole config file. The code in template fragments can have a default value in the absence of a specific db (database) value.
To determine what database settings are supported by template fragment code, or what the default values are, refer to (ie read) the code that is in the particular template fragments or custom template fragments associated with a /etc/file.conf
Look in /etc/e-smith/templates/ and /etc/e-smith/templates-custom/ and subfolders and template fragments applicable to particular /etc/file.conf configuration files.
Configuration changes are made in server manager, or by additional command line database settings, or by customizing the code that generates the configuration settings. This code is in the templates. Templates are composed of fragments. These are not regular configuration files, they are the code that generates part (i.e. a fragment) of the configuration files.
The configuration files in the /etc/ folder are created from the code in the template fragments and default values in the main template fragments and the internal configuration database in /etc/e-smith/templates/.
The code in the template fragments also look up values in the various databases in /home/e-smith/db/ (where the code has been written to support database settings).
In addition there are custom template fragments in the /etc/e-smith/templates-custom/ folder structure. The code in these custom template fragments add configuration settings in addition to the settings generated by the main template fragments, or where the custom template fragments are identically named, they completely replace the settings generated by the main template fragments.
The config files are generated when you expand the templates using
expand-template /etc/file.conf
You also need to restart affected services using
sv t /service/servicename
Some signal events combine template expansion and service restart
signal-event email-update
or one of the many other signal events as appropriate for the task you are doing.
If in doubt which template to expand and service to restart, there is a "master" command that will expand all templates and restart all services, in effect reapplying all configuration settings, and it is safe to do anytime using
signal-event post-upgrade signal-event reboot
To make a custom template change, copy the existing fragment of interest from the /etc/e-smith/templates/ tree to the corresponding /etc/e-smith/templates-custom/ tree while keeping the same folder structure. Edit the copied fragment with required changes, then expand the configuration file and restart affected services as described above.
You can also create new custom template fragments when an existing one does not exist that is suitable for the job. You need to name this in a correct numerical order, so the changes you want to make will be placed in the correct location in the /etc/xxxx config file.
Why do all this by design ?
To have robust default system settings that can easily be reverted to just by deleting the custom template fragments & expanding & restarting. The system will then return to correct functional settings.
That is why the main templates should never be modified, so all default template code remains unaltered and intact.
You will need to locate the template fragment of interest and read the code to decide which fragment you want to copy and make changes to. You can usually deduce this from the specific /etc/xxxx config file that you are trying to make changes to ie one correlates to the other.
Please review the many Howtos and Contrib wiki articles that have these types of configuration changes described, as it will provide step by step examples which can be applied to a particular need (changing the service and fragment names & the expansion config names of course). Also search the Forums on expand-template for numerous examples.
Specific practical examples
These are examples only, please ensure you determine and use the correct settings and template fragments.
dhcpd.conf
Examine the template fragments in /etc/e-smith/templates/etc/dhcpd.conf and determine which fragment you wish to change. Let's say you want to modify a value that is in 25DomainNameServers fragment (for the DNS server setting), and in the 25Routers fragment (for the gateway/router setting).
Copy the fragments to the custom template tree
mkdir -p /etc/e-smith/templates-custom/etc/dhcpd.conf echo "option domain-name-servers 4.2.2.1;" > /etc/e-smith/templates-custom/etc/dhcpd.conf/25DomainNameServers echo "option routers 192.168.1.4;" > /etc/e-smith/templates-custom/etc/dhcpd.conf/25Routers
Expand template and restart dhcpd
expand-template /etc/dhcpd.conf sv t /service/dhcpd
Examine /etc/dhcpd.conf to see that your changes have been created.
masq
Examine the template fragments in /etc/e-smith/templates/etc/rc.d/init.d/masq
Let's say you wish to block access to your server from an external IP, and there is no fragment that is suitable. Refer http://forums.contribs.org/index.php/topic,45495.0.html In this case create a new fragment.
Create a new template fragment
nano -w /etc/e-smith/templates-custom/etc/rc.d/init.d/masq/40DenyZombies
Add the following to the fragment
/sbin/iptables -A INPUT -s 24.71.223.10/32 -j DROP # waste of space IP /sbin/iptables -A INPUT -s 24.64.0.0/13 -j DROP # supporting telco
Then save and exit
Ctrl x yes
Expand template and restart masq (masquerading)
expand-template /etc/rc.d/init.d/masq /etc/init.d/masq restart
Check your change is working
mysql
Q) Is slaving SME's MySQL server for replication possible? Is binary logging possible? If so, do you edit the my.cnf file or some file to initiate binary logging?
A) First step is to go to the mysql web site and research what you want to do, see http://dev.mysql.com/doc/
When you find out what needs to be added to the /etc/my.cnf file, you can then make appropriate changes via a sme server custom template.
Examine the template fragments in /etc/e-smith/templates/etc/my.cnf
Determine which fragment your revised code needs to go into. See the 000readme fragment for info.
If no fragment is suitable you will need to create a new fragment. In the following example replace 005mysql with the appropriate existing or new fragment name.
Let's say you wish to modify the /etc/e-smith/templates/etc/my.cnf/005mysqld
Copy the existing template to the custom template tree (or create a new custom template)
cp /etc/e-smith/templates/etc/my.cnf/005mysqld /etc/e-smith/templates-custom/etc/my.cnf/005mysqld
Edit and make your required additions & changes. This is where you add the changes determined from the mysql documentation.
pico -w /etc/e-smith/templates-custom/etc/my.cnf/005mysqld
Save and exit
Ctrl o Ctrl x
Expand template and restart mysqld
expand-template /etc/my.cnf sv t /service/mysqld
Check status of the service
sv s /service/mysqld
In this particular example there appears to be a requirement to share the mysql databases with LAN (local) or WAN (external) users. To achieve this you may need to change access permissions to your mysql databases, refer http://wiki.contribs.org/SME_Server:Documentation:FAQ#Access_MySQL_from_the_local_network http://wiki.contribs.org/SME_Server:Documentation:FAQ#Access_MySQL_from_a_remote_network http://wiki.contribs.org/SME_Server:Documentation:FAQ#Create_MySQL_user.28s.29_with_access_from_other_computers
Check your changes are working
Removal To remove these custom changes you delete the custom template, expand the template and then restart the service, as follows
rm /etc/e-smith/templates-custom/etc/my.cnf/005mysqld expand-template /etc/my.cnf sv t /service/mysqld
Check status of the service
sv s /service/mysqld
php.ini
Examine the template fragments in /etc/e-smith/templates/etc/php.ini and determine which fragment you wish to change. Let's say you want to modify a value that is in the 40DataHandling fragment
Copy the fragment to the custom template tree
mkdir -p /etc/e-smith/templates-custom/etc/php.ini cp /etc/e-smith/templates/etc/php.ini/40DataHandling /etc/e-smith/templates-custom/etc/php.ini/40DataHandling
Edit the fragment and make your required changes
pico -w /etc/e-smith/templates-custom/etc/php.ini/40DataHandling
Save changes and exit (press the following keys together)
Ctrl o Ctrl x
Expand template and restart httpd-e-smith
expand template /etc/php.ini sv t /service/httpd-e-smith
Examine /etc/php.ini to see that your changes have been created.
More examples to be added to this section
References
See the Howto section for articles on db commands that should give useful additional info ie
http://wiki.contribs.org/DB_Variables_Configuration
and
http://wiki.contribs.org/Useful_Commands
Refer to the Developers Guide for technical information on Templating
http://wiki.contribs.org/SME_Server:Documentation:Developers_Manual#Configuration_file_templates