Ghost

From ArchWiki
Jump to: navigation, search

Ghost is a free and open source blogging platform written in JavaScript and distributed under the MIT License, designed to simplify the process of online publishing for individual bloggers as well as online publications.

AUR installation

Install ghostAUR, and modify /etc/webapps/ghost/config.js. Then start ghost.service. If you are happy with it, enable it for automatic start when the system boots.

Visit http://127.0.0.1:2368/ghost for final configuration.

Custom installation

Prerequisites

This instruction will guide you through the installation of Ghost using nginx as web server.

Install nginx, npm, sqlite, python2, base-devel, unzip and nodejs.

Installation

Now it is time to configure the web server to act as a proxy of your blog. In the server block configuration file of nginx (etc/nginx/nginx.conf), change the location lines to the following:

location / {
       proxy_set_header   X-Real-IP $remote_addr;
       proxy_set_header   Host      $http_host;
       proxy_pass         http://127.0.0.1:2368;
   }

Create the ghost user and directory for ghost:

$ useradd -r -s /bin/false ghost
$ mkdir -p /srv/http/example.org

Now start the nginx.service.

Install GhostAUR or grab the latest version of Ghost from Ghost.org, install it manually and change into the extraction directory::

$ curl -L https://ghost.org/zip/ghost-latest.zip -o ghost.zip
$ unzip ghost.zip -d /srv/http/example.org
$ cd /srv/http/example.org

Temporarily link the python path variable to python 2 instead of python 3: First create a dummy folder:

$ mkdir ~/bin

Then add a symlink python to python2 and the config scripts in it:

$ ln -s /usr/bin/python2 ~/bin/python
$ ln -s /usr/bin/python2-config ~/bin/python-config

Finally put the new folder at the beginning of your PATH variable:

$ export PATH=~/bin:$PATH
Note: This method of changing environment variables is not permanent and is only active in the current terminal session.

Install ghost - you do not need this step when you have installed it from the Arch User Repository:

$ npm install --production

Start ghost:

$ npm start --production

Done! Open the browser and go to 127.0.0.1 or the IP of the device you installed ghost.

Creating a service

Note: You do not need this step when you have installed Ghost from the Arch User Repository.

If you want to run Ghost in the background, you have to create a service. Create a new service unit for the local system:

/etc/systemd/system/ghost-example-com.service
[Unit]
Description=Ghost blog example.org  
After=network.target

[Service]
Type=simple  
PIDFile=/run/ghost-example-org.pid  
WorkingDirectory=/srv/http/example.org  
User=ghost  
Group=ghost  
ExecStart=/usr/bin/npm start --production /srv/http/example.org  
ExecStop=/usr/bin/npm stop /srv/http/example.org  
StandardOutput=null  
StandardError=null

[Install]
WantedBy=multi-user.target

Change the owner of the blog directory and start Ghost:

$ chown -R ghost:ghost /srv/http/example.org
$ systemctl start ghost-example-com

If everything is working fine, you can enable the new unit ghost-example-com as well as the webserver nginx.service.