WordPress On IIS: Permissions, Updates, Permalinks

While it’s not ideal (I prefer NGINX), sometimes you do need to run a WordPress site on a Windows Server running IIS. Here are a few common problems and solutions for running WordPress on IIS. I don’t go through a full installation tutorial – the famous 5 minute install should get you rolling same as if you were on another OS.

This post is to address three common issues you’ll run into after you install WordPress on IIS – 1) Permissions, 2) Updates, 3) Permalinks.

Note: These particular instructions & screenshots are from a Windows Server 2013 web server running IIS8. These instructions should work on most IIS sites and Azure VMs however may be in a different spot.

WordPress Permissions on IIS

A common problem after installing WordPress on IIS is file permissions. At first you won’t be able to upload pictures and then you will run into an issue changing the permalink structure or updating the wp-config file inside the dashboard. This due to file permissions and for the website to be able to write updates to itself on the server. This can be a rabbit hole fumbling around on permissions for every directory. While that may be fun for you, here’s a swift and simple way to globally update permissions in a safe manner on your WP site.

  1. Right click on your WordPress site in IIS “Sites” folder and select “Edit Permissions”
  2. Click “Security” tab
  3. Click “Edit” button to Edit Permissions for the site
  4. Click “Add…” button to add the user you want to grant permissions, in this case “Authenticated Users”
  5. Grant “Authenticated Users” Modify permissions

TL;DR – Grant “Authenticated Users” Modify permissions on your WordPress site in IIS

WordPress IIS Permissions

 

WordPress Updates on IIS

Now once you have your fancy WordPress install running on IIS and got your permissions applied so you can update the site … you’ll want to install a theme or plugin or run WordPress updates from inside the WordPress dashboard. Not so fast – you need to make a quick tweak on IIS to get WordPress updates and installs to work from the Dashboard.

  1. Go to the WordPress site’s Application Pool in IIS
  2. Right-click on the Application Pool and select “Advanced Settings”
  3. Scroll down under “Process Model” and select “Identity”. It will be set to “Application Pool Identity” by default and you want to change that
  4. Click on “Application Pool Identity” and select “Local System” as the Built-in account.
  5. Save and recycle the app pool

TL;DR – You need to run the WordPress site’s Application Pool under the LocalSystem Identity

WordPress Updates on IIS

 

 

 

WordPress Permalinks on IIS

WordPress makes a great CMS for many reasons and pretty SEO-friendly permalinks are one of the reasons. In the WordPress admin dashboard you can set your own URL permalink structure. This is cool. But it doesn’t work quite right running on IIS. You’ve already solved a couple initial problems you’d likely have tried which grants WordPress permissions to update the .htaccess file. Well guess what – IIS does not care about that file and your permalinks won’t work and you won’t be sure why. Well, now you will be. Anyway, you just need to drop a web.config file in the root of your WordPress site on IIS.

TL;DR – you need to setup a web.config file in the root of your WordPress site on IIS. The gist is available below.

Published by

Andy Brudtkuhl

Andy is a web developer, entrepreneur, bike commuter, seinfeld quoter, and daddy to two little girls and three dogs in Des Moines, Iowa.

13 thoughts on “WordPress On IIS: Permissions, Updates, Permalinks”

  1. Hi, thanks for the input. Made a site on Azure but it’s under Brandoo WordPress. Running on SQL and IIS. My problem now is that my search box that was working properly on development is currently not functioning after using it on Azure. Do I need to add anything on my web.config? Would really be glad on your input.

    Regards,

    Kevin

    1. Kevin – sorry for the delay. I have run into that problem because WP passes the query in a querystring by default. Let me check my configs and I'll get back to youAndy [email protected]

  2. Andy,

    Thanks for that. I recently had to set up WordPress on IIS (pain in the bum), then moved it (another pain in the bum). Not knowing WordPress – it was a permissions nightmare, and I was still unable to edit the wp-config file after the last change. Your 2 minute fix did the job, and probably saved me hours – so thanks again.

    1. My pleasure Sue! It was frustrating for me the first time so that’s why I documented it for the next time 🙂

  3. THANK YOU! I have been struggling with automatic updates on a windows server for months!!!! Your solution finally fixed my problem! Thank you so much! Why is this not widely shared on a faq built by wordpress?

  4. Hey there Andy! This was great. I fumbled around this issue for about 30 minutes wondering that the heck am I missing here. Luckily I ran across your blog. Thanks…Mind if I link to it in a post later on?

  5. Andy thanks for the info. Are you certain with this setup that no anonymous users can upload files into the wordpress directories? I am running into this when setting the iusr user modify permissions. The site will become hacked over time from unauthorized users uploading php scripts and then executing them which usually results in massive email spamming coming from my sites.

    Let me know your thoughts please, thanks!

Leave a Reply

Your email address will not be published. Required fields are marked *