There's been quite a few updates and improvements to Bedrock since the initial release that it warrants a new post and a quick look into the changes.
Web directory
The biggest change was introducing a web/
subdirectory that contains your WordPress application and the WP core only. Previously everything was in the same root project folder which led to some security issues with various configuration files being web accessible unless you explicitly blocked access to them from Nginx or Apache.
This was an annoying step that's now solved by simply creating a server/virtual host that points directly to the web/
directory as its document root. Beyond the security benefits, it's also just a better separation of concerns.
Auto-generating .env
Previously after cloning or running composer create-project
to start a new Bedrock project, you'd have to manually create your .env
file and generate your own salts.
Now we've included a script that runs on Composer's post-root-package-install
(which just means it runs after composer create-project
). Composer will prompt you to generate a .env
file, and if you say yes, a fresh .env
file will be created with all 8 salts/keys randomly generated for you.
The script can be found at scripts/Bedrock/Installer.php
and may be extended in the future to interactively prompt for other env vars such as database credentials WP settings.
Just remember that the best way to start a new Bedrock project is to run:
composer create-project roots/bedrock <path>
If you want the latest changes from GitHub master, use the following:
composer create-project roots/bedrock <path> dev-master
WordPress Packagist Namespaces
This isn't so much a Bedrock change, but it's worth noting regardless. The awesome WordPress Packagist recently changed their package namespaces to better separate plugins and themes.
Previously all the namespaces were just wpackagist
. Now you need to use the package type as well:
wpackagist-plugin
wpackagist-theme
What's Next?
The next major feature will be the long-promised Vagrant integration. This will also include full configuration management for development and production servers. This will be handled by Ansible. We feel that it's the simplest and quickest tool rather than going with either of the Ruby-based Chef or Puppet.
Related Screencasts
Using Composer with WordPress
Introduction to deploying WordPress with Capistrano. If you say a prayer or cross your fingers before a deploy, then this is the screencast for you.
Deploying WordPress with Capistrano
An in-depth introduction to dependency management in PHP using Composer and more importantly, why you should use it with WordPress.