Install Ghost Blog on IIS
Pre Condition
Ghost's current recommended Node version is Node v10 LTS. Also 8.x (Node v8 Carbon LTS) is supported
IISNode is installed, including IIS URL Rewrite Module
First of all, we need to install the ghost CLI:
npm install -g ghost-cli@latest
Create a new empty folder
mkdir ghost
Change directory into the folder
cd ghost
For Development e.g. macOS
Install local environment via ghost cl
ghost install local
Open Browser and navigate to
http://127.0.0.1:2368
Production
Set production mode via environment variable
set NODE_ENV=production
Install Ghost and create a default configuration
ghost install --db sqlite3 --no-prompt --no-stack --no-setup --dir .
cd .
ghost config --ip 127.0.0.1 --port 2368 --no-prompt --db sqlite3 --url https://blog.mydomain.de
Run the database migrations for validation of database tables
ghost setup migrate
Adjust the config file (config.production.json)
Remove the port because it will be injected via IISNode and environment variable
{
"url": "https://blog.mydomain.de",
"server": {
"host": "127.0.0.1"
},
...
}
Test the actual config
set server__port=2368
and run a new node process via terminal
node current/index.js
If the server starts and you can open it via Browser under http://127.0.0.1:2368, stop the Process with Strg and C
Index and web.config for IISNode
Create an index.js file in your ghost root folder including:
process.env.server__port = process.env.PORT;
require('./current/index.js')
So you are able to inject the port for the IIS dynamically
Also you need to create web.config for IIS:
<configuration>
<system.webServer>
<modules>
<remove name="WebDAVModule" />
</modules>
<handlers>
<clear />
<remove name="WebDAV" />
<add name="iisnode" path="index.js" verb="*" type="" modules="iisnode" scriptProcessor="" resourceType="Unspecified" requireAccess="Script" allowPathInfo="false" preCondition="" responseBufferLimit="4194304" />
</handlers>
<iisnode node_env="production" enableXFF="true" nodeProcessCountPerApplication="1" />
<rewrite>
<rules>
<rule name="ghost">
<match url="/*" />
<action type="Rewrite" url="index.js" />
</rule>
</rules>
</rewrite>
</system.webServer>
</configuration>
IIS Configuration
Finally create a new site in your application pool with the binding to your domain e.g.
https://blog.mydomain.de
and add the physical path to the ghost root folder.
And now ghost should run under your domain!
Adding new content
Check out the admin tools for adding new content to your blog:
The End
If you found any problem following the tutorial, please leave your comment below.
If this post was helpful, please click the ❤️ and ? button below a few times to show your support! ⬇⬇