WordPress On IIS: Permissions, Updates, Permalinks
June 30, 2014
development wordpressWhile 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.
- Right click on your WordPress site in IIS "Sites" folder and select "Edit Permissions"
- Click "Security" tab
- Click "Edit" button to Edit Permissions for the site
- Click "Add..." button to add the user you want to grant permissions, in this case "Authenticated Users"
- Grant "Authenticated Users" Modify permissions
TL;DR - Grant "Authenticated Users" Modify permissions on your WordPress site in IIS
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.
- Go to the WordPress site's Application Pool in IIS
- Right-click on the Application Pool and select "Advanced Settings"
- Scroll down under "Process Model" and select "Identity". It will be set to "Application Pool Identity" by default and you want to change that
- Click on "Application Pool Identity" and select "Local System" as the Built-in account.
- Save and recycle the app pool
TL;DR - You need to run the WordPress site's Application Pool under the LocalSystem Identity
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.
Active Projects
I'm always tinkering with new ideas and building interesting things. From AI-powered tools to micro-SaaS products, these are the projects currently keeping me up at night. Each one solves a specific problem I've encountered or explores an emerging technology I'm excited about.
🤖 PMPrompt
I recently launched PMPrompt, a curated collection of AI prompts for product managers. The goal is simple - help PMs save time and be more effective by leveraging AI in their daily workflow. Read more about this project in my blog post about building PMPrompt or try the AI-Powered PRD Generator.
📊 SurveySnaps
I recently launched SurveySnaps, a platform that makes collecting location-based feedback dead simple using QR codes. The goal is straightforward - help businesses gather real-time feedback from specific locations without the complexity of traditional survey tools. Read more about this project in my blog post about building SurveySnaps.
🏗️ JSONL Tools
I am working on a set of tools to help me work with JSONL. JSONL is a simple format for working with JSON data. I am working on a set of tools to help me work with JSONL data. I will use these tools to help me work with my own data as well as help me build my own APIs. One of the tools I am developing is a JSONL Validator to ensure the integrity and structure of JSONL data. Read more about this project in my blog post about building JSONL Tools.
🤖 Make Storytime
Personalized children's stories generated by AI. This is an app I am building with my kids.
📠 Fax Online
Yea, I know. But there is a long tail for everything and believe it or not there was an underserved market for people that need to send a fax online. Some people (like me!) just need to send a one time fax.
Read more about this micro Saas project in a blog post about building an online fax service.
🥑 Free URL Indexer
Free URL Indexer is a free tool to help you index your backlinks and get them into Google faster. It's a simple tool that I built to help me with my own SEO efforts and I decided to share it with the world. It's a free tool and I don't even ask for your email address. Just paste in your URL and click the button.
👉 See all projects