Install Wordpress dengan php7.0, Nginx, PageSpeed dan MariaDB pada Debian 8

Catatan : semua perintah yang dilakukan menggunakan user root

Disini kita akan menggunakan repo dari dotdeb.org, tambahkan ke source apt dengan perintah

echo "deb http://packages.dotdeb.org jessie all" | tee -a /etc/apt/sources.list.d/dotdeb.list
echo "deb-src http://packages.dotdeb.org jessie all" | tee -a /etc/apt/sources.list.d/dotdeb.list
wget -qO - http://www.dotdeb.org/dotdeb.gpg | apt-key add -

Lakukan update dan install paket - paket nya

apt-get update
apt-get install -y nginx nginx-extras php7.0-cli php7.0-curl php7.0-dev php7.0-zip php7.0-fpm php7.0-gd php7.0-xml php7.0-mysql php7.0-mcrypt php7.0-mbstring php7.0-opcache mariadb-server mariadb-client

Ketika anda diminta untuk membuat root password untuk MariaDB, kosongkan saja dengan langsung menekan enter. Permintaan untuk membuat root password ini akan muncul sebanyak dua kali.

Tunggu sampai proses instalasi selesai.

Mengamankan instalasi MariaDB sekaligus mengatur password untuk root MariaDB

mysql_secure_installation

Enter current password for root (enter for none) : [ENTER]

Set root password? [Y/n] : Y

New password: PASSWORD_ANDA
Re-enter new password: PASSWORD_ANDA

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

Lakukan beberapa konfigurasi pada nginx, saya menggunakan editor nano

nano /etc/nginx/nginx.conf

Tambakan pada blok http atau lepas tag komen (#) jika sudah ada

gzip_vary on;
gzip_proxied any;
gzip_comp_level 6;
gzip_buffers 16 8k;
gzip_http_version 1.1;
gzip_types text/plain text/css application/json application/javascript text/xml application/xml application/xml+rss text/javascript;

client_body_buffer_size 10K;
client_header_buffer_size 1k;
client_max_body_size 8m; # sesuaikan dengan keinginan anda
large_client_header_buffers 4 16k;
#prevent upstream sent too big header while reading response header from upstream errors with buffers
fastcgi_buffers 16 16k;
fastcgi_buffer_size 32k;

add_header X-Frame-Options SAMEORIGIN;
add_header X-Content-Type-Options nosniff;
add_header X-XSS-Protection "1; mode=block";

include /etc/nginx/naxsi_core.rules;

pagespeed on;
pagespeed FileCachePath /var/ngx_pagespeed_cache;

Buat direktori untuk cache pagespeed dan ubah kepemilikannya

mkdir -p /var/ngx_pagespeed_cache
chown -R www-data:www-data /var/ngx_pagespeed_cache

Buat direktori untuk meletakkan script wordpress nya :

mkdir -p /home/public_html/blogsaya.com

catatan : blogsaya.com adalah contoh domain yang akan saya gunakan untuk blog wordpress saya.

Buat virtualhost baru untuk blogsaya.com

nano /etc/nginx/sites-available/blogsaya.com.conf

Isi dengan

server {
    server_name www.blogsaya.com blogsaya.com;
    listen 80;
    listen [::]:80; # jika server punya ipv6
    port_in_redirect off;
    access_log   /var/log/nginx/blogsaya.com.access.log;
    error_log    /var/log/nginx/blogsaya.com.error.log error;

    root /home/public_html/blogsaya.com/;
    index index.php index.html;

location ~ "\.pagespeed\.([a-z]\.)?[a-z]{2}\.[^.]{10}\.[^.]+" { add_header "" ""; }
location ~ "^/ngx_pagespeed_static/" { }
location ~ "^/ngx_pagespeed_beacon" { }

    # Lepas tag komentar jika wordpressnya menggunakan slug
    #location / {
    #    try_files $uri $uri/ /index.php?$args;
    #}

    # Deny public access to wp-config.php
    location ~* wp-config.php {
        deny all;
    }

    # Cache static files for as long as possible
    location ~*.(ogg|ogv|svg|svgz|eot|otf|woff|mp4|ttf|css|rss|atom|js|jpg|jpeg|gif|png|ico|zip|tgz|gz|rar|bz2|doc|xls|exe|ppt|tar|mid|midi|wav|bmp|rtf|cur)$ {
        expires max;
        log_not_found off;
        access_log off;
    }

    location ~ \.php$ {
        try_files $uri =404;
        include fastcgi_params;
        fastcgi_pass unix:/run/php/php7.0-fpm.sock;
        fastcgi_split_path_info ^(.+\.php)(.*)$;
        fastcgi_param  SCRIPT_FILENAME $document_root$fastcgi_script_name;
    }
}

Buat simbolik link agar virtualhost yang barusan kita buat menjadi aktif

ln -s /etc/nginx/sites-available/blogsaya.com.conf /etc/nginx/sites-enabled/

Konfigurasi php.ini

nano /etc/php/7.0/fpm/php.ini

Tambahkan atau ubah jika sudah ada menjadi

cgi.fix_pathinfo=0
upload_max_filesize = 8M #sesua dengan konfigurasi nginx sebelumnya
max_execution_time = 60
max_input_vars = 5000

Konfigurasi opcache

nano /etc/php/7.0/mods-available/opcache.ini

Tambahkan atau ubah jika sudah ada

zend_extension=opcache.so
opcache.memory_consumption=128 # MB, adjust to your needs
opcache.max_accelerated_files=10000 # Adjust to your needs
opcache.max_wasted_percentage=10 # Adjust to your needs
opcache.validate_timestamps=1

Restart service

/etc/init.d/mysql restart
/etc/init.d/nginx restart
/etc/init.d/php7.0-fpm restar

Pindah ke direktori blog yang akan di install wordpress

cd /home/public_html/blogsaya.com

Download wordpress terbaru, extrak, lalu ubah kepemilikannya

wget https://wordpress.org/latest.tar.gz

tar -zxvf latest.tar.gz
mv wordpress/* /home/public_html/blogsaya.com
rm -r wordpress
chown -R www-data:www-data /home/public_html/blogsaya.com

Tunggu beberapa saat sampai proses propagasi dns selesai. Tanda propagasi selesai adalah ketika anda melakukan ping ke alamat domain tersebut, maka akan di reply dengan alamat IP server anda.

Sambil menunggu, kita buat dulu database untuk blognya

mysql -u root -p
Enter password:PASSWORD_ROOT_DATABASE_ANDA
create database blogsaya;
\q

blogsaya adalah nama database yang dibuat.

Dengan asumsi bahwa propagasi telah selesai, akses ke alamat domain anda, contohnya saya mengakses http://blogsaya.com

Akan muncul tampilan seperti ini :

Klik Let's go!

 

Database Name : nama database yang anda buat sebelumnya
Username : root
Password : root password mariadb yang dibuat sebelumnya

lalu klik Submit

Klik Run the install

Site Title : Nama website anda
Username : Username yang anda inginkan untuk login ke blog
Password : Sandi yang andak inginkan untuk login ke blog
Your Email : Alamat email anda

Klik Install WordPress

SELESAI

Posted under Webserver