Script: Install ownCloud on an Ubuntu 12.04 VPS


In one of our previous blog posts, we had covered how to install ownCloud on a CentOS 6 VPS, today we will see how to install ownCloud on an Ubuntu 12.04 server using an automated bash script.

 

 

#!/bin/bash
#
# Install owncloud
# This script assumes you already have installed Apache & MySQL
#

# Change me
MYSQL_ROOT_PASSWD="YOUR MYSQL ROOT PASSWORD"

# Path to your localhost
www="/var/www"

# Apache User
wwwdata="www-data"

# Make sure only root can run our script
if [ "$(id -u)" != "0" ]; then
echo "This script must be run as root" 1>&2
   exit 1
fi

# Check arguments
if [ $# -ne 1 ]; then
    echo "Usage $0 domainName"
    exit 1
fi

# Create MySQL database
MYSQL_OC_PASSWD=$(</dev/urandom tr -dc A-Za-z0-9 | head -c 8)
Q1="CREATE DATABASE IF NOT EXISTS owncloud;"
Q2="GRANT ALL PRIVILEGES ON owncloud.* TO 'owncloud'@'localhost' IDENTIFIED BY '$MYSQL_OC_PASSWD';"
Q3="FLUSH PRIVILEGES;"
SQL="${Q1}${Q2}${Q3}"
mysql -uroot -p$MYSQL_ROOT_PASSWD -e "$SQL" > /dev/null 2>&1

# Check if the database is created
if [ $? -ne 0 ]; then
    echo "Cannot connect to the MySQL database server"
    exit 1
fi

# Create the file with VirtualHost configuration
echo "<VirtualHost *:80>
        DocumentRoot $www/owncloud
        ServerName $1
        ServerAlias $1
        <Directory $www/owncloud>
                Options Indexes FollowSymLinks MultiViews +Includes
                AllowOverride All
                Order allow,deny
                allow from all
        </Directory>
</VirtualHost>" > /etc/apache2/sites-available/$1

# Update System
apt-get -y update > /dev/null 2>&1

# Install PHP modules
apt-get -y install php5 php5-json php-xml php-mbstring php5-zip php5-gd php5-sqlite php5-mysql curl libcurl3 libcurl3-dev php5-curl php-pdo > /dev/null 2>&1

# Download and extract the latest version
wget -qO- -O tmp.tar.bz2 http://owncloud.org/releases/owncloud-latest.tar.bz2 && tar -C $www -xjf tmp.tar.bz2 && rm tmp.tar.bz2

# Set owner
chown $www-data: -R $www/owncloud

# Enable the site
a2ensite $1 > /dev/null 2>&1

# Reload Apache2
/etc/init.d/apache2 restart > /dev/null 2>&1

# Output
clear
echo "Open your web browser and navigate to your ownCloud instance"
echo "Url: $1"
echo "Database: owncloud"
echo "Database user: owncloud"
echo "Database user password: $MYSQL_OC_PASSWD"

What will the script do?

  • Check if the script is being run as root
  • Check if the number of arguments is correct
  • Create MySQL database
  • Check if the database is created
  • Create the file with VirtualHost configuration
  • Install necessary PHP modules
  • Download and extract the latest version of ownCloud
  • Set the owner, enable the site and restart Apache
  • Show you the database name, user and password

Save the script above as installOwncloud.sh (if you haven’t already), change “YOUR MYSQL ROOT PASSWORD” with your MySQL root password and then type the following commands:

a+x installOwncloud.sh
./installOwncloud.sh  your.domainname.com

Finally, open your web browser and navigate to your ownCloud instance

This script should work on Debian too.

PS. If you liked this post please share it with your friends on the social networks using the buttons on the left or simply leave a reply below. Thanks.

Scripts
Install, configure and administer BIND 9 on Debian Whezzy
Scripts
Set up a new virtual host (server block) on your Nginx server.
Tutorials
Install WordPress with HHVM, Nginx and MariaDB on an Ubuntu 12.04 LTS