Creating a Ghost Blog on a CentOS 7 Server

Published on: Fri, Sep 16, 2016 at 4:52 pm EST
CentOS Linux Guides Server Apps

In this article, we will be creating a Ghost blog on a CentOS 7 installation. Ghost is a free, open source blogging platform written in Javascript and NodeJS.

Ghost runs excellent on any sized Vultr instance.

If you wish to create a Ghost blog on Ubuntu, please read this article instead.

Step 1: Installing dependencies

Because the software was written in NodeJS, we'll need to install the epel-release package in order to access the required repository to install NodeJS.

wget http://dl.fedoraproject.org/pub/epel/7/x86_64/e/epel-release-7-8.noarch.rpm
rpm -ivh epel-release-7-8.noarch.rpm
yum install npm nodejs unzip zip screen -y

Now, let's create a directory for our Ghost blog.

mkdir -p /var/www/
cd /var/www/
wget https://ghost.org/zip/ghost-latest.zip && unzip ghost-latest.zip
npm install --production

Great job. Now, let's configure it.

Step 2: Configuring Ghost

First off, we'll need another user to isolate privileges. Create one by executing:

useradd blog
chown blog:blog -R /var/www
su blog
cd /var/www/
cp config.example.js config.js

Before we actually start the blogging software, we need to make a few changes.

nano config.js

// # Ghost Configuration

var path = require('path'),
    config;

config = {
    // ### Production
    // When running Ghost in the wild, use the production environment.
    // Configure your URL and mail settings here
    production: {
        url: 'http://my-ghost-blog.com',

Also, find the line host: 127.0.0.1 and change it to host: 0.0.0.0.

Those will be the first lines of your configuration. Change http://my-ghost-blog.com to your blog's URL. Do not change the host, as it is critical that only local users can see it.

Last thing for this step is to install PM2, a NodeJS process manager. Execute the following commands:

npm install -g pm2
su blog -c echo "export NODE_ENV=production" >> ~/.profile
su blog -c source ~/.profile
su blog -c pm2 kill

Step 3: Configuring the NGINX proxy

This is important if you want users to be able to see your blog. Run the following commands as the root user once more:

wget http://nginx.org/packages/mainline/centos/7/x86_64/RPMS/nginx-1.11.0-1.el7.ngx.x86_64.rpm -O /tmp/nginx.rpm
rpm -ivh /tmp/nginx.rpm
rm /etc/nginx/conf.d/default.conf

Populate the default.conf file:

echo 'server {
    listen 80;
    server_name _;
    location / {
        proxy_set_header   X-Real-IP $remote_addr;
        proxy_set_header   Host      $http_host;
        proxy_pass         http://127.0.0.1:2368;
    }
}' > /etc/nginx/conf.d/default.conf

Finally, start NGINX:

service nginx start

And Ghost:

cd /var/www
pm2 startup centos
su blog    
pm2 start index.js --name ghost
pm2 dump

Conclusion

In this article, you learned how to create your own Ghost blog and proxy it to the public. Happy blogging!

Want to contribute ?

You could earn up to $300 by adding new articles