(Last Updated On: 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:

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 mariadb.org 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)

MariaDB [(none)]> FLUSH PRIVILEGES;
Query OK, 0 rows affected (0.001 sec)

MariaDB [(none)]> quit
Bye

Step 3: Download and Install phpList

Download the latest release of phpList using the link http://www.phplist.com/download. As of the writing of this article, the latest version is 3.3.3

Download and extract the archive.

export VER="3.3.3"
wget https://sourceforge.net/projects/phplist/files/phplist/${VER}/phplist-${VER}.tgz
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>
    ServerName phplist.example.com
    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
</VirtualHost>

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 http://phplist.example.com/admin/ 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.