Learn How To Install Polr on Ubuntu 18.04

June 22, 2019

Table of Contents

If you are using a different system, please check our other tutorials.


Polr is a free and open-source link shortener written in PHP and Lumen. It allows you to quickly host your own URL shortener. It’s significant features include a management dashboard, detailed link analytics, and an API. This tutorial will guide you through the process of installing Polr on Ubuntu 18.04 LTS.


This tutorial requires An ITWeb.Services Cloud Compute instance with Ubuntu 18.04 LTS and root access, as well as a valid domain name pointing to your server.

Install Apache

Polr requires a web server, a MySQL database, and PHP. For this tutorial we will be using the Apache web server.

Update the repository list.

apt-get update

Install the Apache webserver.

apt-get install apache2 -y

Disable the default Apache site configuration and delete the default Apache index.html file.

a2dissite 000-default.conf
rm /var/www/html/index.html

Create a new Apache configuration file for the Polr installation.

nano /etc/apache2/sites-available/polr.conf

Paste the following snippet into the newly created file, replacing example.com with your own domain name.

<VirtualHost *:80>
    ServerName example.com
    ServerAlias example.com
    DocumentRoot "/var/www/html/public"
    <Directory "/var/www/html/public">
        Require all granted
        Options Indexes FollowSymLinks
        AllowOverride All
        Order allow,deny
        Allow from all
   ErrorLog ${APACHE_LOG_DIR}/error.log
   CustomLog ${APACHE_LOG_DIR}/access.log combined

Enable the configuration.

a2ensite polr.conf

Polr requires Apache’s mod_rewrite enabled. Enable the Apache rewrite module.

a2enmod rewrite

Restart the Apache service.

systemctl restart apache2.service

Install PHP

Polr requires PHP and a number of PHP modules.

apt-get install php php-pdo php-mysql php-mbstring php-tokenizer php-json php-curl -y

Install MySQL & Create a Database

Polr stores data in an SQL database. Install the MySQL server.

apt-get install mysql-server -y

Secure the MySQL installation by running the provided script.


When prompted for a root password, choose a safe password and proceed through the installation.

Would you like to setup VALIDATE PASSWORD plugin? [Y/N] N
New password: <Your Password>
Re-enter new password: <Your Password>
Remove anonymous users? [Y/N] Y
Disallow root login remotely? [Y/N] Y
Remove test database and access to it? [Y/N] Y
Reload privilege tables now? [Y/N] Y

Login to the MySQL console.

mysql -u root -p

When asked for a password, enter the root password created earlier. Once you are logged in to the console, create a new database for Polr.


Create a new database user and grant it privileges to the created database. You can replace username and password with the username and password of your choice.

mysql>GRANT ALL PRIVILEGES on polr.* to 'username'@'localhost' identified by 'password';

Exit the MySQL console.


Install Polr

Clone the Polr repository from Github.

cd /var/www/html
git clone https://github.com/cydrobolt/polr.git --depth=1

Move the downloaded files to the root of the webserver.

mv ./polr/.[!.]* . && mv ./polr/* . && rm -rf polr

Composer is required to install dependencies. Download the Composr package and install the unzip module used by it.

curl -sS https://getcomposer.org/installer | php
apt-get install unzip -y

Install the dependencies with Composer.

php composer.phar install --no-dev -o

Copy the provided configuration file to enable the web-based installer.

cp .env.setup .env

Set the appropriate file permissions.

chown -R www-data:www-data /var/www/html/
chmod -R 755 /var/www/html/

Complete the installation

Navigate to example.com/setup to launch the web-based Polr installer and enter the required information. Use the MySQL credentials created earlier for database configuration. Once you have submitted the setup form, the Polr installation will be completed.

Need help?

Do you need help setting up this on your own service?
Please contact us and we’ll provide you the best possible quote!