{"id":127202,"date":"2022-03-08T10:52:51","date_gmt":"2022-03-08T16:52:51","guid":{"rendered":"https:\/\/wpengine.com\/?post_type=resource&#038;p=127202"},"modified":"2023-11-16T15:33:26","modified_gmt":"2023-11-16T21:33:26","slug":"local-wordpress-development-migrations-and-deployment","status":"publish","type":"resource","link":"https:\/\/wpengine.com\/case-studies\/resources\/local-wordpress-development-migrations-and-deployment\/","title":{"rendered":"Local for WordPress: A Guide to Site Migrations and Deployment"},"content":{"rendered":"\n<p>Developing websites on your local machine is the de-facto method for professional WordPress development.<\/p>\n\n\n\n<p>There are a ton of ways to set up a local WordPress development environment, and if you\u2019ve used <a href=\"https:\/\/wpengine.com\/local-connect-to-wpengine\/\" target=\"_blank\" rel=\"noreferrer noopener\">Local<\/a>, you know how ridiculously simple it is to spin up a WordPress install.<\/p>\n\n\n\n<p>What might not seem so simple, however, is how to go about deploying a site you\u2019ve <a href=\"https:\/\/wpengine.com\/local\/\" target=\"_blank\" rel=\"noreferrer noopener\">developed with Local<\/a>. What\u2019s the best way to go about it?<\/p>\n\n\n\n<p>That\u2019s what we\u2019re discussing in this article. Specifically, we\u2019ll cover:<\/p>\n\n\n\n\n\n<p>Note that this article will use the terms \u201cdeploy\u201d and \u201cmigrate\u201d interchangeably. Also, when referring to the local instance of your site, it might also be referred to as \u201corigin.\u201d Similarly, when referring to the destination site, it might be referred to as \u201cremote,\u201d \u201clive,\u201d or \u201cproduction.\u201d<\/p>\n\n\n\n<p><strong>Spoiler alert:<\/strong> using <a href=\"https:\/\/wpengine.com\/local-connect-to-wpengine\/\" target=\"_blank\" rel=\"noreferrer noopener\">Local Connect<\/a> with <a href=\"https:\/\/wpengine.com\/local-connect-to-wpengine\/\" target=\"_blank\" rel=\"noreferrer noopener\">WP Engine<\/a> and <a href=\"https:\/\/getflywheel.com\/local-connect-flywheel\/?utm_source=resource&amp;utm_medium=article&amp;utm_campaign=local_connect&amp;utm_id=content\" target=\"_blank\" rel=\"noreferrer noopener\">Flywheel<\/a> is hands down the simplest method. But, regardless of which method you choose, we\u2019ll walk you through the process and address some common hurdles.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-css-opacity\" \/>\n\n\n\n<h2 class=\"wp-block-heading\">Site Migration 101: What You Need for Any Migration<\/h2>\n\n\n\n<p>WordPress is made up of files and a database, so when we talk about migrating a site, we\u2019re talking specifically about moving those two things.<\/p>\n\n\n\n<p>If you <a href=\"https:\/\/wordpress.org\/download\/\" target=\"_blank\" rel=\"noreferrer noopener\">download WordPress<\/a> or look at the file structure of an existing WordPress install, you\u2019ll find three folders and a handful of files in the root directory:<\/p>\n\n\n\n<p><kbd>-- root<\/kbd><\/p>\n\n\n\n<p><kbd>&nbsp;&nbsp;&nbsp;-- \/wp-includes<\/kbd><\/p>\n\n\n\n<p><kbd>&nbsp;&nbsp;&nbsp;-- \/wp-admin<\/kbd><\/p>\n\n\n\n<p><kbd>&nbsp;&nbsp;&nbsp;-- \/wp-content<\/kbd><\/p>\n\n\n\n<p>One of those files in the root directory is particularly important to this conversation and that\u2019s <kbd>wp-config.php<\/kbd>. We\u2019ll mention that later. It\u2019s also important to point out that the <kbd>\/wp-content<\/kbd> folder is where theme and plugin files live.<\/p>\n\n\n\n<p>When moving a site to a host where WordPress is already installed, the only folder you\u2019ll need to move is <kbd>\/wp-content<\/kbd>.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Deploy Your Site from Local Manually via Sftp or cPanel<\/h2>\n\n\n\n<p>If your destination site is with a host that supports cPanel and\/or SFTP, migrating site files this way has a relatively low barrier to entry. (Not as easy for the database, but we\u2019ll get there in a moment).<\/p>\n\n\n\n<p><a href=\"https:\/\/www.tutorialspoint.com\/cpanel\/cpanel_file_manager.htm\" target=\"_blank\" rel=\"noreferrer noopener\">cPanel File Manager<\/a> is one method you can use to upload, move and remove files on a remote server. You can alternatively use an SFTP client such as <a href=\"https:\/\/filezilla-project.org\/download.php?show_all=1\" target=\"_blank\" rel=\"noreferrer noopener\">FileZilla<\/a> (works with any operating system) to transfer files from your local machine to a remote server. If you\u2019re not familiar with SFTP, <a href=\"https:\/\/wpengine.com\/support\/sftp\/\" target=\"_blank\" rel=\"noreferrer noopener\">here\u2019s a primer<\/a>.<\/p>\n\n\n\n<figure class=\"wp-block-image aligncenter size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"452\" src=\"https:\/\/wpengine.com\/wp-content\/uploads\/2022\/03\/local-wordpress-dev-rc-1.png\" alt=\"\" class=\"wp-image-127438\" srcset=\"https:\/\/wpengine.com\/case-studies\/wp-content\/uploads\/2022\/03\/local-wordpress-dev-rc-1.png 1024w, https:\/\/wpengine.com\/case-studies\/wp-content\/uploads\/2022\/03\/local-wordpress-dev-rc-1-540x238.png 540w, https:\/\/wpengine.com\/case-studies\/wp-content\/uploads\/2022\/03\/local-wordpress-dev-rc-1-768x339.png 768w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<p>Once you\u2019re set with your file transfer method, here\u2019s what you need to know about deploying a site created with Local.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">1. Moving site files<\/h3>\n\n\n\n<p>Your Local site files are located on your machine at <kbd>Local Sites &gt; yoursitename &gt; app &gt; public.&nbsp;<\/kbd><\/p>\n\n\n\n<p>From there, use cPanel File Manager or SFTP to move <kbd>\/wp-content<\/kbd> to the root directory of the remote install.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">2. Export the Local site database<\/h3>\n\n\n\n<p>By default, Local uses <a href=\"https:\/\/www.adminer.org\/\" target=\"_blank\" rel=\"noreferrer noopener\">Adminer<\/a> for database management. To access the database of your Local site:<\/p>\n\n\n\n<ol class=\"wp-block-list\">\n<li>Launch <strong>Local<\/strong><\/li>\n\n\n\n<li>For whichever site\u2019s database you want, click <strong>Start Site<\/strong><\/li>\n\n\n\n<li>Click on the <strong>Database<\/strong> tab<\/li>\n\n\n\n<li>Click <strong>Adminer<\/strong> to open the database UI<\/li>\n\n\n\n<li>Click <strong>Export<\/strong> to prepare your database export<\/li>\n\n\n\n<li>Leave the default options as-is, with the exception of changing the output to <strong>gzip<\/strong><\/li>\n<\/ol>\n\n\n\n<p>Here\u2019s a video showing the above steps.<\/p>\n\n\n\n<figure class=\"wp-block-video\"><video height=\"1080\" style=\"aspect-ratio: 1920 \/ 1080;\" width=\"1920\" autoplay loop src=\"https:\/\/wpengine.com\/wp-content\/uploads\/2022\/03\/Export-Database-Demo.mp4\"><\/video><\/figure>\n\n\n\n<h3 class=\"wp-block-heading\">3. Importing site database on remote server<\/h3>\n\n\n\n<p>From your web host, you\u2019ll need to locate your database manager. There\u2019s a good chance your host is using <a href=\"https:\/\/www.phpmyadmin.net\/\" target=\"_blank\" rel=\"noreferrer noopener\">phpMyAdmin<\/a>, but if it\u2019s not, just look for the database option.<\/p>\n\n\n\n<p>Once your database manager is open, note the WordPress table names that already exist. They likely start with the <kbd>wp_<\/kbd> prefix.<\/p>\n\n\n\n<p>Before importing your database, you\u2019ll want to drop existing database tables. Here\u2019s a tutorial outlining the process of how to <a href=\"https:\/\/wpengine.com\/support\/importing-database\/\" target=\"_blank\" rel=\"noreferrer noopener\">import a WordPress database<\/a>.<\/p>\n\n\n\n<p>A few considerations to note:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>The table prefix of the database you\u2019re importing needs to match the table prefix specified in the remote server\u2019s <kbd>wp-config.php<\/kbd> file.&nbsp;<\/li>\n\n\n\n<li>You\u2019ll want to use a plugin like <a href=\"https:\/\/wordpress.org\/plugins\/better-search-replace\/\" target=\"_blank\" rel=\"noreferrer noopener\">Better Search Replace<\/a> to do a universal find\/replace of development URLs with your host URL.<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">Pros and cons of deploying via SFTP<\/h3>\n\n\n\n<p>Before we move on from the SFTP method, let\u2019s highlight some pros and cons.<\/p>\n\n\n\n<p><strong>Pros:<\/strong><\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>A familiar file browser interface for moving files and folders<\/li>\n\n\n\n<li>Granular control over individual files and folders<\/li>\n<\/ul>\n\n\n\n<p><strong>Cons:<\/strong><\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>It\u2019s easy to move files to the wrong folder<\/li>\n\n\n\n<li>There\u2019s no version control<\/li>\n\n\n\n<li>If you accidentally overwrite a file (or folder), it\u2019s gone (though you could restore from a backup, if you have one)<\/li>\n\n\n\n<li>There\u2019s no automation &#8211; you manually move files\/folders from origin server to destination<\/li>\n\n\n\n<li>You have to manually export and import your database<\/li>\n\n\n\n<li>You may need to <a href=\"https:\/\/wpengine.com\/support\/changing-table-prefix\/\" target=\"_blank\" rel=\"noreferrer noopener\">update the database table prefix<\/a> in the remote server\u2019s <kbd>wp-config.php<\/kbd><\/li>\n\n\n\n<li>There\u2019s no concept of \u201csyncing\u201d local changes with the remote server (or vice-versa)<\/li>\n<\/ul>\n\n\n\n<h2 class=\"wp-block-heading\">Deploy Your Site from Local Using a Migration Plugin<\/h2>\n\n\n\n<p>Deploying your site with a migration plugin is typically more user-friendly than a cPanel migration.<\/p>\n\n\n\n<p>From a birds-eye view, the process is similar in terms of moving your files and your database from your local machine to a remote server, but this method involves a bit more automation.<\/p>\n\n\n\n<p>There are multiple plugins available to handle this type of deployment and a few of the most popular options are <a href=\"https:\/\/wordpress.org\/plugins\/all-in-one-wp-migration\/\" target=\"_blank\" rel=\"noreferrer noopener\">All-in-One WP Migration<\/a>, <a href=\"https:\/\/wordpress.org\/plugins\/wp-migrate-db\/\" target=\"_blank\" rel=\"noreferrer noopener\">WP Migrate DB<\/a>, and <a href=\"https:\/\/wordpress.org\/plugins\/duplicator\/\" target=\"_blank\" rel=\"noreferrer noopener\">Duplicator<\/a>.<\/p>\n\n\n\n<p><a href=\"https:\/\/wordpress.org\/plugins\/all-in-one-wp-migration\/\" target=\"_blank\" rel=\"noreferrer noopener\">All-in-One WP Migration<\/a> is one of the most streamlined backup and migration plugins, designed for non-technical users. We\u2019ll use it for our example of deploying a site from Local to a web host.&nbsp;<\/p>\n\n\n\n<p>Here are the steps you\u2019d take for this type of migration.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">1. Install the plugin on your Local site and your production site<\/h3>\n\n\n\n<p>You\u2019ll use the All-in-One WP Migration plugin both to export your Local site and to import to your destination site.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">2. Add find\/replace rules (optional)<\/h3>\n\n\n\n<p>If you want to change your local URL to the remote server URL (or any other find\/replace operations in the database), you have the opportunity to do this prior to exporting your site.&nbsp;<\/p>\n\n\n\n<figure class=\"wp-block-image aligncenter size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"261\" src=\"https:\/\/wpengine.com\/wp-content\/uploads\/2022\/03\/local-wordpress-dev-rc-2-1024x261.png\" alt=\"\" class=\"wp-image-127439\" srcset=\"https:\/\/wpengine.com\/case-studies\/wp-content\/uploads\/2022\/03\/local-wordpress-dev-rc-2-1024x261.png 1024w, https:\/\/wpengine.com\/case-studies\/wp-content\/uploads\/2022\/03\/local-wordpress-dev-rc-2-540x138.png 540w, https:\/\/wpengine.com\/case-studies\/wp-content\/uploads\/2022\/03\/local-wordpress-dev-rc-2-768x196.png 768w, https:\/\/wpengine.com\/case-studies\/wp-content\/uploads\/2022\/03\/local-wordpress-dev-rc-2-1536x392.png 1536w, https:\/\/wpengine.com\/case-studies\/wp-content\/uploads\/2022\/03\/local-wordpress-dev-rc-2-1500x383.png 1500w, https:\/\/wpengine.com\/case-studies\/wp-content\/uploads\/2022\/03\/local-wordpress-dev-rc-2.png 1600w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><figcaption class=\"wp-element-caption\">Use find\/replace to update strings&nbsp;in the database, such as your local&nbsp;URL and your production URL.<\/figcaption><\/figure>\n\n\n\n<h3 class=\"wp-block-heading\">3. Set advanced options (optional)<\/h3>\n\n\n\n<p>All-in-One WP Migration also gives you the ability to pick and choose a handful of options that will (or will not be) included in your export. As an example, some of these options include:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Not exporting spam comments or post revisions<\/li>\n\n\n\n<li>Not exporting the media library, themes, or plugins<\/li>\n\n\n\n<li>Not exporting the database at all<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">4. Create an export file<\/h3>\n\n\n\n<p>From the admin of your live site, go to All-in-One WP Migration &gt; Export and <a href=\"https:\/\/help.servmask.com\/knowledgebase\/all-in-one-wp-migration-user-guide\/\" target=\"_blank\" rel=\"noreferrer noopener\">create a copy of your site<\/a> (files and database). With the free version, you can export your site to a file. You\u2019d need to purchase an extension if you wanted to export directly to a third-party service, such as Google Drive or Dropbox.<\/p>\n\n\n\n<figure class=\"wp-block-image aligncenter size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"399\" height=\"1024\" src=\"https:\/\/wpengine.com\/wp-content\/uploads\/2022\/03\/local-wordpress-dev-rc-3-399x1024.png\" alt=\"\" class=\"wp-image-127440\" srcset=\"https:\/\/wpengine.com\/case-studies\/wp-content\/uploads\/2022\/03\/local-wordpress-dev-rc-3-399x1024.png 399w, https:\/\/wpengine.com\/case-studies\/wp-content\/uploads\/2022\/03\/local-wordpress-dev-rc-3-210x540.png 210w, https:\/\/wpengine.com\/case-studies\/wp-content\/uploads\/2022\/03\/local-wordpress-dev-rc-3.png 590w\" sizes=\"auto, (max-width: 399px) 100vw, 399px\" \/><figcaption class=\"wp-element-caption\">All-in-One WP Migration lets you export your entire site easily. With the free version, you are limited to exporting to a file.<\/figcaption><\/figure>\n\n\n\n<h3 class=\"wp-block-heading\">5. Import the site copy on the live site<\/h3>\n\n\n\n<p>From the admin of your live site, go to All-in-One WP Migration &gt; Import and drag &amp; drop your exported file. Note that you\u2019re limited to files that are 300MB or less with the free version.<\/p>\n\n\n\n<figure class=\"wp-block-image aligncenter size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"318\" src=\"https:\/\/wpengine.com\/wp-content\/uploads\/2022\/03\/local-wordpress-dev-rc-4-1024x318.png\" alt=\"\" class=\"wp-image-127443\" srcset=\"https:\/\/wpengine.com\/case-studies\/wp-content\/uploads\/2022\/03\/local-wordpress-dev-rc-4-1024x318.png 1024w, https:\/\/wpengine.com\/case-studies\/wp-content\/uploads\/2022\/03\/local-wordpress-dev-rc-4-540x168.png 540w, https:\/\/wpengine.com\/case-studies\/wp-content\/uploads\/2022\/03\/local-wordpress-dev-rc-4-768x239.png 768w, https:\/\/wpengine.com\/case-studies\/wp-content\/uploads\/2022\/03\/local-wordpress-dev-rc-4-1536x477.png 1536w, https:\/\/wpengine.com\/case-studies\/wp-content\/uploads\/2022\/03\/local-wordpress-dev-rc-4-1500x466.png 1500w, https:\/\/wpengine.com\/case-studies\/wp-content\/uploads\/2022\/03\/local-wordpress-dev-rc-4.png 1600w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<h3 class=\"wp-block-heading\">Pros and cons of deploying via All-in-One WP Migration plugin<\/h3>\n\n\n\n<p>Before we move on from using migration plugins, let\u2019s highlight some pros and cons.<\/p>\n\n\n\n<p><strong>Pros:<\/strong><\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Works on all hosting providers<\/li>\n\n\n\n<li>Includes the ability to find\/replace your development URL with your live URL as part of the migration process<\/li>\n\n\n\n<li>Great for small sites<\/li>\n\n\n\n<li>Great for creating site backups<\/li>\n<\/ul>\n\n\n\n<p><strong>Cons:<\/strong><\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>For additional export options or sites larger than 300MB, you need to pay<\/li>\n\n\n\n<li>While simpler than using SFTP and a database manager, the process isn\u2019t fully automated<\/li>\n\n\n\n<li>You may still need to use a plugin on the destination site such as <a href=\"https:\/\/wordpress.org\/plugins\/better-search-replace\/\" target=\"_blank\" rel=\"noreferrer noopener\">Better Search and Replace<\/a> to replace URLs stored as serialized data<\/li>\n\n\n\n<li>You may need to use a plugin such as <a href=\"https:\/\/wordpress.org\/plugins\/regenerate-thumbnails\/\" target=\"_blank\" rel=\"noreferrer noopener\">Regenerate Thumbnails<\/a> if images do not appear in your media library<\/li>\n\n\n\n<li>For larger sites with larger databases, you may run into server timeouts when creating the copy of your site<\/li>\n<\/ul>\n\n\n\n<figure class=\"wp-block-pullquote\"><blockquote><p>If you\u2019re looking to migrate your site from another host directly to WP Engine (skipping Local altogether), there\u2019s a <a href=\"https:\/\/wpengine.com\/support\/wp-engine-automatic-migration-powered-by-blogvault\/\" target=\"_blank\" rel=\"noreferrer noopener\">hassle-free way to do that<\/a> using the <a href=\"https:\/\/wordpress.org\/plugins\/wp-site-migrate\/\" target=\"_blank\" rel=\"noreferrer noopener\">WP Engine Automated Migration plugin<\/a>.<\/p><\/blockquote><\/figure>\n\n\n\n<h2 class=\"wp-block-heading\">Deploying via Local Connect with WP Engine and Flywheel<\/h2>\n\n\n\n<p>Ok, we saved the best and easiest for last! And while we\u2019re definitely biased, deploying a site via Local Connect is truly a breeze.<\/p>\n\n\n\n<p>At the time of this writing, Local Connect only supports sites hosted on WP Engine or Flywheel, so if you want to deploy to another <a href=\"https:\/\/wpengine.com\/wordpress-hosting\/\" target=\"_blank\" rel=\"noreferrer noopener\">WordPress host<\/a>, you\u2019ll need to use one of the previous methods discussed.\u00a0<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">1. Log in to Host<\/h3>\n\n\n\n<p>From Local, click on the Connect icon to access the My Hosts option, where you can log in to WP Engine and\/or Flywheel.<\/p>\n\n\n\n<figure class=\"wp-block-image aligncenter size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"378\" src=\"https:\/\/wpengine.com\/wp-content\/uploads\/2022\/03\/local-wordpress-dev-rc-5-1024x378.png\" alt=\"\" class=\"wp-image-127444\" srcset=\"https:\/\/wpengine.com\/case-studies\/wp-content\/uploads\/2022\/03\/local-wordpress-dev-rc-5-1024x378.png 1024w, https:\/\/wpengine.com\/case-studies\/wp-content\/uploads\/2022\/03\/local-wordpress-dev-rc-5-540x199.png 540w, https:\/\/wpengine.com\/case-studies\/wp-content\/uploads\/2022\/03\/local-wordpress-dev-rc-5-768x283.png 768w, https:\/\/wpengine.com\/case-studies\/wp-content\/uploads\/2022\/03\/local-wordpress-dev-rc-5-1536x566.png 1536w, https:\/\/wpengine.com\/case-studies\/wp-content\/uploads\/2022\/03\/local-wordpress-dev-rc-5-1500x553.png 1500w, https:\/\/wpengine.com\/case-studies\/wp-content\/uploads\/2022\/03\/local-wordpress-dev-rc-5.png 1600w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<figure class=\"wp-block-image aligncenter size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"871\" src=\"https:\/\/wpengine.com\/wp-content\/uploads\/2022\/03\/local-wordpress-dev-rc-6-1024x871.png\" alt=\"\" class=\"wp-image-127445\" srcset=\"https:\/\/wpengine.com\/case-studies\/wp-content\/uploads\/2022\/03\/local-wordpress-dev-rc-6-1024x871.png 1024w, https:\/\/wpengine.com\/case-studies\/wp-content\/uploads\/2022\/03\/local-wordpress-dev-rc-6-540x459.png 540w, https:\/\/wpengine.com\/case-studies\/wp-content\/uploads\/2022\/03\/local-wordpress-dev-rc-6-768x653.png 768w, https:\/\/wpengine.com\/case-studies\/wp-content\/uploads\/2022\/03\/local-wordpress-dev-rc-6.png 1206w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><figcaption class=\"wp-element-caption\">Local is connected to both Flywheel and WP Engine.<\/figcaption><\/figure>\n\n\n\n<p>Once connected, you can view all sites connected to the hosting account. You can PULL an existing site (and a specific environment) to Local. That\u2019s not what we\u2019re covering in this article, but it\u2019s a great way to take an existing Flywheel or WP Engine site and environment and one-click import the site to Local.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">2. Connect Local site to host<\/h3>\n\n\n\n<p>Once you\u2019ve logged into a host, you can connect the Local site you want to migrate to the host you want to deploy to (Flywheel or WP Engine).<\/p>\n\n\n\n<figure class=\"wp-block-image aligncenter size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"683\" src=\"https:\/\/wpengine.com\/wp-content\/uploads\/2022\/03\/local-wordpress-dev-rc-7-1024x683.png\" alt=\"\" class=\"wp-image-127447\" srcset=\"https:\/\/wpengine.com\/case-studies\/wp-content\/uploads\/2022\/03\/local-wordpress-dev-rc-7-1024x683.png 1024w, https:\/\/wpengine.com\/case-studies\/wp-content\/uploads\/2022\/03\/local-wordpress-dev-rc-7-540x360.png 540w, https:\/\/wpengine.com\/case-studies\/wp-content\/uploads\/2022\/03\/local-wordpress-dev-rc-7-768x512.png 768w, https:\/\/wpengine.com\/case-studies\/wp-content\/uploads\/2022\/03\/local-wordpress-dev-rc-7.png 1201w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<h3 class=\"wp-block-heading\">3. One-Click Push to Deploy<\/h3>\n\n\n\n<p>Once a site is connected to the host, you can click the PUSH button to begin the push process. If it\u2019s your first time pushing this site, you\u2019ll need to select the existing site you want to push to <em>and <\/em>the site environment you want to overwrite.<\/p>\n\n\n\n<figure class=\"wp-block-image aligncenter size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"518\" height=\"56\" src=\"https:\/\/wpengine.com\/wp-content\/uploads\/2022\/03\/local-wordpress-dev-rc-8.png\" alt=\"\" class=\"wp-image-127448\" \/><\/figure>\n\n\n\n<p>After that, any future times you click the PUSH button, the site will automatically push to the remote server based on your previous selections.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">4. That\u2019s it!<\/h3>\n\n\n\n<p>Were you hoping for more steps? Too bad, you\u2019re done! Go view your Local site on WP Engine or Flywheel!<\/p>\n\n\n\n<p>Here\u2019s a video showing the above steps.<\/p>\n\n\n\n<p>[insert video]<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Pros and cons of deploying via Local Connect<\/h3>\n\n\n\n<p><strong>Pros:<\/strong><\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>One-click deploy kicks off a full automation to migrate sites from Local to WP Engine or Flywheel<\/li>\n\n\n\n<li>Use <a href=\"https:\/\/localwp.com\/help-docs\/connect\/magic-sync\/\" target=\"_blank\" rel=\"noreferrer noopener\">MagicSync<\/a> to tailor the files and folders you want to push, helping you prevent accidental overwrites<\/li>\n\n\n\n<li>In addition to MagicSync allowing you to control exactly what is deployed, using Connect does more for your deployment process:\n<ul class=\"wp-block-list\">\n<li>Cache busting: We\u2019ll clear your site\u2019s cache when you launch changes.<\/li>\n\n\n\n<li>Backups: We back up your site every two hours when you\u2019re pushing changes.<\/li>\n\n\n\n<li>Security: Unlike FTP (which exposes a direct connection to your site), MagicSync is routed through a separate micro-service before deploying.<\/li>\n<\/ul>\n<\/li>\n<\/ul>\n\n\n\n<p><strong>Cons:<\/strong><\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Sites hosted with providers other than WP Engine and Flywheel are unable to use Local Connect.&nbsp;<\/li>\n<\/ul>\n\n\n\n<h2 class=\"wp-block-heading\">Ready, Set, Deploy!<\/h2>\n\n\n\n<p>When it comes to moving a site from Local to a destination server, you\u2019ve got a lot of options, a handful of which we outlined above.&nbsp;<\/p>\n\n\n\n<p>In terms of automation, SFTP and a database manager is the least automated way to do a deployment, using a migration plugin affords you a little more automation, and deploying via Local Connect is the most automated, with a simple one-click push.<br><\/p>\n\n\n\n<p class=\"has-text-align-center has-large-font-size\"><strong><span class=\"has-inline-color has-royal-color\">Ready to give it a try? Download Local for free! <\/span><\/strong><\/p>\n\n\n\n<div class=\"wp-block-buttons is-horizontal is-content-justification-center is-layout-flex wp-container-core-buttons-is-layout-499968f5 wp-block-buttons-is-layout-flex\">\n<div class=\"wp-block-button has-custom-width wp-block-button__width-50 is-style-fill\"><a class=\"wp-block-button__link has-polar-color has-lapis-background-color has-text-color has-background no-border-radius wp-element-button\" href=\"https:\/\/wpengine.com\/local\/\" target=\"_blank\" rel=\"noreferrer noopener\"><strong>Download<\/strong> <strong>Now<\/strong><\/a><\/div>\n<\/div>\n","protected":false},"excerpt":{"rendered":"<p>Developing websites on your local machine is the de-facto method for professional WordPress development. There are a ton of ways to set up a local WordPress development environment, and if you\u2019ve used Local, you know how ridiculously simple it is to spin up a WordPress install. What might not seem so simple, however, is how<span class=\"tile__ellipses\">&hellip;<\/span><span class=\"tile__ellipses--animated\"><\/span><\/p>\n","protected":false},"author":295,"featured_media":127449,"template":"","resource-topic":[912,901],"resource-role":[896],"resource-type":[916],"class_list":["post-127202","resource","type-resource","status-publish","has-post-thumbnail","hentry"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v20.9 - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>Local WordPress Development: A Guide to Site Migrations and Deployment<\/title>\n<meta name=\"description\" content=\"This comprehensive guide will help you migrate sites and deploy them live using the Local development platform with WP Engine or Flywheel.\" \/>\n<meta name=\"robots\" content=\"noindex, follow\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Local WordPress Development: A Guide to Site Migrations and Deployment\" \/>\n<meta property=\"og:description\" content=\"This comprehensive guide will help you migrate sites and deploy them live using the Local development platform with WP Engine or Flywheel.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/wpengine.com\/case-studies\/resources\/local-wordpress-development-migrations-and-deployment\/\" \/>\n<meta property=\"og:site_name\" content=\"WP Engine\" \/>\n<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/wpengine\" \/>\n<meta property=\"article:modified_time\" content=\"2023-11-16T21:33:26+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/wpengine.com\/case-studies\/wp-content\/uploads\/2022\/03\/Local-Laptop-Hero4.png\" \/>\n\t<meta property=\"og:image:width\" content=\"2560\" \/>\n\t<meta property=\"og:image:height\" content=\"1419\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/png\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:site\" content=\"@wpengine\" \/>\n<meta name=\"twitter:label1\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data1\" content=\"10 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"WebPage\",\"@id\":\"https:\/\/wpengine.com\/case-studies\/resources\/local-wordpress-development-migrations-and-deployment\/\",\"url\":\"https:\/\/wpengine.com\/case-studies\/resources\/local-wordpress-development-migrations-and-deployment\/\",\"name\":\"Local WordPress Development: A Guide to Site Migrations and Deployment\",\"isPartOf\":{\"@id\":\"https:\/\/wpengine.com\/case-studies\/#website\"},\"datePublished\":\"2022-03-08T16:52:51+00:00\",\"dateModified\":\"2023-11-16T21:33:26+00:00\",\"description\":\"This comprehensive guide will help you migrate sites and deploy them live using the Local development platform with WP Engine or Flywheel.\",\"breadcrumb\":{\"@id\":\"https:\/\/wpengine.com\/case-studies\/resources\/local-wordpress-development-migrations-and-deployment\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/wpengine.com\/case-studies\/resources\/local-wordpress-development-migrations-and-deployment\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/wpengine.com\/case-studies\/resources\/local-wordpress-development-migrations-and-deployment\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/wpengine.com\/case-studies\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Resources\",\"item\":\"https:\/\/wpengine.com\/case-studies\/resources\/\"},{\"@type\":\"ListItem\",\"position\":3,\"name\":\"Local for WordPress: A Guide to Site Migrations and Deployment\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/wpengine.com\/case-studies\/#website\",\"url\":\"https:\/\/wpengine.com\/case-studies\/\",\"name\":\"WP Engine\",\"description\":\"Managed Hosting for WordPress\",\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/wpengine.com\/case-studies\/?s={search_term_string}\"},\"query-input\":\"required name=search_term_string\"}],\"inLanguage\":\"en-US\"},{\"@type\":\"Person\",\"@id\":\"https:\/\/wpengine.com\/case-studies\/#\/schema\/person\/489d7629d2fa700692c17a7b7cef9525\",\"name\":\"Carrie Dils\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/wpengine.com\/case-studies\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/f76eebea55190fc320ee176c3b061cd738d35b1f088e5eb81955015b55df1748?s=96&d=mm&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/f76eebea55190fc320ee176c3b061cd738d35b1f088e5eb81955015b55df1748?s=96&d=mm&r=g\",\"caption\":\"Carrie Dils\"}}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Local WordPress Development: A Guide to Site Migrations and Deployment","description":"This comprehensive guide will help you migrate sites and deploy them live using the Local development platform with WP Engine or Flywheel.","robots":{"index":"noindex","follow":"follow"},"og_locale":"en_US","og_type":"article","og_title":"Local WordPress Development: A Guide to Site Migrations and Deployment","og_description":"This comprehensive guide will help you migrate sites and deploy them live using the Local development platform with WP Engine or Flywheel.","og_url":"https:\/\/wpengine.com\/case-studies\/resources\/local-wordpress-development-migrations-and-deployment\/","og_site_name":"WP Engine","article_publisher":"https:\/\/www.facebook.com\/wpengine","article_modified_time":"2023-11-16T21:33:26+00:00","og_image":[{"width":2560,"height":1419,"url":"https:\/\/wpengine.com\/case-studies\/wp-content\/uploads\/2022\/03\/Local-Laptop-Hero4.png","type":"image\/png"}],"twitter_card":"summary_large_image","twitter_site":"@wpengine","twitter_misc":{"Est. reading time":"10 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"WebPage","@id":"https:\/\/wpengine.com\/case-studies\/resources\/local-wordpress-development-migrations-and-deployment\/","url":"https:\/\/wpengine.com\/case-studies\/resources\/local-wordpress-development-migrations-and-deployment\/","name":"Local WordPress Development: A Guide to Site Migrations and Deployment","isPartOf":{"@id":"https:\/\/wpengine.com\/case-studies\/#website"},"datePublished":"2022-03-08T16:52:51+00:00","dateModified":"2023-11-16T21:33:26+00:00","description":"This comprehensive guide will help you migrate sites and deploy them live using the Local development platform with WP Engine or Flywheel.","breadcrumb":{"@id":"https:\/\/wpengine.com\/case-studies\/resources\/local-wordpress-development-migrations-and-deployment\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/wpengine.com\/case-studies\/resources\/local-wordpress-development-migrations-and-deployment\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/wpengine.com\/case-studies\/resources\/local-wordpress-development-migrations-and-deployment\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/wpengine.com\/case-studies\/"},{"@type":"ListItem","position":2,"name":"Resources","item":"https:\/\/wpengine.com\/case-studies\/resources\/"},{"@type":"ListItem","position":3,"name":"Local for WordPress: A Guide to Site Migrations and Deployment"}]},{"@type":"WebSite","@id":"https:\/\/wpengine.com\/case-studies\/#website","url":"https:\/\/wpengine.com\/case-studies\/","name":"WP Engine","description":"Managed Hosting for WordPress","potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/wpengine.com\/case-studies\/?s={search_term_string}"},"query-input":"required name=search_term_string"}],"inLanguage":"en-US"},{"@type":"Person","@id":"https:\/\/wpengine.com\/case-studies\/#\/schema\/person\/489d7629d2fa700692c17a7b7cef9525","name":"Carrie Dils","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/wpengine.com\/case-studies\/#\/schema\/person\/image\/","url":"https:\/\/secure.gravatar.com\/avatar\/f76eebea55190fc320ee176c3b061cd738d35b1f088e5eb81955015b55df1748?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/f76eebea55190fc320ee176c3b061cd738d35b1f088e5eb81955015b55df1748?s=96&d=mm&r=g","caption":"Carrie Dils"}}]}},"acf":[],"grid_image_url":"https:\/\/wpengine.com\/case-studies\/wp-content\/uploads\/2022\/03\/locallyyyy-grid.png","media-type":{"term_id":916,"name":"Article","slug":"article"},"role":"<strong>Roles:<\/strong> Developer","topic":"<strong>Topics:<\/strong> Performance, WordPress","_links":{"self":[{"href":"https:\/\/wpengine.com\/case-studies\/wp-json\/wp\/v2\/resource\/127202","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/wpengine.com\/case-studies\/wp-json\/wp\/v2\/resource"}],"about":[{"href":"https:\/\/wpengine.com\/case-studies\/wp-json\/wp\/v2\/types\/resource"}],"author":[{"embeddable":true,"href":"https:\/\/wpengine.com\/case-studies\/wp-json\/wp\/v2\/users\/295"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/wpengine.com\/case-studies\/wp-json\/wp\/v2\/media\/127449"}],"wp:attachment":[{"href":"https:\/\/wpengine.com\/case-studies\/wp-json\/wp\/v2\/media?parent=127202"}],"wp:term":[{"taxonomy":"resource-topic","embeddable":true,"href":"https:\/\/wpengine.com\/case-studies\/wp-json\/wp\/v2\/resource-topic?post=127202"},{"taxonomy":"resource-role","embeddable":true,"href":"https:\/\/wpengine.com\/case-studies\/wp-json\/wp\/v2\/resource-role?post=127202"},{"taxonomy":"resource-type","embeddable":true,"href":"https:\/\/wpengine.com\/case-studies\/wp-json\/wp\/v2\/resource-type?post=127202"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}