Install phpList Open Source newsletter and email marketing software on Ubuntu 18.04

(: September 10, 2018)

phpList is an Open Source newsletter and email marketing software, which means it is free to download and use. There is a large community of users who contribute to the development, security, and reliability of phpList. In this guide, we will install and configure phpList on Ubuntu 18.04 server.

Features of phpList

  • It is feature-rich – You can create beautiful HTML campaigns using a web interface.
  • A powerful list manager with flexible integration: Import and manage complex data: use CSV files to import information about your subscribers.
  • Intelligent: Analyse your campaigns with phpList’s inbuilt statistics, Google Analytics or Open Source Piwik.
  • Easy import and export of subscriber data from any source
  • Economical and Scalable: Use the trial account: send 300 messages a month – for free, forever. Prices for basic accounts start at US$1 per month

Install phpList on Ubuntu 18.04

phpList has the following software dependencies:

  • MySQL or MariaDB database
  • Apache Web Server
  • PHP

Step 1: Install PHP and required extensions

Install PHP and required php extensions by running the following command:{text-align:left} img{margin:0 auto 0 0}
sudo apt -y install apache2 php php-pear php-cgi php-common libapache2-mod-php 
php-mbstring php-net-socket php-imap php-gd php-xml-util php-mysql php-gettext php-bcmath

Step 2: Install and Configure MariaDB

Next requirement is a database server, for this, we’ll use MariaDB. Install MariaDB on your Ubuntu server using the guide below

Install MariaDB 10.x on Ubuntu 18.04 and CentOS 7

When done with the installation, create a database and dedicated database user for phpList.

$ mysql -u root -p
Enter password: 
Welcome to the MariaDB monitor.  Commands end with ; or g.
Your MariaDB connection id is 520
Server version: 10.3.9-MariaDB-1:10.3.9+maria~bionic-log binary distribution

Copyright (c) 2000, 2018, Oracle, MariaDB Corporation Ab and others.

Type 'help;' or 'h' for help. Type 'c' to clear the current input statement.

MariaDB [(none)]> CREATE DATABASE phplist;
Query OK, 1 row affected (0.001 sec)

MariaDB [(none)]> GRANT ALL PRIVILEGES ON phplist.* to 'phplist'@'localhost' IDENTIFIED BY 'StrongPassword';
Query OK, 0 rows affected (0.001 sec)

Query OK, 0 rows affected (0.001 sec)

MariaDB [(none)]> quit

Step 3: Download and Install phpList

Download the latest release of phpList using the link As of the writing of this article, the latest version is 3.3.3

Download and extract the archive.

export VER="3.3.3"
tar xvf phplist-${VER}.tgz

Move the folder public_html/lists/to the /var/wwwdirectory.

sudo mv phplist-${VER}/public_html/lists/ /var/www/phplist

Edit the phpList config.php file to configure database connection.

sudo vim /var/www/phplist/config/config.php

Set like below:


// what is your Mysql database server hostname
$database_host = 'localhost';

// what is the name of the database we are using
$database_name = 'phplist';

// what user has access to this database
$database_user = 'phplist';

// and what is the password to login to control the database
$database_password = 'StrongPassword';

Feel feel to explore other settings in the file. When done save and exit.

Configure Apache for phpList

Create new Apache VirtualHost configuration for phpList

$ sudo vim /etc/apache2/sites-enabled/phplist.conf
<VirtualHost *:80>
    ServerAdmin [email protected]
    DocumentRoot /var/www/phplist/
    DirectoryIndex index.php index.html
    LogLevel warn
    ErrorLog /var/log/apache2/phplist_error.log
    CustomLog /var/log/apache2/phplist_access.log combined

Check apache configuration syntax

$ sudo apachectl -t
Syntax OK

Change directory ownership permissions and restart apache

sudo chown -R www-data:www-data /var/www/phplist

Populate Database

Visit to finish the installation. Click the link on “Database has not been initialized. go to Initialise Database to continue” message.

Next, create a user to manage phpList

You have now finished the installation, and the next step is the configuration.{text-align:left} img{margin:0 auto 0 0}