Setting up a Crafter CMS production environment¶
This section lets you get started on setting up your Crafter CMS for production. A production environment normally consists of one authoring instance and one or more delivery instances.
Before we begin, please review the following for requirements and supported platforms: Requirements and Supported Platforms
Setting up the production environment¶
We’ll first install the authoring instance. You can follow the Quick Start Guide to install and start authoring.
Alternatively, you can also install craftercms and start authoring by cloning the craftercms repo and building and deploying it using gradle.
git clone https://github.com/craftercms/craftercms.git ./gradlew init build deploy -Penv=authoring ./gradlew start -Penv=authoring
Create your site in authoring. You can follow the guide Your First Website to use one of the out-of-the-box blueprints provided by Crafter CMS.
Now that you have a site setup in authoring, the next thing to do is to setup your site in the delivery instance(s). Let’s begin the delivery installation.
Installing the delivery instance is almost the same as installing the authoring instance. The difference is, if you’re installing from a zip or archive built by the gradle environment builder, you need to download/use
crafter-cms-delivery-3.1.X.tar.gz. Follow the same steps used to install your authoring environment using the delivery zip files.
If using the alternate way of installing craftercms, to install and start the delivery, simply run the following:
git clone https://github.com/craftercms/craftercms.git ./gradlew init build deploy -Penv=delivery ./gradlew start -Penv=delivery
After starting delivery, we’ll setup the site we created in step 2 in our delivery instance. Crafter CMS comes with a script,
init-site.sh, to help us setup our site for delivery.
./init-site.sh [options] [site] [repo-path]
See the guide Setup Site for a Delivery Environment for more information on setting up your site for delivery.
For the rest of the delivery instances, you can just repeat the previous 2 steps for each one of them, or alternatively just duplicate the delivery installation directory for each instance.
Your production environment is now ready.
For more information on using gradle, please see Crafter CMS.
Server Hardware Configuration Consideration¶
Crafter CMS performs multiple reads/writes to disk from various concerns such as the database, the repository, logs, etc. with very different I/O patterns. One of the primary factor for hardware bottlenecks is disk I/O.
For optimal performance, the server should have different storage systems (disks) mounted for different concerns, for example:
For more information on tuning your authoring environment for better performance, please see: Authoring Environment Performance Tuning
System Configuration for Elasticsearch¶
Elasticsearch uses a lot of file descriptors or file handles. Elasticsearch recommends increasing the number of open file descriptors for the user running Elasticsearch to 65,536 or higher.
Crafter CMS uses the .zip ELasticsearch package. When using the .zip package, the system settings for increasing the number of open file descriptors can be configured:
- temporarily with
- permanently in
Set Temporary Limits¶
To set temporary limits for the open file handles (ulimit -n) to 65,536:
1 2 3
sudo su ulimit -n 65535 su elasticsearch
Here’s what the above lines of code is doing:
- Become root.
- Change the max number of open files.
- Become the elasticsearch user in order to start Elasticsearch.
Remember that this new limit is only valid for the current session.
Set Persistent Limits¶
To set persistent limits, edit the
/etc/security/limits.conf file. To set the maximum number of open files for the
elasticsearch user to 65,536, add the following line to the
elasticsearch - nofile 65535
Remember to restart your system as this change will only take effect the next time the
elasticsearch user opens a new session.
Ubuntu ignores the
limits.conf file for processes started by init.d. To enable the
limits.conf file, edit
/etc/pam.d/su and uncomment the following line:
# session required pam_limits.so
For more information on configuring system settings in Elasticsearch, see: https://www.elastic.co/guide/en/elasticsearch/reference/current/setting-system-settings.html
For more information on file descriptors in Elasticsearch, see: https://www.elastic.co/guide/en/elasticsearch/reference/current/file-descriptors.html