Lewati ke isi

Debian Jessie

# info versi Debian yang digunakan
lsb_release -a

# mencadangkan direktori /etc/
sudo tar zcvf /home/deploy/cadangan/etc.bkp.tar.gz /etc/

# HTTPS transport, CA Cert, GnuPG key
sudo apt install -y apt-transport-https lsb-release ca-certificates software-properties-common

Repositori

# GnuPG key
# dotdeb.org - nginx, php, redis, apache, mysql, zabbix
wget https://dotdeb.org/dotdeb.gpg
sudo apt-key add dotdeb.gpg
# deb.sury.org - php
wget https://packages.sury.org/php/apt.gpg
sudo apt-key add apt.gpg
# spg1.mirror.digitalocean.com - mariadb
sudo apt-key adv --recv-keys --keyserver keyserver.ubuntu.com 0xcbcb082a1bb943db
# source
sudo su
# repositori nginx 1.10.x
echo "deb https://packages.dotdeb.org/ jessie all" > /etc/apt/sources.list.d/dotdeb.list
# repositori php 7.1.x
echo "deb https://packages.sury.org/php/ jessie main" > /etc/apt/sources.list.d/php.list
# repositori mariadb 10.1.x
echo "deb [arch=amd64,i386] http://sgp1.mirrors.digitalocean.com/mariadb/repo/10.1/debian jessie main" > /etc/apt/sources.list.d/mariadb.list
exit

# hapus berkas *.gpg
sudo rm -rf /tmp/*.gpg
# update
sudo apt-get update && sudo apt get upgrade -y

Nginx 1.10.x

Install Nginx

sudo apt install nginx -y
sudo nginx -v # menguji versi yang digunakan

Pengaturan Nginx dan FastCGI

nginx.conf

Buka berkas konfigurasi Nginx

sudo chown :deploy /etc/nginx/nginx.conf
sudo chmod g+w /etc/nginx/nginx.conf
sudo nano /etc/nginx/nginx.conf
user deploy; # pengguna lokal
worker_processes 2; # grep processor /proc/cpuinfo | wc -l

events {
    worker_connections 65536; # ulimit -n
    # aturan bakunya adalah, n * jumlah inti prosesor. n =
    multi_accept on;
}

http {
    # ...
    keepalive_timeout 15;
    server_tokens off;
    # ...
    client_max_body_size 64;
    # ...
    gzip_proxied any;
    gzip_comp_level 2;
    gzip_types text/plain text/css application/json application/javascript text/xml application/xml application/xml+rss text/javascript;
    # ...
}

fastcgi_params

Sunting sudo nano /etc/nginx/fastcgi_params

fastcgi_param  SCRIPT_FILENAME    $document_root$fastcgi_script_name;
sudo nginx -t
sudo /etc/init.d/nginx restart

PHP 7.x

Install

sudo apt install -y \
    php7.1-fpm \
    php7.1-common \
    php7.1-mysqlnd \
    php7.1-xmlrpc \
    php7.1-curl \
    php7.1-gd \
    php7.1-imagick \
    php7.1-cli \
    php-pear \
    php7.1-dev \
    php7.1-imap \
    php7.1-mcrypt

Uji dengan melihat informasi versi php7 yang digunakan dengan perintah sudo php-fpm7.1 -v

PHP 7.1.3-2+0~20170315222009.20+jessie~1.gbpc7e7dd (fpm-fcgi) (built: Mar 15 2017 23:00:03)
Copyright (c) 1997-2017 The PHP Group
Zend Engine v3.1.0, Copyright (c) 1998-2017 Zend Technologies
    with Zend OPcache v7.1.3-2+0~20170315222009.20+jessie~1.gbpc7e7dd, Copyright (c) 1999-2017, by Zend Technologies
sudo chown :deploy /etc/php/7.1/fpm/pool.d/www.conf
sudo chmod g+w /etc/php/7.1/fpm/pool.d/www.conf
sudo nano /etc/php/7.1/fpm/pool.d/www.conf

Menjalankan layanan php sebagai pengguna deploy

user = deploy
group = deploy
listen.owner = deploy
listen.group = deploy

Penyesuaian dengan nilai pada konfigurasi nginx.conf

sudo chown :deploy /etc/php/7.1/fpm/php.ini
sudo chmod g+w /etc/php/7.1/fpm/php.ini
sudo nano /etc/php/7.1/fpm/php.ini
; ...
upload_max_filesize = 64M
; ...
post_max_size = 64M
; ...
date.timezone = Asia/Jakarta
; ...
sudo php-fpm7.1 -t
[19-Mar-2017 00:33:23] NOTICE: configuration file /etc/php/7.1/fpm/php-fpm.conf test is successful
sudo /etc/init.d/php7.1-fpm restart

MariaDB 10.x

Install

Instalasi dan optimasi awal instalasi MariaDB

sudo apt-get install mariadb-server -y
sudo mysql_secure_installation

Tuning (opsional)

sudo nano /etc/mysql/my.cnf
# * Fine Tuning
#
key_buffer              = 16M
max_allowed_packet      = 16M
thread_stack            = 192K
thread_cache_size       = 8

# * Query Cache Configuration
#
query_cache_limit       = 1M
query_cache_size        = 20M

# Here you can see queries with especially long duration
slow_query_log_file = /var/log/mysql/mysql-slow.log
slow_query_log      = 1
long_query_time = 2
log_queries_not_using_indexes

[mysqld]
innodb_buffer_pool_instances = 1
innodb_buffer_pool_size = 79M
[mysqldump]
quick
quote-names
max_allowed_packet      = 16M

[mysql]
#no-auto-rehash # faster start of mysql but no tab completion

[isamchk]
key_buffer              = 16M
key_buffer_size         = 7M

[mariadb]
aria_pagecache_buffer_size = 2M

Server block

sudo rm /etc/nginx/sites-available/default
sudo rm /etc/nginx/sites-enabled/default
sudo nano /etc/nginx/nginx.conf
# ...
    include /etc/nginx/sites-enabled/*;

    server {
        listen 80 default_server;
        listen [::]:80 default_server;
        server_name _;
        return 444;
    }
# ...

Wordpress

Server blocks

Langsung untuk subdomain

cd /home/deploy/proxsisgroup.com
mkdir -p cache conf logs public security tmp
chmod -R 755 omc
cd /etc/nginx/sites-available/
sudo nano omc.proxsisgroup.com

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

    server_name omc2.proxsisgroup.com www.omc2.proxsisgroup.com;

    access_log /home/deploy/proxsisgroup.com/omc/logs/access.log;
    error_log /home/deploy/proxsisgroup.com/omc/logs/error.log;

    root /home/deploy/proxsisgroup.com/omc/public/;
    index index.php;

    location / {
        try_files $uri $uri/ /index.php?$args;
    }

    location ~ \.php$ {
        try_files $uri =404;
        fastcgi_split_path_info ^(.+\.php)(/.+)$;
        fastcgi_pass unix:/run/php/php7.1-fpm.sock;
        fastcgi_index index.php;
        include fastcgi_params;
    }
}

sudo ln -s /etc/nginx/sites-available/omc.proxsisgroup.com /etc/nginx/sites-enabled/omc2.proxsisgroup.com

Database

mysql -u root -p
CREATE DATABASE proxsis_pcg_dev CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_520_ci;
CREATE USER 'proxsis_pcg'@'localhost' IDENTIFIED BY 'YeZ3bf>X4u.3}yWj';
GRANT ALL PRIVILEGES ON proxsis_pcg_dev.* TO 'proxsis_pcg'@'localhost';
FLUSH PRIVILEGES;
exit;

WP-CLI

curl -O https://raw.githubusercontent.com/wp-cli/builds/gh-pages/phar/wp-cli.phar
php wp-cli.phar --info
PHP binary: /usr/bin/php7.1
PHP version:    7.1.3-2+0~20170315222009.20+jessie~1.gbpc7e7dd
php.ini used:   /etc/php/7.1/cli/php.ini
WP-CLI root dir:    phar://wp-cli.phar
WP-CLI packages dir:
WP-CLI global config:
WP-CLI project config:
WP-CLI version: 1.1.0
chmod +x wp-cli.phar
sudo mv wp-cli.phar /usr/local/bin/wp
wp # menguji perintah WP-CLI berjalan
cd ~/proxsisgroup.com/omc/public
wp core download
wp core config --dbname=proxsis_pcg_tax --dbuser=proxsis_pcg --dbpass='YeZ3bf>X4u.3}yWj'
wp core install --url=http://sby.proxsisgroup.com --title='Proxsis Surabaya - Dev' --admin_user=wpmin --admin_email=[email protected] --admin_password='z5u2&FRax&TFDSq3Gdr0gf!P'

Logrotation

#
mv access.log access.log.0
#
kill -USR1 `cat master.nginx.pid`
#
sleep 1
# do something with access.log.0
gzip access.log.0