PyroCMS adalah CMS modular yang kuat dan platform pengembangan yang dibangun dengan Laravel 5, yang memungkinkan Anda membangun situs web Laravel dan aplikasi yang lebih cepat.

Dalam tutorial ini, kami akan membahas proses instalasi PyroCMS pada sistem operasi CentOS 7 dengan menggunakan NGINX sebagai web server, MariaDB sebagai server database, dan secara opsional mengamankan transport layer dengan menggunakan klien acme.sh dan otoritas sertifikat Let’s Encrypt untuk menambahkan dukungan SSL.

Persyaratan PyroCMS

Untuk menginstal PyroCMS, pastikan sistem Anda memenuhi persyaratan berikut:

  • Setidaknya 1GB RAM atau Swap dikonfigurasi
  • PHP versi 7.0 atau lebih baru dengan extensi PDO, cURL, SQLite, OpenSSL, Mbstring, Fileinfo, Tokenizer, ekstensi PHP GD.
  • MariaDB
  • NGINX

Prasyarat

  • Sistem yang menjalankan sistem CentOS 7.
  • Masuk sebagai user non-root dengan hak sudo.

Langkah awal

Periksa versi CentOS Anda:

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

Siapkan zona waktu server, Pada contoh kali ini kita akan mengatur pada zona waktu menjadi Asia/Jakarta :

timedatectl list-timezones
sudo timedatectl set-timezone 'Asia/Jakarta'

Perbarui paket sistem operasi Anda (software). Ini adalah langkah pertama yang penting karena memastikan Anda memiliki pembaruan terbaru dan perbaikan keamanan untuk paket perangkat lunak default sistem operasi Anda:

sudo yum update -y

Instal beberapa paket penting yang diperlukan untuk administrasi dasar sistem operasi CentOS:

sudo yum install -y curl wget vim git unzip socat bash-completion epel-release

Langkah 1 – Install PHP dan PHP extensions

Setup Webtatic YUM repo:

sudo rpm -Uvh https://mirror.webtatic.com/yum/el7/webtatic-release.rpm

Install PHP dan juga PHP extensions yang diperlukan :

sudo yum install -y php72w php72w-cli php72w-fpm php72w-mysqlnd php72w-curl php72w-sqlite3 php72w-mbstring php72w-gd php72w-xml

Untuk menampilkan modul PHP yang telah terkompilasi, anda dapat menjalankan :

php -m

ctype
curl
exif
fileinfo
. . .
. . .

Periksa versi PHP :

php --version
# PHP 7.2.19 (cli) (built: Jan 12 2019 12:47:33) ( NTS )
# Copyright (c) 1997-2018 The PHP Group
# Zend Engine v3.0.0, Copyright (c) 1998-2017 Zend Technologies
# with Zend OPcache v7.2.14, Copyright (c) 1999-2018, by Zend Technologies

Start dan aktifkan PHP-FPM service dengan perintah :

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

Langkah 2 – Install MariaDB dan Buat Database untuk PyroCMS

Install MariaDB dari MariaDB repository. Langkah pertama kita perlu mengkonfigurasi repo untuk MariaDB

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

Copy dan paste konfigurasi berikut ke /etc/yum.repos.d/MariaDB.repo :

[mariadb]
name = MariaDB
baseurl = https://yum.mariadb.org/10.2/centos7-amd64
gpgkey=https://yum.mariadb.org/RPM-GPG-KEY-MariaDB
gpgcheck=1

Install MariaDB:

sudo yum install -y MariaDB-server MariaDB-client

Periksa versi MariaDB dengan menjalankan perintah :

mysql --version
# mysql Ver 15.1 Distrib 10.2.13-MariaDB, for Linux (x86_64) using readline 5.1

Start dan aktifkan MariaDB service agar berjalan otomatis ketika sistem reboot:

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

Demi keamanan, jalankan perintah berikut:

mysql_secure_installation

Perintah ini akan mengubah kata sandi root, menghapus pengguna anonim, melarang login root dari jarak jauh dan menghapus database pengujian

    Enter current password for root (enter for none):
    Set root password? [Y/n]: N
    Remove anonymous users? [Y/n]: Y
    Disallow root login remotely? [Y/n]: Y
    Remove test database and access to it? [Y/n]:  Y
    Reload privilege tables now? [Y/n]:  Y

Setelah MariaDB diamankan, masuk ke shell MariaDB dengan perintah berikut:

sudo mysql -u root -p
# Enter password

Berikan kata sandi root Anda, lalu buat database dan user database untuk PyroCMS dengan perintah berikut:

CREATE DATABASE dbname;
GRANT ALL ON dbname.* TO 'username' IDENTIFIED BY 'G4nt!_d3n9@n_Pa$$w0rd';
FLUSH PRIVILEGES;

ganti kata dbname (untuk nama database) dan username serta G4nt!_d3n9@n_Pa$$w0rd dengan kata sandi pilihan Anda.

Exit dari MariaDB shell:

quit

Langkah 3 – Instal Acme.sh client dan install sertifikat Let’s Encrypt

Mengamankan situs web Anda dengan HTTPS sangat penting, ini adalah praktik yang baik untuk mengamankan lalu lintas situs Anda. Untuk mendapatkan sertifikat SSL dari Let’s Encrypt, kita akan menggunakan klien Acme.sh.

Acme.sh adalah perangkat lunak unix shell murni untuk mendapatkan sertifikat SSL dari Let’s Encrypt dengan tanpa dependensi.

Download dan install Acme.sh:

sudo su - root
git clone https://github.com/Neilpang/acme.sh.git
cd acme.sh 
./acme.sh --install --accountemail [email protected]
source ~/.bashrc
cd ~

periksa versi Acme.sh :

acme.sh --version
# v2.8.1

Dapatkan sertifikat RSA dan ECC/ECDSA untuk domain/hostname Anda:

# RSA 2048
acme.sh --issue --standalone -d example.com --keylength 2048
# ECDSA
acme.sh --issue --standalone -d example.com --keylength ec-256

Jika ingin membuat sertifikat palsu untuk pengujian, Anda dapat menambahkan flag--stagingke perintah di atas.

Untuk list semua sertifikat, jalankan perintah :

acme.sh --list

Buat direktori untuk menyimpan sertifikat Anda. Kita akan menggunakan direktori /etc/letsencrypt

mkdir -p /etc/letsencrypt/example.com
sudo mkdir -p /etc/letsencrypt/example.com_ecc

Install/copy sertifikat ke direktori /etc/letsencrypt.

# RSA
acme.sh --install-cert -d example.com \ 
        --cert-file /etc/letsencrypt/example.com/cert.pem \
        --key-file /etc/letsencrypt/example.com/private.key \
        --fullchain-file /etc/letsencrypt/example.com/fullchain.pem \
        --reloadcmd "sudo systemctl reload nginx.service"

# ECC/ECDSA
acme.sh --install-cert -d example.com --ecc \
        --cert-file /etc/letsencrypt/example.com_ecc/cert.pem \
        --key-file /etc/letsencrypt/example.com_ecc/private.key \
        --fullchain-file /etc/letsencrypt/example.com_ecc/fullchain.pem \
        --reloadcmd "sudo systemctl reload nginx.service"

Setelah menjalankan perintah di atas, certificates dan keys akan berada di:

  • untuk RSA di direktori : /home/username/example.com.
  • untuk ECC/ECDSA di direktori : /home/username/example.com_ecc.

Semua sertifikat akan diperpanjang secara otomatis setiap 60 hari.

Setelah mendapatkan sertifikat, keluar dari user root dan kembali ke user biasa dengan hak sudo :

exit

Langkah 4 – Instal dan Konfigurasi Nginx

PyroCMS dapat bekerja dengan baik dengan banyak web server. Dalam tutorial ini, kita akan menggunakan Nginx.

Instal NGINX:

sudo apt install nginx

Periksa versi NGINX :

nginx -v

Start dan enable Nginx service menggunakan perintah :

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

Selanjutnya, konfigurasikan NGINX untuk PyroCMS . Kita akan membuat server block untuk PyroCMS dan tambahkan konfigurasi berikut.

sudo vim /etc/nginx/conf.d/pyro.conf

Copy dan paste konfigurasi berikut :

server {
  listen 80;
  listen 443 ssl;
  server_name example.com;
  index index.php index.html;
  root /var/www/pyro/public;

  ssl_certificate /etc/letsencrypt/status.example.com/fullchain.cer;
  ssl_certificate_key /etc/letsencrypt/status.example.com/status.example.com.key;
  ssl_certificate /etc/letsencrypt/status.example.com_ecc/fullchain.cer;
  ssl_certificate_key /etc/letsencrypt/status.example.com_ecc/status.example.com.key;
  
  location / {
    try_files $uri $uri/ /index.php?$args;
  }

  location ~ \.php$ {
    include fastcgi_params;
    fastcgi_pass 127.0.0.1:9000;
    fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
    fastcgi_index index.php;
  }
}

Aktifkan konfigurasi pyro.conf dengan membuat symlink ke direktori sites-enabled  :

sudo ln -s /etc/nginx/sites-available/pyro.conf /etc/nginx/sites-enabled/

Periksa konfigurasi NGINX untuk melihat tidak ada syntax errors

sudo nginx -t

Reload NGINX service:

sudo systemctl reload nginx.service

Langkah 5 – Install Composer

Install Composer, PHP dependency manager :

php -r "copy('https://getcomposer.org/installer', 'composer-setup.php');"

php -r "if (hash_file('sha384', 'composer-setup.php') === 'a5c698ffe4b8e849a443b120cd5ba38043260d5c4023dbf93e1558871f1f07f58274fc6f4c93bcfd858c6bd0775cd8d1') { echo 'Installer verified'; } else { echo 'Installer corrupt'; unlink('composer-setup.php'); } echo PHP_EOL;"

php composer-setup.php

php -r "unlink('composer-setup.php');"

sudo mv composer.phar /usr/local/bin/composer

Periksa versi Composer :

composer --version
# Composer version 1.9.0 2019-08-02 10:52:10

NOTE: Perintah instalasi komposer kemungkinan akan berubah di masa mendatang, jadi periksa https://getcomposer.org/download/ untuk perintah yang paling mutakhir jika perintah di atas tidak berfungsi.

Langkah 6 – Install dan Konfigurasi PyroCMS

Buat root direktori untuk Pico CMS, direktori ini merupakan tempat di mana Pico CMS menyimpan semua data dan file dari CMS.

sudo mkdir -p /var/www/pyro

Ubah kepemilikan dari direktori /var/www/pico menjadi  [username_anda]:

sudo chown -R [username_anda]:[username_anda] /var/www/pyro

Note : Jangan lupa untuk mengganti username_anda dengan nama pengguna Anda di sistem lokal.

Masuk ke direktori document root :

cd /var/www/pyro

Download stable release terbaru dari PyroCMS via composer:

composer create-project pyrocms/pyrocms .

Ubah kepemilikan direktori /var/www/pyro menjadi www-data.

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

kemudian jalankan perintah berikut dan periksa user dan group, jika nilai dari user dan group masih apache, ubah menjadi nginx

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

lihat dan periksa konfigurasi berikut :

user = nginx
group = nginx

Langkah terakhir, restart PHP-FPM service agar perubahan ini diterapkan:

sudo systemctl restart php-fpm.service

Langkah 7 – Selesaikan Setup PyroCMS

Akses situs Anda di web browser melalui nama domain atau alamat IP dan ikuti panduan instalasi web PyroCMS.

pyro web installer

Setelah mengisi semua informasi yang diperlukan, instalasi PyroCMS telah selesai.