This is a tutorial to install LEMP with Drupal with OPCache, Varnish, and Apache Solr. This will result in a ready production website, covering 99.9% of Drupal based website needs.
Some time ago, I published an article, http://alexrayu.com/blog/drupal-8-enterprise-software. In it, I tried to explain, why Drupal 8 is an enterprise grade software, based on a number of parameters. I have heard some agreement and disagreement from colleagues since then. Now, I must admit, that i have seen a lot of work in Drupal community, aimed at bridging the learning curve, trying to make Drupal 8 easier to use.
Drupal 8 has Layout Discovery in the core, which makes it easy to provides layouts for nodes and pages via the UI. I love Bootstrap for it’s clean looks and it’s built-in responsive grid, which saves time of coding the responsive layouts each time. There is also a module called Bootstrap Layouts, which provides a set of highly customizable layouts dependant on any Bootstrap based theme and it’s layout grid. How can you add a custom layout, though? If you want an example, you can see my alayouts module on github. These are the 4 easy steps:
Why Drupal? I have been working with Drupal since version quite early (version 4.5) and have seen it progress over the years. There have been points where I felt very uncertain about Drupal’s future, especially, at the great migration between version 7 and 8. Now that the dust is settling and I have observed the Promised Land and tasted of it’s fruit (been working with Drupal 8 for more than a year, actually), I thought that it’s a good place to share why Drupal remains my CMS of choice, any I love it, and why I recommend it to my clients and colleagues.
What is an “enterprise software”? A software written for use by large companies. There are specifics that the large companies have that the smaller developers do not. These are bigger budgets, better developers, more dev hours per project. In the other words, the bigger enterprise can do what smaller can’t. You can build your software in such a way, that it only becomes usable if you are ready to have larger teams working on it with bigger budgets. Then, with server costs being not so much of a limiting factor for the larger companies, enterprise software can go for larger code base or allow less performance, if that allows to address some other enterprise needs - allow better team interoperability, use more of the existing enterprise-standard frameworks, or implement functionality that their enterprise clients want often. These changes may be redundant or useless for smaller businesses, or an overkill, creating conditions for the smaller businesses to not be able to develop for that platform efficiently.
Google for 'Drupal 8 dependency'. You will find nothing relevant. Drupal 8 does not have dependencies. It's a self-contained CMS. You can even go and download Drupal 8 from the official site in a zip or tar.gz file. Right? Wrong. Drupal 8 has an undeclared dependency, Composer. And the fact that it is undeclared can cost an unsuspecting developer many a nerve. You can install and build a Drupal 8 site from an archive or git repo pull, but very soon you will discover, that there are many modules that declare external libraries as dependencies in their composer.json file.
I have watched the videos from DrupalCon Dublin 2016, so graciously uploaded by the Drupal Association. In a few of those videos, I have heard the speakers complain about two things in Drupal 8: it's complexity and it's development cost. One speaker even voiced a number of 25% of development cost increase. I have paused at that point and gave it some thought, because I felt somewhat dubious about this. Yes and no.
I have just completed my first Backbone.js app with Drupal 8. It has been a new experience for me. I needed to build a solution that related to the views filters and content listings. As you probably know, Drupal 8 content listings are powered by views now, which allows users to configure filters and add fields to the table of content. So, when different editors work with different filters and columns, they want to hide some and show only those that they need. My task was to build a solution that allowed each user with permissions to select, which filters and which table columns they want to see.