{"id":6804,"date":"2018-11-23T03:25:55","date_gmt":"2018-11-22T22:25:55","guid":{"rendered":"https:\/\/thedevcouple.com\/?p=6804"},"modified":"2018-11-23T16:33:46","modified_gmt":"2018-11-23T11:33:46","slug":"easyengine","status":"publish","type":"post","link":"https:\/\/thedevcouple.com\/easyengine\/","title":{"rendered":"EasyEngine Version 4 Released! \ud83c\udf89"},"content":{"rendered":"<div class=\"\" data-block=\"true\" data-editor=\"cloo1\" data-offset-key=\"cn0j1-0-0\">\n<div class=\"_1mf _1mj\" data-offset-key=\"cn0j1-0-0\"><span data-offset-key=\"cn0j1-0-0\">Folks! <\/span><span class=\"_3gl1 _5zz4\" data-offset-key=\"cn0j1-1-0\"><span class=\"_ncl\">\ud83d\ude4c<\/span><\/span><\/div>\n<\/div>\n<div class=\"\" data-block=\"true\" data-editor=\"cloo1\" data-offset-key=\"br2eh-0-0\">\n<div class=\"_1mf _1mj\" data-offset-key=\"br2eh-0-0\"><\/div>\n<\/div>\n<div class=\"\" data-block=\"true\" data-editor=\"cloo1\" data-offset-key=\"6dl4k-0-0\">\n<div class=\"_1mf _1mj\" data-offset-key=\"6dl4k-0-0\"><span data-offset-key=\"6dl4k-0-0\">I&#8217;m a big fan of EasyEngine \u2014 a script to self-host your WordPress sites on DigitalOcean, Linode, Vultr, and more. <\/span><\/div>\n<\/div>\n<div class=\"\" data-block=\"true\" data-editor=\"cloo1\" data-offset-key=\"606tn-0-0\">\n<div class=\"_1mf _1mj\" data-offset-key=\"606tn-0-0\"><\/div>\n<\/div>\n<div class=\"\" data-block=\"true\" data-editor=\"cloo1\" data-offset-key=\"4vune-0-0\">\n<div class=\"_1mf _1mj\" data-offset-key=\"4vune-0-0\"><span class=\"_3gl1 _5zz4\" data-offset-key=\"4vune-0-0\"><span class=\"_ncl\">\ud83e\udd14<\/span><\/span><span data-offset-key=\"4vune-1-0\"> Over a year ago, <\/span><span class=\"_247o\" spellcheck=\"false\" data-offset-key=\"4vune-2-0\"><span data-offset-key=\"4vune-2-0\">Rahul<\/span><\/span><span data-offset-key=\"4vune-3-0\"> (who runs a WP VIP agency rtCampp) suggested that EasyEgine has not been getting the contribution support it should have received from the WordPress community \u2014 being an open source script, because it was written in Python.<\/span><\/div>\n<\/div>\n<div class=\"\" data-block=\"true\" data-editor=\"cloo1\" data-offset-key=\"2oame-0-0\">\n<div class=\"_1mf _1mj\" data-offset-key=\"2oame-0-0\"><\/div>\n<\/div>\n<div class=\"\" data-block=\"true\" data-editor=\"cloo1\" data-offset-key=\"ck2d4-0-0\">\n<div class=\"_1mf _1mj\" data-offset-key=\"ck2d4-0-0\"><span class=\"_3gl1 _5zz4\" data-offset-key=\"ck2d4-0-0\"><span class=\"_ncl\">\ud83d\udc4c<\/span><\/span><span data-offset-key=\"ck2d4-1-0\"> With an audacious goal of rewriting the entire framework in PHP and support it with WP CLI has actually now been achieved. Version 4, has just been released. Mad props to all the contributors for their effort. <\/span><\/div>\n<\/div>\n<div class=\"\" data-block=\"true\" data-editor=\"cloo1\" data-offset-key=\"cs612-0-0\">\n<div class=\"_1mf _1mj\" data-offset-key=\"cs612-0-0\"><\/div>\n<\/div>\n<div class=\"\" data-block=\"true\" data-editor=\"cloo1\" data-offset-key=\"5b7cj-0-0\">\n<div class=\"_1mf _1mj\" data-offset-key=\"5b7cj-0-0\"><span class=\"_3gl1 _5zz4\" data-offset-key=\"5b7cj-0-0\"><span class=\"_ncl\">\ud83d\ude80<\/span><\/span><span data-offset-key=\"5b7cj-1-0\"> I urge you all to take this open source server management software for a spin. It is now based on PHP + Docker and they even have made an effort to create a migration script from v3 to v4. Which shows the commitment to quality and supporting your community.<\/span><\/div>\n<\/div>\n<div class=\"\" data-block=\"true\" data-editor=\"cloo1\" data-offset-key=\"4ti9g-0-0\">\n<div class=\"_1mf _1mj\" data-offset-key=\"4ti9g-0-0\"><\/div>\n<\/div>\n<div class=\"\" data-block=\"true\" data-editor=\"cloo1\" data-offset-key=\"4ddkh-0-0\">\n<div class=\"_1mf _1mj\" data-offset-key=\"4ddkh-0-0\"><span data-offset-key=\"4ddkh-0-0\">The least we can do is appreciate this effort and welcome the new changes, i.e. PHP based server (Slack does that), and Docker support (without overstating, for obvious reasons).<\/span><\/div>\n<div data-offset-key=\"4ddkh-0-0\"><\/div>\n<div class=\"eckosc eckosc_contrast_block\"><div class=\"eckosc_contrast_block_inner\">\n<pre class=\"wp-block-preformatted\"># Install EasyEngine on Linux\r\nwget -qO ee rt.cx\/ee4 &amp;&amp; sudo bash ee\r\n\r\n# Install EasyEngine on Mac\r\nbrew install https:\/\/rt.cx\/easyengine\r\n\r\n# Create a site at example.com with WordPress\r\nsudo ee site create example.com --type=wp<\/pre>\n<\/div><\/div>\n<\/div>\n<div class=\"\" data-block=\"true\" data-editor=\"cloo1\" data-offset-key=\"dtgog-0-0\">\n<div class=\"_1mf _1mj\" data-offset-key=\"dtgog-0-0\"><\/div>\n<\/div>\n<div data-block=\"true\" data-editor=\"cloo1\" data-offset-key=\"5h3fq-0-0\">\n<div data-offset-key=\"5h3fq-0-0\">Congrats, <span spellcheck=\"false\" data-offset-key=\"5h3fq-1-0\">Rahul<\/span> and the team behind this project. \ud83c\udf89<\/div>\n<\/div>\n<div data-offset-key=\"5h3fq-0-0\"><\/div>\n<div data-offset-key=\"5h3fq-0-0\">Find more details in the Press Release below \u2193<\/div>\n<div class=\"\" data-block=\"true\" data-editor=\"cloo1\" data-offset-key=\"3ct58-0-0\">\n<div data-offset-key=\"3ct58-0-0\"><\/div>\n<\/div>\n<h2>\ud83e\udd2f Major Differences v3 VS v4<\/h2>\n<p>We have a detailed <a style=\"font-size: 1.25rem; font-family: -apple-system, BlinkMacSystemFont, &#039;Segoe UI&#039;, Roboto, Oxygen-Sans, Ubuntu, Cantarell, &#039;Helvetica Neue&#039;, sans-serif;\" href=\"https:\/\/easyengine.io\/handbook\/v3-to-v4-migration\/\" rel=\"nofollow noopener\" target=\"_blank\">document outlining v3 to v4 changes here<\/a><span style=\"font-size: 1.25rem; font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, Oxygen-Sans, Ubuntu, Cantarell, 'Helvetica Neue', sans-serif;\"> along with the <\/span><a style=\"font-size: 1.25rem; font-family: -apple-system, BlinkMacSystemFont, &#039;Segoe UI&#039;, Roboto, Oxygen-Sans, Ubuntu, Cantarell, &#039;Helvetica Neue&#039;, sans-serif;\" href=\"https:\/\/easyengine.io\/handbook\/v3-to-v4-migration\/script\/\" rel=\"nofollow noopener\" target=\"_blank\">migration script<\/a><span style=\"font-size: 1.25rem; font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, Oxygen-Sans, Ubuntu, Cantarell, 'Helvetica Neue', sans-serif;\">. Alternatively, you can have a glance at the quick summary, below.<\/span><\/p>\n<ul>\n<li>Virtual email hosting feature is completely removed.<\/li>\n<li>The number of sites on a single server is limited to 25. Fortunately, WordPress Multisite is counted as one site towards the limit.<\/li>\n<li>From four WordPress caching options, we have shifted to only one. Migration script automatically takes care of this unless you have customizations around cache.<\/li>\n<li>Some commands are removed, either temporarily or permanently. Some are replaced &amp; renamed. There are also new commands that have been added.<\/li>\n<li>v4 is rewritten in PHP, using WP-CLI as a framework. Shouldn\u2019t concern you, unless you have some local python-patches.<\/li>\n<li>v4 uses Docker images for PHP, Nginx, MySQL, etc instead of traditional OS level packages. Again, you would be fine if you have never heard about Docker before.<\/li>\n<\/ul>\n<h2>\ud83c\udf89 For All Users \u2013 New v4 Stuff<\/h2>\n<p>EasyEngine v4 adds many new features. It also has many internal changes in terms of code, architecture and focus area. Let me walk you through some of them, below.<\/p>\n<h3>\ud83c\udfaf Focus Shift \u2013 From Ops to DevOps<\/h3>\n<p>Until EasyEngine v3, our focus was to create a powerful hosting stack to make the system admin\u2019s job easy. We are still committed to making hosting easy and I believe that we are advancing in that direction, at quite a steady pace.<\/p>\n<p>After working in the WordPress ecosystem for 10 years, I can say that most of the scaling issues, that are hard to fix, are often caused by bad code. The issues related to bad server config are much easier to fix than an issue related to bad code quality.<\/p>\n<p>From v4, our goal is to reduce the gap between the developer &amp; system admin workflow.<\/p>\n<p>We love <a href=\"https:\/\/12factor.net\/\" rel=\"nofollow noopener\" target=\"_blank\">Twelve Factor App guidelines<\/a> and we hope to bring most of it to the WordPress ecosystem.<\/p>\n<p>This is what we mean by a shift from Ops to DevOps!<\/p>\n<h3>\ud83d\udc33 Use of Docker<\/h3>\n<p>EasyEngine v4 uses docker to distribute and run the whole LEMP stack. So Nginx, Redis, MariaDB etc are not installed on the host. Only PHP is required on the host as v4 is developed in PHP itself.<\/p>\n<p>As every site has its own PHP and Nginx container, there is some isolation and improved security, compared to the way in which sites ran in v3.<\/p>\n<p>You don\u2019t need prior docker knowledge to use EasyEngine. EasyEngine handles Docker, internally, to the point that you won\u2019t need to run a single Docker command for your day-to-day EasyEngine usage.<\/p>\n<p>With Docker, we now have the possibility to run EasyEngine on any platform where Docker &amp; PHP are supported. This includes Windows OS also, which we are yet to test! \ud83d\ude09<\/p>\n<h3>\ud83d\udce6 Extensible via Packages<\/h3>\n<p>As v4 uses wp-cli, you can extend EasyEngine using composer packages. In fact, the core commands are all packed into their own composer packages.<\/p>\n<p>We have already published some developer documentation to help you <a href=\"https:\/\/easyengine.io\/handbook\/developer\/custom-command\/\" rel=\"nofollow noopener\" target=\"_blank\">develop custom command<\/a>. We hope to add support to distribute your custom commands, in the coming months.<\/p>\n<h3>\ud83c\udf4e Mac Support<\/h3>\n<p>EasyEngine v4 works on Mac using brew. It\u2019s as simple as running <code>brew install easyengine<\/code>.<\/p>\n<p>Most of our developers at rtCamp prefer Mac. Now with the same EasyEngine, on Mac and on our servers, we will be able to maintain better <a href=\"https:\/\/12factor.net\/dev-prod-parity\" rel=\"nofollow noopener\" target=\"_blank\">dev\/prod parity<\/a>.<\/p>\n<h3>Updated Docs<\/h3>\n<p>Referring to WP-CLI, EasyEngine commands documentation is automatically generated and hosted at <a href=\"https:\/\/easyengine.io\/commands\/\" rel=\"nofollow noopener\" target=\"_blank\">easyengine.io\/commands<\/a>.<\/p>\n<p>Apart from this, we have created a handbook \u2013 <a href=\"https:\/\/easyengine.io\/handbook\/\" rel=\"nofollow noopener\" target=\"_blank\">easyengine.io\/handbook<\/a> that has additional information about the many aspects of v4, such as:<\/p>\n<ul>\n<li>Filesystem structure: <a href=\"https:\/\/easyengine.io\/handbook\/global-filesystem-structure\/\" rel=\"nofollow noopener\" target=\"_blank\">global<\/a>, <a href=\"https:\/\/easyengine.io\/handbook\/site-filesystem-structure\/\" rel=\"nofollow noopener\" target=\"_blank\">site,<\/a> and <a href=\"https:\/\/easyengine.io\/handbook\/services-filesystem-structure\/\" rel=\"nofollow noopener\" target=\"_blank\">services<\/a><\/li>\n<li><a href=\"https:\/\/easyengine.io\/handbook\/admin-tools\/\" rel=\"nofollow noopener\" target=\"_blank\">Admin tools<\/a><\/li>\n<li><a href=\"https:\/\/easyengine.io\/handbook\/mailhog\/\" rel=\"nofollow noopener\" target=\"_blank\">Mailhog<\/a><\/li>\n<li><a href=\"https:\/\/easyengine.io\/handbook\/cron\/\" rel=\"nofollow noopener\" target=\"_blank\">Cron<\/a><\/li>\n<li><a href=\"https:\/\/easyengine.io\/handbook\/request-cycle\/\" rel=\"nofollow noopener\" target=\"_blank\">Request cycle<\/a><\/li>\n<li><a href=\"https:\/\/easyengine.io\/handbook\/nginx-proxy\/\" rel=\"nofollow noopener\" target=\"_blank\">Nginx reverse proxy<\/a><\/li>\n<\/ul>\n<h2>\u27a1\ufe0f Install EasyEngine v4<\/h2>\n<p>Thanks for reading this far. It\u2019s now time for some action! \ud83d\ude80<\/p>\n<p>Installing EasyEngine on a fresh server, as easy as:<\/p>\n<ul>\n<li><strong>Linux: <\/strong><code>wget -qO ee https:\/\/rt.cx\/ee4 &amp;&amp; sudo bash ee<\/code><\/li>\n<li><strong>Mac:<\/strong> <code>brew install easyengine<\/code><\/li>\n<\/ul>\n<p>\u26a0\ufe0f <em><strong>Note:<\/strong> While we wait for <a href=\"https:\/\/github.com\/Homebrew\/homebrew-core\/pull\/34378\" rel=\"nofollow noopener\" target=\"_blank\">this PR to merge in brew<\/a>, please use following alternative:<\/em><\/p>\n<pre class=\"wp-block-preformatted\">brew install https:\/\/rt.cx\/easyengine<\/pre>\n<p>You can read the detailed <a href=\"https:\/\/easyengine.io\/handbook\/install\/\" rel=\"nofollow noopener\" target=\"_blank\">installation guide<\/a>, for additional details.<\/p>\n<p>In case, you are using v4 RC2 already, you can update to the stable release by running:<\/p>\n<pre class=\"wp-block-preformatted\">ee cli update<\/pre>\n<h2>\u26d1\ufe0f Need Help?<\/h2>\n<p>We understand that this is a big release and that you may need some help with it. Please be mindful of the fact that things can go wrong in such major upgrades.<\/p>\n<p>We recommend that you upgrade within the dev\/staging environment first. Don\u2019t forget to create backups! \ud83e\udd1e<\/p>\n<p>Please <a href=\"https:\/\/easyengine.io\/community\/\" rel=\"nofollow noopener\" target=\"_blank\">visit the community page to understand how to get help<\/a>.<\/p>\n<h2>\ud83d\ude4c Credits<\/h2>\n<p>A bunch of rtCampers worked tirelessly, day and night \u2013 over the last 10 months, to make this release possible. They were helped by more than a dozen colleagues, at different stages. Overall, EasyEngine v4 took more than 10,000 hours of work.<\/p>\n<p>A big shout out and thanks to Mriyam, Riddhesh, Radhe, Kirtan, Sagar N, Rahul P, Utkarsh and the other rtCampers for this exciting release! \ud83d\ude80<\/p>\n<figure class=\"wp-block-image\"><a href=\"https:\/\/i0.wp.com\/easyengine.io\/wp-content\/uploads\/2018\/11\/easyengine-v4-release-cake.jpg?ssl=1\" rel=\"nofollow noopener\" target=\"_blank\"><img decoding=\"async\" class=\"wp-image-143224\" src=\"https:\/\/i0.wp.com\/easyengine.io\/wp-content\/uploads\/2018\/11\/easyengine-v4-release-cake.jpg?fit=720%2C377&amp;ssl=1\" alt=\"\" data-attachment-id=\"143224\" data-permalink=\"https:\/\/easyengine.io\/blog\/v4-first-stable-release\/easyengine-v4-release-cake\/\" data-orig-file=\"https:\/\/i0.wp.com\/easyengine.io\/wp-content\/uploads\/2018\/11\/easyengine-v4-release-cake.jpg?fit=2880%2C1508&amp;ssl=1\" data-orig-size=\"2880,1508\" data-comments-opened=\"1\" data-image-meta=\"{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}\" data-image-title=\"easyengine-v4-release-cake\" data-image-description=\"\" data-medium-file=\"https:\/\/i0.wp.com\/easyengine.io\/wp-content\/uploads\/2018\/11\/easyengine-v4-release-cake.jpg?fit=400%2C209&amp;ssl=1\" data-large-file=\"https:\/\/i0.wp.com\/easyengine.io\/wp-content\/uploads\/2018\/11\/easyengine-v4-release-cake.jpg?fit=720%2C377&amp;ssl=1\"><\/a><figcaption>EasyEngine Team celebrating v4 release \ud83c\udf89<\/figcaption><\/figure>\n<p>On behalf of the EasyEngine team, I thank you, our users, who have kept us going in the last two years! \ud83d\ude4f<\/p>\n<p><strong>Links:<\/strong> <a href=\"https:\/\/easyengine.io\/handbook\/install\/\" rel=\"nofollow noopener\" target=\"_blank\">v4 Install<\/a> | <a href=\"https:\/\/easyengine.io\/commands\/\" rel=\"nofollow noopener\" target=\"_blank\">Commands<\/a> | <a href=\"https:\/\/easyengine.io\/handbook\/\" rel=\"nofollow noopener\" target=\"_blank\">Handbook<\/a> \u2022 <a href=\"https:\/\/easyengine.io\/handbook\/v3-to-v4-migration\/\" rel=\"nofollow noopener\" target=\"_blank\">v3 to v4 Guide<\/a> | <a href=\"https:\/\/easyengine.io\/handbook\/v3-to-v4-migration\/script\/\" rel=\"nofollow noopener\" target=\"_blank\">Migration Script<\/a><\/p>\n<div class=\"\" data-block=\"true\" data-editor=\"cloo1\" data-offset-key=\"3ct58-0-0\">\n<div data-offset-key=\"3ct58-0-0\"><\/div>\n<div class=\"_1mf _1mj\" data-offset-key=\"3ct58-0-0\"><span data-offset-key=\"3ct58-0-0\">Peace! <\/span><span class=\"_3gl1 _5zz4\" data-offset-key=\"3ct58-1-0\"><span class=\"_ncl\">\u270c\ufe0f<\/span><\/span><\/div>\n<\/div>\n","protected":false},"excerpt":{"rendered":"<p>Folks! \ud83d\ude4c I&#8217;m a big fan of EasyEngine \u2014 a script to self-host your WordPress sites on DigitalOcean, Linode, Vultr, and more. \ud83e\udd14 Over a year ago, Rahul (who runs a WP VIP agency rtCampp) suggested that EasyEgine has not been getting the contribution support it should have received from the WordPress community \u2014 being [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":6824,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"jetpack_post_was_ever_published":false,"_jetpack_newsletter_access":""},"categories":[6,1],"tags":[186,187],"coauthors":[84],"jetpack_featured_media_url":"https:\/\/thedevcouple.com\/wp-content\/uploads\/2018\/11\/EE.jpeg","amp_enabled":true,"_links":{"self":[{"href":"https:\/\/thedevcouple.com\/api\/wp\/v2\/posts\/6804"}],"collection":[{"href":"https:\/\/thedevcouple.com\/api\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/thedevcouple.com\/api\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/thedevcouple.com\/api\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/thedevcouple.com\/api\/wp\/v2\/comments?post=6804"}],"version-history":[{"count":5,"href":"https:\/\/thedevcouple.com\/api\/wp\/v2\/posts\/6804\/revisions"}],"predecessor-version":[{"id":6844,"href":"https:\/\/thedevcouple.com\/api\/wp\/v2\/posts\/6804\/revisions\/6844"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/thedevcouple.com\/api\/wp\/v2\/media\/6824"}],"wp:attachment":[{"href":"https:\/\/thedevcouple.com\/api\/wp\/v2\/media?parent=6804"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/thedevcouple.com\/api\/wp\/v2\/categories?post=6804"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/thedevcouple.com\/api\/wp\/v2\/tags?post=6804"},{"taxonomy":"author","embeddable":true,"href":"https:\/\/thedevcouple.com\/api\/wp\/v2\/coauthors?post=6804"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}