Install Polr on CentOS 8

Updated on January 6, 2020
Install Polr on CentOS 8 header image

Introduction

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 CentOS 8.

Prerequisites

This tutorial requires a Vultr Cloud Compute instance with CentOS 8 and root access, and 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.

Install the Apache web server.

dnf install httpd -y
systemctl enable httpd.service

Open ports 80 (HTTP) and 443 (HTTPS) through the firewall to be able to access the server from the internet.

sudo firewall-cmd --permanent --zone=public --add-service=http
sudo firewall-cmd --permanent --zone=public --add-service=https
sudo firewall-cmd --reload

Create a new Apache configuration file for the Polr installation.

nano /etc/httpd/conf.d/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
    </Directory>
    ErrorLog /var/log/httpd/error.log
    CustomLog /var/log/httpd/access.log combined
</VirtualHost>

Install PHP

Polr requires PHP and a number of PHP modules. Install PHP and the PHP modules required by Polr.

dnf install php php-xml php-pdo php-mysqlnd php-mbstring php-tokenizer php-json php-curl -y

Install MySQL & Create a Database

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

dnf install mysql-server -y
systemctl enable mysqld.service
systemctl start mysqld.service

Secure the MySQL installation installation by running the provided script.

mysql_secure_installation

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.

mysql>CREATE DATABASE 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>CREATE USER 'username'@'localhost' identified by 'password';
mysql>GRANT ALL PRIVILEGES on polr.* to 'username'@'localhost';
mysql>FLUSH PRIVILEGES;

Exit the MySQL console.

mysql>exit

Install Polr

Install git and clone the Polr repository from Github.

dnf install git -y
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

Download the Composr package. This is required to install dependencies.

curl -sS https://getcomposer.org/installer | php

Install the dependencies with Composr.

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 apache:apache /var/www/html/
chmod -R 755 /var/www/html/
chcon -R -t httpd_sys_rw_content_t storage .env

Start the Apache web server.

systemctl start httpd.service

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.