What's the best way to develop against WordPress on Windows when you already have IIS/SQL Server installed?

To develop WordPress on Windows with IIS and SQL Server already installed, several approaches can be taken: using XAMPP from a thumb drive, which requires stopping IIS, or installing PHP and MySQL to run WordPress directly on IIS, although this may lead to functionality issues like the absence of mod_rewrite. It's also possible to run both IIS and Apache simultaneously on different ports, adding flexibility, or to use virtualization tools like Thinstall from VMWare. However, many developers recommend using the more common stack of Apache, PHP, and MySQL for a smoother development experience.
To develop WordPress on a Windows machine with IIS and SQL Server already installed, there are several approaches to consider:
- Using XAMPP: One common method is to run XAMPP from a thumb drive, allowing for multiple WordPress instances. However, XAMPP requires IIS to be stopped since both cannot run simultaneously on the same port (HTTP port 80). This setup is portable and does not require installation on the Windows machine.
- Running WordPress on IIS: You can install PHP and MySQL to run WordPress directly on IIS. This setup allows for side-by-side operation with SQL Server, but you may miss features like mod_rewrite for cleaner URLs. Some users have reported that running WordPress on IIS does not fully reflect how it will perform on Apache.
- Simultaneous Operation: It is possible to run both IIS and Apache by configuring them to listen on different ports (e.g., IIS on port 81 and Apache on port 80). This allows for flexibility but may introduce complexities in configuration.
- Virtualization Options: Tools like Thinstall from VMWare can virtualize the entire application stack, making it easier to manage dependencies and configurations across different environments.
Overall, while you can run WordPress on IIS, many developers recommend using the more common stack of Apache, PHP, and MySQL for a smoother development experience.
If you want to develop against WordPress (i.e., have a local instance running on your machine so you can develop themes, get blogs and sites laid out, etc.) and you're running Windows on your development machine with IIS and SQL Server already installed, what's the best way to do it?
I found a method online which sets up a little "mini" server on Windows running instances of Apache and MySQL but they didn't advise using it on a machine with IIS already installed. Obviously one could install Apache and MySQL and do it that way but given what Windows affords you (i.e., methods of running PHP in IIS - I think Windows Server 2008 is even optimized for this), is that the best way? Are there ways to run WordPress with SQL Server as the backend? (I wouldn't think so but I thought I'd throw that out there).
And are there methods differing on the version of Windows (i.e., XP, Vista, Vista64).
4 Answers
I run XAMPP on a thumbdrive and install WordPress (usually multiple instances of it) on there. Then I start up XAMPP when I'm going to work on Wordpress development.

EDIT: this setup does require that IIS be stopped when the XAMPP server is running (or some byzantine configuration magic that I've never bothered to figure out. Since most of my personal needs for local IIS development are handled by the Visual Studio built-in instance of IIS, which can run side-by-side with XAMPP, I rarely have bother with anything else, but that probably won't work for everyone.
I think this is the program I found before but it said it didn't like running alongside IIS (back when I read up on it anyway) - do you have any issues with it?
I do have to turn IIS off when XAMPP is on, but aside from that it works really well. And it requires no install on my Windows machine - completely portable.
"I do have to turn IIS off when XAMPP is on" - it's because you can't have two processes listening on the same TCP port simultaneously (HTTP port 80 in this case).
Install PHP, run Wordpress in IIS. Install MySQL which can be run side-by-side with MSSQL. The only thing you'll miss using IIS over Apache is mod_rewrite for prettier URLs.
Avoid running IIS and Apache on the same machine if at all possible. IIS likes to bind to all available IPs blocking Apache from binding to an IP, which you can get around if necessary, but it's not immediately clear what's happening.
I've been running this setup for years.
I've found that running wordpress on IIS doesn't really reflect how the sites will work under Apache, but that could be just me. I do have to turn off IIS when using my XAMPP server, but that's hardly a hardship given the flexibility this allow me.
I run 5 Wordpress blogs on IIS and haven't had any issues. What issues did you run into?
mod-rewrite was a big one; some plugins don't work properly without it IIRC. Honestly it's been a while since I got my current set up working, and I've never looked back - running WP on windows seemed a little unnatural.
Since you are interested in developing for Wordpress I strongly suggest you use the most common WP setup: Apache, PHP and MySQL.
You can run Apache and IIS at the same time (I have IIS listening on port 81 and Apache on 80) or you can run only one at a time (create 2 bat files to start/stop the servers using the net start/stop command).
You can use IIS, PHP, MySQL to run Wordpress but there are some subtle differences that can drive you crazy or cause problems when you deploy on Apache.
You can certainly run IIS and Apache on the same box. We do it currently with Documentum/Apache and IIS on the same server. Just pick a range of addresses for one web server - 808x for Apache for example.
You should also consider using Thinstall from VMWare where you can virutalize an entire application - registry, .Net and all - distribute as a single .EXE. We do this now for packaging applications that don't play well together. You might want to virtualize Wordpress/Appache/MySql and set an IP (808x) for that configuration. This way you can move this to any server with IIS and it'll play well with different configurations.
Here are the key points regarding the development of WordPress on Windows with IIS and SQL Server installed.
Variety of Methods: There are several approaches to developing WordPress on Windows, including using XAMPP, installing PHP and MySQL on IIS, and virtualization.
Compatibility Issues: Running XAMPP requires stopping IIS, as both servers cannot operate simultaneously on the same port, which can be inconvenient for developers.
Functional Limitations: Running WordPress on IIS may lead to the absence of certain features, such as mod_rewrite, which can affect plugin performance and URL structure.
Simultaneous Server Operation: It is possible to run IIS and Apache on different ports, providing flexibility, but this can complicate configuration.
Technology Stack Recommendations: Many developers prefer using the more common stack of Apache, PHP, and MySQL for a more comfortable and predictable WordPress development experience.
Optimization Tips: It is important to consider aspects of security and performance, such as using caching and regularly updating plugins.
Several key points emerge regarding the development of WordPress on Windows with IIS and SQL Server installed. There are various approaches to set up the development environment, including using XAMPP, installing PHP and MySQL on IIS, or utilizing virtualization tools. Running XAMPP requires stopping IIS, as both cannot operate simultaneously on the same port, which may be inconvenient for some developers. Additionally, using WordPress on IIS can lead to functionality limitations, such as the lack of mod_rewrite, affecting plugin performance and URL structure. While it is possible to run both IIS and Apache on different ports for added flexibility, this can complicate configuration. Ultimately, many developers recommend using the more common stack of Apache, PHP, and MySQL for a smoother and more predictable WordPress development experience.
Use SCM with a PHP application like Wordpress
How do I use SCM with a PHP app such as Wordpress? I run my blog using Wordpress and all too recently became a big believer in SCM. I really want to put my site into subversion (that's what I'm using right now, maybe git will come later) but I can't think of the correct way to do it yet. Basically, my repository is set up currently with an 'implementation' directory and a 'resources' directory, with implementation holding what will eventually be published to the live site. I want to be able to preview my site locally without having to upload to the server for obvious reasons. However, to do this I found that I needed to actually install Wordpress locally (not just copy the remote site down to my local box). This was told to me over at Wordpress. This brings up the problem of being able to use SCM with the install because I need to upgrade my local site every now and then but this generates inconsistencies with subversion because it can’t track what’s…
Getting IIS6 to play nice with WordPress Pretty Permalinks
I've got a WordPress powered blog that I'm trying to get setup on our IIS6 server and everything works besides the permalink structure which I'm having a big headache with. After googling around/wordpress codex I learned that it's because IIS6 doesn't have the equivalent of Apache's mod_rewrite which is required for this feature to work. So that's where I'm at now. I can't seem to find a functional solution to get the pretty permalinks to work without the "index.php/," anyone have any recommendations? What I can't do: Upgrade to IIS7, Switch to Apache, Quit my job. Those suggestions have been…
YouTube embeds not working in WordPress after importing from Blogger
I imported a series of blogger posts (via xml) into WordPress, and the YouTube embed tags were removed. YouTube URLs in posts are not identified. Instead, just the text of the url is left. Possibly as opposed to full embed tags. I'm trying to restore the embed codes so it's seen. Another fact that is notable in the XML import is that [EMBLED CONTENT] appears instead of the url, that is, the video... by default, WordPress filters imported XML by removing possible…