Installing Pagekit CMS on CentOS 7
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.