A modern WordPress stack
Built with ❤️
Official Website | Documentation | Change Log
Supporting
Bedrock is an open source project and completely free to use.
However, the amount of effort needed to maintain and develop new features and products within the Roots ecosystem is not sustainable without proper financial backing. If you have the capability, please consider donating using the links below:
Overview
Bedrock is a modern WordPress stack that helps you get started with the best development tools and project structure.
Much of the philosophy behind Bedrock is inspired by the Twelve-Factor App methodology including the WordPress specific version.
Features
- Better folder structure
- Dependency management with Composer
- Easy WordPress configuration with environment specific files
- Environment variables with Dotenv
- Autoloader for mu-plugins (use regular plugins as mu-plugins)
- Enhanced security (separated web root and secure passwords with wp-password-bcrypt)
Requirements
- PHP >= 7.1
- Composer - Install
Installation
- Create a new project:
$ composer create-project roots/bedrock
- Update environment variables in the
.env
file. Wrap values that may contain non-alphanumeric characters with quotes, or they may be incorrectly parsed.
- Database variables
DB_NAME
- Database nameDB_USER
- Database userDB_PASSWORD
- Database passwordDB_HOST
- Database host- Optionally, you can define
DATABASE_URL
for using a DSN instead of using the variables above (e.g.mysql://user:password@127.0.0.1:3306/db_name
)
WP_ENV
- Set to environment (development
,staging
,production
)WP_HOME
- Full URL to WordPress home (https://example.com)WP_SITEURL
- Full URL to WordPress including subdirectory (https://example.com/wp)AUTH_KEY
,SECURE_AUTH_KEY
,LOGGED_IN_KEY
,NONCE_KEY
,AUTH_SALT
,SECURE_AUTH_SALT
,LOGGED_IN_SALT
,NONCE_SALT
- Generate with wp-cli-dotenv-command
- Generate with our WordPress salts generator
- Add theme(s) in
web/app/themes/
as you would for a normal WordPress site - Set the document root on your webserver to Bedrock's
web
folder:/path/to/site/web/
- Access WordPress admin at
https://example.com/wp/wp-admin/
Documentation
Bedrock documentation is available at https://roots.io/docs/bedrock/master/installation/.
Contributing
Contributions are welcome from everyone. We have contributing guidelines to help you get started.
Bedrock sponsors
Help support our open-source development efforts by becoming a patron.
Community
Keep track of development and community news.
- Participate on the Roots Discourse
- Follow @rootswp on Twitter
- Read and subscribe to the Roots Blog
- Subscribe to the Roots Newsletter
- Listen to the Roots Radio podcast
export DB_NAME=$(echo
export DATABASE_URL=mysql://user@database.internal:3306/main
export DB_NAME=$(echo
https://roots.io/salts.html
Generate your keys here:APP_SECRET=$PLATFORM_PROJECT_ENTROPY AUTH_KEY=$PLATFORM_PROJECT_ENTROPY SECURE_AUTH_KEY=$PLATFORM_PROJECT_ENTROPY LOGGED_IN_KEY=$PLATFORM_PROJECT_ENTROPY NONCE_KEY=$PLATFORM_PROJECT_ENTROPY AUTH_SALT=$PLATFORM_PROJECT_ENTROPY SECURE_AUTH_SALT=$PLATFORM_PROJECT_ENTROPY LOGGED_IN_SALT=$PLATFORM_PROJECT_ENTROPY NONCE_SALT=$PLATFORM_PROJECT_ENTROPY
export DB_HOST=$(echo
small chaange
WP_ENV='development' WP_HOME='http://example.com' WP_SITEURL="${WP_HOME}/wp" WP_DEBUG_LOG=/path/to/debug.log
if [ "$PLATFORM_BRANCH" != "master" ] ; then export WP_ENV='development' else export WP_ENV='production' fi
https://roots.io/salts.html
Generate your keys here:export APP_SECRET=$PLATFORM_PROJECT_ENTROPY export AUTH_KEY=$PLATFORM_PROJECT_ENTROPY export SECURE_AUTH_KEY=$PLATFORM_PROJECT_ENTROPY export LOGGED_IN_KEY=$PLATFORM_PROJECT_ENTROPY export NONCE_KEY=$PLATFORM_PROJECT_ENTROPY export AUTH_SALT=$PLATFORM_PROJECT_ENTROPY export SECURE_AUTH_SALT=$PLATFORM_PROJECT_ENTROPY export LOGGED_IN_SALT=$PLATFORM_PROJECT_ENTROPY export NONCE_SALT=$PLATFORM_PROJECT_ENTROPY
WP_HOME=$(echo $PLATFORM_ROUTES | base64 --decode | jq -r 'to_entries[] | select(.value.primary == true) | .key') WP_SITEURL="${WP_HOME}wp" WP_DEBUG_LOG=/var/log/app.log if [ "$PLATFORM_BRANCH" != "master" ] ; then export WP_ENV='development' else export WP_ENV='production' fi