Based on Bedrock
- Better folder structure
- Dependency management with Composer and WordPress Packagist
- 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)
With few more features added by Scalingo
:
- Configurable from var environment
- File Uploads sent to S3 Bucket by default with S3-Uploads plugin
Actual WordPress version :
5.5
The variables S3_UPLOADS_BUCKET
, S3_UPLOADS_KEY
, S3_UPLOADS_SECRET
, S3_UPLOADS_REGION
are not required when you don't want to use the WordPress image upload with S3.
In reverse, if you activate the already preinstalled S3 plugin you must specify these variables.
By default, the AWS endpoint (s3.amazonaws.com) is used.
If you want to use another provider than AWS for your S3 bucket, you must use
the environment variable named S3_UPLOADS_ENDPOINT
to specify your provider URL.
Example with Scaleway provider:
S3_UPLOADS_ENDPOINT=s3.fr-par.scw.cloud
If you want to specify the full URL of the bucket yourself or even specify
a specific folder where your uploads will go, you may must use the
environment variable named S3_UPLOADS_BUCKET_URL
.
Examples with Scaleway provider:
S3_UPLOADS_BUCKET_URL=your-bucket-name.s3.fr-par.scw.cloud
Example to upload the files in a specific folder:
S3_UPLOADS_BUCKET_URL=your-bucket-name.s3.fr-par.scw.cloud/wordpress/uploads
- Clone this distribution
git clone https://github.com/Scalingo/scalingo-wordpress
cd scalingo-wordpress
- Use Scalingo CLI for create the
app
and addmysql addon
scalingo create my-wordpress
scalingo addons-add mysql mysql-sandbox
- Create an S3 Bucket on AWS and configure IAM user correctly (only if you want to use image upload with S3)
IAM user security policy example:
{
"Version": "2012-10-17",
"Statement": [
{
"Action": [
"s3:PutObject",
"s3:PutObjectAcl",
"s3:PutObjectAclVersion",
"s3:AbortMultipartUpload",
"s3:ListBucket",
"s3:GetObject"
],
"Effect": "Allow",
"Resource": "arn:aws:s3:::bucketname-here"
},
{
"Action": [
"s3:PutObject",
"s3:PutObjectAcl",
"s3:PutObjectAclVersion",
"s3:AbortMultipartUpload",
"s3:ListBucket",
"s3:GetObject"
],
"Effect": "Allow",
"Resource": "arn:aws:s3:::bucketname-here/*"
}
]
}
- Update the application environment through the dashboard or with the
Scalingo command line
scalingo env-set VARIABLE_NAME=VALUE
DATABASE_URL
- Connection string to the MySQL database -mysql://localhost:3306/wp-bedrock
- Automatically added with the Scalingo MySQL addonWP_ENV
- Set to environment (development
,staging
,production
) (required)WP_HOME
- Full URL to WordPress home (http://my-wordpress.scalingo.io) (required)WP_SITEURL
- Full URL to WordPress including subdirectory (http://my-wordpress.scalingo.io/wp) (required)S3_UPLOADS_BUCKET
- Name of the S3 bucket to upload files to (optional)S3_UPLOADS_KEY
- AWS Access Key ID for S3 authentication (optional)S3_UPLOADS_SECRET
- AWS Secret Key for S3 authentication (optional)S3_UPLOADS_REGION
- Region of the S3 bucket (optional)AUTH_KEY
,SECURE_AUTH_KEY
,LOGGED_IN_KEY
,NONCE_KEY
,AUTH_SALT
,SECURE_AUTH_SALT
,LOGGED_IN_SALT
,NONCE_SALT
You can get some random salts on the [Roots WordPress Salt Generator][roots-wp-salt].
-
Add theme(s) in
web/app/themes
as you would for a normal WordPress site. -
Deploy the application on Scalingo
# Optionally add theme to your git repository
git add web/app/themes
git commit -m "Add themes"
# Then push to Scalingo
git push scalingo master
-
Access WP admin at
https://my-wordpress.scalingo.io/wp/wp-admin
-
Activate
S3 Uploads
plugin on WordPress plugin page athttps://my-wordpress.scalingo.io/wp/wp-admin/plugins.php
Update package.json to update the WordPress branch you need.
Then run:
└> docker-compose run --rm web composer update
Run locally to test WordPress is working, then commit composer.json
and composer.lock
.
A Docker Compose file is available to run the WordPress locally. You first need to install the dependencies with:
docker-compose run --rm composer install --prefer-source --no-interaction --ignore-platform-reqs
Then start the Nginx:
docker-compose up nginx
Simple command for install plugins:
docker-compose run --rm composer require --ignore-platform-reqs wpackagist-plugin/{PLUGIN_NAME}
You can find plugins
on Wordpress Packagist
Example to install akismet
plugin:
docker-compose run --rm composer require --ignore-platform-reqs wpackagist-plugin/akismet
Simple command for install themes:
docker-compose run --rm composer require --ignore-platform-reqs wpackagist-theme/{THEME_NAME}
You can find themes
on Wordpress Packagist
Example to install hueman
theme:
docker-compose run --rm composer require --ignore-platform-reqs wpackagist-theme/hueman
Bedrock documentation is available at https://roots.io/bedrock/docs.