Cara Migrasi Website WordPress di VPS

cara migrasi website wordpress di VPS

Saya suka pindah-pindah server untuk website yang saya kelola pribadi, lain halnya dulu saya menggunakan Shared Hosting yang jika kita memutuskan untuk pindah ke provider web hosting yang lain kita tak perlu dibuat repot untuk urusan move file dari host lama ke host baru karena biasanya provider Web Hosting sudah menggratiskannya.

Langkah-langkah cara migrasi website WordPress di VPS, pada tutorial ini peralatan yang digunakan adalah Putty untuk login via SSH ke VPS.

Pada VPS Lama

1. Login SSH

Login ke VPS via SSH menggunakan Software Putty

2. Backup

Backup Database dan semua file, Cara untuk membackup website WordPress baca: Disini.


Pada VPS Baru

Persiapan-persiapan

Adapun hal yang peting yaitu menyamakan versi PHP dan Database yang digunakan pada server VPS lama. Hendaknya versi PHP dan Database pada server baru mengikuti versi pada VPS lama.

Artikel terkait : Cara Upgrade PHP dan Mysql Database di VPS CentOS

Kemudian sesuaikan konfigurasi Nginx, PHP/PHP-FPM untuk settingan WordPress SEO. Jika sudah ready mari kita mulai gan tutorial selanjutnya.

1. Login SSH

Login ke VPS via SSH menggunakan Software Putty

2. Download File Backup

Menggunakan command wget, download file backup yang ada di server VPS lama, tapi sebelumnya masuk dulu ke direktori root website agan, pada kasus saya dokumen root website saya ada di /var/www/html.

cd /var/www/
wget http://vps-lama.com/backup_website_wordpress.tar

 

3. Ekstrak File Backup

Selesai di download via wget langkah selanjutnya adalah mengekstrak file-file dan folder yang ada pada arsip file backup tersebut.

tar -xvf backup_website_wordpress.tar

 

4. Import MySQL Database

Buat sebuah Nama Database dan User Database dengan User Password yang identik dengan konfigurasi WordPress pada server lama. Untuk mengetahuinya bisa melihat wp-config.php dengan cara

cat /var/www/html/wp-config.php

Jika Database telah dibuat selanjutnya import sql dengan command line berikut ini.

mysql -u root -p -e "source /var/www/html/file_backup_2015.sql" NamaDatabaseAgan

Masukkan password MySQL jika diminta kemudian Enter.

Selesai.

Selamat mencoba gan, Semoga Berhasil, gan!.

Cara Backup Website WordPress di VPS

cara backup website wordpress di vps

Tutorial cara backup website WordPress di VPS dari mulai Database SQL dan file-file yang ada di dokumen root. Pada tutorial ini, system VPS yang digunakan Linux CentOS 6, Nginx, PHP dan MySQL atau dikenal dengan singkatan LEMP, Kemudian software yang digunakan untuk login ke server via SSH adalah Putty. Oke mari kita mulai.

Login via SSH Putty

Buka program Putty atau bagi agan yang belum punya silahkan download di website resmi Putty: http://www.chiark.greenend.org.uk/~sgtatham/putty/download.html

kemudian login seperti biasa, nah untuk agan yang newbie pelajari bagaimana cara menggunakan Putty disini.

Backup Database MySQL

Setelah berhasil login via SSH dengan Putty, masuk ke direktori root website agan, sebagai contoh root direktori website saya ada di /var/www/html/

cd /var/www/html

Kemudian lakukan backup database MySQL dengan command berikut: (sesuaikan NamaDatabase dengan nama database agan)

mysqldump -u root –p NamaDatabase > file_backup_2015.sql

Masukkan MySQL password agan jika diminta, kemudian enter.
Nah jika berhasil maka tidak akan keluar pesan apapun sebaliknya jika gagal maka akan keluar pesan terkait.

Check SQL File Backup

Kemudian lakukan check apakah file: file_backup_2015.sql tersebut benar-benar sudah ada di root direktori, dengan cara command line berikut:

ls

Dengan demikian file backup Database MySQL sekarang berada di /var/www/html/file_backup_2015.sql

Backup WordPress

Backup WordPress dan semua file yang ada di direktori /var/www/html/, tapi sebelumnya masuk dulu ke direktori /var/www/

cd /var/www

Kemudian backup dengan kode berikut:

tar -cvf backup_website_wordpress.tar html

Tunggu sampai proses kompres file selesai. backup_website_wordpress.tar adalah nama file backup dan html adalah folder dimana semua file-file website agan.

Dengan cara kompres seperti diatas maka akan menghasilkan file arsip backup_website_wordpress.tar dengan struktur sebagai berikut:

├── html/
    ├── wp-admin
    ├── wp-content
    ├── wp-includes
    ├── index.php
    ├── license.txt
    ├── readme.html
    ├── robots.txt
    ├── wp-activate.php
    ├── wp-blog-header.php
    ├── wp-comments-post.php
    ├── wp-config-sample.php
    ├── wp-config.php
    ├── wp-cron.php
    ├── wp-links-opml.php
    ├── wp-load.php
    ├── wp-login.php
    ├── wp-mail.php
    ├── wp-settings.php
    ├── wp-signup.php
    ├── wp-trackback.php
    ├── xmlrpc.php
    ├── file_backup_2015.sql

Check File Backup

Backup selesai, check kembali apakah backup_website_wordpress.tar benar-benar sudah ada.

ls -i -ah

Nah sampai disini website WordPress agan sudah terbackup, baik script dan databasenya dan filenya bernama
backup_website_wordpress.tar yang ada di /var/www/

Download File Backup

Untuk mendownload file hasil backup bisa menggunakan Filezilla atau juga bisa menggunakan Web Browser Mozilla maupun Google Chrome. Jika ingin mendownload dengan Browser pindahkan file backup ke root direktori website agan, caranya sebagai berikut.

mv /var/www/backup_website_wordpress.tar /var/www/html/backup_website_wordpress.tar

Selanjutnya buka browser dan arahkan ke

http://nama-domain-agan.com/backup_website_wordpress.tar

Selesai, selamat mencoba Good Luck gan!.

Cara Setting Server Block Nginx CentOS 6 VPS

cara setting server block nginx centos

Server Block atau jika di Apache Server dikenal dengan Virtual Host. Dengan Server Block maka VPS bisa untuk melayani banyak domain dan keuntungan lain sebagai blogger pemula tentu ini juga akan menghemat pengeluaran daripada menyewa space lagi untuk domain yang lain. Pada kesempatan ini ane coba share bagaimana cara setting server block pada server nginx di CentOS VPS atau Virtual Host kemudian sebagai contoh ane sertakan konfigurasi untuk website yang menggunakan CMS WordPress. Tutorial ini cocok banget gan buat pemula yang ingin belajar lebih jauh tentang VPS khususnya yang menggunakan system Linux CentOS 6 dan Nginx.

Spesifikasi VPS ane:

CPU Core 1
RAM 512MB
Swap 256MB
50 GB HDD
2 TB Transfer
IPv4 1
IPv6 1
Port speed 1Gbps
Lokasi Los Angeles USA
Provider: Enzu / BudgetVM
Harganya : $25/year
Ane pakai untuk ngehost 3 domain.
Kalo agan pengen Order silahkan via ref ane aja Order Disini gan ya itung-itung amal gan 🙂

Oke berikut tutorial cara setting Server Block Nginx di CentOS 6 VPS:

Add Repository EPEL

Pertama tambahkan repo dari epel. Berikut cara untuk menambahkan epel repository, disesuaikan dengan versi Linux CentOS yang digunakan:

RHEL/CentOS 6 32-Bit

wget http://download.fedoraproject.org/pub/epel/6/i386/epel-release-6-8.noarch.rpm
rpm -ivh epel-release-6-8.noarch.rpm

Untuk RHEL/CentOS 6 64-Bit

wget http://download.fedoraproject.org/pub/epel/6/x86_64/epel-release-6-8.noarch.rpm
rpm -ivh epel-release-6-8.noarch.rpm

Remove HTTPD

Defaultnya CentOS telah terinstall HTTPD Server, karena kita akan pakai Nginx maka HTTPD tidak diperlukan lagi untuk itu Stop dan Remove dulu HTTPD bawaan OS, biar nantinya nggak konflik. Caranya dengan command berikut:

service httpd stop
yum remove httpd

Install Nginx

Selanjutnya install nginx kemudian menjalankan nginx dan test menggunakan browser.

yum install nginx -y

Start Nginx service

service nginx start

Buka browser coba buka IP VPS, hasilnya kira-kira seperti ini:

cara install nginx di centos

Otomatis start nginx ketika sistem direboot dengan command berikut.

chkconfig --levels 235 nginx on

Install MySQL

Install MySQL dengan kode berikut:

yum -y install mysql mysql-server

Buat agar MySQL Service otomatis berjalan ketika system reboot:

chkconfig --levels 235 mysqld on

Start MySQL dengan command line berikut

/etc/init.d/mysqld start

Setup security MySQL, ketik kode berikut dan ikuti langkah demi langkah.

mysql_secure_installation

Ketika diminta untuk memasukkan password pertama kali abaikan saja, langsung tekan Enter.

Kemudian Jika ada pertanyaan membuat password pilih Y kemudian enter dan ketik password yang anda inginkan. Pertanyaan selanjutnya jawab dengan Y kemudian Enter sampai instalasi selesai / berhasil:

Install PHP

Langkah selanjutnya menginstall PHP. Kode berikut akan otomatis menginstall php-fpm dan php-mysql

yum -y install php-fpm php-mysql

Kemudian PHP Module, Module berikut ini yang biasa ane install karena kadang-kadang saya butuh ngegrab website menggunakan CURL, seperti layanan API Flickr photo, Youtube API dan ngegrab website lain yang mengharuskan menggunakan module PHP SOAP. Module-module PHP ini termasuk module yang sering diinstall oleh banyak web developer. Namun jika anda tidak membutuhkannya bisa melewati langkah ini:

yum -y install php-gd php-imap php-ldap php-odbc php-pear php-xml php-xmlrpc php-mbstring php-mcrypt php-mssql php-snmp php-soap php-tidy curl curl-devel

Install APC untuk chacing dan mengoptimalkan kinerja script php. Lebih jauh tentang PHP PECL APC Baca di situs resmi.

yum -y install php-pecl-apc

Load PHP-FPM saat sistem reboot.

chkconfig php-fpm --levels 235 on

Edit konfig php.ini

vi /etc/php.ini

Cari line berikut, hilangkan tanda komen # dan ubah valuenya seperti berikut:

cgi.fix_pathinfo = 0
date.timezone = Asia/Jakarta
expose_php = Off

Konfigurasi

Langkah selanjutnya adalah berkutat dengan file konfig. Nah file-file untuk konfigurasi Nginx server block dan juga PHP-FPM adalah adalah sebagai berikut, ane urutkan biar mudah agan mencarinya:

  1. /etc/nginx/nginx.conf
  2. /etc/nginx/sites-available/*.conf
  3. /etc/php-fpm.d/www.conf

Konfigurasi Nginx.conf

Perhatikan pada bagian yang berwarna merah, include /etc/nginx/sites-enabled/*; Nah ini untuk membaca semua file *.conf (konfigurasi) yang ada di direktori /etc/nginx/sites-enabled/ untuk tiap domain yang nge-host di VPS agan nantinya.

# FIle ini letaknya di /etc/nginx/nginx.conf
# For more information on configuration, see:
#   * Official English Documentation: http://nginx.org/en/docs/
#   * Official Russian Documentation: http://nginx.org/ru/docs/

user              nginx;
worker_processes  4;

error_log  /var/log/nginx/error.log;
#error_log  /var/log/nginx/error.log  notice;
#error_log  /var/log/nginx/error.log  info;

pid        /var/run/nginx.pid;


events {
    worker_connections  1024;
}


http {
    include       /etc/nginx/mime.types;
    default_type  application/octet-stream;

    log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '
                      '$status $body_bytes_sent "$http_referer" '
                      '"$http_user_agent" "$http_x_forwarded_for"';

    access_log  /var/log/nginx/access.log  main;

    sendfile        on;
    #tcp_nopush     on;

    #keepalive_timeout  0;
    keepalive_timeout  30;
    
    # Untuk perfoma nginx terbaik
    gzip on;
    gzip_disable "MSIE [1-6]\.(?!.*SV1)";
    gzip_http_version 1.1;
    gzip_vary on;
    gzip_proxied any;
    gzip_comp_level 6;
    gzip_buffers 16 8k;
    gzip_types text/plain text/css application/json application/x-javascript text/xml application/xml application/xml+rss text/javascript application/javascript text/x-js;


    # Meload konfigurasi dari direktory sites-enabled
    include /etc/nginx/sites-enabled/*;

}

Konfigurasi Nginx Virtual Host

Kita akan membuat sebuah direktori baru didalam /etc/nginx/ yaitu direktori sites-available dan sites-enabled.

mkdir /etc/nginx/sites-{available,sites-enabled}

Kemudian Buat sebuah file baru didalam folder /etc/nginx/sites-available/ untuk setting konfigurasi domain yang ingin ditambahkan di VPS agan. misalnya domain: google.com, maka buat file dengan nama google.com.conf.

vi /etc/nginx/sites-available/google.com.conf

Jika agan menggunakan CMS WordPress setingan ini yang biasa ane pakai jadi agan bisa langsung copy-paste code berikut, tinggal ganti nama domain sesuai dengan domain agan.

# letaknya di : /etc/nginx/sites-available/google.com.conf
server {
        listen 80;
        server_name www.google.com;
        rewrite ^(.*) http://google.com$1 permanent;
}

server {
        listen 80;
        server_name google.com;

        client_max_body_size 5m;
        client_body_timeout 60;

        access_log /var/log/nginx/google.com-access;
        error_log /var/log/nginx/google.com-error error;

        root /var/www/html/google.com/;
        index  index.html index.php;

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

        ### security ###
        error_page 403 =404;
        location ~ /\. { access_log off; log_not_found off; deny all; }
        location ~ ~$ { access_log off; log_not_found off; deny all; }
        location ~* wp-admin/includes { deny all; }
        location ~* wp-includes/theme-compat/ { deny all; }
        location ~* wp-includes/js/tinymce/langs/.*\.php { deny all; }
        location /wp-includes/ { internal; }
        #location ~* wp-config.php { deny all; }
        location ~* ^/wp-content/uploads/.*.(html|htm|shtml|php)$ {
                types { }
                default_type text/plain;
        }

        ### disable logging ###
        location = /robots.txt { access_log off; log_not_found off; }
        location = /favicon.ico { access_log off; log_not_found off; }

        ### caches ###
        location ~* \.(jpg|jpeg|gif|css|png|js|ico|html)$ { access_log off; expires max; }
        location ~* \.(woff|svg)$ { access_log off; log_not_found off; expires 30d; }
        location ~* \.(js)$ { access_log off; log_not_found off; expires 7d; }

        ### php block ###
        location ~ \.php?$ {
                try_files $uri =404;
                include fastcgi_params;
                fastcgi_pass unix:/var/run/website.socket;
                fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
                fastcgi_intercept_errors on;
                fastcgi_split_path_info ^(.+\.php)(.*)$;
                #Prevent version info leakage
                fastcgi_hide_header X-Powered-By;
        }
}

Berdasarkan settingan diatas, berarti semua data domain google.com nantinya akan akan berada pada /var/www/html/google.com/.

Selanjutnya buat juga file konfigurasi untuk domain yang lain, caranya sama seperti langkah sebelumnya, misalnya saja domain google.net
Buat file google.net.conf di /etc/nginx/sites-available/

vi /etc/nginx/sites-available/google.net.conf

Kemudian copy-paste kode berikut dan sesuaikan dengan nama domain agan.

# letaknya di : /etc/nginx/sites-available/google.net.conf
server {
        listen 80;
        server_name www.google.net;
        rewrite ^(.*) http://google.net$1 permanent;
}

server {
        listen 80;
        server_name google.net;

        client_max_body_size 5m;
        client_body_timeout 60;

        access_log /var/log/nginx/google.net-access;
        error_log /var/log/nginx/google.net-error error;

        root /var/www/html/google.net/;
        index  index.html index.php;

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

        ### security ###
        error_page 403 =404;
        location ~ /\. { access_log off; log_not_found off; deny all; }
        location ~ ~$ { access_log off; log_not_found off; deny all; }
        location ~* wp-admin/includes { deny all; }
        location ~* wp-includes/theme-compat/ { deny all; }
        location ~* wp-includes/js/tinymce/langs/.*\.php { deny all; }
        location /wp-includes/ { internal; }
        #location ~* wp-config.php { deny all; }
        location ~* ^/wp-content/uploads/.*.(html|htm|shtml|php)$ {
                types { }
                default_type text/plain;
        }

        ### disable logging ###
        location = /robots.txt { access_log off; log_not_found off; }
        location = /favicon.ico { access_log off; log_not_found off; }

        ### caches ###
        location ~* \.(jpg|jpeg|gif|css|png|js|ico|html)$ { access_log off; expires max; }
        location ~* \.(woff|svg)$ { access_log off; log_not_found off; expires 30d; }
        location ~* \.(js)$ { access_log off; log_not_found off; expires 7d; }

        ### php block ###
        location ~ \.php?$ {
                try_files $uri =404;
                include fastcgi_params;
                fastcgi_pass unix:/var/run/website.socket;
                fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
                fastcgi_intercept_errors on;
                fastcgi_split_path_info ^(.+\.php)(.*)$;
                #Prevent version info leakage
                fastcgi_hide_header X-Powered-By;
        }
}

Mengaktifkan Virtual Host Direktif

Masuk ke direktori /etc/nginx/sites-enabled/ dimana kita akan membuat link konfigurasi dari file-file *.conf yang ada di folder /etc/nginx/sites-available/.

cd /etc/nginx/sites-enabled

Selanjutnya membuat link ke file yang ada di folder /etc/nginx/sites-available/.

ln -s /etc/sites-available/google.com.conf
ln -s /etc/sites-available/google.net.conf

Jika kelak agan ingin mengedit file konfigurasi virtual host, cukup dengan mengedit file yang ada di /etc/nginx/sites-available/, maka file konfigurasi yang ada di sites-enabled otomatis akan mengikuti update.

Konfigurasi PHP-FPM

Selanjutnya adalah mengedit file konfigurasi php-fpm letaknya ada di /etc/php-fpm.d/www.conf. Untuk jaga-jaga sebaiknya backup dulu file tersebut dengan cara me-rename menjadi file www.conf.bak:

mv /etc/php-fpm.d/www.conf.bak

Jika sudah dibakcup kemudian kita buat lagi, copy-paste kode berikut:

; letakknya di /etc/php-fpm.d/www.conf ini konfig default untuk nginx
[website]
listen = /var/run/website.socket
listen.owner = nginx
listen.group = nginx
listen.mode = 0660
user = nginx
group = nginx
request_slowlog_timeout = 5s
slowlog = /var/log/php-fpm/website.log
listen.allowed_clients = 127.0.0.1
pm = dynamic
pm.max_children = 10
pm.start_servers = 3
pm.min_spare_servers = 2
pm.max_spare_servers = 4
pm.max_requests = 400
listen.backlog = -1
pm.status_path = /status
request_terminate_timeout = 120s
rlimit_files = 131072
rlimit_core = unlimited
catch_workers_output = yes
php_value[session.save_handler] = files
php_value[session.save_path] = /var/lib/php/session
php_admin_value[error_log] = /var/log/php-fpm/website-error.log
php_admin_flag[log_errors] = on

Oke dah.. Selesai gan sekarang waktunya test. Restart service nginx dan php-fpm

restart service nginx
restart service php-fpm

Nah Sekarang VPS agan siap untuk menampung website-website agan, Langkah selanjutnya adalah agan tinggal mengarahkan domain-domain agan ke IP VPS. Selamat mencoba dan good luck gan!

Cara Upgrade PHP dan MySQL di VPS CentOS

Cara Upgrade PHP dan MySQL di VPS CentOS

Sebelumnya ada cerita ni gan yang mungkin agan juga akan mengalaminya saat migrasi ke VPS yakni pada saat import Database MySQL. Errornya cuma satu line aja yaitu seperti keterangan berikut:

ERROR 1273 (HY000) at line 55 in file: '/var/www/html/database.sql': Unknown collation: 'utf8mb4_unicode_ci'

Kalau diserver agan mengalami error seperti diatas solusinya adalah Upgrade PHP dan Database MySQL gan. Nah Begitu juga dengan pengalaman pada server ane, ternyata error tersebut dikarenakan versi Database MySQL yang ane gunakan berbeda, pada sever lama versi DB MySQL lebih baru. Untuk itu ane upgrade sekalian deh PHP dan MySQL di VPS ane yang baru:

Langkah Cara Upgrade PHP dan MySQL di VPS CentOS mudah saja gan, mau linux CentOS versi berapa aja menurut saya caranya sama aja cuma beda saat add EPEL dan Remi Repositorynya saja. Kemudian untuk diketahui pada system ane install LEMP atau Linux, Nginx, MySQL, dan PHP-FPM. Oke Simak langkah-langkahnya berikut ini:

1. Add Repository EPEL

RHEL/CentOS 6 32-Bit

wget http://download.fedoraproject.org/pub/epel/6/i386/epel-release-6-8.noarch.rpm
rpm -ivh epel-release-6-8.noarch.rpm

Untuk RHEL/CentOS 6 64-Bit

wget http://download.fedoraproject.org/pub/epel/6/x86_64/epel-release-6-8.noarch.rpm
rpm -ivh epel-release-6-8.noarch.rpm

Untuk RHEL/CentOS 7 64-Bit

wget http://dl.fedoraproject.org/pub/epel/7/x86_64/e/epel-release-7-2.noarch.rpm
rpm -ivh epel-release-7-2.noarch.rpm

2. Add Remi Repository

Untuk CentOS 6

wget http://rpms.famillecollet.com/enterprise/remi-release-6.rpm
rpm -Uvh remi-release-6.rpm

Untuk CentOS 7

wget http://rpms.famillecollet.com/enterprise/remi-release-7.rpm
rpm -Uvh remi-release-7.rpm

3. Edit Config Remi

vi /etc/yum.repos.d/remi.repo

Edit menjadi seperti yang ditandai Merah berikut ini, yang tadinya 0 menjadi 1:

# Repository: http://rpms.remirepo.net/
# Blog:       http://blog.remirepo.net/
# Forum:      http://forum.remirepo.net/

[remi]
name=Remi's RPM repository for Enterprise Linux 6 - $basearch
#baseurl=http://rpms.remirepo.net/enterprise/6/remi/$basearch/
mirrorlist=http://rpms.remirepo.net/enterprise/6/remi/mirror
enabled=1
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-remi

[remi-php55]
name=Remi's PHP 5.5 RPM repository for Enterprise Linux 6 - $basearch
#baseurl=http://rpms.remirepo.net/enterprise/6/php55/$basearch/
mirrorlist=http://rpms.remirepo.net/enterprise/6/php55/mirror
# WARNING: If you enable this repository, you must also enable "remi"
enabled=1
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-remi

[remi-php56]
name=Remi's PHP 5.6 RPM repository for Enterprise Linux 6 - $basearch
#baseurl=http://rpms.remirepo.net/enterprise/6/php56/$basearch/
mirrorlist=http://rpms.remirepo.net/enterprise/6/php56/mirror
# WARNING: If you enable this repository, you must also enable "remi"
enabled=0
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-remi

[remi-test]
name=Remi's test RPM repository for Enterprise Linux 6 - $basearch
#baseurl=http://rpms.remirepo.net/enterprise/6/test/$basearch/
mirrorlist=http://rpms.remirepo.net/enterprise/6/test/mirror
# WARNING: If you enable this repository, you must also enable "remi"
enabled=0
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-remi

[remi-debuginfo]
name=Remi's RPM repository for Enterprise Linux 6 - $basearch - debuginfo
baseurl=http://rpms.remirepo.net/enterprise/6/debug-remi/$basearch/
enabled=0
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-remi

[remi-php55-debuginfo]
name=Remi's PHP 5.5 RPM repository for Enterprise Linux 6 - $basearch - debuginfo
baseurl=http://rpms.remirepo.net/enterprise/6/debug-php55/$basearch/
enabled=0
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-remi

[remi-php56-debuginfo]
name=Remi's PHP 5.6 RPM repository for Enterprise Linux 6 - $basearch - debuginfo
baseurl=http://rpms.remirepo.net/enterprise/6/debug-php56/$basearch/
enabled=0
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-remi

[remi-test-debuginfo]
name=Remi's test RPM repository for Enterprise Linux 6 - $basearch - debuginfo
baseurl=http://rpms.remirepo.net/enterprise/6/debug-test/$basearch/
enabled=0
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-remi

Simpan kemudian exit :wq

4. Update System

yum udpate -y

Tunggu bentar sampai selesai

5. Check PHP Version

php -v

Pada kasus ane, versi PHP ane upgrade ke PHP 5.5.27, nah Jika berhasil akan tampil seperti berikut:

PHP 5.5.27 (cli) (built: Jul 13 2015 07:13:05)
Copyright (c) 1997-2015 The PHP Group
Zend Engine v2.5.0, Copyright (c) 1998-2015 Zend Technologies

6. Upgrade MySQL Database

mysql_upgrade -u root -p

Masukkan password seperti biasanya kemudian enter.

7. Check MySQL Version

mysql -u root -p

Masukkan password seperti biasanya kemudian enter
Ketik kode berikut kemudian enter

SELECT @@version;

Jika berhasil maka akan keluar seperti berikut:

+-----------+
| @@version |
+-----------+
| 5.5.45    |
+-----------+
1 row in set (0.00 sec)

Sederhana

Dari pengalaman yang ane dapet sebelum import data SQL sebaiknya versi dari MySQL disamakan atau keduanya sama-sama diupgrade agar saat migrasi ke server lain jadi mudah.

Thanks to: servermom.org

Cara Install LEMP di CentOS 6, Step-by-step

Nginx webserver, Setelah saya pikir-pikir, ternyata menginstall dan konfigurasi Nginx di linux CentOS 6 tak begitu rumit jika dibanding Apache. Jika agan pengen membangun website dengan nginx webserver kira-kira step-by-step cara install LEMP (Linux, Nginx, MySQL, PHP) seperti daftar konten berikut ini:

1. Add Repository EPEL

Pertama tambahkan repo dari epel. Berikut cara untuk menambahkan epel repository, disesuaikan dengan versi Linux CentOS yang digunakan:

RHEL/CentOS 6 32-Bit

wget http://download.fedoraproject.org/pub/epel/6/i386/epel-release-6-8.noarch.rpm
rpm -ivh epel-release-6-8.noarch.rpm

Untuk RHEL/CentOS 6 64-Bit

wget http://download.fedoraproject.org/pub/epel/6/x86_64/epel-release-6-8.noarch.rpm
rpm -ivh epel-release-6-8.noarch.rpm

2. Remove HTTPD

Stop dan Remove dulu htppd bawaan OS, biar nggak konflik. caranya dengan command berikut:

service httpd stop
yum remove httpd

3. Install Nginx

yum install nginx -y

Start Nginx service

service nginx start

Buka browser coba buka IP VPS, hasilnya kira-kira seperti ini:

cara install nginx di centos

Otomatis start nginx ketika sistem direboot dengan command berikut.

chkconfig --levels 235 nginx on

4. Install MySQL

Install MySQL dengan kode berikut:

yum -y install mysql mysql-server

Buat agar MySQL Service otomatis berjalan ketika system reboot:

chkconfig --levels 235 mysqld on

Start MySQL dengan command line berikut

/etc/init.d/mysqld start

Setup security MySQL, ketik kode berikut dan ikuti langkah demi langkah.

mysql_secure_installation

Ketika diminta untuk memasukkan password pertama kali abaikan saja, langsung tekan Enter.

Kemudian Jika ada pertanyaan membuat password pilih Y kemudian enter dan ketik password yang anda inginkan. Pertanyaan selanjutnya jawab dengan Y kemudian Enter sampai instalasi selesai / berhasil:

5. Install PHP

Kode berikut akan otomatis menginstall php-fpm dan php-mysql

yum -y install php-fpm php-mysql

Kemudian PHP Module, Module berikut ini yang biasa saya install karena kadang-kadang saya butuh ngegrab website menggunakan CURL, seperti layanan API Flickr photo, Youtube API dan ngegrab website lain yang mengharuskan menggunakan module PHP SOAP. Module-module PHP ini termasuk module yang sering diinstall oleh banyak web developer. Namun jika anda tidak membutuhkannya bisa melewati langkah ini:

yum -y install php-gd php-imap php-ldap php-odbc php-pear php-xml php-xmlrpc php-mbstring php-mcrypt php-mssql php-snmp php-soap php-tidy curl curl-devel

Install APC untuk chacing dan mengoptimalkan kinerja script php. Lebih jauh tentang PHP PECL APC Baca di situs resmi.

yum -y install php-pecl-apc

Load PHP-FPM saat sistem reboot.

chkconfig php-fpm --levels 235 on

Edit konfig php.ini

vi /etc/php.ini

Cari line berikut, hilangkan tanda komen # dan ubah valuenya seperti berikut:

cgi.fix_pathinfo = 0
date.timezone = Asia/Jakarta
expose_php = Off

6. Konfigurasi

Untuk artikel ini fokus pada cara setup nginx untuk satu website saja, jika sudah menguasai ini maka untuk setting Server Block atau Virtual Host di Nginx akan mudah. Nah file-file untuk konfigurasi Nginx adalah sebagai berikut:

1. /etc/nginx/nginx.conf
2. /etc/nginx/conf.d/default.conf
3. /etc/php-fpm.d/www.conf

Konfigurasi Pertama, Backup nginx.conf taruh di folder root, dengan menjalankan command line berikut maka konfig nginx akan pindah difolder root dengan nama: nginx.conf.bak.

mv /etc/nginx/nginx.conf /root/nginx.conf.bak

Kemudian buat config nginx yang baru

vi /etc/nginx/nginx.conf

Copy-paste kode berikut:

# For more information on configuration, see:
#   * Official English Documentation: http://nginx.org/en/docs/
#   * Official Russian Documentation: http://nginx.org/ru/docs/

user              nginx;
worker_processes  4;

error_log  /var/log/nginx/error.log;
#error_log  /var/log/nginx/error.log  notice;
#error_log  /var/log/nginx/error.log  info;

pid        /var/run/nginx.pid;

events {
    worker_connections  1024;
}

http {
    include       /etc/nginx/mime.types;
    default_type  application/octet-stream;

    log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '
                      '$status $body_bytes_sent "$http_referer" '
                      '"$http_user_agent" "$http_x_forwarded_for"';

    access_log  /var/log/nginx/access.log  main;

    sendfile        on;
    #tcp_nopush     on;

    #keepalive_timeout  0;
    keepalive_timeout  30;

    # Untuk perfoma nginx terbaik
    gzip on;
    gzip_disable "MSIE [1-6]\.(?!.*SV1)";
    gzip_http_version 1.1;
    gzip_vary on;
    gzip_proxied any;
    gzip_comp_level 6;
    gzip_buffers 16 8k;
    gzip_types text/plain text/css application/json application/x-javascript text/xml application/xml application/xml+rss text/javascript application/javascript text/x-js;

    # Load config files from the /etc/nginx/conf.d directory
    # The default server is in conf.d/default.conf
    include /etc/nginx/conf.d/*.conf;

}

Konfigurasi Kedua, hapus saja semua text yang ada didalam file konfig default nginx /etc/nginx/conf.d/default.conf, ini tidak lagi penting karena kita akan membuat konfigurasi sendiri. Berikut cara menghapus text didalam file konfig default.nginx

echo > /etc/nginx/conf.d/default.conf

Setelah bersih buka dan edit file default.conf:

vi /etc/nginx/conf.d/default.conf

Paste kode berikut: *) konfig ini bagi yang ingin membangun website dengan aplikasi WordPress, pokoknya ini konfig JOS, dan siap pakai gan. Ingat ganti domain coklat.org dengan domain punya agan.

server {
        listen 80;
        server_name www.coklat.org;
        rewrite ^(.*) http://coklat.org$1 permanent;
}

server {
        listen 80;
        server_name coklat.org;

        client_max_body_size 5m;
        client_body_timeout 60;

        access_log /var/log/nginx/coklat.org-access;
        error_log /var/log/nginx/coklat.org-error error;
        
        ### Ini direktori letak file-file webiste nantinya
        root /var/www/html/coklat/;
        index  index.html index.php;

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

        ### security ###
        error_page 403 =404;
        location ~ /\. { access_log off; log_not_found off; deny all; }
        location ~ ~$ { access_log off; log_not_found off; deny all; }
        location ~* wp-admin/includes { deny all; }
        location ~* wp-includes/theme-compat/ { deny all; }
        location ~* wp-includes/js/tinymce/langs/.*\.php { deny all; }
        location /wp-includes/ { internal; }
        location ~* ^/wp-content/uploads/.*.(html|htm|shtml|php)$ {
                types { }
                default_type text/plain;
        }

        ### disable logging ###
        location = /robots.txt { access_log off; log_not_found off; }
        location = /favicon.ico { access_log off; log_not_found off; }

        ### caches ###
        location ~* \.(jpg|jpeg|gif|css|png|js|ico|html)$ { access_log off; expires max; }
        location ~* \.(woff|svg)$ { access_log off; log_not_found off; expires 30d; }
        location ~* \.(js)$ { access_log off; log_not_found off; expires 7d; }

        ### php block ###
        location ~ \.php?$ {
                try_files $uri =404;
                include fastcgi_params;
                #fastcgi_pass 127.0.0.1:9001;
                fastcgi_pass unix:/var/run/php-webku.socket;
                fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
                fastcgi_intercept_errors on;
                fastcgi_split_path_info ^(.+\.php)(.*)$;
                #Prevent version info leakage
                fastcgi_hide_header X-Powered-By;
        }
}

Nah kalau tidak memakai WordPress dan memutuskan untuk membuat srcript sendiri berikut konfignya lengkap beserta contoh mod_rewrite atau jika di Apache dikenal dengan .htaccess untuk membuat link yang SEF – Search Engine Friendly.

server {
        listen 80;
        server_name www.coklat.org;
        rewrite ^(.*) http://coklat.org$1 permanent;
}

server {
        listen 80;
        server_name coklat.org;

        client_max_body_size 5m;
        client_body_timeout 60;

        access_log /var/log/nginx/coklat.org-access;
        error_log /var/log/nginx/coklat.org-error error;

        root /var/www/html/coklat/;
        index  index.html index.php;

        ### root directory ###
        location / {
                try_files $uri $uri/ /index.php?$args;
                
                # ini hanya contoh sesuaikan dengan link agan.
                # Home
                rewrite ^/page-([0-9]+)/?$ /index.php?page=$1 last;
                ## artikel
                rewrite ^/artikel/([^/]*)/?$ /artikel.php?q=$1 last;
                rewrite ^/artikel/([^/]*)/page-([0-9]+)/$ /artikel.php?q=$1&page=$2 last;
        }

        ### security ###
        error_page 403 =404;
        location ~ /\. { access_log off; log_not_found off; deny all; }
        location ~ ~$ { access_log off; log_not_found off; deny all; }
        
        ### disable logging ###
        location = /robots.txt { access_log off; log_not_found off; }
        location = /favicon.ico { access_log off; log_not_found off; }

        ### caches ###
        location ~* \.(jpg|jpeg|gif|css|png|js|ico|html)$ { access_log off; expires max; }
        location ~* \.(woff|svg)$ { access_log off; log_not_found off; expires 30d; }
        location ~* \.(js)$ { access_log off; log_not_found off; expires 7d; }

        ### php block ###
        location ~ \.php?$ {
                try_files $uri =404;
                include fastcgi_params;
                #fastcgi_pass 127.0.0.1:9001;
                fastcgi_pass unix:/var/run/php-webku.socket;
                fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
                fastcgi_intercept_errors on;
                fastcgi_split_path_info ^(.+\.php)(.*)$;
                #Prevent version info leakage
                fastcgi_hide_header X-Powered-By;
        }
}

Konfigurasi ketiga, www.conf. Clear text yang ada di file /etc/php-fpm.d/www.conf.

echo > /etc/php-fpm.d/www.conf

Kemudian buka dan edit file /etc/php-fpm.d/www.conf

vi /etc/php-fpm.d/www.conf

Paste Kode berikut:

[webku]
listen = /var/run/php-webku.socket
listen.owner = nginx
listen.group = nginx
listen.mode = 0660
user = nginx
group = nginx
request_slowlog_timeout = 5s
slowlog = /var/log/php-fpm/webku.log
listen.allowed_clients = 127.0.0.1
pm = dynamic
pm.max_children = 10
pm.start_servers = 3
pm.min_spare_servers = 2
pm.max_spare_servers = 4
pm.max_requests = 400
listen.backlog = -1
pm.status_path = /status
request_terminate_timeout = 120s
rlimit_files = 131072
rlimit_core = unlimited
catch_workers_output = yes
php_value[session.save_handler] = files
php_value[session.save_path] = /var/lib/php/session
php_admin_value[error_log] = /var/log/php-fpm/webku-error.log
php_admin_flag[log_errors] = on

Simpan dan keluar dari VIM editor Ctrl+C > :wq > Enter

7. Test

Seperti biasa gan, restart dulu service Nginx, MySQL dan PHP-FPM biar ketahuan kalau ada yang nggak beres jika mesin reboot.

service nginx restart
service mysqld restart
service php-fpm restart

Jika resultnya udah OK selanjutnya check website sekalian php dan modulnya dengan kode berikut: *) pada kasus ini letak root direktori di: /var/www/html/coklat/, sesuaikan dengan punya agan.

vi /var/www/html/coklat/info.php

Isi dengan kode berikut:

<?php phpinfo();

Simpan dan keluar dari Vim editor Ctrl+C kemudian ketik :wq selanjutnya Enter.

Buka browser kesayangan agan point ke IP VPS punya agan. http://ip.vps.agan/info.php

8. Tips

Jika agan kembali ingin mengedit file konfigurasi dan tidak ingin mematikan service nginx dan php-fpm yang sedang berjalan, cukup menggunakan command reload, ini bagus karena web kita tidak akan down sesaat jika dibanding menggunakan command restart. Contoh penggunaan:

service nginx reload
service php-fpm reload

Catatan

Setelah berhasil menginstall Nginx dan setup konfigurasi Nginx sebagai webserver untuk menjalankan blog atau website, langkah selanjutnya adalah bagaimana cara tuning webserver Nginx, agar performa website semakin kencang dan stabil. Tutorial mengoptimalkan konfigurasi Nginx mungkin akan saya ketik lain waktu. Terimakasih telah berkunjung, jangan lupa share ya.

Referensi: RoseHosting – WordPress+W3TotalCache With LEMP.

Cara Install Nginx di CentOS 6

Sejatinya Nginx diucapkan dengan “Engine-X” bukan “nging” walaupun begitu saya tetap suka mengucapkannya dengan Nging, soalnya lebih gimanaa gitu. Nginx merupakan Open Source reverse proxy server untuk HTTP, HTTPS, SMTP, POP3 dan Protokol IMAP, serta penyeimbang beban atau load balancer, HTTP cache dan Web Server. Proyek nginx dimulai dengan fokus yang kuat pada konkurensi tinggi, kinerja tinggi dan penggunaan memori yang rendah.

Tutorial Cara Install Nginx di CentOS 6

1. Add Epel Repository

Karena nginx tidak tersedia di repository CentOS 6 maka kita akan menambahkan repo dari epel. Berikut cara untuk menambahkan epel repository, disesuaikan dengan versi centOS yang digunakan:

RHEL/CentOS 6 32-Bit

wget http://download.fedoraproject.org/pub/epel/6/i386/epel-release-6-8.noarch.rpm
rpm -ivh epel-release-6-8.noarch.rpm

Untuk RHEL/CentOS 6 64-Bit

wget http://download.fedoraproject.org/pub/epel/6/x86_64/epel-release-6-8.noarch.rpm
rpm -ivh epel-release-6-8.noarch.rpm

2. Remove HTTPD

Pada Linux CentOS 6 default sudah terinstall httpd server, tapi kita akan menggunakan nginx untuk itu hapus httpd agar tidak bentrok dengan nginx

yum remove httpd

Jika ada pertanyaan ketik huruf y kemudian enter.

3. Install Nginx

yum install nginx -y

4. Start Nginx

service nginx start

Setelah selesai pastikan nginx aktif ketika sistem reboot

chkconfig --levels 235 nginx on

5. Test

Buka broswer ketik IP VPS anda, jika berhasil akan ada tulisan nginx disana.

cara install nginx di centos

Catatanku:

Sedikit Curhat dulu ya gan siapa tahu bisa jadi bahan pertimbangan buat agan-agan yang nyubi seperti diri ini, Menurut saya entah Apache, Nginx, LiteSpeed semuanya bagus dan oke-oke saja tapi tentu beda jika agan udah master server. Tapi pada kasus berbeda tentu disesuaikan dengan kebutuhan saja, misalnya saya saya ingin belajar ngeblog / membuat website di localhost komputer pribadi, nah akankah saya ribet install nginx di PC? tentu tidak saya akan install Xampp atau Lampp saja, karena apache sudah cukup.

Begitu juga jika saya ingin membuat website komunitas di VPS yang anggotanya cuma puluhan orang atau website untuk curhat-curhatan ngitung-ngitung buat bikin backlink tentu saja saya lebih memilih Apache, karena konfigurasi apache tidak tidak serumit Nginx walaupun kenyataanya sama ribetnya bagi saya haha. BTW saya juga ingin bisa nginx, untuk itu apapaun itu saya ingin punya nginx di server saya untuk menjalankan blog saya maka dari itu tutorial ini sebagai catatan bagi saya pribadi khususnya dan teman-teman yang ingin belajar nginx pada umumnya (sekilas mirip ceramah).

Secara sederhana untuk masalah peforma web server nginx lebih unggul jika dibanding Apache. Nginx lebih cepat, hal ini diakui karena nginx lebih rendah dalam penggunaan memory dan nginx sangat dianjurkan untuk situs yang memakai VPS atau virtual Private server.

Referensi:
Nginx – Wikipedia
Apache VS Nginx
How to Install Linux, Nginx, MySQL, PHP LEMP Stack on CentOS 6