{"id":96,"date":"2018-07-12T14:00:01","date_gmt":"2018-07-12T14:00:01","guid":{"rendered":"http:\/\/ssdnodes.billabailey.com\/2017\/05\/08\/tutorial-installing-easyengine-and-building-lets-encrypt-enabled-sites\/"},"modified":"2025-07-16T14:37:11","modified_gmt":"2025-07-16T14:37:11","slug":"install-easyengine-wordpress","status":"publish","type":"post","link":"https:\/\/www.ssdnodes.com\/blog\/install-easyengine-wordpress\/","title":{"rendered":"Install EasyEngine To Deploy SSL-Enabled WordPress Websites"},"content":{"rendered":"<p>One of the most common uses for a VPS is hosting a WordPress-based site. While we covered the details of setting up both a <a href=\"https:\/\/www.ssdnodes.com\/blog\/tutorial-installing-nginx-mysql-php-lemp-on-ubuntu-16-04\/\">LEMP stack<\/a> and <a href=\"https:\/\/www.ssdnodes.com\/blog\/tutorial-installing-wordpress-on-lemp-and-ubuntu-16-04\/\">WordPress<\/a> on top of that, some will prefer using a more user-friendly script to make the job a little bit easier. In this tutorial, we're going to install <a href=\"https:\/\/easyengine.io\/\" target=\"_blank\" rel=\"noopener\">EasyEngine<\/a>, an open source &quot;helper&quot; program, to help create SSL-enabled (thanks to <a href=\"http:\/\/letsencrypt.com\/\" target=\"_blank\" rel=\"noopener\">Let's Encrypt<\/a>) WordPress blogs in a matter of minutes.<\/p>\n<p>The beauty of EasyEngine is that it not only sets up a WordPress blog, but automatically installs its dependencies, such as Nginx, PHP, MySQL, and others. There are a bunch of built-in features like caching and <a href=\"http:\/\/hhvm.com\/\" target=\"_blank\" rel=\"noopener\">HHVM<\/a>. With a single command, you can create a variety of WordPress configurations, such as WP Super Cache + Multisite, or Redis cache + single site.<\/p>\n<p>As of v3.4.0, EasyEngine comes with built-in support for <a href=\"https:\/\/letsencrypt.org\/\" target=\"_blank\" rel=\"noopener noreferrer\">Let's Encrypt<\/a> as well.<\/p>\n<p>In this tutorial, we'll cover the details in installing EasyEngine and setting up a single WordPress site that uses HTTPS powered by a Let's Encrypt certificate.<\/p>\n<h2 id=\"prerequisites\">Prerequisites<\/h2>\n<ul>\n<li>A VPS running any of our OS options\u2014Ubuntu 16.04, Debian 9, Debian 8, or CentOS 7.<\/li>\n<li>A non-root, <code>sudo<\/code>-enabled user. If you only have a <code>root<\/code> user, see our <a href=\"https:\/\/www.ssdnodes.com\/blog\/tutorial-setting-up-and-securing-ssh-based-authentication\/\">SSH tutorial<\/a> for details on creating new users.<\/li>\n<li>A registered domain name.<\/li>\n<\/ul>\n<h2>Notes<\/h2>\n<ul>\n<li>This tutorial uses variables to represent user-specific configurations, such as server IP addresses, passwords, domain names, and more. Whenever you see one of these variables, you should replace them with your specific details.<\/li>\n<\/ul>\n<div class=\"cta-inline\"><\/div>\n<h2 id=\"step-1-installing-easyengine\">Step 1: Install EasyEngine<\/h2>\n<p><strong>Debian<\/strong>: Before we even try installing EasyEngine, let's install <code>ca-certificates<\/code>. If you don't install this, the <code>wget<\/code> portion of the following command will fail without any output.<\/p>\n<pre><code class=\"language-bash language-language-bash hljs\">$ sudo apt-get install ca-certificates<\/code><\/pre>\n<p>To install EasyEngine, simply run the command below:<\/p>\n<pre><code class=\"language-bash language-language-bash hljs\">$ wget -qO ee rt.cx\/ee &amp;&amp; sudo bash ee<\/code><\/pre>\n<p>The command first downloads the EasyEngine install script using <code>wget<\/code>, and then executes it using <code>bash<\/code>. As usual, we recommend that you take a moment to check out <a href=\"https:\/\/raw.githubusercontent.com\/EasyEngine\/easyengine\/master\/install\" target=\"_blank\" rel=\"noopener\">the script itself<\/a> to ensure that it's not installing anything you don't want.<\/p>\n<h2 id=\"step-2-configure-your-dns\">Step 2: Configure your DNS<\/h2>\n<p>Before you begin, make sure that you have pointed your domain toward your VPS' IP address. In this case, both <code>www.DOMAIN.LTD<\/code> and <code>DOMAIN.TLD<\/code> need to point to the server. Let's Encrypt requires these to match up in order to give the certificate. If you bought your domain name via SSD Nodes, we provide the necessary DNS to establish this configuration. If you bought your domain elsewhere, consider setting up a free <a href=\"https:\/\/www.cloudflare.com\/\" target=\"_blank\" rel=\"noopener\">CloudFlare<\/a> account to use their DNS tools.<\/p>\n<h2 id=\"step-3-running-easyengine\">Step 3: Run EasyEngine<\/h2>\n<p>EasyEngine aims to make installing WordPress incredibly easy, and the same goes when adding a Let's Encrypt certificate on top of that. It's all done in a single command:<\/p>\n<pre><code class=\"language-bash language-language-bash hljs\">$ sudo ee site create DOMAIN.TLD --wp --letsencrypt<\/code><\/pre>\n<p>You'll start to see output in the terminal as EasyEngine begins to download, install, and configure packages.<\/p>\n<p>At some point, you will be requested to confirm that you want to use Let's Encrypt. Just type in <code>y<\/code>, followed by <code>Enter<\/code>.<\/p>\n<pre><code class=\"language-bash language-language-bash hljs\">Letsencrypt is currently <span class=\"hljs-keyword\">in<\/span> beta phase.\nDo you wish to <span class=\"hljs-built_in\">enable<\/span> SSl now <span class=\"hljs-keyword\">for<\/span> example.com?\nType <span class=\"hljs-string\">\"y\"<\/span> to <span class=\"hljs-built_in\">continue<\/span> [n]:y<\/code><\/pre>\n<p>If Let's Encrypt setup works successfully, you'll see the following output:<\/p>\n<pre><code class=\"hljs cpp\">Let's Encrypt successfully setup <span class=\"hljs-keyword\">for<\/span> your site\nYour certificate <span class=\"hljs-keyword\">and<\/span> chain have been saved at \/etc\/letsencrypt\/live\/example.com\/fullchain.pem\nConfiguring Nginx SSL configuration\nAdding \/var\/www\/example.com\/conf\/nginx\/ssl.conf\nAdding \/etc\/nginx\/conf.d\/force-ssl-example.com.conf\nAdded HTTPS Force Redirection <span class=\"hljs-keyword\">for<\/span> Site  http:<span class=\"hljs-comment\">\/\/DOMAIN.TLD<\/span>\nCreating Cron Job <span class=\"hljs-keyword\">for<\/span> cert <span class=\"hljs-keyword\">auto<\/span>-renewal\nReload : nginx     [OK]\nCongratulations! Successfully Configured SSl <span class=\"hljs-keyword\">for<\/span> Site  https:<span class=\"hljs-comment\">\/\/DOMAIN.TLD<\/span>\nYour cert will expire within <span class=\"hljs-number\">89<\/span> days.<\/code><\/pre>\n<p>This basic configuration sets up a cron job to renew your certificate before it expires after 90 days.<\/p>\n<p>You can access the root of the WordPress installation via <code>\/var\/www\/example.com\/htdocs<\/code>. Even better, you'll now be able to visit your new WordPress site via your domain.<\/p>\n<h3 id=\"already-have-an-easyengine-site\">Already have an EasyEngine site?<\/h3>\n<p>If you already have a WordPress site running via EasyEngine, you can \\add a Let's Encrypt certificate and reconfigure Nginx\u2014again, with a single command.<\/p>\n<pre><code class=\"language-shell shell language-language-shell shell hljs\"><span class=\"hljs-meta\">$<\/span><span class=\"bash\"> sudo ee site update example.com --letsencrypt<\/span><\/code><\/pre>\n<p>As with the basic installation in step 2, this will enable a cron job to ensure the certificate is renewed regularly.<\/p>\n<h2 id=\"conclusion\">Conclusion<\/h2>\n<p>You should now be up and running with a SSL-enabled WordPress site, all in just a few commands.<\/p>\n<p>If you want to update the EasyEngine core, simply run <code>ee update<\/code>.<\/p>\n<p>You can also update your individual sites with new features, such as caching, with the <code>ee site update<\/code> command:<\/p>\n<pre><code class=\"language-bash language-language-bash hljs\">$ sudo ee site update DOMAIN.TLD --wp --wpfc<\/code><\/pre>\n<p>The <a href=\"https:\/\/easyengine.io\/docs\/\" target=\"_blank\" rel=\"noopener\">EasyEngine documentation<\/a> contains many more tweaks, so curious developers should take some time to peruse them. Happy blogging!<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Instead of wasting time manually configuring a LAMP stack, why not install EasyEngine and deploy SSL-enabled Wordpress blogs in a matter of minutes?<\/p>\n","protected":false},"author":20,"featured_media":2954,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"inline_featured_image":false,"footnotes":""},"categories":[18,30],"tags":[263,196],"class_list":["post-96","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-devops","category-tutorials","tag-easyengine","tag-wordpress"],"acf":[],"_links":{"self":[{"href":"https:\/\/www.ssdnodes.com\/wp-json\/wp\/v2\/posts\/96","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.ssdnodes.com\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.ssdnodes.com\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.ssdnodes.com\/wp-json\/wp\/v2\/users\/20"}],"replies":[{"embeddable":true,"href":"https:\/\/www.ssdnodes.com\/wp-json\/wp\/v2\/comments?post=96"}],"version-history":[{"count":4,"href":"https:\/\/www.ssdnodes.com\/wp-json\/wp\/v2\/posts\/96\/revisions"}],"predecessor-version":[{"id":13494,"href":"https:\/\/www.ssdnodes.com\/wp-json\/wp\/v2\/posts\/96\/revisions\/13494"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.ssdnodes.com\/wp-json\/wp\/v2\/media\/2954"}],"wp:attachment":[{"href":"https:\/\/www.ssdnodes.com\/wp-json\/wp\/v2\/media?parent=96"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.ssdnodes.com\/wp-json\/wp\/v2\/categories?post=96"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.ssdnodes.com\/wp-json\/wp\/v2\/tags?post=96"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}