How to Install ProcessWire CMS on Ubuntu 20.04

ProcessWire is a free and open-source content management system (CMS). It’s a PHP-based platform that can be used as a standalone or as a module for other platforms like Drupal and WordPress.

ProcessWire provides you with different features to build websites, apps, and APIs that are secure, fast, flexible, and easy to use. It’s a nimble system that can be used for any type of website, including blogs, businesses, news sites, and even e-commerce apps.

Processwire is also faster than other CMS platforms. It’s built with Bootstrap and uses modern technologies like HTML5, AngularJS and CSS3 to make your app experience smoother and faster.

ProcessWire is a lightweight CMS. It’s very fast when working with page content because it doesn’t do anything unnecessary when editing or adding new pages before saving the changes. ProcessWire uses a lot less memory, so it’s a very efficient CMS that can be used on small and large devices.

The best thing about ProcessWire is its flexibility with zero learning curve. It has a very slim learning curve for most users, which makes it easy to work with from day one. In fact, many people who use Processwire for their personal blogs or businesses find it more user-friendly than WordPress or Drupal.

This guide explains the process of installing ProcessWire on an Ubuntu 20.04 system.

Prerequisites

In order to install Processwire, you will need an Ubuntu 20.04 server with root access and a non-root user account with sudo privileges.

This tutorial has been written using an Ubuntu 20.04 server, but the installation process is almost identical for all Linux distributions that run Apache and PHP 7 or higher.

Step 1. Updating the System

To begin, you will need to update your system software, so you have the latest version of packages installed. Run these commands in your terminal window to update the system.

sudo apt-get update && sudo apt-get upgrade -y

Once the update process is complete, you can proceed to the next step.

Step 2. Installing Apache Web Server

Apache provides a platform for running web applications that are written in languages like Perl, PHP and Python. It’s also designed to handle workloads that are more intense than those handled by the average Linux server.

ProcessWire is an open-source CMS that uses PHP as its scripting language, just like Drupal or WordPress. So if you want to use Processwire, you will need an Apache Web Server running on your machine with PHP enabled.

Run the following command to install Apache Web Server on Ubuntu 20.04.

sudo apt install -y apache2

Once the installation process is complete, you will have successfully installed Apache. Now, start and enable the Apache service so it will start on reboot.

sudo systemctl start apache2.service && sudo systemctl enable apache2.service

Run the command below to check its status.

sudo systemctl status apache2

You should see an output similar to this.

Apache web server installation

The Apache service is running, but the best way to test the installation, though, is by requesting a web page from the server. Open your favorite web browser and type the server’s IP address into the URL bar. Replace “YOUR-SERVER-IP” with your Ubuntu machine’s public IP address.

http://YOUR-SERVER-IP

The first time you visit a page on your web server, Apache will generate a default index file for your new site. If you see something like this, it means that Apache has been successfully installed on your machine.

Apache default page

Step 3. Installing MariaDB Database Server

Now that Apache is installed on your server, you will need to install a database server. MariaDB is a very popular database server that will be used to store information created by Processwire.

To install the latest version of MariaDB on your machine, run this command in the terminal.

sudo apt install -y mariadb-server mariadb-client -y

After the installation process is complete, run the below command to initialize MariaDB.

sudo systemctl start mariadb

Then run this command to secure your MariaDB database server with an administrator password of your choice.

sudo mysql_secure_installation

When prompted, leave the password blank and press Enter to proceed. When asked if you want to change the root password, press Y and Enter and then enter a new password of your choice. Set the password again in confirmation.

For the rest of the questions, you can press Enter to accept default values.

Output:

Secure MariaDB installation

To ensure the MariaDB server is running correctly run the command below.

sudo systemctl status mariadb

You should see something like this.

Check MariaDB status

Step 4. Installing PHP

PHP is a scripting language that is used to create dynamic web pages. ProcessWire works with PHP 7.1 or later, so you will need to install a recent version of PHP on your Ubuntu machine. In this guide, we will install PHP 7.4 and the required modules for Processwire.

Run the below command to install PHP 7.4 and the required modules for Process Wire.

sudo apt -y install php7.4
sudo apt -y install php7.4-curl php7.4-xml php7.4-bcmath
sudo apt -y install php7.4-mysql php7.4-zip php7.4-gd php7.4-mbstring
sudo apt -y install php7.4-cli php7.4-json php7.4-common

Once the installation process is complete, run the command below to check the PHP version.

php -v

You should see an output similar to this.

Check PHP version

To test the PHP installation, you can create a php info file, put it into the web root directory, and browse it from your web browser.

To create a new php.info file, run this command in the terminal.

echo "<?php phpinfo(); ?>" | sudo tee /var/www/html/info.php

Then open your favorite web browser and type the server’s IP address followed by /info.php into the URL bar. Replace “YOUR-SERVER-IP” with your Ubuntu machine’s public IP address.

http://YOUR-SERVER-IP/info.php

You will get something like this when phpinfo() information is displayed in your browser.

PHP version info

Step 5. Creating ProcessWire Database and User

Before installing ProcessWire, you will need to create an empty database. ProcessWire needs a place to store its data, and a database is the most logical place for it.

First, log in to the MariaDB shell using the following command.

mysql -u root -p

Type your root password when prompt, press Enter

At the MariaDB prompt, create a new database for ProcessWire. Replace “processwire_db” with your desired database name.

CREATE DATABASE processwire_db;

Next, create a new user for ProcessWire. Replace “processwire_user” with your desired username. Replace “$trongp@ssword” with an actual password for your new user.

CREATE USER 'processwire_user'@'localhost' IDENTIFIED BY '$trongp@ssword';

Now, grant all privileges of your ProcessWire database to the new user using the following command.

GRANT ALL PRIVILEGES ON processwire_db.* TO 'processwire_user'@'localhost';

Next, we will flush the privileges of your user to apply new changes. Flush privileges ensure that your new user affects existing data in MariaDB tables so they can connect to ProcessWire.

FLUSH PRIVILEGES;

To exit the MariaDB shell, run the command below.

\q

Outputs:

Create database

Step 6. Configuring Apache Web Server for ProcessWire

In this step, we will configure the Apache web server to serve requested pages from PHP and ProcessWire. Complete the below steps to configure the Apache web server for ProcessWire.

First, let’s edit the default virtual host file.

sudo nano /etc/apache2/sites-enabled/000-default.conf

Add the following lines to your Apache virtual host file at the end of the file before the line </VirtualHost>.

<Directory /var/www>
  Options Indexes FollowSymLinks MultiViews
  AllowOverride All
  Order allow,deny
  Allow from all
  Require all granted
</Directory>

Once you are done, the file should look like this.

Configure apache

Save and close the file by pressing CTRL+X followed by Y and Enter.

The configuration file will take effect after you restart Apache. Now, run the command below to restart Apache.

sudo systemctl restart apache2

Run the following command to ensure the mod_rewrite module is enabled in Apache. We need mod_rewrite to serve the ProcessWire page from PHP. mod_rewrite allows the Apache server to rewrite requested URLs before they are passed onto the web browser.

sudo a2enmod rewrite

Restart Apache webserver to apply the changes using the below command.

sudo systemctl restart apache2

Step 6. Installing ProcessWire CMS

Now we are ready to download and install ProcessWire CMS.

Downloading ProcessWire is very simple using the wget command, which comes preinstalled with most Linux distributions like Ubuntu. You can download the latest version of ProcessWire from Github using the command below on your terminal window. We will put the downloaded file in the /var/www directory.

cd /var/www/html
sudo rm index.html
sudo wget https://github.com/processwire/processwire/archive/master.zip

Once the downloads are completed, extract the zip file using the unzip command and move the extracted files to the /var/www/html directory.

sudo apt install unzip -y
sudo unzip master.zip
sudo mv processwire-master/* /var/www/html

Now, set the proper permissions to the ProcessWire directory and all its subdirectories using the chown command.

sudo chown -R www-data:www-data * .

Lastly, restart Apache Web Server to apply the changes.

sudo systemctl restart apache2

Now, you can navigate your browser to http://YOUR-SERVER-IP and you will be prompted with the ProcessWire installation wizard page. Click on the Get Started button to continue with the ProcessWire installation.

ProcessWire installer

On the next page, select Default (Beginner Edition) and click on Continue.

default settings

Keep the default on the Compatibility Check page and click on Continue To Next Step

Compatibility check

On the next page:

  • MySQL Database: enter your MariaDB database username, password and name of the database you created for ProcessWire.
  • Time Zone: select a time zone for your ProcessWire installation.

Database settings

  • File Permissions: keep the default value.
  • HTTP Host Names: provide your hostname if you have a DNS hostname. If you have two or more hostnames, put one hostname per line. Put in the server’s IP address if you don’t have any hostname.

File permissions

  • Debug mode: enable Debug mode if you are developing/testing ProcessWire on your server. Otherwise, keep the default value as Disabled. Click on Continue to proceed with the installation.

Debug mode

On the next page:

  • Admin Panel: keep the Admin Login URL as the default value as processwire
  • Admin Account: provide an admin username, password, and email address to use when logging in to the Admin Panel.

Admin panel

  • Cleanup: keep the default value as checked. Click on the Continue button to proceed with the installation.

Cleanup

On the next page, click on Login To Admin.

Login to admin panel

You will be taken to the login page for ProcessWire. Enter the admin username and password you provided during installation. Click on Login. Login

Once the authorization is successful, you will be presented with the ProcessWire dashboard/Control Panel. From here, you can begin exploring ProcessWire features, installing third-party modules/extensions or building your own website.

ProcessWire CMS

The ProcessWire installation is now completed.

Conclusion

In this tutorial, you have learned how to install ProcessWire CMS on Ubuntu 20.04 LTS server. You can now begin creating your own website or continue exploring Processwire features.