Database Replication, Networking, System Administrator, Ubuntu Server

Penerapan Load Balancing Menggunakan Haproxy Pada Ubuntu 16.04 LTS

SEPUTAR LOAD BALANCING

Load balancing adalah teknik untuk mendistribusikan beban trafik pada dua atau lebih jalur koneksi secara seimbang, agar trafik dapat berjalan optimal, memaksimalkan throughput, memperkecil waktu tanggap dan menghindari overload pada salah satu jalur koneksi. Load balancing digunakan pada saat sebuah server telah memiliki jumlah user yang telah melebihi maksimal kapasitasnya. Load balancing juga mendistribusikan beban kerja secara merata di dua atau lebih komputer, link jaringan, CPU, hard drive, atau sumber daya lainnya, untuk mendapatkan pemanfaatan sumber daya yang optimal.

KENAPA HARUS MELAKUKAN LOAD BALANCING Continue reading “Penerapan Load Balancing Menggunakan Haproxy Pada Ubuntu 16.04 LTS”

Advertisements
C++, Dynamic Link Library, PHP, Programming, Ubuntu Server, Web Server

Membuat Ekstensi PHP pada Web Server Apache Menggunakan Pemrograman C++

instalasi pustaka phpcpp pada sistem operasi ubuntu

buat sebuah file bernama MakeFile

#
#	Makefile template
#
#	This is an example Makefile that can be used by anyone who is building
#	his or her own PHP extensions using the PHP-CPP library. 
#
#	In the top part of this file we have included variables that can be
#	altered to fit your configuration, near the bottom the instructions and
#	dependencies for the compiler are defined. The deeper you get into this
#	file, the less likely it is that you will have to change anything in it.
#

#
#	Name of your extension
#
#	This is the name of your extension. Based on this extension name, the
#	name of the library file (name.so) and the name of the config file (name.ini)
#	are automatically generated
#

NAME				=	my_extension


#
#	Php.ini directories
#
#	In the past, PHP used a single php.ini configuration file. Today, most
#	PHP installations use a conf.d directory that holds a set of config files,
#	one for each extension. Use this variable to specify this directory.
#

INI_DIR				=	/etc/php5/conf.d


#
#	The extension dirs
#
#	This is normally a directory like /usr/lib/php5/20121221 (based on the 
#	PHP version that you use. We make use of the command line 'php-config' 
#	instruction to find out what the extension directory is, you can override
#	this with a different fixed directory
#

EXTENSION_DIR		=	$(shell php-config --extension-dir)


#
#	The name of the extension and the name of the .ini file
#
#	These two variables are based on the name of the extension. We simply add
#	a certain extension to them (.so or .ini)
#

EXTENSION 			=	${NAME}.so
INI 				=	${NAME}.ini


#
#	Compiler
#
#	By default, the GNU C++ compiler is used. If you want to use a different
#	compiler, you can change that here. You can change this for both the 
#	compiler (the program that turns the c++ files into object files) and for
#	the linker (the program that links all object files into the single .so
#	library file. By default, g++ (the GNU C++ compiler) is used for both.
#

COMPILER			=	g++
LINKER				=	g++


#
#	Compiler and linker flags
#
#	This variable holds the flags that are passed to the compiler. By default, 
# 	we include the -O2 flag. This flag tells the compiler to optimize the code, 
#	but it makes debugging more difficult. So if you're debugging your application, 
#	you probably want to remove this -O2 flag. At the same time, you can then 
#	add the -g flag to instruct the compiler to include debug information in
#	the library (but this will make the final libphpcpp.so file much bigger, so
#	you want to leave that flag out on production servers).
#
#	If your extension depends on other libraries (and it does at least depend on
#	one: the PHP-CPP library), you should update the LINKER_DEPENDENCIES variable
#	with a list of all flags that should be passed to the linker.
#

COMPILER_FLAGS		=	-Wall -c -O2 -std=c++11 -fpic -o
LINKER_FLAGS		=	-shared
LINKER_DEPENDENCIES	=	-lphpcpp


#
#	Command to remove files, copy files and create directories.
#
#	I've never encountered a *nix environment in which these commands do not work. 
#	So you can probably leave this as it is
#

RM					=	rm -f
CP					=	cp -f
MKDIR				=	mkdir -p


#
#	All source files are simply all *.cpp files found in the current directory
#
#	A builtin Makefile macro is used to scan the current directory and find 
#	all source files. The object files are all compiled versions of the source
#	file, with the .cpp extension being replaced by .o.
#

SOURCES				=	$(wildcard *.cpp)
OBJECTS				=	$(SOURCES:%.cpp=%.o)


#
#	From here the build instructions start
#

all:					${OBJECTS} ${EXTENSION}

${EXTENSION}:			${OBJECTS}
						${LINKER} ${LINKER_FLAGS} -o $@ ${OBJECTS} ${LINKER_DEPENDENCIES}

${OBJECTS}:
						${COMPILER} ${COMPILER_FLAGS} $@ ${@:%.o=%.cpp}

install:		
						${CP} ${EXTENSION} ${EXTENSION_DIR}
						${CP} ${INI} ${INI_DIR}
				
clean:
						${RM} ${EXTENSION} ${OBJECTS}


buat sebuah .ini file bernama filename.ini lalu isi dengan script berikut

extension=my_extension.so

buat sebuah file bernama filename.cpp lalu isi dengan script berikut

#include <phpcpp.h>
#include <stdlib.h>

Php::Value myFunction()
{
   return "Hello from extension";
}

/**
 *  tell the compiler that the get_module is a pure C function
 */
extern "C" {
    
    /**
     *  Function that is called by PHP right after the PHP process
     *  has started, and that returns an address of an internal PHP
     *  strucure with all the details and features of your extension
     *
     *  @return void*   a pointer to an address that is understood by PHP
     */
    PHPCPP_EXPORT void *get_module() 
    {
        // static(!) Php::Extension object that should stay in memory
        // for the entire duration of the process (that's why it's static)
        static Php::Extension extension("my_extension", "1.0");
        
        // @todo    add your own functions, classes, namespaces to the extension
	extension.add("myFunction",myFunction);
        
        // return the extension
        return extension;
    }
}

buka kembali terminal command line lalu masuk pada direktori tempat dimana script-script diatas disimpan, gunakan kembali perintah make && sudo make install untuk proses kompilasi atau building menjadi ekstensi web server nantinya.

hasil dari proses kompilasi script diatas akan menghasilkan file .so seperti berikut

setelah itu daftarkan file .so yang sudah dibuild sebelumnya pada konfigurasi php.ini,

restart apache dengan perintah sudo service apache2 restart atau sudo /etc/init.d/apache2 restart, kemudian cek status server untuk melihat apakah ekstensi telah terpasang, berikut adalah hasil pemasangan ekstensi pada web server apache, akan muncul pada informasi status server.

Codeigniter, Machine Learning, Mathematic, PHP, Programming, SQL, Ubuntu Server, Web Server

Pengenalan Case Based Reasoning Menggunakan Pemrograman PHP

Case based reasoning atau penalaran berbasis kasus merupakan salah satu teknik pemecahan masalah berdasarkan pengalaman-pengalaman pada masa lalu. Pengalaman yang pernah terjadi di masa lampau tersebut disimpan dalam tempat yang disebut dengan “Basis Kasus”. Continue reading “Pengenalan Case Based Reasoning Menggunakan Pemrograman PHP”

Database Replication, Linux, Networking, SQL, Ubuntu Server, Web Server

Membangun Two-Way Replikasi Database MySQL

KEBUTUHAN PERCOBAAN

  • Ubuntu Server 16.04.02 LTS
  • Database MySQL
  • Web Server Apache

Pada catatan sebelumnya https://sirojulmiftakh.wordpress.com/2017/03/17/membangun-one-way-replikasi-database-mysql/ telah dilakukan percobaan one-way replikasi database dimana setiap perubahan yang terjadi pada server master akan direplikasi menuju server slave namun tidak untuk proses sebaliknya. Pada percobaan ini dilakukan konfigurasi dua arah atau two-way agar setiap perubahan yang terjadi baik di server master maupun di server slave dapat saling tersinkronisasi agar data yang tersimpan pada kedua server adalah sama. Continue reading “Membangun Two-Way Replikasi Database MySQL”

Linux, Networking, Ubuntu Server, Web Server

Membangun One-Way Replikasi Database MySQL

Replikasi Database secara one-way menyediakan proses duplikasi data dari server utama menuju server cadangan. Sehingga setiap perubahan yang terjadi pada server utama akan terekam pada server cadangan namun tidak melakukan proses sebaliknya.

KEBUTUHAN PERCOBAAN

  • Ubuntu Server 16.04.02 LTS
  • Database MySQL
  • Web Server Apache

Continue reading “Membangun One-Way Replikasi Database MySQL”

Linux, Networking, Ubuntu Server, Web Server

Belajar Failover

Pengantar

Pada sebuah instalasi jaringan komputer, membutuhkan bantuan manusia untuk memanajemen jika pada suatu saat terjadi hal yang tidak diinginkan. Salah satu contoh masalah ketika layanan yang disediakan diharuskan selalu aktif dan seketika terputus jaringannya sehingga diharuskan untuk menyambungkannya ke jaringan lain sebagai jaringan cadangan. Teknis ini yang dinamakan dengan FAILOVER.

Pengertian Failover

Failover adalah penggunaan mekanisme penggunaan dua atau lebih jaringan internet atau jaringan komputer apabila salah satu koneksi terputus sehingga layanan lain diharapkan dapat membantu memberikan koneksi cadangan. Sistem yang mampu melakukan failover akan berusaha agar sistem selalu online serta diupayakan tidak terganggu jika terjadi kerusakan terhadap koneksi yang digunakan sebelumnya.

Bersambung …

Linux, Networking, Programming, Ubuntu Server

Exploitasi Hak Akses User Ubuntu 15.04

Exploitasi hak akses yang dimaksud ialah meningkatkan level akses user pada sistem operasi linux yang dalam artikel ini diuji coba pada sistem operasi Ubuntu 15.04-64 bit. Seseorang yang berhasil masuk ke dalam sistem linux atau iseng-iseng ingin memperoleh hak akses user sebagai root, administrator, atau superuser. Continue reading “Exploitasi Hak Akses User Ubuntu 15.04”

File Transfer Protocol, Linux, Networking, PHP, Ubuntu Server

Konfigurasi Secure File Transfer Protocol (SFTP) pada ubuntu server 15.04 LTS

Tulisan kali ini tentang percobaan membuat server lokal untuk pengembangan aplikasi web yang saya lakukan, berhubung masa berlaku server online saya sudah mau habis 🙂 jadi saya mencoba membangun sendiri server di laptop dengan harapan masih tipis-tipis mirip dengan lingkungan server online.

Lalu permasalahan yang terjadi ialah proses transfer file dari laptop ke virtual server terkadang menjadi kendala, sehingga saya mencoba salah satu tool WinSCP dan OpenSSH untuk memudahkan proses transfer file. Continue reading “Konfigurasi Secure File Transfer Protocol (SFTP) pada ubuntu server 15.04 LTS”

PHP, Programming, Ubuntu Server, Web Server

Pseudo Random Key Generator dengan bahasa pemrograman PHP

Duh, judulnya susah bener, padahal intinya mengacak suatu string yang nanti entah mau digunakan sebagai password, atau apapun itu.

Berikut adalah contoh kode program key generator tersebut :


<?php 

function generateRandomString($length = 20) {
    $characters = '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ';
    $charactersLength = strlen($characters);
    $randomString = '';
    for ($i = 0; $i < $length; $i++) { 
       $randomString .= $characters[rand(0, $charactersLength - 1)]; 
    } 
    echo $randomString; 
} 

echo generateRandomString();

?>

Network Programming, Networking, Ubuntu Server, Web Server

Mengaktifkan module rewrite web server apache pada sistem operasi ubuntu 16.04

Biasanya, dalam pengembangan aplikasi yang menggunakan sebuah web server, kita membutuhkan pengaturan alamat url yang unik dan mudah dimengerti oleh pengguna, baik itu pengembang perangkat lunak maupun pengguna aplikasi.

Salah satu pendukung hal tersebut adalah dengan mode rewrite yang diberikan oleh suatu web server agar pengembang dapat mengatur url pada suatu aplikasi agar mudah dipahami.

Percobaan kali ini adalah dengan menggunakan web server apache pada sistem operasi ubuntu server 16.04. Continue reading “Mengaktifkan module rewrite web server apache pada sistem operasi ubuntu 16.04”