Article

Table of Contents
Theme:
Was this article helpful?

0  out of  2 found this helpful

Try Vultr Today with

$50 Free on Us!

Want to contribute?

You could earn up to $600 by adding new articles.

How to Install BookStack on Fedora 28

Last Updated: Fri, Dec 28, 2018
Fedora Linux Guides Server Apps
Archived content

This article is outdated and may not work correctly for current operating systems or software.

BookStack is a simple, self-hosted platform for organizing and storing information. BookStack is entirely free and open-sourced, as well as MIT licensed. The source is available on GitHub. In this tutorial, we will install BookStack on a fresh Fedora 28 Vultr instance.

Requirements

  • PHP Version 7.0.0 or greater and the following extensions:

    • OpenSSL

    • PDO

    • MBstring

    • Tokenizer

    • GD

    • MySQLND

    • Tidy

    • SimpleXML

    • DOM

  • MariaDB

  • Git (Not strictly required, but helps manage updates)

  • Composer

Before you begin

Check the Fedora version.

cat /etc/fedora-release

# Fedora release 28 (Twenty Eight)

Create a new non-root user account with sudo access and switch to it.

useradd -c "John Doe" johndoe && passwd johndoe

usermod -aG wheel johndoe

su - johndoe

NOTE: Replace johndoe with your username.

Set up the timezone.

timedatectl list-timezones

sudo timedatectl set-timezone 'Region/City'

Ensure that your system is up to date.

sudo dnf check-upgrade || sudo dnf upgrade -y

Install necessary packages.

sudo dnf install -y curl git wget vim unzip bash-completion 

For simplicity, disable SELinux and Firewall.

sudo setenforce 0

sudo systemctl stop firewalld

sudo systemctl disable firewalld

Install PHP and required PHP extensions

Install PHP and necessary PHP extensions.

sudo dnf install -y php-cli php-fpm php-gd php-json php-mbstring php-mcrypt php-mysqlnd php-xmlrpc php-common php-tidy php-ldap php-mcrypt php-xml php-zip

Check the version.

php -v

Start and enable php-fpm.service.

sudo systemctl start php-fpm.service

sudo systemctl enable php-fpm.service

Install MariaDB

Install MariaDB.

sudo dnf install -y mariadb-server

Check the version.

mysql --version

Start and enable MariaDB.

sudo systemctl start mariadb.service

sudo systemctl enable mariadb.service

Run the mysql_secure installation script to improve MariaDB security and to set the root user password.

sudo mysql_secure_installation

Connect to the MariaDB shell as the root user.

mysql -u root -p

# Enter password:

Create an empty MariaDB database and user for BookStack, and remember the credentials.

CREATE DATABASE dbname;

GRANT ALL ON dbname.* TO 'username' IDENTIFIED BY 'password';

FLUSH PRIVILEGES;

EXIT

Install Nginx

Install Nginx.

sudo dnf install -y nginx

Check the version.

sudo nginx -v

Start and enable Nginx.

sudo systemctl start nginx.service

sudo systemctl enable nginx.service

Configure Nginx for BookStack. Run sudo vim /etc/nginx/conf.d/bookstack.conf and add the following configuration.

server {

  listen 80;

  listen [::]:80;



  server_name example.com;



  root /var/www/bookstack/public;



  index index.php index.html;



  location / {

    try_files $uri $uri/ /index.php?$query_string;

  }



  location ~ \.php$ {

    fastcgi_index index.php;

    try_files $uri =404;

    include fastcgi_params;

    fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;

    fastcgi_pass unix:/run/php-fpm/www.sock;

  }

}

Test the configuration.

sudo nginx -t

Reload Nginx.

sudo systemctl reload nginx.service

Install Composer

Install Composer.

php -r "copy('https://getcomposer.org/installer', 'composer-setup.php');"

php -r "if (hash_file('SHA384', 'composer-setup.php') === '544e09ee996cdf60ece3804abc52599c22b1f40f4323403c44d44fdfdd586475ca9813a858088ffbc1f233e9b180f061') { echo 'Installer verified'; } else { echo 'Installer corrupt'; unlink('composer-setup.php'); } echo PHP_EOL;"

php composer-setup.php

php -r "unlink('composer-setup.php');"

sudo mv composer.phar /usr/local/bin/composer

Check the version.

composer --version

Install BookStack

Create a document root folder.

sudo mkdir -p /var/www/bookstack

Change ownership of the /var/www/bookstack directory to johndoe.

sudo chown -R johndoe:johndoe /var/www/bookstack

Clone the release branch of the BookStack GitHub repository into the document root folder.

cd /var/www/bookstack

git clone https://github.com/BookStackApp/BookStack.git --branch release --single-branch .

Run composer install from the /var/www/bookstack directory.

composer install

Copy the .env.example file to .env and fill it with your own database and mail details.

cp .env.example .env

Ensure that the storage, bootstrap/cache and public/uploads folders are writable by the web server.

In the application root, run php artisan key:generate to generate a unique application key.

Run php artisan migrate to update the database.

Change ownership of the /var/www/bookstack directory to nginx.

sudo chown -R nginx:nginx /var/www/bookstack

Run sudo vim /etc/php-fpm.d/www.conf and set the user and group to nginx. Initially, it will be set to apache.

sudo vim /etc/php-fpm.d/www.conf

# user = nginx

# group = nginx

Restart the php-fpm service.

sudo systemctl restart php-fpm.service

You can now login using the default admin details admin@admin.com with a password of password. It is recommended to change these details directly after first logging in.

Want to contribute?

You could earn up to $600 by adding new articles.