]> BookStack Code Mirror - devops/blob - scripts/installation-ubuntu-16.04.sh
Updated ubuntu-16.04 script with curl requirement
[devops] / scripts / installation-ubuntu-16.04.sh
1 #!/bin/sh
2 # This script will install a new BookStack instance on a fresh Ubuntu 16.04 server.
3 # This script is experimental and does not ensure any security.
4
5 echo ""
6 echo -n "Enter your the domain you want to host BookStack and press [ENTER]: "
7 read DOMAIN
8
9 export DEBIAN_FRONTEND=noninteractive
10 apt update
11 apt install -y git nginx curl php7.0 php7.0-curl php7.0-mbstring php7.0-ldap php7.0-mcrypt \
12 php7.0-tidy php7.0-xml php7.0-zip php7.0-gd php7.0-mysql mysql-server-5.7 mcrypt
13
14 # Set up database
15 DB_PASS="$(head /dev/urandom | tr -dc A-Za-z0-9 | head -c 13)"
16 mysql -u root --execute="CREATE DATABASE bookstack;"
17 mysql -u root --execute="CREATE USER 'bookstack'@'localhost' IDENTIFIED BY '$DB_PASS';"
18 mysql -u root --execute="GRANT ALL ON bookstack.* TO 'bookstack'@'localhost';FLUSH PRIVILEGES;"
19
20 # Download BookStack
21 cd /var/www
22 git clone https://github.com/ssddanbrown/BookStack.git --branch release --single-branch bookstack
23 BOOKSTACK_DIR="/var/www/bookstack"
24 cd $BOOKSTACK_DIR
25
26 # Install composer
27 EXPECTED_SIGNATURE=$(wget https://composer.github.io/installer.sig -O - -q)
28 php -r "copy('https://getcomposer.org/installer', 'composer-setup.php');"
29 ACTUAL_SIGNATURE=$(php -r "echo hash_file('SHA384', 'composer-setup.php');")
30
31 if [ "$EXPECTED_SIGNATURE" = "$ACTUAL_SIGNATURE" ]
32 then
33     php composer-setup.php --quiet
34     RESULT=$?
35     rm composer-setup.php
36 else
37     >&2 echo 'ERROR: Invalid composer installer signature'
38     rm composer-setup.php
39     exit 1
40 fi
41
42 # Install BookStack composer dependancies
43 php composer.phar install
44
45 # Copy and update BookStack environment variables
46 cp .env.example .env
47 sed -i.bak 's/DB_DATABASE=.*$/DB_DATABASE=bookstack/' .env
48 sed -i.bak 's/DB_USERNAME=.*$/DB_USERNAME=bookstack/' .env
49 sed -i.bak "s/DB_PASSWORD=.*\$/DB_PASSWORD=$DB_PASS/" .env
50 # Generate the application key
51 php artisan key:generate --no-interaction
52 # Migrate the databases
53 php artisan migrate --no-interaction --force
54
55 # Set file and folder permissions
56 chown www-data:www-data -R bootstrap/cache public/uploads storage && chmod -R 755 bootstrap/cache public/uploads storage
57
58 # Add nginx configuration
59 curl https://raw.githubusercontent.com/BookStackApp/devops/master/config/nginx > /etc/nginx/sites-available/bookstack
60 sed -i.bak "s/bookstack.dev/$DOMAIN/" /etc/nginx/sites-available/bookstack
61 ln -s /etc/nginx/sites-available/bookstack /etc/nginx/sites-enabled/bookstack
62
63 # Restart nginx to load new config
64 service nginx restart
65
66 echo ""
67 echo "Setup Finished, Your BookStack instance should now be installed."
68 echo "You can login with the email '[email protected]' and password of 'password'"
69 echo "MySQL was installed without a root password, It is reccomended that you set a root MySQL password."