diff --git a/products/.gitbook/assets/wordpress-capsule/deploy/add-capsule.png b/products/.gitbook/assets/wordpress-capsule/deploy/add-capsule.png new file mode 100644 index 000000000..6158fa721 Binary files /dev/null and b/products/.gitbook/assets/wordpress-capsule/deploy/add-capsule.png differ diff --git a/products/.gitbook/assets/wordpress-capsule/deploy/wordpress-capsule-type.png b/products/.gitbook/assets/wordpress-capsule/deploy/wordpress-capsule-type.png new file mode 100644 index 000000000..3ad075d62 Binary files /dev/null and b/products/.gitbook/assets/wordpress-capsule/deploy/wordpress-capsule-type.png differ diff --git a/products/.gitbook/assets/wordpress-capsule/deploy/wordpress-choose-plan.png b/products/.gitbook/assets/wordpress-capsule/deploy/wordpress-choose-plan.png new file mode 100644 index 000000000..d69a3aaaf Binary files /dev/null and b/products/.gitbook/assets/wordpress-capsule/deploy/wordpress-choose-plan.png differ diff --git a/products/.gitbook/assets/wordpress-capsule/deploy/wordpress-configure-capsule.png b/products/.gitbook/assets/wordpress-capsule/deploy/wordpress-configure-capsule.png new file mode 100644 index 000000000..f697f067b Binary files /dev/null and b/products/.gitbook/assets/wordpress-capsule/deploy/wordpress-configure-capsule.png differ diff --git a/products/.gitbook/assets/wordpress-capsule/deploy/wordpress-git-managed.png b/products/.gitbook/assets/wordpress-capsule/deploy/wordpress-git-managed.png new file mode 100644 index 000000000..ab54ddc29 Binary files /dev/null and b/products/.gitbook/assets/wordpress-capsule/deploy/wordpress-git-managed.png differ diff --git a/products/.gitbook/assets/wordpress-capsule/deploy/wordpress-logs.png b/products/.gitbook/assets/wordpress-capsule/deploy/wordpress-logs.png new file mode 100644 index 000000000..7cad819f3 Binary files /dev/null and b/products/.gitbook/assets/wordpress-capsule/deploy/wordpress-logs.png differ diff --git a/products/.gitbook/assets/wordpress-capsule/deploy/wordpress-setup.png b/products/.gitbook/assets/wordpress-capsule/deploy/wordpress-setup.png new file mode 100644 index 000000000..98238c7d4 Binary files /dev/null and b/products/.gitbook/assets/wordpress-capsule/deploy/wordpress-setup.png differ diff --git a/products/.gitbook/assets/wordpress-capsule/deploy/wordpress-url.png b/products/.gitbook/assets/wordpress-capsule/deploy/wordpress-url.png new file mode 100644 index 000000000..a58d40922 Binary files /dev/null and b/products/.gitbook/assets/wordpress-capsule/deploy/wordpress-url.png differ diff --git a/products/.gitbook/assets/wordpress-capsule/deploy/wordpress-version.png b/products/.gitbook/assets/wordpress-capsule/deploy/wordpress-version.png new file mode 100644 index 000000000..af87a30ae Binary files /dev/null and b/products/.gitbook/assets/wordpress-capsule/deploy/wordpress-version.png differ diff --git a/products/.gitbook/assets/wordpress-capsule/deploy/wordpress-welcome.png b/products/.gitbook/assets/wordpress-capsule/deploy/wordpress-welcome.png new file mode 100644 index 000000000..7babb8a8a Binary files /dev/null and b/products/.gitbook/assets/wordpress-capsule/deploy/wordpress-welcome.png differ diff --git a/products/.gitbook/assets/wordpress-capsule/domain/add-custom-domain-button.png b/products/.gitbook/assets/wordpress-capsule/domain/add-custom-domain-button.png new file mode 100644 index 000000000..8f045d8f3 Binary files /dev/null and b/products/.gitbook/assets/wordpress-capsule/domain/add-custom-domain-button.png differ diff --git a/products/.gitbook/assets/wordpress-capsule/domain/custom-domain-entry.png b/products/.gitbook/assets/wordpress-capsule/domain/custom-domain-entry.png new file mode 100644 index 000000000..a09b3cae7 Binary files /dev/null and b/products/.gitbook/assets/wordpress-capsule/domain/custom-domain-entry.png differ diff --git a/products/.gitbook/assets/wordpress-capsule/domain/wordpress-default-url.png b/products/.gitbook/assets/wordpress-capsule/domain/wordpress-default-url.png new file mode 100644 index 000000000..d7b6da2f6 Binary files /dev/null and b/products/.gitbook/assets/wordpress-capsule/domain/wordpress-default-url.png differ diff --git a/products/.gitbook/assets/wordpress-capsule/migrate/wordpress-migration-in-progress.png b/products/.gitbook/assets/wordpress-capsule/migrate/wordpress-migration-in-progress.png new file mode 100644 index 000000000..345a52e44 Binary files /dev/null and b/products/.gitbook/assets/wordpress-capsule/migrate/wordpress-migration-in-progress.png differ diff --git a/products/.gitbook/assets/wordpress-capsule/migrate/wordpress-migration-source-selection.png b/products/.gitbook/assets/wordpress-capsule/migrate/wordpress-migration-source-selection.png new file mode 100644 index 000000000..713a9ac56 Binary files /dev/null and b/products/.gitbook/assets/wordpress-capsule/migrate/wordpress-migration-source-selection.png differ diff --git a/products/wordpress-capsule/deploy.md b/products/wordpress-capsule/deploy.md index f1acb4625..da4b8672b 100644 --- a/products/wordpress-capsule/deploy.md +++ b/products/wordpress-capsule/deploy.md @@ -2,68 +2,68 @@ Deploy a WordPress application and learn how to host a content management system on Code Capsules. -## Set up +## Set Up -To follow this guide, you'll need a [Code Capsules](https://codecapsules.io/) account. WordPress can be downloaded and deployed automatically or you can connect your Capsule to Wordpress hosted on a GitHub repository. +To follow this guide, you'll need a [Code Capsules](https://codecapsules.io/) account. WordPress can be downloaded and deployed automatically, or you can connect your Capsule to WordPress hosted on a GitHub repository. ## Create an Account with Code Capsules -Before creating your WordPress capsule, you'll need a Team and a Space. You can follow these guides to learn how to create [Teams](https://app.gitbook.com/s/gIlxo9gU7Lotj1cdGRh6/teams/what-is-a-team) and [Spaces](https://app.gitbook.com/s/gIlxo9gU7Lotj1cdGRh6/spaces/what-is-a-space). +Before creating your WordPress Capsule, you'll need a Team and a Space. You can follow these guides to learn how to create [Teams](https://app.gitbook.com/s/gIlxo9gU7Lotj1cdGRh6/teams/what-is-a-team) and [Spaces](https://app.gitbook.com/s/gIlxo9gU7Lotj1cdGRh6/spaces/what-is-a-space). -If you already have a Team and Space set up, log in to your Code Capsules account. On the dashboard, click the yellow `+` on the bottom left of the screen then click "New Capsule". +If you already have a Team and Space set up, log in to your Code Capsules account. On the dashboard, click the yellow **+** icon on the bottom left of the screen, then click **New Capsule**. -![Create a Capsule](/broken/files/4bJZiaOBexUoKSnAhzd2) +![Create a Capsule](../.gitbook/assets/wordpress-capsule/deploy/add-capsule.png) ## Create the Capsule A [Capsule](https://app.gitbook.com/s/gIlxo9gU7Lotj1cdGRh6/capsules/what-is-a-capsule) provides the server for hosting an application on Code Capsules. -To create a Wordpress Capsule first choose "WordPress" as the Capsule type, as well as your Team, and Space. +To create a WordPress Capsule, first choose **WordPress** as the Capsule type, as well as your Team and Space. -![Choose a Capsule Type](/broken/files/trWzz1caiyuoKcK430qr) +![Choose a Capsule Type](../.gitbook/assets/wordpress-capsule/deploy/wordpress-capsule-type.png) -Next choose your payment plan, or create a custom plan. +Next, choose your payment plan, or create a custom plan. -![Choose Plan](/broken/files/lAFLsN91u5PwqspEmd7x) +![Choose Plan](../.gitbook/assets/wordpress-capsule/deploy/wordpress-choose-plan.png) -A Wordpress Capsule requires a connection to a MySQL Database Capsule as well as a Persistent Storage Capsule. Either select a previosuly created instance of each from the dropdowns, or click the yellow `+` next to each and follow the prompts for creating each Capsule. Click "Create Capsule". +A WordPress Capsule requires a connection to a MySQL Database Capsule as well as to a Persistent Storage Capsule. Either select a previously created instance of each from the dropdowns, or click the yellow **+** next to each and follow the prompts for creating each Capsule. Click **Create Capsule**. -![Deploy Configuration](/broken/files/mRVMETH0XZ6kAiZlm7r2) +![Deploy Configuration](../.gitbook/assets/wordpress-capsule/deploy/wordpress-configure-capsule.png) -## Choose How to Deploy +## Choose How To Deploy ### Default Deployment -To automatically download and deploy a Wordpress version on Code Capsules: +To automatically download and deploy a WordPress version on Code Capsules: -1. Select the "Default" deployment type from the dropdown -2. Choose your WordPress version -3. Click "Next" +1. Select the **Default** deployment type from the dropdown. +2. Choose your WordPress version. +3. Click **Next**. -![Choose Wordpress Version](/broken/files/6DjdVUiXgO9sJFm2JAJ2) +![Choose Wordpress Version](../.gitbook/assets/wordpress-capsule/deploy/wordpress-version.png) ### Git Managed To deploy WordPress from your version control repository: -1. Select the "Git Managed" deployment type -2. Select a repository -3. Select the branch to deploy from -4. Click "Next" +1. Select the **Git Managed** deployment type. +2. Select a repository. +3. Select the branch to deploy from. +4. Click **Next**. -![Choose repo](/broken/files/PVPsEvZLR56b3KuhEGRn) +![Choose repo](../.gitbook/assets/wordpress-capsule/deploy/wordpress-git-managed.png) You can read more about connecting your account to a version control provider in [this guide](https://docs.codecapsules.io/platform/account/connect-version-control). ## Monitor Deployment -Code Capsules will automatically build and deploy your WordPress application. You can view the build log by selecting the "Logs" tab to monitor the deployment progress. +Code Capsules will automatically build and deploy your WordPress application. You can view the build log by selecting the **Logs** tab to monitor the deployment progress. -![Logs](/broken/files/WquVsllQEiLSboZ1Milm) +![Logs](../.gitbook/assets/wordpress-capsule/deploy/wordpress-logs.png) -Once the build is complete, click the URL link in the "Details" tab, to access your WordPress site. +Once the build is complete, click the URL link in the **Details** tab to access your WordPress site. -![URL](/broken/files/kNeV7S3JXfbpohcGRjxF) +![URL](../.gitbook/assets/wordpress-capsule/deploy/wordpress-url.png) ## Set Up WordPress @@ -73,10 +73,10 @@ When you first visit your WordPress site, you'll see the installation screen: 2. Create an admin username. 3. Set a strong password. 4. Provide your email address. -5. Click "Install WordPress". +5. Click **Install WordPress**. -![Setup Wordpress Admin Account](/broken/files/YGwoiXq1kKA3XnNQ8nry) +![Setup Wordpress Admin Account](../.gitbook/assets/wordpress-capsule/deploy/wordpress-setup.png) -After installation, you'll see the WordPress admin dashboard and can begin customizing your site. +After installation, you'll see the WordPress Admin dashboard and can begin customizing your site. -![Welcome to Wordpress](/broken/files/9pMn9vOvou2GXVOzuPwx) +![Welcome to Wordpress](../.gitbook/assets/wordpress-capsule/deploy/wordpress-welcome.png) diff --git a/products/wordpress-capsule/domain.md b/products/wordpress-capsule/domain.md new file mode 100644 index 000000000..26c97fcd3 --- /dev/null +++ b/products/wordpress-capsule/domain.md @@ -0,0 +1,29 @@ +--- +description: >- + Configure custom domains for your WordPress capsule to replace the default + Code Capsules URL. +--- + +# Domains + + +When you deploy a WordPress Capsule, Code Capsules assigns it a default URL, like `wordpress-slug.codecapsules.co.za`. You can access your site immediately using this URL. + +![Default WordPress URL](../.gitbook/assets/wordpress-capsule/domain/wordpress-default-url.png) + +## Adding a Custom Domain + +To add a custom domain, navigate to the **Domains** tab in your WordPress Capsule. + +On the left panel, you will see DNS configuration instructions. You'll need to create a CNAME or ALIAS record with your DNS provider or point a Type A record to the provided IP address in your domain provider's management console. + +Once you have created your DNS records, click the **+** button to add the domain entry. + +![Add Custom Domain Button](../.gitbook/assets/wordpress-capsule/domain/add-custom-domain-button.png) + +Enter your custom domain in the form. + +![Custom Domain Entry Form](../.gitbook/assets/wordpress-capsule/domain/custom-domain-entry.png) + +DNS propagation typically takes 15-60 minutes. Once complete, your WordPress site will be accessible at your custom domain. + diff --git a/products/wordpress-capsule/migrate.md b/products/wordpress-capsule/migrate.md new file mode 100644 index 000000000..ea4aff5c4 --- /dev/null +++ b/products/wordpress-capsule/migrate.md @@ -0,0 +1,31 @@ +--- +description: >- + Migrate content between WordPress Capsules with one-click synchronization of + database, files, and configurations. +--- + +# Migrate + +Navigate to the **Migrate** tab in your destination WordPress Capsule. Select the source Capsule from the dropdown menu. Click **Start Migration** to begin the synchronization process. + +![Migration Source Selection](../.gitbook/assets/wordpress-capsule/migrate/wordpress-migration-source-selection.png) + +## What Gets Migrated + +Code Capsules copies the complete WordPress environment from the source Capsule: + +* **Database Content:** All posts, pages, comments, and user accounts +* **Uploaded Media Files:** Images, videos, and documents from the storage Capsule +* **Installed Plugins:** Active plugins and their configurations +* **Theme Configurations:** Active theme settings and customizations + +## After Migration + +Once the migration is complete, the destination Capsule contains identical content to the source Capsule. The migration automatically updates internal URLs to match the destination Capsule's domain. + +Both Capsules remain independent after migration. Changes made to the source Capsule after migration won't affect the destination until you run another migration. + +## Common Use Cases for Migration + +* **Staging to Production:** Deploy approved content from staging to your live production site. +* **Cloning Sites:** Duplicate a WordPress installation to create a new independent site. diff --git a/tutorials/.gitbook/assets/add-custom-domain-button.png b/tutorials/.gitbook/assets/add-custom-domain-button.png new file mode 100644 index 000000000..6ab3d7d57 Binary files /dev/null and b/tutorials/.gitbook/assets/add-custom-domain-button.png differ diff --git a/tutorials/.gitbook/assets/code-capsules-wordpress-architecture.png b/tutorials/.gitbook/assets/code-capsules-wordpress-architecture.png new file mode 100644 index 000000000..c7699f11f Binary files /dev/null and b/tutorials/.gitbook/assets/code-capsules-wordpress-architecture.png differ diff --git a/tutorials/.gitbook/assets/create-capsule-button.png b/tutorials/.gitbook/assets/create-capsule-button.png new file mode 100644 index 000000000..7fbb917de Binary files /dev/null and b/tutorials/.gitbook/assets/create-capsule-button.png differ diff --git a/tutorials/.gitbook/assets/create-space-button.png b/tutorials/.gitbook/assets/create-space-button.png new file mode 100644 index 000000000..dc00c1c45 Binary files /dev/null and b/tutorials/.gitbook/assets/create-space-button.png differ diff --git a/tutorials/.gitbook/assets/custom-domain-entry.png b/tutorials/.gitbook/assets/custom-domain-entry.png new file mode 100644 index 000000000..2a926b3bb Binary files /dev/null and b/tutorials/.gitbook/assets/custom-domain-entry.png differ diff --git a/tutorials/.gitbook/assets/developer-workflow.png b/tutorials/.gitbook/assets/developer-workflow.png new file mode 100644 index 000000000..9a5340f64 Binary files /dev/null and b/tutorials/.gitbook/assets/developer-workflow.png differ diff --git a/tutorials/.gitbook/assets/single-server-wordpress.png b/tutorials/.gitbook/assets/single-server-wordpress.png new file mode 100644 index 000000000..69dd6ea5b Binary files /dev/null and b/tutorials/.gitbook/assets/single-server-wordpress.png differ diff --git a/tutorials/.gitbook/assets/space-details-form.png b/tutorials/.gitbook/assets/space-details-form.png new file mode 100644 index 000000000..f8ea74865 Binary files /dev/null and b/tutorials/.gitbook/assets/space-details-form.png differ diff --git a/tutorials/.gitbook/assets/wordpress-admin-account-setup.png b/tutorials/.gitbook/assets/wordpress-admin-account-setup.png new file mode 100644 index 000000000..4f7fadbe2 Binary files /dev/null and b/tutorials/.gitbook/assets/wordpress-admin-account-setup.png differ diff --git a/tutorials/.gitbook/assets/wordpress-admin-dashboard.png b/tutorials/.gitbook/assets/wordpress-admin-dashboard.png new file mode 100644 index 000000000..a9a3abd7c Binary files /dev/null and b/tutorials/.gitbook/assets/wordpress-admin-dashboard.png differ diff --git a/tutorials/.gitbook/assets/wordpress-aws-architecture.png b/tutorials/.gitbook/assets/wordpress-aws-architecture.png new file mode 100644 index 000000000..5a17a2a43 Binary files /dev/null and b/tutorials/.gitbook/assets/wordpress-aws-architecture.png differ diff --git a/tutorials/.gitbook/assets/wordpress-capsule-selection.png b/tutorials/.gitbook/assets/wordpress-capsule-selection.png new file mode 100644 index 000000000..805a51029 Binary files /dev/null and b/tutorials/.gitbook/assets/wordpress-capsule-selection.png differ diff --git a/tutorials/.gitbook/assets/wordpress-configuration-overview.png b/tutorials/.gitbook/assets/wordpress-configuration-overview.png new file mode 100644 index 000000000..4d5387819 Binary files /dev/null and b/tutorials/.gitbook/assets/wordpress-configuration-overview.png differ diff --git a/tutorials/.gitbook/assets/wordpress-data-storage-split.png b/tutorials/.gitbook/assets/wordpress-data-storage-split.png new file mode 100644 index 000000000..980612204 Binary files /dev/null and b/tutorials/.gitbook/assets/wordpress-data-storage-split.png differ diff --git a/tutorials/.gitbook/assets/wordpress-database-configuration.png b/tutorials/.gitbook/assets/wordpress-database-configuration.png new file mode 100644 index 000000000..06acf0351 Binary files /dev/null and b/tutorials/.gitbook/assets/wordpress-database-configuration.png differ diff --git a/tutorials/.gitbook/assets/wordpress-default-url.png b/tutorials/.gitbook/assets/wordpress-default-url.png new file mode 100644 index 000000000..81deca688 Binary files /dev/null and b/tutorials/.gitbook/assets/wordpress-default-url.png differ diff --git a/tutorials/.gitbook/assets/wordpress-deployment-method.png b/tutorials/.gitbook/assets/wordpress-deployment-method.png new file mode 100644 index 000000000..49e8e4fe6 Binary files /dev/null and b/tutorials/.gitbook/assets/wordpress-deployment-method.png differ diff --git a/tutorials/.gitbook/assets/wordpress-installation-success.png b/tutorials/.gitbook/assets/wordpress-installation-success.png new file mode 100644 index 000000000..7285f2da5 Binary files /dev/null and b/tutorials/.gitbook/assets/wordpress-installation-success.png differ diff --git a/tutorials/.gitbook/assets/wordpress-language-selection.png b/tutorials/.gitbook/assets/wordpress-language-selection.png new file mode 100644 index 000000000..5d0628700 Binary files /dev/null and b/tutorials/.gitbook/assets/wordpress-language-selection.png differ diff --git a/tutorials/.gitbook/assets/wordpress-migration-in-progress.png b/tutorials/.gitbook/assets/wordpress-migration-in-progress.png new file mode 100644 index 000000000..edab8bc92 Binary files /dev/null and b/tutorials/.gitbook/assets/wordpress-migration-in-progress.png differ diff --git a/tutorials/.gitbook/assets/wordpress-migration-process.png b/tutorials/.gitbook/assets/wordpress-migration-process.png new file mode 100644 index 000000000..2f4129959 Binary files /dev/null and b/tutorials/.gitbook/assets/wordpress-migration-process.png differ diff --git a/tutorials/.gitbook/assets/wordpress-migration-source-selection.png b/tutorials/.gitbook/assets/wordpress-migration-source-selection.png new file mode 100644 index 000000000..519de8c46 Binary files /dev/null and b/tutorials/.gitbook/assets/wordpress-migration-source-selection.png differ diff --git a/tutorials/.gitbook/assets/wordpress-pricing-plan.png b/tutorials/.gitbook/assets/wordpress-pricing-plan.png new file mode 100644 index 000000000..014892435 Binary files /dev/null and b/tutorials/.gitbook/assets/wordpress-pricing-plan.png differ diff --git a/tutorials/.gitbook/assets/wordpress-storage-configuration.png b/tutorials/.gitbook/assets/wordpress-storage-configuration.png new file mode 100644 index 000000000..8d998a336 Binary files /dev/null and b/tutorials/.gitbook/assets/wordpress-storage-configuration.png differ diff --git a/tutorials/.gitbook/assets/wordpress-workflow.png b/tutorials/.gitbook/assets/wordpress-workflow.png new file mode 100644 index 000000000..5105cf628 Binary files /dev/null and b/tutorials/.gitbook/assets/wordpress-workflow.png differ diff --git a/tutorials/.gitbook/assets/wp-synchro-access-key.png b/tutorials/.gitbook/assets/wp-synchro-access-key.png new file mode 100644 index 000000000..017ff70fd Binary files /dev/null and b/tutorials/.gitbook/assets/wp-synchro-access-key.png differ diff --git a/tutorials/.gitbook/assets/wp-synchro-add-license.png b/tutorials/.gitbook/assets/wp-synchro-add-license.png new file mode 100644 index 000000000..d217836f2 Binary files /dev/null and b/tutorials/.gitbook/assets/wp-synchro-add-license.png differ diff --git a/tutorials/.gitbook/assets/wp-synchro-add-migration.png b/tutorials/.gitbook/assets/wp-synchro-add-migration.png new file mode 100644 index 000000000..949ea9f0c Binary files /dev/null and b/tutorials/.gitbook/assets/wp-synchro-add-migration.png differ diff --git a/tutorials/.gitbook/assets/wp-synchro-license-key.png b/tutorials/.gitbook/assets/wp-synchro-license-key.png new file mode 100644 index 000000000..b4480e740 Binary files /dev/null and b/tutorials/.gitbook/assets/wp-synchro-license-key.png differ diff --git a/tutorials/.gitbook/assets/wp-synchro-migration-conflicts.png b/tutorials/.gitbook/assets/wp-synchro-migration-conflicts.png new file mode 100644 index 000000000..dd14439a0 Binary files /dev/null and b/tutorials/.gitbook/assets/wp-synchro-migration-conflicts.png differ diff --git a/tutorials/.gitbook/assets/wp-synchro-migration-options.png b/tutorials/.gitbook/assets/wp-synchro-migration-options.png new file mode 100644 index 000000000..a497ccce1 Binary files /dev/null and b/tutorials/.gitbook/assets/wp-synchro-migration-options.png differ diff --git a/tutorials/.gitbook/assets/wp-synchro-plugin-upload.png b/tutorials/.gitbook/assets/wp-synchro-plugin-upload.png new file mode 100644 index 000000000..abb736eeb Binary files /dev/null and b/tutorials/.gitbook/assets/wp-synchro-plugin-upload.png differ diff --git a/tutorials/.gitbook/assets/wp-synchro-upload-zip.png b/tutorials/.gitbook/assets/wp-synchro-upload-zip.png new file mode 100644 index 000000000..dba42a0cc Binary files /dev/null and b/tutorials/.gitbook/assets/wp-synchro-upload-zip.png differ diff --git a/tutorials/how-to-simply-host-a-production-wordpress-blog.md b/tutorials/how-to-simply-host-a-production-wordpress-blog.md new file mode 100644 index 000000000..9b1cf774c --- /dev/null +++ b/tutorials/how-to-simply-host-a-production-wordpress-blog.md @@ -0,0 +1,277 @@ +--- +description: >- + Learn how to deploy production WordPress with separated application, database, and storage layers, built-in staging-to-production migration, and auto-scaling without AWS complexity. +coverY: 0 +layout: + cover: + visible: true + size: hero + title: + visible: true + description: + visible: true + tableOfContents: + visible: true + outline: + visible: true + pagination: + visible: true +--- + +# How To (Simply) Host a Production WordPress Blog + +The Amazon Web Services (AWS) WordPress reference architecture has become a meme in DevOps circles. The 2018 [best practices whitepaper](https://aws.amazon.com/blogs/architecture/wordpress-best-practices-on-aws/) recommends 11 services costing $500 to $1,500 monthly and assumes you have dedicated DevOps staff. The alternative is a single Amazon Lightsail instance where you handle operating system (OS) updates, security hardening, and MySQL tuning yourself. + +Production WordPress needs infrastructure that falls between these extremes: reliable enough to handle traffic spikes and hardware failures, yet simple enough to manage without a DevOps team. + +This guide demonstrates how to run a production WordPress site with: + +- Separated application, database, and storage layers +- Staging and production environments with one-click migration +- Automatic scaling for traffic spikes +- Infrastructure-level backups + +Learn about the operational challenges WordPress creates, the different hosting approaches that address them, and deploying a staging-to-production workflow. + +## What You Need To Know + +Hosting WordPress in production is confusing because WordPress doesn't fit standard deployment workflows. You can't version-control content, staging-to-production migration isn't built-in, and backups require you to synchronize files and databases separately. Here's what you need to know to host a production WordPress site simply: + +- **Separate Your WordPress Layers from the Start:** WordPress, MySQL, and file storage should run independently. When one layer fails or requires scaling, the others continue to operate. +- **Plan for Staging-to-Production Workflows:** WordPress has no built-in mechanism for migrating between environments. Either set up a plugin-based migration, which costs $99 to $299 per year with manual configuration, or use a hosting platform, like Code Capsules, that offers built-in one-click migrations. Without this, you have to manually recreate approved content or risk breaking production with direct edits. +- **Match Infrastructure to Your Team's Capacity:** A self-hosted VPS (starting from $10 per month) requires you to handle security patches, backups, and scaling. Managed WordPress removes operational work but limits flexibility and costs more (an average of $50 per month for basic plans). Always choose based on whether you have DevOps resources. + +## The WordPress Production Problem + +In a development team, the workflow for releasing changes usually looks like this: + +![Developer workflow diagram](.gitbook/assets/developer-workflow.png) + +Your developers write code locally, commit to GitHub, run automated tests, and deploy changes to staging for review. Only after stakeholder approval does anything touch production. Every change is tracked, every deployment is reversible, and nothing reaches your live site without multiple checkpoints. + +WordPress doesn't work this way. + +![WordPress workflow diagram](.gitbook/assets/wordpress-workflow.png) + +WordPress splits data between files and the database, breaking Git workflows: + +- You can commit theme changes to Git, but blog posts aren't in your repository. +- You can deploy code via a continuous integration and continuous delivery (CI/CD) pipeline, but database changes occur directly in production via the WordPress Admin dashboard. +- You can run tests on your code, but there's no automated testing for scenarios such as when someone installs a plugin that conflicts with your theme. +- You can roll back a bad deployment, but only file-system changes are rolled back; database modifications remain, so you can't recover from bad content changes. + +The real consequences look like this: + +- Marketing installs a plugin on production. It conflicts with your theme, and the site breaks during business hours. +- A content creator deletes a popular post. You can't recover it because there is no Git history for database content. +- You want to test WordPress core updates on staging, but staging content is days behind production. + +Your infrastructure may have version control and staging environments, but WordPress makes both nearly impossible without building custom tooling to synchronize databases and file systems between environments. WordPress migration, backups, and staging workflows each require specific approaches to work reliably in production. + +## How WordPress Migration Actually Works + +WordPress migration is more complex than deploying typical web applications, because WordPress stores data in two separate locations: + +- Your application code, themes, plugins, and configuration files live in the file system. +- Your content, blog posts, comments, user accounts, and plugin settings live in the MySQL database. +- Uploaded media like images, videos, and PDFs live in the file system, but the database stores the URLs pointing to these files. + +![WordPress data storage split](.gitbook/assets/wordpress-data-storage-split.png) + +This split storage creates migration complexity. For a successful migration, you need to follow three coordinated steps: + +- **Copy the Database:** Export the MySQL database from staging and import it to production. This transfers all your content (posts, pages, and comments), plugin configurations, user accounts, and custom fields. +- **Copy the File System:** Transfer all files from staging to production, including uploaded media, installed plugins, active themes, and WordPress core files. +- **Update URLs in the Database:** Search through every database table and replace staging URLs with production URLs. This affects blog post content, plugin settings, theme options, widget configurations, and metadata. + +![WordPress migration process](.gitbook/assets/wordpress-migration-process.png) + +WordPress has no built-in migration tool, so you have two options: + +- Use a plugin. +- Build custom scripts. + +### Migrating WordPress Content Using a Plugin + +Most WordPress users handle staging-to-production migrations with plugins such as [WP Synchro](https://wordpress.org/plugins/wpsynchro/), [UpdraftPlus](https://teamupdraft.com/updraftplus/), or [All-in-One WP Migration](https://wordpress.org/plugins/all-in-one-wp-migration/). These plugins automate the three-step process: database export/import, file transfer, and URL replacement. + +WP Synchro offers the most straightforward setup. The free version handles basic migrations but limits the database size to 10MB. Production sites require the premium version at $99 to $299 per year for extensive database support, selective sync, and conflict resolution. The setup process looks like this: + +- Install the plugin on both the staging and production environments. The premium version requires you to download the zip file manually. + + ![WP Synchro plugin upload](.gitbook/assets/wp-synchro-plugin-upload.png) + +- Get your license key: + + ![WP Synchro license key](.gitbook/assets/wp-synchro-license-key.png) + +- Upload the downloaded zip file on the **Add Plugins** page. + + ![Upload WP Synchro plugin zip](.gitbook/assets/wp-synchro-upload-zip.png) + +- After installation, add your license key in **WP Synchro → Licensing**. + + ![Add WP Synchro license key](.gitbook/assets/wp-synchro-add-license.png) + +- Configure your setup in **WP Synchro → Setup** by enabling pushes for the production environment, then save the access key. The staging environment uses this access key to authenticate when pushing changes to production. + + ![Configure WP Synchro access key](.gitbook/assets/wp-synchro-access-key.png) + +- On the **WP Synchro → Overview** page, click **Add Migration**. Enter a name for the migration, select **Push this site to remote site** as the migration type, then enter your production site's full URL and paste the access key. + +![Add migration in WP Synchro](.gitbook/assets/wp-synchro-add-migration.png) + +- Select one of the four migration options: **Migrate entire site**, **Migrate all files** (no database), **Migrate entire database** (no files), or **Custom migration**. Custom migration lets you select specific tables, files, posts, or comments to migrate. + + ![WP Synchro migration options](.gitbook/assets/wp-synchro-migration-options.png) + +- **Save** and execute the migration. + +If any content has changed on the production since your last sync, the plugin shows conflicts. You manually choose whether to keep production changes or overwrite them with staging content. Unlike Git, there's no automatic conflict resolution — you choose which complete version to keep. + +![WP Synchro migration conflicts](.gitbook/assets/wp-synchro-migration-conflicts.png) + +WP Synchro provides a reliable migration workflow for WordPress sites. However, plugin-based migration creates several operational challenges: + +- The free version limits the database size to 10 MB. Production sites need premium licenses at $99 to $299 per year. +- Configuration takes 20 minutes with database credentials, File Transfer Protocol (FTP) access, and sync rules that need adjustment whenever your WordPress structure changes. +- If someone edited production content while you worked on staging, the plugin can't merge changes. You either overwrite production or cancel the migration. +- Anyone with access can view the API keys and use them to push unauthorized changes to your production site. + +## Using WordPress on Code Capsules + +Code Capsules provides detailed deployment documentation for WordPress. This section covers setting up the staging-to-production workflow. + +- **WordPress Deployment:** Follow the [WordPress deployment guide](../products/wordpress-capsule/deploy.md) to create your WordPress Capsule with an attached database and storage. +- **Creating Staging and Production Environments:** Deploy two identical WordPress setups, for example, one called `Staging WordPress` and another called `Production WordPress`. Each needs its own database and storage Capsules. This separation ensures staging changes don't affect production until you explicitly migrate them. +- **Configuring Custom Domains:** Navigate to the [**Domains**](../products/wordpress-capsule/domain.md) tab in each Capsule, then add your custom domains. Use subdomains like `staging.yourblog.com` for staging and `yourblog.com` for production. Configure DNS records for your domain with your domain provider using the instructions provided by Code Capsules. +- **Setting Up the Migration Workflow:** Once both environments are deployed, migrate content from staging to production using the [**Migrate**](../products/wordpress-capsule/migrate.md) tab in your production Capsule. Select staging as the source and start the migration. Code Capsules handles database synchronization, file transfer, and URL updates automatically. +- **Backup Verification:** Database and storage Capsules automatically back up daily. To confirm backup integrity, check the **Backups** tab in each Capsule, verify the retention settings, and test restoring the backup to a new Capsule. + +For ongoing operations, refer to the [WordPress Capsule documentation](../products/wordpress-capsule/) for monitoring, logs, and alerting configuration. + +### Migrating Content from Staging to Production + +In your production WordPress Capsule, navigate to the **Migrate** tab. Select your staging WordPress Capsule as the **Source Capsule**. + +Click **Start Migration**. Code Capsules copies your database content, uploaded media files, installed plugins, and theme configurations from staging to production. + +![WordPress migration source capsule selection](.gitbook/assets/wordpress-migration-source-selection.png) + +Once complete, your production environment will have identical content to the staging environment. + +With this setup, writers create posts in staging, editors review the content, and you migrate approved changes to production with a single click. + +## Backups in WordPress + +A production WordPress site requires comprehensive backups capturing the entire site state. A complete backup includes three components: + +- **The Database:** Your MySQL database contains all your site's dynamic content, including posts, pages, comments, user accounts, and plugin settings. +- **The File System:** Your files include themes, plugins, WordPress core, the uploads directory with all images and media, your site's structure, and assets. +- **Off-Site Storage:** Backups stored on the same server as your live site provide no protection against hardware failures or hosting issues. Production backups require external storage. + +The critical requirement is synchronization. Your database references files by path and URL. If you back up your database at 2 pm and your files at 3 pm, a blog post created at 2:30 pm may reference an image that doesn't exist in your file backup. Production backups must capture the database and files simultaneously. + +### How Code Capsules Handles Backups + +Code Capsules implements infrastructure-level backups. Your database and storage Capsules maintain automatic daily snapshots with 30-day retention. These backups run outside WordPress, avoiding performance impact and resource limits. + +Database and storage backups capture the same point in time, ensuring a synchronized state. Restoration works regardless of database size, avoiding the 500 MB cPanel limitation that breaks manual restoration for production sites. + +With migration and backup requirements established, the next question is cost. Different hosting approaches address these requirements with varying levels of automation, complexity, and price. + +## WordPress Hosting Cost Breakdown + +The cost of hosting a production WordPress site varies widely based on the approach. Understanding what you're paying for helps you evaluate whether the infrastructure matches your requirements. + +### Single-Server WordPress Hosting + +Single-server WordPress runs everything on one machine: web server, PHP, MySQL, and file storage. DigitalOcean Droplets and Amazon Lightsail offer this for $5 to $20 per month. + +![Single server WordPress architecture](.gitbook/assets/single-server-wordpress.png) + +With a single-server WordPress website, scaling requires handling several operational challenges: + +- **Traffic Spikes:** When your marketing team sends a newsletter, 1,000 concurrent visitors means 1,000 PHP processes competing for CPU, while database connections exhaust MySQL's connection pool. Separating the application server from the database server allows each to scale independently based on resource demands. +- **Hardware Failures and Maintenance:** When the server reboots for system updates or a plugin update crashes PHP, your entire site goes offline. This requires redundancy across multiple servers or accepting downtime during failures. +- **Storage Scaling:** As your media library grows, you need to expand disk space. On a single server, this means upgrading to a larger instance and migrating all data. Separated storage scales file storage independently, without touching your application or database. + +However, a single-server or self-hosted approach provides complete control. You choose your tech stack, install any software, and customize everything. The cost is your time, spent on tasks such as server administration, security patching, backup verification, and troubleshooting when issues arise. + +Self-hosted VPS requires technical expertise. You need to understand Linux server administration, MySQL database tuning, PHP configuration, web server optimization, and security hardening. For teams with DevOps resources, this works. For teams focused on content and marketing, the maintenance overhead outweighs the cost savings. + +### Managed WordPress Hosting + +Managed WordPress providers like Kinsta and WP Engine handle server configuration, updates, security, and backups for you. + +- **Kinsta** starts at $35 per month for a single site with 25,000 monthly visits, 10 GB storage, and automatic backups. This includes Cloudflare CDN, malware scanning, and staging environments. The plan scales to $675 per month for 250,000 visits and 100 GB storage. +- **WP Engine** starts at $20 per month for personal sites with 25,000 monthly visits and 10 GB storage. Business plans supporting 100,000 visits and staging environments begin at $50 per month. Enterprise plans reach over $500 per month. + +These services provide convenience. You get WordPress optimized for performance without managing servers yourself. The tradeoff is limited control. You can't install custom server software, extensively modify PHP configurations, or integrate WordPress into your existing infrastructure automation. + +### AWS Enterprise Architecture + +AWS's reference architecture for production WordPress runs 11 services: CloudFront CDN, Application Load Balancer, EC2 Auto Scaling, Elastic File System, Aurora, ElastiCache, S3, NAT Gateways, and VPC networking. Monthly costs range from $500 to $1,500, depending on traffic. + +![WordPress high availability architecture by Bitnami](.gitbook/assets/wordpress-aws-architecture.png) + +This architecture provides enterprise-grade reliability and scale. You get distributed infrastructure, automatic failover, and performance optimization. The tradeoff is complexity. You need dedicated DevOps staff to monitor, maintain, and debug across all these services. Troubleshooting failures requires expertise in multiple AWS services simultaneously. + +AWS also provides no built-in WordPress staging-to-production migration. You need expensive sync plugins (over $200 per year) or custom deployment scripts. + +### Code Capsules + +![Code Capsules WordPress architecture](.gitbook/assets/code-capsules-wordpress-architecture.png) + +Code Capsules WordPress hosting starts with separate application, database, and storage Capsules. Billing is based on actual resource usage. + +A typical small production setup costs approximately $15 to $25 per month and includes: + +- A WordPress application Capsule handling web traffic +- A MySQL database Capsule with automatic daily backups +- A storage Capsule for media files with backup retention + +Staging environments add the same components, roughly doubling the cost for a complete staging-to-production setup, at $30 to $50 per month in total. This includes: + +- Infrastructure-level backups +- One-click staging-to-production migration +- Auto-scaling for traffic spikes +- Separated application, database, and storage layers + + There are no plugin licensing costs, no DevOps staff requirements, and no complex AWS service configurations. + +The hosting option you choose depends on your resources and need for control. + +- If you have DevOps resources and need complete control, a self-hosted VPS or AWS provides maximum flexibility. +- If you're a small team focused on content rather than infrastructure, managed solutions eliminate maintenance overhead. +- If you sit between these extremes, Code Capsules provides managed infrastructure with staging and production workflows, without the premium pricing of fully managed WordPress hosts or the complexity of AWS enterprise architecture. + +| Feature | Managed WordPress (Kinsta/WP Engine) | Self-Hosted VPS | AWS Enterprise | Code Capsules | +|-------------------------------------|--------------------------------------|----------------------------------------|-----------------------------------------------|----------------------------------------------| +| **Monthly Cost** | $35-100 | $10-40 | $500-1,500 | Starting $30 | +| **Setup Time** | Minutes | Hours | Days | Minutes | +| **DevOps Required** | No | Yes | Yes | No | +| **Staging Environment** | Included | Manual setup | Manual setup | Included | +| **Staging-to-Production Migration** | Manual or plugins ($200+/year) | Custom scripts | Custom scripts | One-click built-in | +| **Auto-scaling** | Limited | Manual | Full control | Automatic | +| **Infrastructure Control** | Limited | Complete | Complete | Moderate | +| **Backup Management** | Automatic | Manual setup | Manual setup | Automatic infrastructure-level | +| **Database Size Limits** | Plan-dependent | Server capacity | Unlimited | Capsule plan | +| **Performance Optimization** | Managed by provider | Your responsibility | Your configuration | Platform-managed | +| **Security Updates** | Managed by provider | Your responsibility | Your responsibility | Platform-managed | +| **Custom Server Software** | No | Yes | Yes | Limited | +| **Best For** | Non-technical teams, simple sites | Teams with DevOps, custom requirements | Enterprise with dedicated infrastructure team | Technical teams needing workflow integration | + + +## Conclusion + +WordPress hosting doesn't require choosing between single-server fragility and AWS enterprise complexity. Code Capsules provides separated application, database, and storage layers with built-in staging-to-production migration. + +With Code Capsules, your WordPress infrastructure can handle traffic spikes through auto-scaling, survive hardware failures through component separation, and deploy content changes with a one-click migration. You can focus on creating content instead of maintaining servers. + +For production operations, Code Capsules provides: + +- [Monitoring](https://docs.codecapsules.io/products/wordpress-capsule/monitor) for tracking performance metrics +- [Logs](https://docs.codecapsules.io/products/wordpress-capsule/logs) for debugging issues +- [Scaling rules](https://docs.codecapsules.io/products/wordpress-capsule/scale) for automatic capacity adjustments +- [Alerting](https://docs.codecapsules.io/products/wordpress-capsule/alerting) for proactive issue detection