Head back up.
Theme Blvd WordPress Themes

3 years ago

Moving WordPress to a new server

By Jason Web Design, WordPress 101 Comments
move-wp

For awhile now, WordPress has been my favorite option for providing clients with a Content Management System. And since the release WordPress 3, it’s become the easiest sale on the planet. After showing them a demonstration, 75% of the time, the client loves it, and it persuades them to pay double the price they would have paid for a generic ol’ static website. It’s amazing how much WordPress 3’s menu builder has had such an impact on the entire software and the overall presentation of it.

So, needless to say, I’ve been churning out a lot of WordPress sites recently at the agency. In this post, I’m going to talk about that last step you take in delivering your shiny, new WordPress site to your client filled with all of their content.

Generally, you’re not going to build the website on your client’s live domain. I usually develop the initial WordPress theme and put in whatever parts of the content I have at the start of the project locally on my computer using MAMP. Then I’ll transfer that site to a dev server where the client and everyone else my agency can view it. After a billion rounds of edits and changes, it’s finally ready to go live, and so then it’s transferred to the client’s live domain.

In creating all of these sites, it’s absolutely crucial to be transferring WordPress correctly. Your concern should be developing your client’s website and not struggling with elementary things like installing and moving around WordPress. If you’re new to the process of moving WordPress, don’t worry. I’m going to explain in it detail. I also would suggest that you practice moving WordPress a few times to different servers. After a few times, you’ll get the hang of it, and see how easy it is. If the first time you’ve ever moved WordPress is the time when you’re putting you client’s site live, you are putting yourself at some serious risk for embarrassment.

Keep in mind that if you’re simply moving your personal WordPress site a new server, all of the following steps are the same.

The Quick Version

To start with, here is a quick version of the process of moving your WordPress site from one to server to another. Even after you’re familiar with the process, it’s not a bad idea to have a checklist of all the steps you need to take sitting by your desk.

If all of those steps weren’t clear, don’t worry; I’m going to explain each one. In the following steps, I’m going to show some screenshots from when I transferred the demo site for my Complexity WordPress theme from my local computer to my live demo website.

The Long Version

Step 1: Export a copy of your dev site’s MySQL database as an SQL file.

The first thing I do is make a copy of the dev site’s database. Login to phpMyAdmin on your development server and export a copy of database.

When you do this, make sure you are actually within the database. You should see all of the tables of your WordPress installation as the screenshot below shows. Then, click “Export.”

Next, configure your export file as I have in the screenshot below. Make sure you have all tables of your database highlighted on the left side. Also, make sure you have the “save as file” checked at the bottom. Click “Go” and a copy of your database should be saved to your computer as an SQL file.

Step 2: Open this SQL file in a text editor and do a mass find and replace of your dev site URL with the new server’s URL.

Update: August 14, 2012

For the most accurate results when transferring your WordPress database, do not follow how it's outlined in this step. The problem here is that much of your data in your WordPress database is serialized, and when you simply open up the SQL file and start changing the text, you will most likely get varied results. -- For example, most of your data may transfer, but maybe your theme options won't transfer, all of your widget data might not transfer, etc.

So instead, to perform this find/replace step of your site's URL, I strongly suggest you temporarily upload the following PHP file to your live site and follow its steps:

http://interconnectit.com/124/search-and-replace-for-wordpress-databases/

Open up the SQL copy of your dev site’s database you exported in the last step in a decent text editor like Dreamweaver, Coda, Textmate, Netbeans, etc. Avoid using a default text editor that comes with your computer (like Notepad with Windows, for example). With large files, sometimes screwy things can happen.

Do a mass find and replace of your dev site’s URL with your new server’s URL.

This is a very important step. If you do this properly, all of your hyperlinks throughout your entire WordPress site will linked up properly on the new server (i.e. manual links you put to other pages in your content, links to images you’ve uploaded, custom links you’ve used in the menu builder, etc.)

I personally use Coda for Mac OSX for all my coding, and below is an example of how to do a mass find and replace with your database SQL file in Coda.

I know Dreamweaver is much more popular, and so here is a screenshot of doing the exact same thing in Dreamweaver.

Step 3: Make a copy of your dev site’s files so they’re ready to upload to the new server.

I personally feel it’s a good idea to actually make a copy of the files of your dev site because if you screw something up, it’s nice to know you have a fully functional dev site still sitting somewhere. So, make a copy of all files, meaning your entire installation of WordPress.

If you have your website locally because you’re using MAMP or WAMP, make a copy of the files. If you have your dev site on a live web server, download all the files to your local computer.

Important Note: Confirm everything in your wp-content directory gets copied. This directory contains everything crucial in the actual configuration of your WordPress site – Themes, Plugins, and Uploads.

Step 4: Create a MySQL database on your new server.

If you’ve created your dev site, I’m going to assume you know how to create a MySQL database. So find where your new server’s database management is (usually in cPanel or whatever similar software your web hosts uses) and create a new, empty database and assign a new username and password to it.

Step 5: Configure your dev site copy’s wp-config.php file with the new server’s database information.

Within the copy you made of your dev site’s files, open up the wp-config.php file and put in all the information from the database you created in the previous step on your new server – database name, database username, database password, and database host.

This is the typical process of installing a WordPress theme, which I’m sure you’re already familiar with. However, it’s a good idea to have your wp-config.php file all ready to go before you upload your files so you can minimize the amount of downtime on the new, live server before the site is actually running.

Step 6: Upload the dev site files to the new server.

Now that you have a copy of all your files, you’ve made sure everything in your wp-content directory is there, and you’ve configured your wp-config.php file, you’re ready to upload!

So, use an FTP client and upload all of your files.

Simply uploading all of your files via FTP is the most common way of doing this process, and it’s perfectly fine to do it that way. However, I do have a tip if you want to be a little more efficient.

Archive all of your files into a ZIP package and then upload that ZIP file to your new server. Most hosting accounts have an interface like cPanel with some kind of File Manager interface, which you can log into and then extract the ZIP package. And if you’re a little more saavy, you can shell in with an SSH client, and unzip that package really quickly.

There are a few of reasons why it’s a good idea to ZIP the files first before you upload the files. When transferring a WordPress site that has been fully developed, chances are you have a lot of files (i.e. your plugins, uploads, themes, etc). These files will take a while to upload and it’s much faster to upload an archived ZIP package.

Other than just the files taking forever to upload, another issue arises sometimes when uploading a lot of files at once through an FTP program. Often, your upload will time out or there will be a temporary connection loss to your server, or something breaks the upload for whatever reason in the middle of the uploading process. When you’re dealing with your client’s new, live site, you don’t want to be wondering if you’ve missed any files. By uploading a ZIP package you can be a lot more certain that you’ve gotten everything successfully to the new server on the upload.

Also, if you are uploading the files one at a time to your new server and someone happens to visit the live URL, they’re going to be presented with funky error messages because WordPress is only half there. This is actually more for the benefit of your client. Clients are always excited about their new website and will keep checking the live domain like an eager schoolboy on Christmas morning, waiting for it to be up. When they see some PHP error, they are going to freak out and call you. You’re going to have to then explain to them that you’re still in the process of uploading files and working on the site.

Step 7: Make your uploads directory writeable (permissions 777).

If you want your client to be able to upload images and files via the WordPress admin panel, make sure you remember to make the uploads directory writeable (permissions 777) on the new server.

You can go in do this with any FTP client.

Step 8: Confirm your database is linked up correctly by going to the new site and seeing the Install WordPress screen.

Now that all of your files are uploaded and in place, it’s a good idea to make sure the files are there and that your wp-config.php is connected properly to your new database. So, if you visit the URL of the new site, you should be forwarded to WordPress Installation screen because your new server’s MySQL database is still empty.

If you’ve inserted something incorrectly in your wp-config.php file or the new server’s MySQL database was not setup properly, you’ll know because you’ll see WordPress’s database connection error.

Step 9: Import your dev site’s SQL into your new server’s database.

Now you’re going to need that SQL file you created back in steps one and two.

Login to the new server’s phpMyAdmin and navigate to the database you’re using. If you’re unsure how to do this on the new server, make sure to contact the web host’s customer support and ask.

Click the Import tab. Then, select the SQL file from your computer and click “Go” to import the data.

You should see a message that lets you know your query was successful, and you should see that your database is now populated with all of WordPress’s content.

Now if you go back to the new, live site, you shouldn’t be forwarded to the WordPress installation page. You should see your website!

Step 10: Login into the WP admin of the new site and go to Settings > Permalinks and click “Save Changes” so an .htaccess file with permalink structure is created on the new server.

At this point you should be just about finished. If you had permalinks setup on your dev site, and you start clicking around the new, live site, you might initially notice that none of your pages are showing up when navigating away from the homepage. What the hell? Don’t fear! There’s a simple answer.

Basically, your WordPress database is configured with the correct permalink structure, however the needed .htaccess file that gets created back when you setup your permalink structure on your dev site isn’t there anymore on the new server. So WordPress is trying to navigate to the correct links, however, your server isn’t setup to handle them yet.

The fix is easy. Login in to your WordPress admin panel and navigate to Settings > Permalinks and simply click “Save Changes” so WordPress can create a new .htaccess file on your new server.

With some web hosts, WordPress will give you an error message when you try and save your permalink settings, telling you that it couldn’t create an .htaccess file. This just means that you need to go into your web host’s file manager and create a new file, name it “.htaccess” and then make it writeable (permissions 777).

101 comments

  • Kittie Lover says:

    This is the coolest blog ever. Please keep posting stuff. And maybe i’ll buy you a coffee… or can of tuna.

  • Rabah Rahil says:

    Great right up dude! This was exactly what I was looking for! Doing some local development with a live site so I am taking a copy from the net and installing it onto my local/mamp server! Super helpful thanks

  • Jake says:

    good share, great article, very usefull for us…thanks!

  • Jon says:

    Awesome post, I’ve transferred wordpress blogs from a dev environment to a production environment a few times and thought I had it nailed, but you saved me a few steps! Mainly in dealing with the .htaccess stuff.

  • Rodolfo says:

    Thank you very much, you save my life. After 4 hours trying using WordPress Database Backup and having so many problems, i tested your way and voila!!!

  • Name says:

    @ I have just added this post to buzz.com :)

  • bet365 says:

    how are you!This was a really exceptional blog!
    I come from itlay, I was fortunate to discover your topic in wordpress
    Also I obtain much in your blog really thanks very much i will come daily

  • Name says:

    This is a helpful suggestion.. :)

  • nathan says:

    Thanks for a very well written guide.

    I have a problem with a wp site a friend wants me to work on. She has exported her DB and sent me all her wp files (she started work on her own localhost) .
    I have created a new db on my localhost (mamp) and have changed the settings in wp.config. but I get a Database error connection.

    What am I doing wrong?

    Many thanks

    • Jason says:

      @nathan That actually probably has nothing to do with transferring the database. It just means you didn’t connect to your DB properly in wp-config.php. When you’re using MAMP, you need to make sure put in root for the username and password for the DB (unless you set it up otherwise).

  • Legalsounds says:

    Pretty impressive article. I just came across your site and wanted to say that I have really enjoyed reading your blog posts. Any way I’ll be coming back and I hope you post again soon.

  • Name says:

    I enjoyed reading this blog post! Keep up the great work.

    thanxx

  • Name says:

    My dad has been writing a book precisely on point with this blog, I have emailed him the web address so perhaps he could pick up a couple pointers. Fantastic Job.

    thanxx

  • bet365 says:

    how are you I was fortunate to discover your topic in yahoo
    your topic is impressive
    I get much in your subject really thanks very much
    btw the theme of you website is really wonderful
    where can find it

  • Nice post, thanks for sharing

  • Mark says:

    keep up the good work

  • Hi there

    Just wanted to show my appreciation for your time and hard work

  • Ah!!! at last I identified what I was looking for. Somtimes it takes so much effort to discover even tiny helpful piece of information.

  • bet365 says:

    Good day I was luck to seek your topic in wordpress
    your Topics is fine
    I get much in your topic really thanks very much
    btw the theme of you site is really splendid
    where can find it

  • Korf says:

    Hi,

    I followed every step of your great description in order to get a local version of my live website. I use OsX and Mamp.
    At the end, when I type http://localhost:8888 , my (local) website appears, thus so far so good.

    However, whenever I try to login into the WP admin, I don’t succeed. The only thing I get is an empty page.

    Any ideas?

  • Brian says:

    Thank you, thank you, thank you! I had done everything correctly, but that last step–creation of a new .htaccess file–was causing all the links to be broken. I read your post and five minutes later had everything working great. Thanks for the help!

  • John Cabut says:

    Jason,
    Everything worked as planned except for the last step. None of my images came up, just the place holders. Tried creating an .htaccess file and changed permissions and updated my permalinks but still no go- any ideas? I can upload and replace but I have a ton of images.

  • frank drebin says:

    thanks for the help, turns out ive purchased your alyeska theme in the past… plenty of help for that too.. well done

  • Cory Lamle says:

    Hey Jason,

    Nice post! By the way I’m a huge fan of your Alyeska theme, using it on my site and I love it!!

    So I used to perform these same steps all the time myself, in fact I have a checklist similar to this one. However I started moving so many sites that I created a plugin to help me automate the moves.

    You can check it out here:
    lifeinthegrid.com/duplicator

    It’s still in Beta but I have been able to move sites from Windows to Linux and Linux to Windows and Mac with quite a bit of success!

    Hope all is well and keep cranking out your awesome themes!!!

    • Jason says:

      That’s pretty cool. I’ll be looking into this topic a bit more in the near future, as I’m trying to create a solid system where I can export my theme demo, and give my theme buyers some sort of way to do a quick simple install of my demo site when they purchase a theme.

  • Amy says:

    This was the clearest explanation of moving WP I’ve found. I’ve been migrating several sites from Movable Type and into WordPress offline on MAMP, and after all that headache, by the time I get to this point I want it to be easy–and it really is! Thanks!

  • Tim Signore says:

    This is great – the most comprehensive walkthrough of the process I have found (and I’ve spent a couple of days searching). One crucial step that many others miss is the updating the permalinks in the wp-admin panel.
    Nice one, Jason

  • John W says:

    Here’s a tip to avoid frustration: Be totally sure your WP database prefix is exactly right. If it is off by as much as one character, WordPress will continually think you want to start fresh.

  • Thanks for this. Second time you’ve saved my butt!

  • [...] Moving WordPress to a new server [...]

  • sam keyes says:

    Hey Jason,
    Love your post man…everything ran smoothly until I tried to load the site. instead of going to the normal http://localhost:8888/wordpress directory that I created it goes to a http://localhost/wordpress and can not find the connection? would this be a database issue or am I not configuring the wp-config.php file correctly? Thanks for the help!

    Sam Keyes

    • Jason says:

      Is it possible somewhere along the line you messed up your site url setting?

      This is controlled in your WordPress admin panel here: Settings > General.

      However, obviously if you’ve messed this setting up, you probably can’t even access that page to fix the setting. Luckily WordPress has built-in a trick to troubleshoot this. As explained here, you can actually define a constant in your wp-config.php that will override your database’s setting in order for you to access your WordPress site and troubleshoot.

      So, paste this in somewhere in your wp-config.php and then try to get to your admin panel and change that setting so it is correct. After you’ve done that remove the code from your wp-config.php

      define(‘WP_HOME’,'http://localhost:8888/wordpress’);
      define(‘WP_SITEURL’,'http://localhost:8888/wordpress’);

  • Hi, I am just curious but how long should a project like this take in hours?

    I did a job for a firm locally and all I needed to do was transfer a wp site from one server to a different server. Their site is not fancy just a set of static webpages.

    Initially I thought I would just do a fresh install on the new server and import the sql file taken from the export function of the old wp and tweak a couple of the configuration files.

    I soon ran into permission issues and opt out to do a back door approach.

    I had to do a download and reupload of their wp files from the old server after setting up a new database in the new server and making several backups.

    Yeah before I take too long, and I am sure you’re getting my picture. How long should this type of project take?

    Thanks for your help, and the tech know-how you’ve presented in this article.

  • Court says:

    OMG!!!

    Jason, thank you so much for the tutorial…I’ve followed your instructions to the T, but something is wrong. To add insult to injury, yours is the fourth method I’ve tried AND I also tried BackupBuddy to move from WAMP to live…

    I started a theme from scratch…but it works perfectly locally. In your method I got to Step 8 (confirm link to db by going to your site online) and got nothing. The page is just blank–absolutely nothing.

    Any ideas?

    With Backup Buddy & other methods, I go to check the site out and the jQuery scripts are going haywire…or that AND I’m seeing my 404 page. In either of these two scenarios I can’t get to my dashboard and all links go blank.

    I’ve been at this for two full days…can you help me?

    Sincerely grateful!!!

    • Jason says:

      The only real explanation for that I can think of is that either you’re not uploading all the files (or maybe there’s something wonky with your WordPress files). Or the other thing that might result in that would be if the database you’ve put in your wp-config.php for this new site isn’t empty.

      Have you tried just installing WordPress by itself from scratch on this new server? Are you able to get through that process? Meaning you download the files from wordpress.org, upload them with your FTP program, and then put in the database info in wp-config.php?

      If you’re able to do this with that database you’re using then most likely there’s something wonky with the WordPress files over on your WAMP site.

      If you can just get WordPress installed on this new site, from there, all you really need to do is upload all the files in your WAMP site from the wp-content directory and then wipe your server’s database again and replace with sql copy of your WAMP db.

  • Court says:

    Jason – thank you so much for you reply…I’ll let you know how that goes.

  • Court says:

    I think it’s my database–how might I begin to fix that problem? Could you point me in the right direction?

    • Jason says:

      If you’re having an issue with your database and you can’t even install WordPress I don’t know what else you can do other than contact your web host.

  • Neal says:

    Hi Jason, great blog post and all was going well until i got to uploading the SQL file to the phpMyAdmin.

    Im looking at moving my wordpress site from MAMP to my 1and1 account. And i am constantly being presented with the below error message:

    MySQL said:
    #2006 – MySQL server has gone away

    Can you advise on what i may of done wrong in the process.

    Many Thanks
    Neal

    • Jason says:

      Hi Neal,

      I’ve honestly never heard that one before, but I googled the error message and it looks like there’s lots of hits; so I guess you’re not the only one. But I’d just contact your web hosting company’s customer support and ask them. That seems like a strange one.

  • Chris says:

    For those of us who aren’t very technical, I found a completely free wordpress plugin that automates this entire process: http://www.movewordpress.com/

    • Jason says:

      Thanks for sharing, Chris.

      It’s nice that there are plugins out there that do things like this. But really if you’re going to be managing a website I think it’s really important to understand the basic process of moving WordPress that’s outlined in this article. I talk to a lot of buyers in customer support over on ThemeForest and so many are just in way over their heads trying to manage these sites and then when one thing goes wrong, they just are completely clueless on troubleshooting anything, and this can get you into a lot of trouble.

      I understand that at first glance this article can be pretty daunting, but it’s not as challenging as it looks. And once you put in the few hours one time here to understand what’s being talked about, you’ll be so much better off, and this process will be quick 10 minute thing each time you do it in the future.

  • Neal says:

    Hi Jason thanks very much for your reply, i shall get in touch with them and if i get the answer i will be back.

    Neal

  • EMacD says:

    Hi Jason,

    I’m moving a wordpress . com site to a server for a very poor non profit org. Our host is practically giving us the server space, and I really can’t question him much because he “does not have time to teach me.” He will charge us if he has to move the site, and they don’t have money to pay anyone.

    Needless to say I’m a total newbee at this. I’ve been managing a few wordpress sites from the admin panel only. This is the first time I will actually have to move one. I usually can figure things out, but I’m a freaking out right now. Thank you for this tutorial. I’ve never used mysql. I’m mostly clueless when it comes to Php. Acutally, the only thing I’m familiar with is old html. I wrote my first website in notepad years ago. So does this make me qualified… not!

    I’m doing all this work as a volunteer. But, hopefully I will learn from this. I just don’t want to break the site. God help me! I’m so scared to do this move.

    Thank you for this post. Wish me luck, and wisdom to understand.

  • EMacD says:

    Can I do this using a windows based computer? You mention “MAMP” which requires a Mac operating system. I don’t own a mac. Do I need to use “MAMP” to move our site? I’m confused.

  • Kay says:

    I moved a site yesterday, and when I logged into Users, there was my username Admin from my server along with my email address, and also the client’s username. So I deleted Admin and all the pages disappeared, including the Home page.

    I had to recreate all the pages.

    How can I prevent this in future? Where did I go wrong?

    Thanks,
    Kay

  • cycil says:

    Thank you very much sir….. My website is working now… Shuu u save me God Bless you… Keep up the great work

  • Wow great easy to understand guide. Thanks for sharing

    Thanks
    Simon

  • AmyZig says:

    Excellent tutorial! Followed these instructions exactly and everything worked! Thank you!

    I did run into a few problems since I was actually replacing a wordpress database and not creating from scratch. I thought I could keep some of the same info and for some reason, kept getting a 404 error. I deleted everything, created a brand new database and user and it worked.

    Do you have ideas for those of us who aren’t able to start from scratch and instead have to “replace” what we have? I feel like I was missing something obvious.

  • Mona says:

    I can’t find the database…in your first step it says “make sure you are actually within the database. You should see all of the tables of your WordPress installation…” and sure enough – mine shows no tables and says “No tables found in database.”

    But next to the name of the database, in parenthesis, it says (14). Another wordpress database I have has (11) after the name. I have no clue what the problem is.

    • Jason says:

      haha… well if there are none of WordPress’s table in your database, you’re not in your database where WordPress is installed. You may want to ask whoever installed WordPress for you, or ask your web hosting company.

  • Court says:

    Great Post! Jason thanks for your help!!!

    I did finally get everything worked out…I need to put this out there for others probably in the WP forums but my problem turned out to be case-sensitivity and the different nuances btwn Unix and Windows servers. I hadn’t needed to pay attention to that in my links on my WAMP servers…

    Good grief!

  • Mike Cohen says:

    I would add that I just went thru this and had a situation where on uploading the database the table prefix had a mix of upper and lowercase letters. The upper case letters got changed to lowercase on import, and then wordpress thought there were no tables and kept showing the install screen. Once the table prefix was adjusted in the config file to be all lowercase, things worked as normal.

  • John Kerrison says:

    Jason,

    I hope you still read this post, because I’d love some help! I’m very new to this. I followed your instructions to the tee and could not work out why my site wasn’t showing. I hadn’t actually turned on cpanel for the site.
    The first time I followed the instructions, It all looked like it was working– I even managed to get the database to load up to the live server.
    But I deleted the database and started again before realising my problem was directing name servers.
    So the second time I followed your instructions it worked right up to the point where I’m meant to load my sql file up to the new server and I’m getting these warnings
    “import.php: Missing parameter: import_typeDocumentation
    import.php: Missing parameter: formatDocumentation”

    Have you got any ideas why?
    Thank you so, so much for your amazing instructions.

  • patrick says:

    good and complete tutorial. Can you perhaps also give us some tips on the best way to set up multi site development on a local environment?

  • ed rosenthal says:

    Nice tut. Don’t forget to put the .htaccess file back to 644 when done. You don’t want public access to that important file…

  • robert says:

    hi there. i’, trying to do an ftp file transfer (i’m a complete beginner) and i’m using cyber duck but i don’t know how to do step 7 i have started and stopped the transfer many many times an i don’t know what i am doing wrong. i have been tyring to post my website for over 14 hours now and am very frustrated. could you please let me know how to do step 7.

    thank you in advance,

    robert

    • Jason says:

      Why are you stopping and starting the transfer? In step 6 you upload the files. So after that, no more transferring. Files are there. Then in step 7 you change the file permissions. So, that’s the part you can’t figure out? Here’s a more in-depth explanation of how to change file permissions with Cyberduck. http://webmaster.iu.edu/chmod/chmod_mac.shtml

  • robert says:

    thank you for the clarification and i will try the process one more time. i had my host wipe the server so i could have a clean start an remove my old web site.

    thank you so much for the info. it has been the most reliable resource for this

  • jim says:

    Hi Jason,
    this looks like a great way to do what I need. I’m just wondering about exactly which text editor I can rely on to do the find and replace in step 2.
    I have a macbookpro which comes with textedit. I know you said don’t use the free editors that come shipped with computers but google seems to think textedit is OK?
    I’m a cheapskate so really want to avoid spending any money on a program I will only use once! Any advice?

  • jim says:

    uhoh, I feel I may look a total idiot asking this…

    In step 2 how do I know what is exactly the URL of my new server?

  • jim says:

    haha, brilliant.

    I should have known it would be that easy!

    thank you marr :)

  • Serge says:

    Hey, great tips, but didn’t work with Mailchimp plugin installed… any idea why?

  • debbie says:

    Jason -

    First I would like to say thank you for the tutorial.

    Here is where I get confused. Say I’m customizing a theme on a local host (XAMPP) for a potential client. Now I want to show them the progress and like you mentioned on dev server where the client can view the revisions.

    What and how do i create a dev server?
    Thanks you for your time.

    • Jason says:

      This isn’t really question I can answer well. It all depends on your setup and I’m no server expert. If you’re developing on a local network only, then it really means just that. No one that’s not on your network can view the site. So if your client was in a different building or location on a different network (i.e. different Internet connection I guess you could say), there’s no way they’re going to be able to see the site you’re working on.

      When I develop a WordPress theme, I’m doing it on MAMP on my macbook laptop, which is setting up a local server in my house, for example. That works great for me because I don’t need anyone outside of my network to view the site. However, if I need to view it from any computer in my house, I can.

      If you’re doing work for a client, and they need to be viewing as you go, this isn’t really going to cut it. When I used to work at a design agency before I was just selling WordPress themes, we had our own development server in the building that IT people managed. We had it setup where we were supposed to publish any thing we worked on each day and when we a client needed to see the site, the account managers would have to email them a special URL/username/password, that they could view. Then when the site is ready, we transfer to whatever hosting account they own or what we buy for them.

      If you’re just running your own thing, and your client needs to be viewing it along the process, maybe you have your own hosting account that can act your dev server? Or something more simple I see a lot of my theme buyers doing is they setup WordPress in a sub directory of the client’s domain like their-site.com/dev/ or whatever. Then they move it the main directory when it’s ready. I’ve also seen where some people use WordPress plugins you can find on wordpress.org that will restrict access to the WordPress site temporarily while you work on it. Then you can just give your client a password to get passed that.

  • debbie says:

    You’re right. It does come down to preference. Thanks for such a great explanation Jason. I was afraid that it would come down to all the ideas you had. Though I would be missing something if I didn’t ask.

    I do think the best setup would be a sub domain.Thanks again for your time Jason.

  • Wayne Hooper says:

    Hi Jason

    Great article. Really helped me move WP after my first attempt ended in being locked out of both the local and live versions. Live and learn!

    One thing though… I’ve used this process twice now on two different WP sites. The first was fine, the second was OK, apart from none of the widgets shown on the site, and when I log in, they are all blank?? How you come across this issue at any point?

    Thanks
    Wayne

  • Hieu says:

    Thanks Jason.

    Your tip for replacing URL in the database is great. You saved me tons of time. The last time I moved a WordPress website, it was a big mess with images’ broken links.

    Keep up the good work, buddy.

    Hieu

  • Mark says:

    Hi Jason, excellent simply to follow tutorial, I have worked through all your steps and everything is fine up to Step 9, when I import the SQL database I get the message that it has successfully finished, however, when I type in the website URL I still get the WordPress install screen, have deleted and reinstalled database a few times and still get this issue. Can you throw some light on what may be causing this.
    Thanks
    Mark

    • Jason says:

      Hi Mark,

      I’m not really sure on that one. If you’re going to your site and seeing the install WordPress screen that would suggest your database is empty or you’re not setting up your database with all of WordPress’s tables. Go into phpMyAdmin on your first site and look at all the tables present. Then go to your second site after importing in phpMyAdmin and see if all the tables and structure match after you import.

      That’s how you’ll know if you’re doing it correctly, however it sounds like you are not. There seems to be a gap there somewhere. Either you’d not exporting the SQL file correctly, or you’re not importing it correctly on the new site.

  • Mark says:

    Hi Jason, managed to fix the problem, it was the wp_config file that was causing the problem, when I imported the tables into my database I noticed that all the tables had the prefix – truewp_, however, in the wp_config file the line: $table_prefix = ‘truewp_’;
    had somehow changed to: table_prefix = ‘Truewp_’;
    the uppercase T in Truewp had obviously caused the problem.
    Unfortunately, this stupid little text alteration has caused me hours of frustration , thankfully everything is now okay.

  • Chuck says:

    Jason,

    Thank you so much for this guide. I’ve been playing with wordpress now for a couple of years on my own blogs but just got serious about developing for others. You’re right about not wanting to spend time on elementary things like moving databases. After spending the past hour trying to get this done, your guide worked flawlessly. It took a grand total of about 10 minutes and the site is up and running.

    Thanks!

  • TyeNewton says:

    Hi Jason,

    Any idea why the site would appear blank?
    I was chatting with my web hosts’s support and they fixed the problem once by changing the theme somehow, and then I figured out why my custom child theme wasn’t showing up as an option, but when I set it back to the child theme it seemed to have screwed up some stuff; adding in unstyled default widgets that I had hidden long ago. I decided to retry the entire process, expecting my child theme to work this time, but the site is blank again, and I don’t know how to make changes without access to the Admin GUI.

  • Akhil says:

    Thanks a lot, your post is the best guide :)

  • Ezequiel says:

    HI Jason. Great tutorial. I am lost at the end part. I managed to upload everything but now I only see the first page of the site and not as I customized it. And now I don’t know how to access login to wordpress. When prompted the username & password dialogue I enter my former data from my localhost (MAMP) and I cannot access. I tried going into the localhost and changing the http://localhost:8888/wordpress parameters with my site data and I made a mess! I Now I cannot log in into my localhost neither. I get: Not Found

    The requested URL /public_html/wp-login.php was not found on this server.

    Additionally, a 404 Not Found error was encountered while trying to use an ErrorDocument to handle the request.
    Apache/2.2.21 (Unix) mod_ssl/2.2.21 OpenSSL/1.0.0-fips mod_auth_passthrough/2.1 mod_bwlimited/1.4 FrontPage/5.0.2.2635 Server at graphicdesign.mx Port 80

    PLEASE HELP!!

  • Ezequiel says:

    He Jason. It seems I figured it out! I manged to reset my password via php admin. It still does not look as it should though, but they are minor changes. I have another question for you: Once I have uploaded my site live I can no longer use my localhost in my computer? I cannot log in. My browser says it does not exist. Any suggestions?
    THANKS!!!!

  • debbie says:

    Hi Jason,

    I’m moving the dev site from local host to the clients already existing website in cpanel. When I ftp the zipped file…do I overwrite the files in the public_html ?

  • Michael says:

    Hi Jason.
    These instructions are really helping me. Just one question when doing the find and replace of the dev site url. If the url is “http://localhost:8080/wordpress” what should I change it to? Is it http://www.myname.com (or is it http://www.myname.com/wordpress)
    Much thanks

    • Jason says:

      This depends on where you’re installing WordPress. In the end, you want people going to http://myname.com, right? So, you’d be installing WordPress in the root public directory of your hosting account and that’s what you’d make your site url.

  • Josh Salway says:

    Love the quick checklist! Saves time.

  • jana says:

    Hi,

    great tutorial! The only problem I had after moving a wordpress site to a testing folder for redesign, was that some of the pages still pointed to the old install while most them pointed to the correct new one.
    I performed a complete find old URL / replace with new URL in Dreamweaver, as you suggested in your tutorial.
    Would you have any other ideas about a possible explanation?

    Thanks much.

  • jana says:

    I already posted earlier but wanted to add something. I just looked into the source code of my new wordpress site, and this what I noticed:
    Most links feature the new URL. There are some files, such .css and any javascript files that are still pointing to the old URL. I believe one of the javascripts might cause for some of the navigation menu links to point back to the old URL.

    Why would any .css and .js files not have been changed?
    How can I fix it?

    Any advice is greatly appreciated.

  • Dean Hewson says:

    Dude, lifesaver. Your blog got me from mamp to live in an hour. Only problem I had was dude to being nub. Hadn’t selected a database in phpMyAdmin for the imported sql file to go to. Rookie error!

    Anyway, thank you. Best mamp to live guide on the interwebs.

  • philip says:

    hi jason.
    when my exported sql file has problems being imported, there’s a lot of problems related to apostrophes. why won’t wordpress export files properly? and what is an easy fix for this?
    im going through all the we’re, we’ll, you’re, don’t, won’t, haven’t, arby’s, john’s, etc….

  • borja says:

    i followed every step very carefully but when i go to my site it takes me to a plain white page, no errors, nothing, plain white… if i type mydomain.com/wp-admin it takes me to the usual wordpress admin page, but now when i try to enter my site it admin error as if the username or password where incorrect….. any clues? thanx

  • Tom says:

    Thank you very much indeed for this well written tutorial, which has helped me a great deal.

    I have learned to to manage my wordpress offline and online and not be dependent on thrid parties anymore.

  • Maria says:

    First of all thank you so much for this tutorial. It has really help me get my head around how wordpress is managed as a new user. I have followed your tutorial to transfer a site from http://localhost:8888/wordpress/ to http://www.definemedia.co.uk/demo/. All has gone very well up to step 9, I get the ‘fresh’ login page when my database is empty. I upload the database (all the tables are the same it looks fine – I have cross reference them). When I go back to the login screen it comes up with this http://www.definemedia.co.uk/demo/wp-admin/install.php when I DO login with my name and password, it takes me to my old local host. Might this be a problem with the ht.access file? Clutching at straws a little and am sure I will get there in the end, but wondered if you could help at all? Many thanks.

    • Jason says:

      Hello Maria,

      This means that most likely something got messed up in step #2. In your database, there’s a field called “siteurl” and this is where WordPress stores the URL of your site. This is very important. You cannot navigate your WP admin if this does not point to the proper place.

      In phpMyAdmin if you search your database for “siteurl” within the “wp_options” table, you will find this value. Make sure this is the URL where you’ve moved your WordPress files to. If it isn’t, just change the value right there in phpMyAdmin.

  • Knut Woltjen says:

    Wow, absolutely fantastic tutorial.
    I don’t know how many times I referred back to this page this week.
    I was stuck at making the SQL db, believe it or not. Turned out that I had to do it through my host. Once that 5min event was out of the way, all was smooth as silk.
    Please include the suggestion by Ed Rosenthal:
    “put the .htaccess file back to 644 when done. You don’t want public access to that important file…”
    at the end of Step 10.
    Keep up the awesome support, Jason!

  • Kathy says:

    I’ve moved a few sites with this method and find that the custom text widgets get lost in the transfer. One time I had set up a sideshow and after transfer all slide show data was gone and I had to recreate it. Ever run into anything like that?

    • Dave says:

      I’ve had the same problem as Kathy. I moved another site yesterday from my localhost to a live copy. The bulk of the data and site got moved but I lost the text widgets, the slide shows, the theme options settings, and a lot of the page builder data in the ThemeBlvd framework. Still the best thing going for WordPress, congrats. :-)

    • Jason says:

      I’ve actually done a lot of work with this in the last framework update. If you’re using framework version 2.1 and you’ve saved your sliders and custom layouts with this new version, you shouldn’t have any problems with transferring. I’m still not sure how to remedy the issues with transferring the theme options, haven’t been able to figure that one out yet. And transferring widgets has always been hit or miss with WordPress. It just depends on what you have saved in them.

  • Lars says:

    You made my day! Finally got it all to work!

  • Dave says:

    Hi Jason, I was using the latest version of the framework. I know you’re probably busy with 2 zillion things going at the moment, but what about some sort of way to export and import the settings and data that gets lost in the future?

    • Jason says:

      Everything in the framework should be able to be transferred with WP’s importer/exporter plugin. If you check out the sample_data folder now in every theme package you’ll see how I’m providing ways to transfer all data (including widgets), with the exception of Theme Options. I still haven’t been able to nail that one down yet.

      To answer your question, I do want to make some sort of importer tool for the Theme Options at some point. I’m not sure if you knew this, but the theme options are based off of Devin Price’s options framework plugin. They actually already have some sort of tool someone created for this. You should check it out. I think there’s a good chance it will work in the same way, as I don’t believe I’ve actually altered how the options framework container is saved to the database. I haven’t tested myself.

      https://github.com/devinsays/options-framework-plugin/issues/77

      https://github.com/vauvarin/options-framework-theme

  • Danimal says:

    Perfect….Thank you so much for this tutorial. Saved me a lot of time!!

Apologies, but comments are currently closed on this post.