<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Ngadimin.Com &#187; Tutorial</title>
	<atom:link href="http://ngadimin.com/kategori/tutorial/feed/" rel="self" type="application/rss+xml" />
	<link>http://ngadimin.com</link>
	<description>Tutorial Seputar Sistem Administrasi di Linux dan OS lainnya</description>
	<lastBuildDate>Fri, 29 Jul 2011 06:48:45 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
		<item>
		<title>Mengkonfigurasi HTTPS Server di Nginx</title>
		<link>http://ngadimin.com/2010/01/22/mengkonfigurasi-https-server-di-nginx/</link>
		<comments>http://ngadimin.com/2010/01/22/mengkonfigurasi-https-server-di-nginx/#comments</comments>
		<pubDate>Thu, 21 Jan 2010 18:24:38 +0000</pubDate>
		<dc:creator>Cecep Mahbub</dc:creator>
				<category><![CDATA[Tutorial]]></category>
		<category><![CDATA[dokumentasi]]></category>
		<category><![CDATA[nginx]]></category>
		<category><![CDATA[terjemahan]]></category>

		<guid isPermaLink="false">http://ngadimin.com/?p=1504</guid>
		<description><![CDATA[Tulisan ini adalah terjemahan dari dokumentasi Nginx. Sebelumnya saya pernah membuat artikel <a href="http://ngadimin.com/2009/11/30/konfigurasi-https-di-nginx/">Konfigurasi HTTPS di Nginx</a>, tapi disana hanya dibahas secara singkat saja. 

Dan tulisan yg saya akan terjemahkan ini, membahas lebih lengkap tentang konfigurasi HTTPS di Nginx, ditulis oleh pengembang Nginx, Igor Sysoev.]]></description>
			<content:encoded><![CDATA[<p>Tulisan ini adalah terjemahan bebas dari &#8220;<a href="http://www.nginx.org/en/docs/http/configuring_https_servers.html">Configuring HTTPS servers</a>&#8220;. Dokumentasi tentang HTTPS server yang ditulis oleh Igor Sysoev, developer nginx. </p>
<p>Untuk mengkonfigurasi HTTPS server, Anda harus mengaktifkan protokol SSL di blok server, dan menuliskan lokasi dari berkas server certificate dan private key:</p>

<div class="wp_syntax"><div class="code"><pre class="text" style="font-family:monospace;">server {
    listen               443;
    server_name          www.nginx.com;
    ssl                  on;
    ssl_certificate      www.nginx.com.crt;
    ssl_certificate_key  www.nginx.com.key;
    ssl_protocols        SSLv3 TLSv1;
    ssl_ciphers          HIGH:!ADH:!MD5;
    ...
}</pre></div></div>

<p><em>Server certificate</em> adalah entitas publik. Ini akan dikirim ke setiap klien yang terhubung ke server. Sedangkan <em>private key</em> adalah entitas keamanan dan harus disimpan dalam berkas dengan akses terbatas, tapi walau terbatas harus bisa dibaca oleh master proses nginx. <em>Private key</em> bisa juga disimpan dalam berkas sama sebagai <em>certificate</em>:</p>

<div class="wp_syntax"><div class="code"><pre class="text" style="font-family:monospace;">    ssl_certificate      www.nginx.com.cert;
    ssl_certificate_key  www.nginx.com.cert;</pre></div></div>

<p>yang dalam kasus ini akses ke berkas juga harus dibatasi. Meskipun sertifikat dan kuncinya disimpan dalam satu berkas, hanya bagian <em>certificate</em> yang akan dikirim ke klien.</p>
<p>Direktif &#8220;<tt>ssl_protocols</tt>&#8221; dan &#8220;<tt>ssl_chipers</tt>&#8221; mungkin bisa digunakan untuk membatasi koneksi  ke versi aman/kuat (<em>strong</em>) protokol SSL dan chipers. Sejak versi 0.8.20, nginx menggunakan &#8220;<tt>ssl_protocols SSLv3 TLSv1</tt>&#8221; dan &#8220;<tt>ssl_chipers HIGH:!ADH:!MD5</tt>&#8221; pada konfigurasi default, jadi semua itu hanya harus diset jika menggunakan versi nginx sebelumnya.</p>
<h3 id="toc-optimasi-https-server">Optimasi HTTPS server</h3>
<p>Operasi SSL mengkonsumsi sumberdaya CPU lebih banyak. Pada sistem multi prosesor Anda sebaiknya menjalankan beberapa <em>worker processes</em>: tidak lebih sedikit dari jumlah CPU core yang tersedia. Operasi yang paling banyak memakai sumberdaya CPU adalah pada saat <em>SSL handshake</em>.  </p>
<p>Ada dua cara untuk meminimalkan jumlah operasi ini per klien: yang pertama adalah mengaktifkan <em>keepalive connections</em> untuk mengirimkan beberapa <em>request</em> melalui satu koneksi dan yang kedua adalah untuk menggunakan ulang sesi SSL untuk menghindari <em>SSL handshake</em> untuk koneksi parallel dan <em>subsequent connections</em>. Sesi-sesi ini disimpan dalam SSL session cache yang di share antara worker dan dikonfigurasi oleh direktif &#8220;<tt>ssl_session_cache</tt>&#8220;. Satu megabyte dari cache bisa menyimpan sekitar 4000 sesi. Nilai default untuk cache timeout adalah 5 menit. Dan bias dinaikkan menggunakan direktif &#8220;<tt>ssl_session_timeout</tt>&#8220;. </p>
<p>Berikut ini adalah contoh konfigurasi yang sudah dioptimasi untuk sistem quad core dengan 10M shared session cache:</p>

<div class="wp_syntax"><div class="code"><pre class="text" style="font-family:monospace;">worker_processes  4;
&nbsp;
http {
    ssl_session_cache    shared:SSL:10m;
    ssl_session_timeout  10m;
&nbsp;
    server {
        listen               443;
        server_name          www.nginx.com;
        keepalive_timeout    70;
&nbsp;
        ssl                  on;
        ssl_certificate      www.nginx.com.crt;
        ssl_certificate_key  www.nginx.com.key;
        ssl_protocols        SSLv3 TLSv1;
        ssl_ciphers          HIGH:!ADH:!MD5;
        ...</pre></div></div>

<h3 id="toc-ssl-certifcate-chains">SSL certifcate chains</h3>
<p>Beberapa peramban mungkin komplen tentang sertifikat yang ditandatangani oleh <em>well-kown certificate authority</em>, sementara peramban lainnya mungkin menerima sertifikat tanpa masalah. Hal ini terjadi karena yang mengeluarkan otoritas telah menandatangi sertifikat server menggunakan sertifikat perantara (intermediate certificate) yang tidak tersedia di basis sertifikat dari <em>well-known trusted certificate authorities</em>, tapi dilain sisi sertifikat ini mungkin didistribusikan di sebagian peramban lainnya. Dalam kasus ini si otoritas biasanya menyediakan satu bundle chained certificates yang harus di gabungkan (concatenated) ke sertifikat yang telah ditandatangani. Sertifikat harus muncul sebelum chained certificates pada berkas yang sudah digabung:</p>
<pre>$ cat www.nginx.com.crt bundle.crt > www.nginx.com.chained.crt</pre>
<p>Berkas yang dihasilkan digunakan dalam direktif &#8220;<tt>ssl_certificate</tt>&#8220;:</p>

<div class="wp_syntax"><div class="code"><pre class="text" style="font-family:monospace;">server {
    listen               443;
    server_name          www.nginx.com;
    ssl                  on;
    ssl_certificate      www.nginx.com.chained.crt;
    ssl_certificate_key  www.nginx.com.key;
    ...
}</pre></div></div>

<p>Jika sertifikate server dan bunel sudah digabungkan dalam urutan yang salah, nginx akan gagal dijalankan dan akan menampilkan pesan error:</p>

<div class="wp_syntax"><div class="code"><pre class="text" style="font-family:monospace;">SSL_CTX_use_PrivateKey_file(&quot; ... /www.nginx.com.key&quot;) failed
   (SSL: error:0B080074:x509 certificate routines:
    X509_check_private_key:key values mismatch)</pre></div></div>

<p>karena nginx mencoba menggunakan private key dengan certifikat pertama dari bundle dan bukan ke sertifikat server yang seharusnya.</p>
<p>Peramban biasanya menyimpan sertifikat perantara yang mereka terima dan yang ditandatangani oleh otoritas terpercaya, jadi peramban yang sudah digunakan secara aktif mungkin sudah memiliki sertifikat perantara yang dibutuhkan dan tidak akan komplen tentang sertifikat yang dikirim tanpa bundle. Untuk meyakinkan server mengirimkan certificate chain yang lengkap, Anda bisa menggunakan perintah &#8220;<tt>openssl</tt>&#8220;, misalnya:</p>
<pre>$ openssl s_client -connect www.godaddy.com:443</pre>

<div class="wp_syntax"><div class="code"><pre class="text" style="font-family:monospace;">...
Certificate chain
 0 s:/C=US/ST=Arizona/L=Scottsdale/1.3.6.1.4.1.311.60.2.1.3=US
     /1.3.6.1.4.1.311.60.2.1.2=AZ/O=GoDaddy.com, Inc
     /OU=MIS Department/CN=www.GoDaddy.com
     /serialNumber=0796928-7/2.5.4.15=V1.0, Clause 5.(b)
   i:/C=US/ST=Arizona/L=Scottsdale/O=GoDaddy.com, Inc.
     /OU=http://certificates.godaddy.com/repository
     /CN=Go Daddy Secure Certification Authority
     /serialNumber=07969287
 1 s:/C=US/ST=Arizona/L=Scottsdale/O=GoDaddy.com, Inc.
     /OU=http://certificates.godaddy.com/repository
     /CN=Go Daddy Secure Certification Authority
     /serialNumber=07969287
   i:/C=US/O=The Go Daddy Group, Inc.
     /OU=Go Daddy Class 2 Certification Authority
 2 s:/C=US/O=The Go Daddy Group, Inc.
     /OU=Go Daddy Class 2 Certification Authority
   i:/L=ValiCert Validation Network/O=ValiCert, Inc.
     /OU=ValiCert Class 2 Policy Validation Authority
     /CN=http://www.valicert.com//emailAddress=info@valicert.com
...</pre></div></div>

<p>Di contoh ini subject (&#8220;s&#8221;) dari sertifikat server www.GoDaddy.com #0 ditandatangani oleh issuer (&#8220;i&#8221;) yang merupakan subject dari sertifikat #1, yang juga ditandatangani oleh issuer yang merupakan subject dari certificate #2, yang ditandatangani oleh well-known issuer ValiCert, Inc. Semua sertifikat itu disimpan di built-in certificate base dari peramban.</p>
<p>Jika Anda tidak menambahkan certificate bundle, Anda hanya akan melihat sertifikate server #0.</p>
<h3 id="toc-a-single-httphttps-server">A single HTTP/HTTPS server</h3>
<p>Merupakan langkah yang baik untuk mengkonfigurasi server secara terpisah untuk protokol HTTP dan HTTPS dari sejak awal. Meskipun mungkin fungsionalitas mereka terlihat mirip, tapi ini bisa saja berubah secara signifikan di masa yang akan datang dan menggunakan server yang digabung mungkin akan menjadi masalah. Walau demikian, jika server HTTP dan HTTPS adalah sama, dan Anda tidak ingin berfikir tentang masa yang akan datang, Anda bisa mengkonfigurasi satu server tunggal yang menangani request HTTP dan HTTPS dengan menghapus direktif &#8220;<tt>ssl on</tt>&#8221; dan menambahkan parameter &#8220;<tt>ssl</tt>&#8221; untuk port *:443</p>

<div class="wp_syntax"><div class="code"><pre class="text" style="font-family:monospace;">server {
    listen               80;
    listen               443  ssl;
    server_name          www.nginx.com;
    ssl_certificate      www.nginx.com.crt;
    ssl_certificate_key  www.nginx.com.key;
    ...
}</pre></div></div>

<p>Semenjak versi 0.8.21, nginx hanya membolehkan parameter &#8220;<tt>ssl</tt>&#8221; di set pada socket yang di listen dengan parameter &#8220;default&#8221;:</p>

<div class="wp_syntax"><div class="code"><pre class="text" style="font-family:monospace;">listen  443  default  ssl;</pre></div></div>

<h3 id="toc-name-based-https-servers">Name-based HTTPS servers</h3>
<p>Biasanya muncul masalah umum ketika mengkonfigurasi dua atau lebih server HTTPS yang listening pada satu alamat IP:</p>

<div class="wp_syntax"><div class="code"><pre class="text" style="font-family:monospace;">server {
    listen           443;
    server_name      www.nginx.com;
    ssl              on;
    ssl_certificate  www.nginx.com.crt;
    ...
}
&nbsp;
server {
    listen           443;
    server_name      www.nginx.org;
    ssl              on;
    ssl_certificate  www.nginx.org.crt;
    ...
}</pre></div></div>

<p>Dengan konfigurasi ini, peramban menerima sertifikat dari default server, misalnya, www.nginx.com tanpa terpengaruh dengan server name yang direquest. Ini disebabkan karena sifat dari protokol SSL. Koneksi SSL terjadi sebelum browser mengirim request HTTP dan nginx tidak akan pernah tahu nama dari server yang direquest. Oleh karena itu, dia hanya akan menawarkan satu sertifikat dari default server.</p>
<p>Cara lama dan yang paling tokcer untuk mengatasi masalah ini adalah dengan membuat alamat IP terpisah untuk setiap HTTPS server:</p>

<div class="wp_syntax"><div class="code"><pre class="text" style="font-family:monospace;">server {
    listen           192.168.1.1:443;
    server_name      www.nginx.com;
    ssl              on;
    ssl_certificate  www.nginx.com.crt;
    ...
}
&nbsp;
server {
    listen           192.168.1.2:443;
    server_name      www.nginx.org;
    ssl              on;
    ssl_certificate  www.nginx.org.crt;
    ...
}</pre></div></div>

<h3 id="toc-sertifikat-ssl-dengan-beberapa-nama">Sertifikat SSL dengan beberapa nama</h3>
<p>Ada cara lain untuk berbagi alamat IP antara beberapa HTTPS server, meskipun demikian, semuanya memiliki kelemahan. Salah satu cara adalah menggunakan sertifikat dengan beberapa nama pada bagian SubjectAltName di sertifikat. Sebagai contoh misalnya, www.nginx.com dan www.nginx.org. Tapi, bagian SubjectAltName memiliki panjang yang terbatas.</p>
<p>Cara lain adalah menggunakan sertifikat dengan wildcard name, misalnya, *.nginx.org. Sertifikat ini akan cocok dengan www.nginx.org, tapi tidak akan cocok dengan nginx.org dan www.sub.nginx.org. Dua metode tadi, bisa juga dikombinasikan. Sertifikat bisa saja berisikan exact dan wildcard name pada bagian SubjectAltName, misalnya, nginx.org dan *.nginx.org.</p>
<p>Akan lebih baik untuk menyimpan berkas sertifikat dengan beberapa nama dan berkas kunci privatenya pada level http dari berkas konfigurasi, agar di inherit ke semua server dari satu salinan memori.</p>

<div class="wp_syntax"><div class="code"><pre class="text" style="font-family:monospace;">ssl_certificate      common.crt;
ssl_certificate_key  common.key;
&nbsp;
server {
    listen           443;
    server_name      www.nginx.com;
    ssl              on;
    ...
}
&nbsp;
server {
    listen           443;
    server_name      www.nginx.org;
    ssl              on;
    ...
}</pre></div></div>

<h3 id="toc-server-name-indication">Server Name Indication</h3>
<p>Solusi yang lebih mendasar untuk menjalankan beberapa server HTTPS pada satu alamat IP tunggal adalah menggunakan TLSv1.1 Server Name Indication extension (SNI, RFC3546), dimana dia membolehkan peramban melanjutkan request server name pada saat SSL handshake, dan selanjutnya, server akan tahu sertifikat yang mana yang harus digunakan untuk koneksi tersebut. Tapi SNI memiliki dukungan peramban yang terbatas. Saat ini dukungan fitur mulai ada di beberapa versi peramban berikut:</p>
<p>Opera 8.0;<br />
MSIE 7.0 (hanya untuk Windows Vista atau versi lebih tinggi);<br />
Firefox 2.0 dan peramban lain yang menggunakan platform Mozilla Platform rv:1.8.1;<br />
Safari 3.2.1 (Versi Windows mendukung SNI pada Vista atau versi lebih baru);<br />
dan Chrome (Versi Windows mendukung SNI pada Vista atau versi lebih baru).</p>
<p>Untuk menggunakan SNI di nginx, ini harus didukung oleh pustaka OpenSSL yang mana saat nginx dibangun juga oleh pustakan yang sedang ditautkan secara dinamik saat dijalankan. OpenSSL sudah mendukung SNI sejak versi 0.9.8f jika dia dibangun dengan opsi konfigurasi &#8220;<tt>--enable-tlsext</tt>&#8220;. Sejak OpenSSL 0.8.9j opsi ini diaktifkan secara default. Jika nginx sudah dibangun dengan dukungan SNI, maka nginx akan menampilkan ini ketika dijalankan dengan pilihan &#8220;-V&#8221;:</p>
<pre>$ nginx -V
...
TLS SNI support enabled
...</pre>
<p>Akan tetapi, jika nginx yang sudah diaktifkan SNI nya, tapi ditautkan secara dinamik ke pustaka OpenSSl yang tidak memiliki dukungan SNI, ngixn akan menampilkan peringatan:</p>

<div class="wp_syntax"><div class="code"><pre class="text" style="font-family:monospace;">nginx was built with SNI support, however, now it is linked
dynamically to an OpenSSL library which has no tlsext support,
therefore SNI is not available</pre></div></div>

<h3 id="toc-kompatibilitas">Kompatibilitas</h3>
<p>The SNI support status has been shown by the “-V” switch since 0.8.21 and 0.7.62.<br />
The “ssl” parameter of the “listen” directive has been supported since 0.7.14.<br />
SNI has been supported since 0.5.32.<br />
The shared SSL session cache has been supported since 0.5.6.<br />
Version 0.8.19 and later: the default SSL protocols are SSLv3 and TLSv1.<br />
Version 0.8.18 and earlier: the default SSL protocols are SSLv2, SSLv3, and TLSv1.<br />
Version 0.8.20 and later: the default SSL ciphers are “HIGH:!ADH:!MD5”.<br />
Version 0.8.19: the default SSL ciphers are “ALL:!ADH:RC4+RSA:+HIGH:+MEDIUM”.<br />
Version 0.8.18 and earlier: the default SSL ciphers are<br />
“ALL:!ADH:RC4+RSA:+HIGH:+MEDIUM:+LOW:+SSLv2:+EXP”.</p>
<p>Ditulis oleh Igor Sysoev<br />
Diedit oleh Brian Mercer<br />
Diterjemahkan oleh Cecep Mahbub</p>
]]></content:encoded>
			<wfw:commentRss>http://ngadimin.com/2010/01/22/mengkonfigurasi-https-server-di-nginx/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Konfigurasi HTTPS di Nginx</title>
		<link>http://ngadimin.com/2009/11/30/konfigurasi-https-di-nginx/</link>
		<comments>http://ngadimin.com/2009/11/30/konfigurasi-https-di-nginx/#comments</comments>
		<pubDate>Sun, 29 Nov 2009 17:35:33 +0000</pubDate>
		<dc:creator>Cecep Mahbub</dc:creator>
				<category><![CDATA[Tutorial]]></category>
		<category><![CDATA[certificate]]></category>
		<category><![CDATA[https]]></category>
		<category><![CDATA[nginx]]></category>
		<category><![CDATA[openssl]]></category>
		<category><![CDATA[ssl]]></category>

		<guid isPermaLink="false">http://ngadimin.com/?p=1468</guid>
		<description><![CDATA[Mengkonfigurasi https di Nginx. Di tulisan ini akan dijelaskan bagaimana cara mengkonfigurasi Nginx agar bisa melayani akses https. Dan kita akan menggunakan self sign certificate.]]></description>
			<content:encoded><![CDATA[<p>Sebelum melanjutkan, silakan Anda baca tentang cara <a href="http://ngadimin.com/2009/11/11/membuat-self-signed-certificate/">Membuat Self-Signed Certificate</a>, dan <a href="http://ngadimin.com/2009/06/26/video-instalasi-nginx-di-ubuntu-hardy/">cara menginstal Nginx</a>. Karena kita akan menggunakan keduanya.</p>
<h3 id="toc-yang-diperlukan">Yang diperlukan</h3>
<p>Pastikan Nginx dikompilasi dengan opsi:</p>
<pre>--with-http_ssl_module</pre>
<p>Jika Anda menggunakan paket debian atau rpm, Anda bisa memastikannya dengan pertintah:</p>
<pre>nginx -V</pre>
<p>Selain itu Anda harus sudah menginstal paket openssl.</p>
<h3 id="toc-membuat-self-sign-certificate">Membuat Self Sign Certificate</h3>
<p>Saya tuliskan lagi secara singkat. Lengkapnya silakan lihat di tulisan sebelumnya, <a href="http://ngadimin.com/2009/11/11/membuat-self-signed-certificate/">Membuat Self Sign Certificate</a>.</p>
<pre>openssl genrsa -out server.key 2048
openssl req -new -key server.key -out server.csr
openssl x509 -req -days 731 -in server.csr -signkey server.key -out server.crt
</pre>
<p>Anda akan mempunyai 3 berkas baru.</p>
<pre>server.crt
server.csr
server.key</pre>
<p>Yang akan diguanakan hanya dua, <code>server.crt</code> dan <code>server.key</code>.</p>
<h3 id="toc-konfigurasi-nginx">Konfigurasi Nginx</h3>
<p>Sekarang silakan salin dua berkas tersebut, dan atur hak aksesnya. Asumsi Nginx dijalankan sebagai user www-data.</p>
<pre>cp server.crt /etc/ssl/
cp server.key /etc/ssl/
chmod 644 /etc/ssl/server.crt
chmod 640 /etc/ssl/server.key
chown root:www-data /etc/ssl/server.key</pre>
<p>Maka konfigurasi Nginx untuk https:</p>
<pre>server {
    server_name perusahaan.com;
    listen 443;
    ssl on;
    ssl_certificate /etc/ssl/server.crt;
    ssl_certificate_key /etc/ssl/server.key;
}
</pre>
]]></content:encoded>
			<wfw:commentRss>http://ngadimin.com/2009/11/30/konfigurasi-https-di-nginx/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Instalasi Zimbra 6.0 di Ubuntu Hardy</title>
		<link>http://ngadimin.com/2009/10/10/instalasi-zimbra-6-0-di-ubuntu-hardy/</link>
		<comments>http://ngadimin.com/2009/10/10/instalasi-zimbra-6-0-di-ubuntu-hardy/#comments</comments>
		<pubDate>Sat, 10 Oct 2009 14:09:48 +0000</pubDate>
		<dc:creator>Cecep Mahbub</dc:creator>
				<category><![CDATA[Tutorial]]></category>
		<category><![CDATA[install]]></category>
		<category><![CDATA[ubuntu]]></category>
		<category><![CDATA[zimbra]]></category>
		<category><![CDATA[zimbra 6.0]]></category>

		<guid isPermaLink="false">http://ngadimin.com/?p=1093</guid>
		<description><![CDATA[Zimbra Collaboration Suite versi 6.0 baru dirilis awal bulan september 2009. Tulisan ini akan menjelaskan bagaimana menginstal zimbra versi 6.0 di Ubuntu hardy Heron.]]></description>
			<content:encoded><![CDATA[<p>Pada prinsipnya instalasi di Zimbra 6.0 masih sama dengan Zimbra 5.0. Bahkan paket-paket yang diperlukan saat instalasi masih sama persis. Tapi saya coba tulis ulang disini step-by-step nya.</p>
<p>Sebelum Anda melanjutkan membaca tulisan ini, ada baiknya Anda tidak melewatkan seri tutorial DNS Server dengan Bind9 (<a href="http://ngadimin.com/2009/07/02/instalasi-dns-server-di-ubuntu-menggunakan-bind9/">1</a>, <a href="http://ngadimin.com/2009/07/05/membuat-secondary-dns-server/">2</a> dan <a href="http://ngadimin.com/2009/07/08/belajar-dig-dns-lookup-utility-melalui-contoh/">3</a>). Karena dalam instalasi zimbra, Anda harus memahami bagaimana cara membuat sebuah hostname bisa di resolve dengan baik dan bagaimana membuat entri mx record.</p>
<p>Saat tulisan ini dibuat, rilis terbaru zimbra untuk versi 6.0, adalah 6.0.1. Dan untuk tutorial kali ini, kita akan menggunakan Ubuntu 8.04 (Hardy Heron). Instalasi ubuntu diasumsikan menggunakan instalasi default ubuntu 8.04 server edition.</p>
<h3 id="toc-mengkonfigurasi-berkas-etchosts">Mengkonfigurasi berkas /etc/hosts</h3>
<p>Zimbra mensyaratkan hostname bisa diresolve dengan baik, sekarang coba Anda sunting berkas /etc/hosts.</p>
<p>Dari asalnya,</p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
2
3
4
5
6
7
8
9
10
</pre></td><td class="code"><pre class="text" style="font-family:monospace;">127.0.0.1	localhost
127.0.1.1	zimbra
&nbsp;
# The following lines are desirable for IPv6 capable hosts
::1     ip6-localhost ip6-loopback
fe00::0 ip6-localnet
ff00::0 ip6-mcastprefix
ff02::1 ip6-allnodes
ff02::2 ip6-allrouters
ff02::3 ip6-allhosts</pre></td></tr></table></div>

<p>Menjadi</p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
2
3
4
5
6
7
8
9
10
</pre></td><td class="code"><pre class="text" style="font-family:monospace;">127.0.0.1	localhost
172.16.10.131  zibra.ngadimin.com zimbra
&nbsp;
# The following lines are desirable for IPv6 capable hosts
::1     ip6-localhost ip6-loopback
fe00::0 ip6-localnet
ff00::0 ip6-mcastprefix
ff02::1 ip6-allnodes
ff02::2 ip6-allrouters
ff02::3 ip6-allhosts</pre></td></tr></table></div>

<p>Disini diasumsikan IP server adalah 172.16.10.131, dan hostnamenya adalah zimbra.ngadimin.com.</p>
<h3 id="toc-contoh-konfigurasi-dns">Contoh konfigurasi DNS</h3>
<p>Hostname &#038; Alamat IP</p>
<ul>
<li>hostname: zimbra.ngadimin.com</li>
<li>ip: 172.16.10.131</li>
</ul>
<p>Kita akan buatkan alias, dibuatkan hostname yang mencerminkan fungsi dari service/layanan yang diberikan.</p>
<ul>
<li>imap.ngadimin.com, untuk akses imap</li>
<li>pop.ngadimin.com, untuk akses pop3</li>
<li>smtp.ngadimin.com, untuk akses smtp (mengirim email)</li>
<li>webmail.ngadimin.com, untuk akses webmail</li>
</ul>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
</pre></td><td class="code"><pre class="text" style="font-family:monospace;">$TTL 7200       ; 2 hours
@       IN SOA  ns1.ngadimin.com. hostmaster.ngadimin.com. (
                                2009101000 ; serial
                                7200       ; refresh (2 hours)
                                3600       ; retry (1 hour)
                                604800     ; expire (1 week)
                                10800      ; minimum (3 hours)
                                )       
                        NS      ns1.ngadimin.com.
                        MX  10  zimbra.ngadimin.com.
&nbsp;
ns1                     A       172.16.10.131
zimbra                  A       172.16.10.131
&nbsp;
imap                    CNAME   zimbra
pop                     CNAME   zimbra
smtp                    CNAME   zimbra
webmail                 CNAME   zimbra</pre></td></tr></table></div>

<h3 id="toc-paket-paket-yang-dibutuhkan-untuk-instalasi-zimbra">Paket-paket yang dibutuhkan untuk instalasi zimbra</h3>
<p>Instal paket-paket berikut.</p>
<pre>sudo apt-get install libidn11 libpcre3 libgmp3c2 libexpat1 libstdc++6 libstdc++5 sysstat</pre>
<p>Untuk memudahkan, kita akan uninstall apparmor (Anda boleh tidak setuju dengan cara ini, tapi ini demi memudahkan instalasi).</p>
<pre>sudo dpkg --purge apparmor apparmor-utils</pre>
<p>Anda juga harus memastikan tidak ada yg listen di port 25, 80, 110, 143. Untuk memeriksanya, jalankan perintah berikut. Lihat port yang listen di server Anda.</p>
<pre>sudo lsof -i -n -P</pre>
<h3 id="toc-instalasi-zimbra">Instalasi Zimbra</h3>
<p>Download source instalasi dari website zimbra. <a href="http://www.zimbra.com/community/downloads.html">http://www.zimbra.com/community/downloads.html</a>. Pilih paket yang sesuai dengan arsitektur prosesor Anda. Misal, yang saya gunakan Ubuntu 8.04 LTS 32 bit.</p>
<pre>wget http://h.yimg.com/lo/downloads/6.0.1_GA/zcs-6.0.1_GA_1816.UBUNTU8.20090911174852.tgz</pre>
<p>Ekstrak,</p>
<pre>tar zxvf zcs-6.0.1_GA_1816.UBUNTU8.20090911174852.tgz</pre>
<p>Lalu jalankan skrip instalasi.</p>
<pre>cd zcs-6.0.1_GA_1816.UBUNTU8.20090911174852
sudo ./install.sh</pre>
]]></content:encoded>
			<wfw:commentRss>http://ngadimin.com/2009/10/10/instalasi-zimbra-6-0-di-ubuntu-hardy/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
		<item>
		<title>Monitoring Log Server menggunakan LogWatch di Ubuntu</title>
		<link>http://ngadimin.com/2009/10/03/monitoring-log-server-menggunakan-logwatch-di-ubuntu/</link>
		<comments>http://ngadimin.com/2009/10/03/monitoring-log-server-menggunakan-logwatch-di-ubuntu/#comments</comments>
		<pubDate>Sat, 03 Oct 2009 16:04:57 +0000</pubDate>
		<dc:creator>Cecep Mahbub</dc:creator>
				<category><![CDATA[Tutorial]]></category>
		<category><![CDATA[linux]]></category>
		<category><![CDATA[log]]></category>
		<category><![CDATA[logwatch]]></category>
		<category><![CDATA[monitoring]]></category>

		<guid isPermaLink="false">http://ngadimin.com/?p=1321</guid>
		<description><![CDATA[Salah satu tugas admin adalah memonitor log-log yang ada di server. Tapi dalam satu server biasanya ada banyak log yang harus di cek. Untuk memudahkan monitoring, ada aplikasi bantu yang bisa merangkum semua log, dan mengirim hasil pengecekannya ke admin. Salah satu aplikasi untuk keperluan tersebut adalah LogWatch.]]></description>
			<content:encoded><![CDATA[<h3 id="toc-instalasi">Instalasi</h3>
<p>Menginstal logwatch sangatlah mudah. Semudah menginstal aplikasi lainnya dari repositori Ubuntu.</p>
<pre>sudo apt-get install logwatch</pre>
<h3 id="toc-konfigurasi">Konfigurasi</h3>
<p>Letak berkas konfigurasi default ada di <code>/usr/share/logwatch/default.conf/logwatch.conf</code>. Silakan Anda amati bagian yang mungkin bisa Anda ubah. Tapi setidaknya Anda harus mengatur baris.</p>

<div class="wp_syntax"><div class="code"><pre class="text" style="font-family:monospace;">MailTo = root</pre></div></div>

<p>Ubah menjadi</p>

<div class="wp_syntax"><div class="code"><pre class="text" style="font-family:monospace;">MailTo = alamat.email@domain.anda.com</pre></div></div>

<p>Selanjutnya Anda tinggal menunggu. Seharusnya jika semua berjalan dengan baik, esoknya Anda sudah menerima laporan dari LogWatch.</p>
]]></content:encoded>
			<wfw:commentRss>http://ngadimin.com/2009/10/03/monitoring-log-server-menggunakan-logwatch-di-ubuntu/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Stress Test dan Benchmark Aplikasi Web sebelum Sistem LIVE</title>
		<link>http://ngadimin.com/2009/09/27/stress-test-dan-benchmark-aplikasi-web-sebelum-sistem-live/</link>
		<comments>http://ngadimin.com/2009/09/27/stress-test-dan-benchmark-aplikasi-web-sebelum-sistem-live/#comments</comments>
		<pubDate>Sun, 27 Sep 2009 08:15:27 +0000</pubDate>
		<dc:creator>Cecep Mahbub</dc:creator>
				<category><![CDATA[Tutorial]]></category>
		<category><![CDATA[apache]]></category>
		<category><![CDATA[benchmark]]></category>
		<category><![CDATA[stress test]]></category>
		<category><![CDATA[webserver]]></category>

		<guid isPermaLink="false">http://ngadimin.com/?p=1248</guid>
		<description><![CDATA[Ketika Anda berniat melakukan launching atau meluncurkan aplikasi berbasiskan web di Internet, Anda harus mempersiapkan banyak hal. Dari segi sistem salah satunya adalah memastikan aplikasi web yang Anda luncurkan bisa menangani pengakses aplikasi tersebut sejumlah yang Anda targetkan. ]]></description>
			<content:encoded><![CDATA[<p>Untuk menentukan jumlah pengakses bukanlah hal mudah, tapi Anda bisa melakukan pengujian sebelum live, dengan metoda stress test dan benchmark aplikasi web. Dengan hasil test tersebut, Anda bisa mengetahui performa aplikasi web Anda dan bisa memperkirakan dengan infrastruktur yang Anda miliki sekarang apakah layanan akan berfungsi dengan baik atau tidak saat sistem diluncurkan untuk diakses oleh user.</p>
<h3 id="toc-stress-test-sering-dilupakan">Stress Test sering Dilupakan</h3>
<p>Ketika Anda berniat meluncurkan layanan online berbasiskan web, walaupun itu hanya untuk kalangan terbatas, sebaiknya Anda sudah siap dengan jumlah pengakses yang menjadi target layanan itu. Dan dalam kenyataannya banyak pihak yang lupa atau tidak menghitung dengan baik jumlah pengakses layanannnya.</p>
<blockquote><p>Sebuah sekolah membuka jalur pendaftaran siswa lewat internet. Jadi dengan tujuan untuk memperlancar proses pendaftaran, orang tua siswa disarankan untuk mendaftar via internet. Harapannya dengan proses pendaftaran online via internet tidak ada lagi antrian di meja pendaftaran ataupun kekisruhan di sekolah gara-gara pendaftar yang banyak.</p>
<p>Singkat cerita, layanan mulai dipublikasikan dan orang tua diinformasikan agar menggunakan layanan pendaftaran online via internet tadi. Hasilnya setelah sistem live, ternyata orang tua siswa kesulitan mengakses layanan online tersebut. Jangankan untuk daftar, baru mengakses form pendaftarannya saja sudah sering timeout. Belum lagi saat submit isian form, bukannya sukses malah muncul halaman error yang tidak dimengerti oleh si orang tua tadi.</p></blockquote>
<p>Itu adalah contoh peluncuran layanan online yang tidak dipersiapkan dengan baik. Masalah di atas bisa banyak faktor yang menjadikan masalah. Pertama, jumlah pengakses dalam satu saat bersamaan banyak. Kedua, mungkin bandwidth yang disediakan kurang memadai dan terakhir mungkin layanan aplikasinya tidak mampu menangani sejumlah pengakses yang cukup banyak dalam satu saat yang bersamaan.</p>
<p>Seharusnya jika pengembang aplikasi web melakukan proses test sebelum live, masalah kapasitas server atau bandwidth yang tidak memadai sudah harus diketahui jauh-jauh hari sebelum sistem live.</p>
<h3 id="toc-banyak-dan-sedikit-itu-relatif">Banyak dan Sedikit itu Relatif</h3>
<p>1000 pengakses untuk portal seperti detik atau kompas mungkin sangatlah sedikit, bahkan mungkin tidak terasa apa-apa. Tapi buat aplikasi web yang disimpan di server <em>shared hosting</em> mungkin akan terasa berbeda. Apalagi jika aplikasi web itu dibuat sendiri dan tidak didesain dengan baik, sehingga baru diakses oleh puluhan pengakses dalam satu saat bersamaan sudah tidak responsif lagi, bahkan menjadi error.</p>
<p>Jadi angka-angka bukan ukuran yang baku, tapi dengan target user yang akan menggunakan layanan Anda, Anda bisa memprediksi mana yang harus dicermati lebih lanjut (yang artinya Anda harus melakukan test sistem), mana yang bisa diabaikan.</p>
<blockquote><p>Misal, Anda diminta membuatkan blog untuk teman Anda sesama mahasiswa. Anda tidak perlu repot-repot melakukan optimasi atau benchmark disana-sini. Dengan konfigurasi standard di sebuah server shared hosting, seharusnya tidak akan ada masalah. </p>
<p>Tapi akan berbeda hasil akhirnya, jika mahasiswa si pemilik blog tersebut adalah seoarang selebritis misalnya. Dan jumlah fansnya ratusan ribu sampai jutaan orang. Dan blog si selebritis itu mendapatkan publikasi dari media yang cukup gencar, maka sudah dipastikan blog itu perlu perhatian lebih khusus terkait pengakses blog itu yang mungkin akan banyak.</p></blockquote>
<p>Contoh lain yang perlu mendapatkan perhatian lebih, saat sistem akan diluncurkan.</p>
<ul>
<li>Pendaftaran siswa sekolah via internet/online.</li>
<li>Pengumuman kelulusan siswa sekolah.</li>
<li>Pengumuman atau pendaftaran CPNS (calon pegawai negeri sipil).</li>
<li>Pendaftaran ujian saringan masuk ke perguruan tinggi</li>
</ul>
<p>Sengaja yang saya contohkan seperti di atas, karena berdasarkan pengalaman contoh-contoh di atas lah yang sering gagal melayani usernya saat sistem diluncurkan. Pada umumnya mereka gagal melayani jumlah user yang banyak di satu saat yang bersamaan, walaupun jumlah pengakses banyak itu hanya untuk tempo waktu yang tidak lama.</p>
<p>Sedangkan contoh lain, misalnya peluncuran portal berita internet pada umumnya sudah mempersiapkan menerima lonjakan jumlah pengakses yang banyak, dan didukung oleh infrastruktur yang lebih baik juga.</p>
<h3 id="toc-stress-test-untuk-mengukur-kapasitas-sistem">Stress Test untuk mengukur Kapasitas Sistem</h3>
<p>Stress test harus dilakukan secara bertahap. Mulai dengan sejumlah test kecil, lalu dinaikkan nilainya sampai sistem tidak bisa lagi menangani beban yang diberikan. Hal ini penting, karena Anda harus tahu kapasitas sistem yang Anda kelola. Apakah sistem bisa menangani 100 koneksi secara bersamaan, 200 koneksi atau malah baru puluhan koneksi sudah tidak bisa menangani lagi, misalnya.</p>
<p>Jadi test dilakukan tidak serta merta untuk menguji dengan beban yang besar, tapi juga untuk mengukur seberapa banyak beban bisa ditangani oleh sistem.</p>
<h3 id="toc-aplikasi-untuk-stress-test-atau-benchmark-web-server">Aplikasi untuk Stress Test atau Benchmark Web Server</h3>
<p>Untuk melakukan pengujian, banyak aplikasi yang bisa digunakan. Misal, ab (Apache Benchmark), siege atau httperf.</p>
<p>Beberapa tulisan di blog ini yang membahas ab dan siege.</p>
<ul>
<li><a href="http://ngadimin.com/2009/09/27/benchmark-performa-web-server-dengan-apachebench-ab/">Benchmark Performa Web Server dengan ApacheBench (ab)</a></li>
<li><a href="http://ngadimin.com/2009/09/26/benchmark-performa-web-server-dengan-siege/">Benchmark Performa Web Server dengan Siege</a></li>
</ul>
<h3 id="toc-setelah-hasil-stress-test-didapat">Setelah hasil Stress Test didapat</h3>
<p>Ini adalah langkah yang paling penting, setelah hasil didapatkan, dan kita mengetahui kira-kira kapasitas sistem yang dikelola, selanjutnya apa yang harus dilakukan.</p>
<p>Jika hasilnya mengecewakan, artinya kapasitas sistem yang Anda kelola dibawah nilai yang Anda harapkan maka langkah selanjutnya adalah melakukan sistem profiling. Mencari tahu bagian mana dari proses aplikasi web Anda yang menyebabkan performa aplikasi menjadi jelek. Lalu perbaiki dan optimasi semuanya sampai mendapatkan nilai yang Anda harapkan.</p>
<p>Selain optimasi konfigurasi, mungkin juga Anda perlu mengupgrade hardware atau bahkan menambah server untuk membagi beban kedalam beberapa server.</p>
<p>Dan setelah semua perbaikan itu dilakukan, lakukan kembali stress test untuk mengetahui kapasitas sistem yang baru Anda optimasi atau baru Anda upgrade/tambah kapasitas hardwarenya.</p>
<h3 id="toc-tautan">Tautan</h3>
<ul>
<li><a href="http://www.kegel.com/c10k.html">The C10K problem</a></li>
<li><a href="http://www.cyberciti.biz/tips/howto-performance-benchmarks-a-web-server.html">Howto: Performance Benchmarks a Webserver</a></li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://ngadimin.com/2009/09/27/stress-test-dan-benchmark-aplikasi-web-sebelum-sistem-live/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>Benchmark Performa Web Server dengan ApacheBench (ab)</title>
		<link>http://ngadimin.com/2009/09/27/benchmark-performa-web-server-dengan-apachebench-ab/</link>
		<comments>http://ngadimin.com/2009/09/27/benchmark-performa-web-server-dengan-apachebench-ab/#comments</comments>
		<pubDate>Sun, 27 Sep 2009 08:05:17 +0000</pubDate>
		<dc:creator>Cecep Mahbub</dc:creator>
				<category><![CDATA[Tutorial]]></category>
		<category><![CDATA[ab]]></category>
		<category><![CDATA[apache]]></category>
		<category><![CDATA[benchmark]]></category>
		<category><![CDATA[webserver]]></category>

		<guid isPermaLink="false">http://ngadimin.com/?p=1191</guid>
		<description><![CDATA[ab adalah alat untuk proses benchmark Apache http server. Dia di desain untuk memberikan Anda gambaran performa instalasi apache Anda. Secara khusus akan menampilkan kepada Anda, seberapa banyak request per detik yang bisa dilayani oleh instalasi apache Anda.]]></description>
			<content:encoded><![CDATA[<p>Yang di tulis di atas, adalah terjemahan bebas dari deskripsi yang diberikan di <a href="http://httpd.apache.org/docs/2.2/programs/ab.html">dokumentasi Apache</a>. Walaupun memang ab dibuat oleh tim apache, pada prinsipnya semua web server bisa di benchmark oleh aplikasi ini.</p>
<h3 id="toc-instalasi">Instalasi</h3>
<p>Di Ubuntu atau Debian, ApacheBench atau ab adalah bagian dari paket apache2-utils. Jadi pastikan paket tersebut terinstall.</p>
<pre>sudo apt-get install apache2-utils</pre>
<h3 id="toc-contoh-proses-benchmark">Contoh Proses Benchmark</h3>
<pre>ab -c 20 -n 1000 http://domaincontoh.com/test/</pre>
<p>Dimana, </p>
<ul>
<li>-c 20 adalah jumlah concurrent connection, sebanyak 20 koneksi secara bersamaan.</li>
<li>-n 1000 adalah jumlah request yang mau dikirim, sebanyak 1000 request.</li>
<li>http://domaincontoh.com/test/ adalah url yang mau di test.</li>
</ul>
<p>Contoh output dari proses benchmark.</p>

<div class="wp_syntax"><div class="code"><pre class="text" style="font-family:monospace;">This is ApacheBench, Version 2.3 &lt;$Revision: 655654 $&gt;
Copyright 1996 Adam Twiss, Zeus Technology Ltd, http://www.zeustech.net/
Licensed to The Apache Software Foundation, http://www.apache.org/
&nbsp;
Benchmarking domaincontoh.com (be patient)
Completed 100 requests
Completed 200 requests
Completed 300 requests
Completed 400 requests
Completed 500 requests
Completed 600 requests
Completed 700 requests
Completed 800 requests
Completed 900 requests
Completed 1000 requests
Finished 1000 requests
&nbsp;
&nbsp;
Server Software:        nginx
Server Hostname:        domaincontoh.com
Server Port:            80
&nbsp;
Document Path:          /test/
Document Length:        178 bytes
&nbsp;
Concurrency Level:      20
Time taken for tests:   0.129 seconds
Complete requests:      1000
Failed requests:        0
Write errors:           0
Non-2xx responses:      1000
Total transferred:      371000 bytes
HTML transferred:       178000 bytes
Requests per second:    7738.38 [#/sec] (mean)
Time per request:       2.585 [ms] (mean)
Time per request:       0.129 [ms] (mean, across all concurrent requests)
Transfer rate:          2803.65 [Kbytes/sec] received
&nbsp;
Connection Times (ms)
              min  mean[+/-sd] median   max
Connect:        0    1   1.4      1      11
Processing:     0    1   0.3      1       3
Waiting:        0    1   0.3      1       3
Total:          1    3   1.4      2      13
&nbsp;
Percentage of the requests served within a certain time (ms)
  50%      2
  66%      2
  75%      2
  80%      3
  90%      3
  95%      3
  98%     11
  99%     12
 100%     13 (longest request)</pre></div></div>

<p>Dari statistik di atas, yang mungkin menarik untuk dilihat adalah baris <em>Requests per second</em>. Itu adalah nilai dari hasil benchmark. Tapi jangan abaikan juga bagian lain, misalnya <em>Complete requests</em>, <em>Failed requests</em>, atau <em>Write errors</em>. Pastikan tidak ada failed requests atau write errors. Jika ada, maka Anda harus mencari tahu apa yang menyebabkan error tersebut.</p>
<p><strong>Seputar angka-angka </strong></p>
<p>Jumlah request yang dicontohkan di atas, sebanyak 1000 request adalah contoh yang sangat kecil, dalam proses benchmark sesungguhnya angka-angka seperti 20000 atau 50000 mungkin lebih relevan. Dan jumlah concurrent connection sebanyak 20 juga termasuk kecil. Anda mungkin bisa mencoba angka yang lebih besar seperti 100 concurrent connection.</p>
<h3 id="toc-yang-harus-di-perhatikan">Yang Harus di Perhatikan</h3>
<ul>
<li>Benchmark ditujukan ke web server yang Anda kelola. Bukan ke web server pihak lain, karena kalau ditujukan ke web orang lain, itu bisa dikategorikan sebagai serangan DOS.</li>
<li>Benchmark harus dijalankan di komputer terpisah dari web server. Aplikasi benchmark bisa mengambil resource komputer secara agresif, jadi agar data benchmarking lebih valid, aplikasi benchmark harus dijalankan di komputer yang terpisah dari web server yang akan di benchmark.</li>
<li>Pastikan semua komponen dari web Anda, baik yang dinamik atau statik di benchmark.</li>
<li>Sebelum proses stress test dijalankan, siapkan aplikasi untuk memonitor seluruh proses benchmarking ini. Terutama yang berkaitan utilisasi hardware server yang di benchmark.</li>
<h3 id="toc-yang-harus-di-monitor">Yang Harus di Monitor</h3>
<p>Saat stress test dijalankan, monitor semua aspek yang berhubungan dengan penggunaan resources server. Seperti load average, load processor, input/output atau penggunaan memori server.</p>
<p>Beberapa aplikasi atau tools untuk memonitor.</p>
<ul>
<li>ps &#8211; untuk memonitor proses yang sedang berjalan.</li>
<li>top &#8211; untuk melihat penggunaan processor, memori dan aplikasi apa saja yang paling banyak menggunakan resources server.</li>
<li>vmstat</li>
<li>sysstat (iostat, mpstat, sar, pidstat)</li>
<li>dstat &#8211; aplikasi monitoring yang menggabungkan output dari vmstat, iostat, netstat</li>
<li>aplikasi untuk monitoring bandwidth</li>
</ul>
<p>Yang tidak kalah penting dari semua itu, adalah monitoring manual. Maksudnya, saat stress test sedang dilakukan, Anda bisa langsung mencoba mengakses halaman web yang sedang di test. Lalu amati apakah web masih bisa dibuka dengan normal atau mengalami masalah (seperti lambat, tidak responsif atau malah error).</p>
]]></content:encoded>
			<wfw:commentRss>http://ngadimin.com/2009/09/27/benchmark-performa-web-server-dengan-apachebench-ab/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Benchmark Performa Web Server dengan Siege</title>
		<link>http://ngadimin.com/2009/09/26/benchmark-performa-web-server-dengan-siege/</link>
		<comments>http://ngadimin.com/2009/09/26/benchmark-performa-web-server-dengan-siege/#comments</comments>
		<pubDate>Sat, 26 Sep 2009 06:47:39 +0000</pubDate>
		<dc:creator>Cecep Mahbub</dc:creator>
				<category><![CDATA[Tutorial]]></category>
		<category><![CDATA[benchmark]]></category>
		<category><![CDATA[siege]]></category>
		<category><![CDATA[webserver]]></category>

		<guid isPermaLink="false">http://ngadimin.com/?p=1195</guid>
		<description><![CDATA[Siege adalah aplikasi yang dibuat untuk keperluan stress test dan benchmark webserver. Stress test dan benchmarking diperlukan untuk mengetahui seberapa baik performa aplikasi web Anda, dan seberapa banyak client atau koneksi yang bisa ditangani oleh aplikasi Anda.]]></description>
			<content:encoded><![CDATA[<h3 id="toc-instalasi">Instalasi</h3>
<p>Menginstal siege di Ubuntu atau Debian adalah semudah menginstal aplikasi lain dari repositori.</p>
<pre>sudo apt-get install siege</pre>
<p>Untuk penggunakan CentOS atau RHEL, Anda bisa menginstalnya dari repo RPMForge atau download dari <a href="http://dag.wieers.com/rpm/packages/siege/">DAG</a>.</p>
<h3 id="toc-menggunakan-siege-untuk-benchmarking">Menggunakan Siege untuk Benchmarking</h3>
<p>Untuk melakukan proses benchmark, jalankan perintah berikut.</p>
<pre> siege -b -c 20 -t 5M http://nama.domain.com/blog/</pre>

<div class="wp_syntax"><div class="code"><pre class="text" style="font-family:monospace;">Penjelasan:
&nbsp;
-b = Benchmark, dengan pilihan ini tidak akan ada waktu jeda dari satu test ke test 
     berikutnya (defaultnya ada delay secara acak mulai dari 0 s.d 3 detik).
-c = Banyaknya koneksi secara bersamaan yang akan dijalankan, default 10. 
     Dalam contoh diset 20 koneksi.
-t = Lama test akan dijalankan, dalam contoh di set 5 menit. 
     Anda bisa set waktu berbeda dengan akhiran S utk detik, M untuk menit 
     dan H untuk jam. Misal 60S = 60 detik, 1H = 1 jam.
&nbsp;
Dan http://nama.domain.com/blog/ adalah URL yang akan di test.</pre></div></div>

<p>Contoh output:</p>

<div class="wp_syntax"><div class="code"><pre class="text" style="font-family:monospace;">Transactions:                  43119 hits
Availability:                 100.00 %
Elapsed time:                  92.40 secs
Data transferred:             160.76 MB
Response time:                  0.02 secs
Transaction rate:             466.66 trans/sec
Throughput:                     1.74 MB/sec
Concurrency:                    7.74
Successful transactions:       43119
Failed transactions:               0
Longest transaction:            9.48
Shortest transaction:           0.00</pre></div></div>

<p>Dari output di atas, Anda perhatikan baris <em>transaction rate</em>. Semakin besar berarti semakin cepat dan semakin banyak client yang bisa ditangani oleh aplikasi web kita. </p>
<p>Perhatikan juga baris <em>failed transactions</em>. Baris ini menunjukkan jumlah koneksi yang gagal saat menjalankan proses benchmark. Dalam kondisi server yang sibuk, biasanya server mulai error dan koneksi dari user pun gagal dilayani dengan baik.</p>
<h3 id="toc-benchmark-untuk-banyak-url">Benchmark Untuk Banyak URL</h3>
<p>Dalam contoh di atas kita hanya menggunakan satu URL saja. Jika ingin melakukan benchmark untuk banyak URL sekaligus, kita bisa membuat daftar URL yang akan ditest dan perintahkan siege untuk membacanya.</p>
<p>Buat berkas baru misal url.txt. Isi dengan URL yang mau ditest. Misal seperti di bawah ini,</p>

<div class="wp_syntax"><div class="code"><pre class="text" style="font-family:monospace;">http://nama.domain.com/
http://nama.domain.com/blog/
http://nama.domain.com/about.php
http://nama.domain.com/kontak.php
http://nama.domain.com/produk.php</pre></div></div>

<p>Lalu untuk proses benchmark, jalankan perintah berikut.</p>
<pre> siege -b -c 20 -t 5M -f url.txt</pre>
<h3 id="toc-rangkuman">Rangkuman</h3>
<p><a href="http://www.joedog.org/index/siege-home">Siege</a> bisa digunakan untuk proses benchmark, sehingga Anda bisa mengukur seberapa banyak kira-kira jumlah <em>client</em> yang bisa ditangani oleh aplikasi web Anda. </p>
<p>Catatan untuk contoh di atas, angka <em>concurrent connection</em> sebanyak 20 koneksi adalah jumlah yang kecil. Silakan Anda mencobanya dengan angka yang lebih besar, misal 100 koneksi. Lalu perhatikan bagaimana aplikasi dan server Anda meresponnya.</p>
<p>Yang perlu diingat, benchmark harus dijalankan ke web Anda sendiri, bukan ke web orang lain. Karena kalau dijalankan ke web orang lain, artinya Anda menyerang atau mengganggu layanan punya orang <img src='http://ngadimin.com/wp-includes/images/smilies/icon_biggrin.gif' alt=':D' class='wp-smiley' /> </p>
]]></content:encoded>
			<wfw:commentRss>http://ngadimin.com/2009/09/26/benchmark-performa-web-server-dengan-siege/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Kirim Notifikasi Email ketika Windows Server di Restart</title>
		<link>http://ngadimin.com/2009/09/10/kirim-notifikasi-email-ketika-windows-server-di-restart/</link>
		<comments>http://ngadimin.com/2009/09/10/kirim-notifikasi-email-ketika-windows-server-di-restart/#comments</comments>
		<pubDate>Thu, 10 Sep 2009 05:28:02 +0000</pubDate>
		<dc:creator>Cecep Mahbub</dc:creator>
				<category><![CDATA[Tutorial]]></category>
		<category><![CDATA[monitoring]]></category>
		<category><![CDATA[restart]]></category>
		<category><![CDATA[script]]></category>
		<category><![CDATA[vbs]]></category>
		<category><![CDATA[windows]]></category>

		<guid isPermaLink="false">http://ngadimin.com/?p=1152</guid>
		<description><![CDATA[Anda ingin mendapatkan notifikasi setiap server windows Anda restart. Soal restartnya kenapa, tidak dibahas disini, tapi kita akan membuat sebuah skrip notifikasi via email, yang akan dijalankan setiap server di restart.]]></description>
			<content:encoded><![CDATA[<p>Buat berkas baru isinya seperti di bawah ini. Simpan sebagai berkas vbs, misalnya <code>C:\mail.vbs</code></p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
</pre></td><td class="code"><pre class="text" style="font-family:monospace;">strEmailFrom = &quot;noreply@ngadimin.com&quot;
strEmailTo = &quot;cecep@ngadimin.com&quot;
strEmailSubject = &quot;SERVER REBOOTED&quot;
strEmailBody = Now &amp; vbCrLf &amp; &quot;Your server has been rebooted&quot;
strSMTP = &quot;localhost&quot;
Set objEmail = CreateObject(&quot;CDO.Message&quot;)
objEmail.From = strEmailFrom
objEmail.To = strEmailTo
objEmail.Subject = strEmailSubject
objEmail.Textbody = strEmailBody
objEmail.Configuration.Fields.Item (&quot;http://schemas.microsoft.com/cdo/configuration/sendusing&quot;) = 2
objEmail.Configuration.Fields.Item (&quot;http://schemas.microsoft.com/cdo/configuration/smtpserver&quot;) = &quot;localhost&quot;
objEmail.Configuration.Fields.Item (&quot;http://schemas.microsoft.com/cdo/configuration/smtpserverport&quot;) = 25
objEmail.Configuration.Fields.Update
objEmail.Send</pre></td></tr></table></div>

<p>Catatan, silakan atur variabel di atas. Silakan juga ubah localhost menjadi alamat SMTP server yang bisa Anda gunakan untuk mengirim email notifikasi.</p>
<p>Langkah selanjutnya adalah memasukkan skript tersebut ke script startup di server windows Anda. Caranya, dari menu start -> Run&#8230; -> ketik gpedit.msc</p>
<p>Lalu di layar Group Policy Editor, masuk ke</p>

<div class="wp_syntax"><div class="code"><pre class="text" style="font-family:monospace;">Local Computer Policy 
   -&gt; Computer Configuration 
      -&gt; Windows Setting 
         -&gt; Script (Startup/Shutdown)</pre></div></div>

<p>Masukkan script mail.vbs yangs sudah kita buat sebelumnya ke bagian Startup.</p>
]]></content:encoded>
			<wfw:commentRss>http://ngadimin.com/2009/09/10/kirim-notifikasi-email-ketika-windows-server-di-restart/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Membuat FTP Server di Ubuntu Hardy dengan Vsftpd</title>
		<link>http://ngadimin.com/2009/09/01/membuat-ftp-server-di-ubuntu-hardy-dengan-vsftpd/</link>
		<comments>http://ngadimin.com/2009/09/01/membuat-ftp-server-di-ubuntu-hardy-dengan-vsftpd/#comments</comments>
		<pubDate>Tue, 01 Sep 2009 08:33:47 +0000</pubDate>
		<dc:creator>Cecep Mahbub</dc:creator>
				<category><![CDATA[Tutorial]]></category>
		<category><![CDATA[ftp]]></category>
		<category><![CDATA[ftp server]]></category>
		<category><![CDATA[ubuntu]]></category>
		<category><![CDATA[vsftpd]]></category>

		<guid isPermaLink="false">http://ngadimin.com/?p=1008</guid>
		<description><![CDATA[Vsftpd adalah salah satu pilihan aplikasi untuk menjalankan FTP server. Vsftpd memberikan kombinasi yang serasi antara performa dan keamanan. Tutorial ini akan menjelaskan bagaimana cara menginstal vsftpd di Ubuntu Hardy.]]></description>
			<content:encoded><![CDATA[<h3 id="toc-instalasi">Instalasi</h3>
<p>Instalasi vsftpd semudah menginstal aplikasi lain dari repositori Ubuntu.</p>
<pre>sudo apt-get install vsftpd</pre>
<p>Untuk menjalankan service vsftpd</p>
<pre>sudo /etc/init.d/vsftpd start</pre>
<p>Untuk mematikan service vsftpd</p>
<pre>sudo /etc/init.d/vsftpd stop</pre>
<h3 id="toc-konfigurasi-ftp-anonim">Konfigurasi FTP Anonim</h3>
<p>FTP anonim artinya user bisa masuk ke ftp server tanpa harus memasukkan login dan password. Biasanya digunakan oleh ftp server yang menyediakan berkas untuk umum, seperti mirror aplikasi atau server penyedia repositori distro linux.</p>
<p>Secara default konfigurasi vsftpd di Ubuntu sudah membolehkan akses ftp anonim. Dan lokasi home direktori untuk user ftp ada di /home/ftp, dan ini adalah tempat menyimpan berkas yang akan diberikan melalui ftp.</p>
<p>Jika Anda berniat untuk memindahkan lokasi tempat menyimpan berkas untuk ftp anonim tadi, Anda tinggal mengganti lokasi home direktori untuk user ftp. </p>
<p>Misal, kita akan pindahkan ke /data/ftp.</p>
<pre>sudo mkdir /data/ftp
sudo usermod -d /data/ftp ftp </pre>
<p>Setelah itu, restart service vsftpd</p>
<pre>sudo /etc/init.d/vsftpd restart</pre>
<h3 id="toc-konfigurasi-ftp-untuk-user">Konfigurasi FTP untuk User</h3>
<p>Jika Anda ingin membolehkan user yang ada di linux server untuk login melalui ftp dan user-user tadi bisa mengupload berkas ke server, buat konfigurasi seperti berikut.</p>
<p>Berkas yang harus Anda sunting adalah <code>/etc/vsftpd.conf</code></p>

<div class="wp_syntax"><div class="code"><pre class="text" style="font-family:monospace;">local_enable=YES
write_enable=YES</pre></div></div>

<p>Setelah itu restart service vsftpd</p>
<pre>sudo /etc/init.d/vsftpd restart</pre>
<h3 id="toc-membatasi-user-di-home-direktori">Membatasi User di Home Direktori</h3>
<p>Secara default user yang bisa masuk melalui ftp, bisa mengakses semua berkas yang ada di server (tentunya dengan hak akses yang sesuai dengan user tersebut). Jika Anda ingin membatasi user yang login melalui ftp hanya bisa mengakses berkas-berkas yang ada di home direktorinya saja, gunakan konfigurasi berikut.</p>
<p>Sunting berkas <code>/etc/vsftpd.conf</code></p>

<div class="wp_syntax"><div class="code"><pre class="text" style="font-family:monospace;">chroot_local_user=YES</pre></div></div>

<p>Atau jika Anda hanya ingin membatasi user tertentu saja, gunakan konfigurasi seperti di bawah ini</p>

<div class="wp_syntax"><div class="code"><pre class="text" style="font-family:monospace;">chroot_list_enable=YES
chroot_list_file=/etc/vsftpd.chroot_list</pre></div></div>

<p>Kemudian Anda masukkan user yang ingin dibatasi ke dalam berkas <code>/etc/vsftpd.chroot_list</code>.</p>
<p>Dan jangan lupa, untuk menerapkan konfigurasi tadi, Anda harus merestart service vsftpd.</p>
<pre>sudo /etc/init.d/vsftpd restart</pre>
]]></content:encoded>
			<wfw:commentRss>http://ngadimin.com/2009/09/01/membuat-ftp-server-di-ubuntu-hardy-dengan-vsftpd/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>VIM Syntax Highlighting untuk Nginx</title>
		<link>http://ngadimin.com/2009/08/29/vim-syntax-highlighting-untuk-nginx/</link>
		<comments>http://ngadimin.com/2009/08/29/vim-syntax-highlighting-untuk-nginx/#comments</comments>
		<pubDate>Sat, 29 Aug 2009 16:55:59 +0000</pubDate>
		<dc:creator>Cecep Mahbub</dc:creator>
				<category><![CDATA[Tutorial]]></category>
		<category><![CDATA[nginx]]></category>
		<category><![CDATA[syntax]]></category>
		<category><![CDATA[vim]]></category>

		<guid isPermaLink="false">http://ngadimin.com/?p=988</guid>
		<description><![CDATA[Untuk pengguna vim, Anda bisa menambahkan konfigurasi berikut agar vim bisa mengenali sintak-sintak konfiguras nginx.]]></description>
			<content:encoded><![CDATA[<p>Download berkas <a href="http://www.vim.org/scripts/download_script.php?src_id=7071">nginx.vim</a>, dan simpan di <code>~/.vim/syntax/</code>. Kemudian tambahkan baris berikut ke berkas <code>~/.vim/filetype.vim</code></p>

<div class="wp_syntax"><div class="code"><pre class="text" style="font-family:monospace;">au BufRead,BufNewFile /opt/nginx/conf/* set ft=nginx
au BufRead,BufNewFile /opt/nginx/conf/sites-available/* set ft=nginx
au BufRead,BufNewFile /opt/nginx/conf/sites-enabled/* set ft=nginx</pre></div></div>

]]></content:encoded>
			<wfw:commentRss>http://ngadimin.com/2009/08/29/vim-syntax-highlighting-untuk-nginx/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

<!-- Performance optimized by W3 Total Cache. Learn more: http://www.w3-edge.com/wordpress-plugins/

Minified using disk: basic
Page Caching using disk: enhanced (User agent is rejected)

Served from: ngadimin.com @ 2012-05-19 07:38:33 -->
