The file
${BUILD_HOME}/builddescriptors/buildstyles.dat
is where the different pieces of software that you have requested to install through your template. If your template is configured to install NGINX then you can configure NGINX to install in a variety of ways as described below:
If you set NGINX to install using cloud-init
NGINX:cloud-init
Behind the scenes, NGINX will be installed by the simple command
packages: - nginx
What this will do is install the cloud-init version of nginx
When you choose the cloud-init way of installing NGINX you can also configure various settings from this file. For example, you can set
NGINX:settings:client_body_timeout=15:client_header_timeout=20:keepalive_timeout=10:keepalive_requests=100:reset_timedout_connection=on
If you set NGINX to install using repo
NGINX:repo
Behind the scenes, NGINX will be installed using apt-get or apt-fast
When you choose the repo way of installing NGINX you can also install additional dynamic modules. For example, you can set
NGINX:modules-list:mpm_event:ssl:rewrite:expires:headers:proxyproxy_http:remoteip:proxy_fcgi
When you choose the repo way of installing NGINX you can also configure various settings from this file. For example, you can set
NGINX:settings:client_body_timeout=15:client_header_timeout=20:keepalive_timeout=10:keepalive_requests=100:reset_timedout_connection=on
If you set NGINX to install from source
NGINX:source
Behind the scenes, NGINX will be installed by downloading the very lastest stable version of the NGINX sourcecode and compiling it
When you choose the source way of installing NGINX you can also install additional dynamic modules. For example, you can set
NGINX:modules-list:http-image-filter
When you choose the source way of installing NGINX you can also install additional built in static modules. For example, you can set
NGINX:static-modules-list:select:poll:http_ssl:http_v2:http_realip:http_addition:http_sub:http_dav:http_flv:http_mp4:http_gunzip:http_gzip_static:http_auth_request:http_random_index:http_secure_link:http_degradation:http_slice:http_stub_status:stream_ssl_preread:mail_ssl:stream_ssl:stream_realip:ngx_http_realip_module
When you choose the source way of installing NGINX you can also configure various settings from this file. For example, you can set
NGINX:settings:client_body_timeout=15:client_header_timeout=20:keepalive_timeout=10:keepalive_requests=100:reset_timedout_connection=on
When you build NGINX from source there will be additional software packages that need to be installed because the compilation process depends on them. You can set the software packages to install as follows:
NGINX:software-packages:build-essential:libpcre3-dev:libssl-dev:zlib1g-dev:libgd-dev:libnginx-mod-http-image-filter
NOTE: the configuration setting
NGINX:modules-list:http-image-filter
requires the configuration setting to install the module
NGINX:software-packages:libnginx-mod-http-image-filter
and you will need to do this for any dynamic module that you want to add
If your template is configured to install APACHE then you can configure APACHE to install in a variety of ways as described below:
If you set APACHE to install using cloud-init
APACHE:cloud-init
Behind the scenes, APACHE will be installed by the simple command
packages: - apache2
What this will do is install the cloud-init version of nginx
When you choose the cloud-init way of installing APACHE you can also configure various settings from this file. For example, you can set
APACHE:settings:StartServers=4:MinSpareServers=20:MaxSpareServers=40:MaxRequestWorkers=200:MaxConnectionsPerChild=4500
If you set APACHE to install using repo
APACHE:repo
Behind the scenes, APACHE will be installed using apt-get or apt-fast
When you choose the repo way of installing APACHE you can also install additional dynamic modules. For example, you can set
APACHE:modules-list:mpm_event:ssl:rewrite:expires:headers:proxy:proxy_http:remoteip:proxy_fcgi
When you choose the repo way of installing APACHE you can also configure various settings from this file. For example, you can set
APACHE:settings:StartServers=4:MinSpareServers=20:MaxSpareServers=40:MaxRequestWorkers=200:MaxConnectionsPerChild=4500
If you set APACHE to install from source
APACHE:source
Behind the scenes, APACHE will be installed by downloading the very lastest stable version of the APACHE sourcecode and compiling it
When you choose the source way of installing APACHE you can also install additional dynamic modules. For example, you can set
APACHE:modules-list:ssl:rewrite:expires:headers:proxy:proxy_http:remoteip:proxy_fcgi:socache_shmcb:log_config:log_debug:logio:dir:unixd:authz_core:mime:http2
When you choose the source way of installing APACHE you can also install additional built in static modules. For example, you can set
APACHE:static-modules-list:mpm_event
When you choose the source way of installing APACHE you can also configure various settings from this file. For example, you can set
APACHE:settings:StartServers=4:MinSpareServers=20:MaxSpareServers=40:MaxRequestWorkers=200:MaxConnectionsPerChild=4500
When you build APACHE from source there will be additional software packages that need to be installed because the compilation process depends on them. You can set the software packages to install as follows:
APACHE:software-packages:pandoc:build-essential:libssl-dev:libexpat-dev:libpcre3-dev:libapr1-dev:libaprutil1-dev:libnghttp2-dev:lua5.4:libjansson-dev:libcurl4-gnutls-dev
If your template is configured to install LIGHTTPD then you can configure LIGHTTPD to install in a variety of ways as described below:
If you set LIGHTTPD to install using cloud-init
LIGHTTPD:cloud-init
Behind the scenes, LIGHTTPD will be installed by the simple command
packages: - lighttpd
What this will do is install the cloud-init version of lighttpd
When you choose the cloud-init way of installing LIGHTTPD you can also configure various settings from this file. For example, you can set
LIGHTTPD:settings:server.use-ipv6="disable":server.bind="localhost":server.max-fds=2048:server.stat-cache-engine="simple"
If you set LIGHTTPD to install using repo
LIGHTTPD:repo
Behind the scenes, LIGHTTPD will be installed using apt-get or apt-fast
When you choose the repo way of installing LIGHTTPD you can also install additional dynamic modules. For example, you can set
LIGHTTPD:modules-list:mod_indexfile:mod_access:mod_accesslog:mod_alias:mod_redirect:mod_auth:mod_deflate:mod_openssl:mod_dirlisting:mod_proxy:mod_fastcgi:mod_staticfile:mod_expire:mod_ssi:mod_userdir:mod_status:mod_setenv:mod_rewrite:mod_indexfile:mod_authn_file
When you choose the repo way of installing LIGHTTPD you can also configure various settings from this file. For example, you can set
LIGHTTPD:settings:server.use-ipv6="disable":server.bind="localhost":server.max-fds=2048:server.stat-cache-engine="simple"
If you set LIGHTTPD to install from source
LIGHTTPD:source
Behind the scenes, LIGHTTPD will be installed by downloading the very lastest stable version of the LIGHTTPD sourcecode and compiling it
When you choose the source way of installing LIGHTTPD you can also install additional dynamic modules. For example, you can set
LIGHTTPD:modules-list:mod_indexfile:mod_access:mod_accesslog:mod_alias:mod_redirect:mod_auth:mod_deflate:mod_openssl:mod_dirlisting:mod_proxy:mod_fastcgi:mod_staticfile:mod_expire:mod_ssi:mod_userdir:mod_status:mod_setenv:mod_rewrite:mod_indexfile:mod_authn_file
When you choose the source way of installing LIGHTTPD you can also install additional built in static modules. For example, you can set
LIGHTTPD:static-modules-list:zlib:libxml:openssl:gnutls
When you choose the source way of installing LIGHTTPD you can also configure various settings from this file. For example, you can set
LIGHTTPD:settings:server.use-ipv6='disable':server.bind='localhost':server.max-fds=2048:server.stat-cache-engine='simple'
When you build LIGHTTPD from source there will be additional software packages that need to be installed because the compilation process depends on them. You can set the software packages to install as follows:
LIGHTTPD:software-packages:autoconf:automake:libtool:m4:pkg-config:build-essential:libpcre3-dev:libpcre2-dev:zlib1g:zlib1g-dev:libssl-dev:libgnutls28-dev
If your template is configured to install php then you can set the php extensions that will be installed here as well as set whether to use a socket of a port for php-fpm (note php-fpm is always installed when you install PHP, you don't need to explicitly reference php-fpm here).
cloud-init install technique
When you put this in the buildstyles.dat file it will install cli,simplexml,dom,gd,intl,zip,mysqli,curl extensions using port 9176. This will install php using cloud-init
PHP:cloud-init:cli:simplexml:dom:gd:intl:zip:mysqli:curl|9176
When you put this in the buildstyles.dat file it will install cli,dom,gd,intl,zip,mysqli,curl extensions using a socket to communicate. This will install php using cloud-init
PHP:cloud-init:cli:dom:gd:intl:zip:mysqli:curl|9176
apt-get install technique
When you put this in the buildstyles.dat file it will install soap,mysqli and gd php extensions using port 9176. This will install php using apt-get which means you are free to customise the method of installation if you want to
PHP:soap:mysqli:gd|9176
When you put this in the buildstyles.dat file it will install pgsql,curl,zip and gd php extensions using port 9176 using a socket file to communicate. This will install php using apt-get.
PHP:pgsql:curl:zip:gd
You can also configure the php pool through this file. For example, you can set:
CONFIGPHPPOOL:pm=ondemand:pm.max_children=4:pm.max_requests=200:pm.start_servers=10:pm.min_spare_servers=5: pm.max_spare_servers=20:pm.process_idle_timeout=10s
You can also configure the php.ini through this file. For example, you can set:
CONFIGPHPINI:upload_max_filesize=64M:post_max_size=64M:max_input_vars=5000:zlib.output_compression=On: cgi.fix_pathinfo=0:output_buffering=Off:disable_functions=exec,passthru,shell_exec,system,proc_open,popen,parse_ini_file,show_source: allow_url_fopen=Off:allow_url_include=Off:memory_limit=256M:opcache.enable=1:opcache.memory_consumption=256: open_basedir=/var/##/tmp:upload_tmp_dir=/var/www/html/tmp
NOTE that when there are multiple separate terms/values the token ## is the delimiter
You can decide which datastore mount tool to install and how as follows:
DATASTOREMOUNTTOOL:rclone:repo if you want to install rclone as your datastore mount tool DATASTOREMOUNTTOOL:s3fs:repo if you want to install s3fs as your datastore mount tool DATASTOREMOUNTTOOL:goof:binary if you want to install goofys as your datastore mount tool DATASTOREMOUNTTOOL:geesefs:binary if you want to install geesefs as your datastore mount tool
If you want to install these tools in a different way such as from source and so on you are free to modify the toolkit
If your template is configured to install mariadb you can install it as follows:
MARIADB:cloud-init
to install the current version
and to install a specific version by apt-get
MARIADB:repo:11.5.2
If your template is configured to install MySQL you can install it as follows:
Install a specific version of mysql (for example, 9.2.0) - you need to only pick version numbers which correspond to the version numbers listed here
MYSQL:repo:9.2.0
If your template is configured to install postgres you can install it as follows:
POSTGRES:cloud-init
to install the current version
and to install a specific version by apt-get
POSTGRES:repo:17
To set the build chain style, set it here. You can modify the toolkit to support different build chain types if you wanted a build chain that included a caching system or something
BUILDCHAINTYPE:standard
You can choose which datastore tool you want to install here by choosing one of these:
DATASTORETOOL:s3cmd:repo DATASTORETOOL:s5cmd:binary
You can chose to use different package managers as follows:
PACKAGEMANAGER:apt PACKAGEMANAGER:apt-fast
You can use ufw or iptables as your firewalling type
FIREWALL:ufw FIREWALL:iptables
How system emails can be sent can be set here:
EMAILUTIL:sendemail EMAILUTIL:mail
NOTE: I support cloud-init style installs as well as apt-get style installs because apt-get is more customisable and I found that cloud-init wasn't always an option because when PHP8.4 was new at least, it couldn't be installed with cloud-init so I had the option of falling back to the apt-get method to get it installed and I didn't know how to install MySQL using cloud-init either and so in that case I could fall back to the apt-get or apt-fast install method and still be up and running. Most likely in the future there might be other scenarios where cloud-init package install isn't an option and so having the option to fall back to apt-get saves the day.