I started off using mhoofman/wordpress-heroku. One gotcha from there is that the PostgreSQL plugin does not work. Here’s what worked for me on my Ubuntu 18.10 desktop.
Dependencies
wget, git, and heroku-cli
$ sudo apt install git wget git $ sudo snap install --classic heroku
Get WordPress
Download from https://wordpress.org/download/, extract, move wp-config-sample.php to wp-config.php.
$ wget https://wordpress.org/latest.tar.gz $ tar xzvf latest.tar.gz $ cd wordpress $ mv wp-config-sample.php wp-config.php
I then made the following edits to wp-config.php This allows all parameters to be set via ‘heroku config:set’. The first block is used to configure the WP Offload Media Lite plugin.
define( 'AS3CF_SETTINGS', serialize( array( 'provider' => 'aws', 'access-key-id' => getenv('AWS_ACCESS_KEY_ID'), 'secret-access-key' => getenv('AWS_SECRET_ACCESS_KEY'), ) ) );
Now get and parse the MySQL connection.
$url = parse_url(getenv('CLEARDB_DATABASE_URL')); define('DB_NAME', trim($url['path'], '/')); define('DB_USER', $url['user']); define('DB_PASSWORD', $url['pass']); define('DB_HOST', $url['host']);
Finally, define authentication keys and salts.
define('AUTH_KEY', getenv('AUTH_KEY')); define('SECURE_AUTH_KEY', getenv('SECURE_AUTH_KEY')); define('LOGGED_IN_KEY', getenv('LOGGED_IN_KEY')); define('NONCE_KEY', getenv('NONCE_KEY')); define('AUTH_SALT', getenv('AUTH_SALT')); define('SECURE_AUTH_SALT', getenv('SECURE_AUTH_SALT')); define('LOGGED_IN_SALT', getenv('LOGGED_IN_SALT')); define('NONCE_SALT', getenv('NONCE_SALT'));
Download and install plugins and themes.
I added the following plugins. Unpack each into the ‘/wp-content/plugins’ directory.
Do the same with desired theme, unpacking to ‘/wp-content/themes’.
Initialize git repository and create Heroku app
The base code, plugins, and themes are in place. wp-config.php created and modified. Now initialize a git repository and create an App on Heroku.com.
$ git init . $ heroku create
Add MySQL and Sendgrid
$ heroku addons:create cleardb $ heroku addons:create sendgrid
Now set those configuration variables
You’ll need your AWS Access Keys.
$ heroku config:set AWS_ACCESS_KEY_ID $ heroku config:set AWS_SECRET_ACCESS_KEY
Authentication keys and salts must also be configured. Do it one-by-one, or script it.
$ heroku config:set AUTH_KEY:a-strong-password $ heroku config:set SECURE_AUTH_KEY:another-strong-password
Continue for all the keys and salts.
That’s it! Deploy and then configure your site and the plugins from WordPress itself.
$ git checkout -b production $ git push heroku production:master
Point your web browser to Heroku’s App URL. You should then get WordPress’s famous five-minute install. You can see my resulting code at terryg/wordpress-heroku.