Installing Pagekit CMS on CentOS 7

Updated on April 6, 2018
Installing Pagekit CMS on CentOS 7 header image

Pagekit is an open source CMS written in PHP. The Pagekit source code is publicly hosted on GitHub. This guide will show you how to install Pagekit CMS on a fresh CentOS 7 Vultr instance.

Requirements

Make sure your server meets the following requirements.

  • Apache 2.2+ or NGINX.
  • MySQL Server 5.1+ or SQLite 3.
  • PHP Version 5.5.9+.
  • Required PHP extensions: JSON, Session, ctype, Tokenizer, SimpleXML, DOM, mbstring, PCRE 8.0+, ZIP and PDO with MySQL or SQLite drivers.
  • Optional PHP extensions: cURL, iconv and XML Parser, as well as APC or XCache for caching.

Before you begin

Check the OS version.

cat /etc/centos-release
# CentOS Linux release 7.4.1708 (Core)

Create a new non-root user account with sudo access and switch to it.

useradd -c "John Doe" johndoe && passwd johndoe
usermod -aG wheel johndoe
su - johndoe

NOTE: Replace johndoe with your username.

Set up the timezone.

timedatectl list-timezones
sudo timedatectl set-timezone 'Region/City'

Ensure that your system is up to date.

sudo yum update -y

Install required and useful packages.

sudo yum install -y wget vim unzip bash-completion

Step 1 - Install NGINX

Pagekit CMS will work fine with Apache or NGINX. In this tutorial, we will use latest NGINX software.

Become a root user for a moment,

sudo su - root

Create a new file nginx_mainline.repo in the /etc/yum.repos.d/ directory.

cat > /etc/yum.repos.d/nginx_mainline.repo

Then copy/paste the following lines to your terminal window and hit CTRL + D.

[nginx]
name=nginx repo
baseurl=https://nginx.org/packages/mainline/centos/7/$basearch/
gpgcheck=1
enabled=1

Logout from root user.

logout

Download the NGINX repository PGP key.

wget https://nginx.org/keys/nginx_signing.key
sudo rpm --import nginx_signing.key

Install NGINX.

sudo yum install -y nginx

Start and enable NGINX.

sudo systemctl enable nginx.service && sudo systemctl start nginx.service

Step 2 - Install MySQL or MariaDB

Pagekit supports MySQL and SQLite databases. In this tutorial, however, we will be using the MariaDB database which is a drop in replacement of MySQL.

Create MariaDB YUM repository for CentOS.

sudo vim /etc/yum.repos.d/MariaDB.repo

Copy/paste the following into it.

# MariaDB 10.2 CentOS repository list - created 2017-12-11 23:19 UTC
# http://downloads.mariadb.org/mariadb/repositories/
[mariadb]
name = MariaDB
baseurl = http://yum.mariadb.org/10.2/centos7-amd64
gpgkey=https://yum.mariadb.org/RPM-GPG-KEY-MariaDB
gpgcheck=1

After the file is in place, install MariaDB.

sudo yum install -y MariaDB-server MariaDB-client

Start and enable MariaDB.

sudo systemctl enable mariadb.service && sudo systemctl start mariadb.service

Run the mysql_secure_installation script to improve the security of your MariaDB installation and to set root user password.

sudo mysql_secure_installation

The last step is to create new database and user for Pagekit CMS.

Login to MariaDB.

mysql -u root -p

Create database and user.

CREATE DATABASE db_name;
GRANT ALL ON db_name.* TO 'user' IDENTIFIED BY 'password';
FLUSH PRIVILEGES;

Exit from MariaDB.

exit

Step 3 - Install PHP and required PHP extensions, MySQL and NGINX

CentOS does not provide the latest PHP version in its default software repositories. We'll need to add a Webtatic YUM repo. Follow this Vultr guide for instructions on that.

Download and install PHP 7.1 and required PHP extensions. We will also install optional PHP extensions.

sudo yum install -y php71w-cli php71w-fpm php71w-common php71w-mbstring php71w-zip php71w-mysql php71w-sqlite3 php71w-curl php71w-simplexml php71w-xml

Check the PHP version.

php --version
# PHP 7.1.11 (cli) (built: Oct 29 2017 17:26:51) ( NTS )
# Copyright (c) 1997-2017 The PHP Group
# Zend Engine v3.1.0, Copyright (c) 1998-2017 Zend Technologies

Enable and start php-fpm.service.

sudo systemctl enable php-fpm.service && sudo systemctl start php-fpm.service

Step 4 - Configure NGINX

Run sudo vi /etc/nginx/conf.d/pagekit.conf and copy/paste the following.

server {
    listen [::]:80;
    listen 80;

    server_name example.com;

    index index.php index.html;
    root /var/www/pagekit;
    
    # PHP setup with query string support
    location / {
        try_files $uri $uri/ /index.php?$args;
    }
    
    location ~ \.php$ {
        try_files $uri =404;
        fastcgi_pass 127.0.0.1:9000; # Instead of TCP connection, you can listen on unix socket
        fastcgi_index index.php;
        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
        include fastcgi_params;
        fastcgi_param  HTTP_MOD_REWRITE  On;
    }
}

Test the NGINX configuration.

sudo nginx -t

Reload NGINX.

sudo systemctl reload nginx.service 

Step 5 - Download and install Pagekit CMS

Create a document root directory.

sudo mkdir -p /var/www/pagekit

Change ownership of the /var/www/pagekit directory to johndoe.

sudo chown -R johndoe:johndoe /var/www/pagekit

Navigate to the document root.

cd /var/www/pagekit

Download the latest stable release of Pagekit CMS from the command line.

wget https://github.com/pagekit/pagekit/releases/download/1.0.13/pagekit-1.0.13.zip

Unzip Pagekit CMS and remove downloaded zip file.

unzip pagekit-1.0.13.zip
rm pagekit-1.0.13.zip

Change ownership of the /var/www/pagekit directory to nginx.

sudo chown -R nginx:nginx /var/www/pagekit

Open /etc/php-fpm.d/www.conf file and set user and group to nginx.

sudo vim /etc/php-fpm.d/www.conf

# user = nginx
# group = nginx

Save the file and restart php-fpm.service.

sudo systemctl restart php-fpm.service

The final step is to open your domain/IP in the web browser and follow the Pagekit CMS installation wizard.

You now have Pagekit installed on your CentOS 7 server. To access the admin area of Pagekit CMS just append /admin to your site's IP/URL.