Using a Different System?
-
How to Install BookStack on Ubuntu 16.04
-
How to Install BookStack on Debian 9
-
How to Install BookStack on FreeBSD 12
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 $300 by adding new articles
Suggest an update
Request an article