<?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>How to Config</title>
	<atom:link href="http://www.howtoconfig.com/feed" rel="self" type="application/rss+xml" />
	<link>http://www.howtoconfig.com</link>
	<description>how to config - how to configure</description>
	<lastBuildDate>Wed, 18 Feb 2009 18:20:11 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.8.6</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>แก้ปัญหา REMOTE_ADDR ใน Reverse Proxy</title>
		<link>http://www.howtoconfig.com/development/remote_addr-http_x_forwarded_for-reverse-proxy.html</link>
		<comments>http://www.howtoconfig.com/development/remote_addr-http_x_forwarded_for-reverse-proxy.html#comments</comments>
		<pubDate>Wed, 18 Feb 2009 17:58:37 +0000</pubDate>
		<dc:creator>อัทศักดิ์ วงศ์กิตตะ</dc:creator>
				<category><![CDATA[Development]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[Reverse Proxy]]></category>

		<guid isPermaLink="false">http://www.howtoconfig.com/?p=74</guid>
		<description><![CDATA[สวัสดีครับ วันนี้จิบเบียร์แล้วก็มานั้งทบทวนเรื่องงานที่ทำ  พอดีมีเรื่องเล็กๆน้่อยๆ ที่ผมเองทำและน่าจะเป็นประโยช์กับเพื่อนๆ  เกี่ยวกับการตั้ง Reverse Proxy กับปัญหา เรื่อง IP ที่ show ใน app ของเรา
ปกติเวลาเราเขียน Apps หรือ พวกฟรี Webboard ทั้งหลายจะมีการ Check IP จาก
$_SERVER['REMOTE_ADDR'] และ $_SERVER['HTTP_X_FORWARDED_FOR']  หากเจอตัวแปล HTTP_X_FORWARDED_FOR   ระบบจะทำการ Record  IP จาก  HTTP_X_FORWARDED_FOR ด้วย   แต่หากว่าบางโปรแกรมที่เขียน จะเก็บแค่   REMOTE_ADDR  ทำให้ IP ที่แสดงในโปรแกรมของเรา  เป็น IP ของ Reverse Proxy แทน

Client IP:  203.146.1.1
Proxy IP: 192.168.1.100
Web IP: 192.168.1.1
[Client] ===&#62; [Revert Proxy] ===&#62; [...]]]></description>
			<content:encoded><![CDATA[<p>สวัสดีครับ วันนี้จิบเบียร์แล้วก็มานั้งทบทวนเรื่องงานที่ทำ  พอดีมีเรื่องเล็กๆน้่อยๆ ที่ผมเองทำและน่าจะเป็นประโยช์กับเพื่อนๆ  เกี่ยวกับการตั้ง Reverse Proxy กับปัญหา เรื่อง IP ที่ show ใน app ของเรา</p>
<p>ปกติเวลาเราเขียน Apps หรือ พวกฟรี Webboard ทั้งหลายจะมีการ Check IP จาก</p>
<p>$_SERVER['REMOTE_ADDR'] และ $_SERVER['HTTP_X_FORWARDED_FOR']  หากเจอตัวแปล HTTP_X_FORWARDED_FOR   ระบบจะทำการ Record  IP จาก  HTTP_X_FORWARDED_FOR ด้วย   แต่หากว่าบางโปรแกรมที่เขียน จะเก็บแค่   REMOTE_ADDR  ทำให้ IP ที่แสดงในโปรแกรมของเรา  เป็น IP ของ Reverse Proxy แทน<br />
<span id="more-74"></span></p>
<p>Client IP:  203.146.1.1<br />
Proxy IP: 192.168.1.100<br />
Web IP: 192.168.1.1</p>
<p>[Client] ===&gt; [Revert Proxy] ===&gt; [Web Server]</p>
<p>เมื่อ Web Server  ได้รับ Request   Header จะได้ดั่งนี้</p>
<p>$_SERVER['REMOTE_ADDR'] = 192.168.1.100<br />
$_SERVER['HTTP_X_FORWARDED_FOR']  = 203.146.1.1</p>
<p>ทางแก้ง่ายนิดเดียวครับ  แก้ที่ System ไม่ต้องไปขอร้องให้ Programmer แก้ไขโค๊ดแต่อย่างใด  ทางออกอยู่ที่ PHP ครับ    โดย PHP จะมี Parameter อยู่ 2 ตัวคือauto_prepend_file และ auto_append_file</p>
<p>auto_prepend_file จะกำหนดว่า ก่อนที่จะรันไฟล์ php ทุกๆครั้ง จะทำการรันไฟล์นี้ก่อน ส่วน auto_append_file  คือเมื่อทำการรันไฟล์ php ใดๆเสร็จแล้ว จะมารันไฟล์ ที่เรากำหนด      เมื่อเรารู้ดั่งนี้แล้ว  เ้ราก็มาดูโค๊ดแก้ปัญหาเรื่อง Rever Proxy &amp; REMOTE_IP  ได้เลยครับ</p>
<p>1.  ให้เราไปกำหนดที่  php.ini   ใส่พารามิเตอร์  auto_prepend_file &#8220;/etc/php-prepend.php&#8221;</p>
<p>2. แก้ไขไฟล์  /etc/php-prepend.php</p>

<div class="wp_syntax"><div class="code"><pre class="php" style="font-family:monospace;"><span style="color: #000000; font-weight: bold;">&lt;?</span>
<span style="color: #000088;">$real_ip</span>    <span style="color: #339933;">=</span> session_getip<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #000088;">$ip</span>        <span style="color: #339933;">=</span> <span style="color: #000088;">$_SERVER</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">&quot;REMOTE_ADDR&quot;</span><span style="color: #009900;">&#93;</span><span style="color: #339933;">;</span>
&nbsp;
<span style="color: #000088;">$_SERVER</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">&quot;REMOTE_ADDR&quot;</span><span style="color: #009900;">&#93;</span>                    <span style="color: #339933;">=</span> <span style="color: #000088;">$real_ip</span><span style="color: #339933;">;</span>
<span style="color: #990000;">unset</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$_SERVER</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">'HTTP_X_FORWARDED_FOR'</span><span style="color: #009900;">&#93;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
<span style="color: #000000; font-weight: bold;">function</span> session_getip<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
<span style="color: #b1b100;">if</span> <span style="color: #009900;">&#40;</span><span style="color: #000088;">$_SERVER</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">&quot;HTTP_CLIENT_IP&quot;</span><span style="color: #009900;">&#93;</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
<span style="color: #b1b100;">return</span> <span style="color: #000088;">$_SERVER</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">&quot;HTTP_CLIENT_IP&quot;</span><span style="color: #009900;">&#93;</span><span style="color: #339933;">;</span>
<span style="color: #009900;">&#125;</span>
<span style="color: #b1b100;">foreach</span> <span style="color: #009900;">&#40;</span><span style="color: #990000;">explode</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">&quot;,&quot;</span><span style="color: #339933;">,</span><span style="color: #000088;">$_SERVER</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">&quot;HTTP_X_FORWARDED_FOR&quot;</span><span style="color: #009900;">&#93;</span><span style="color: #009900;">&#41;</span> <span style="color: #b1b100;">as</span> <span style="color: #000088;">$ip</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
<span style="color: #b1b100;">if</span> <span style="color: #009900;">&#40;</span><span style="color: #990000;">trim</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$ip</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
<span style="color: #b1b100;">return</span> <span style="color: #000088;">$ip</span><span style="color: #339933;">;</span>
<span style="color: #009900;">&#125;</span>
<span style="color: #009900;">&#125;</span>
<span style="color: #b1b100;">if</span> <span style="color: #009900;">&#40;</span><span style="color: #000088;">$_SERVER</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">&quot;HTTP_X_FORWARDED&quot;</span><span style="color: #009900;">&#93;</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
<span style="color: #b1b100;">return</span> <span style="color: #000088;">$_SERVER</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">&quot;HTTP_X_FORWARDED&quot;</span><span style="color: #009900;">&#93;</span><span style="color: #339933;">;</span>
<span style="color: #009900;">&#125;</span> <span style="color: #b1b100;">elseif</span> <span style="color: #009900;">&#40;</span><span style="color: #000088;">$_SERVER</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">&quot;HTTP_FORWARDED_FOR&quot;</span><span style="color: #009900;">&#93;</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
<span style="color: #b1b100;">return</span> <span style="color: #000088;">$_SERVER</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">&quot;HTTP_FORWARDED_FOR&quot;</span><span style="color: #009900;">&#93;</span><span style="color: #339933;">;</span>
<span style="color: #009900;">&#125;</span> <span style="color: #b1b100;">elseif</span> <span style="color: #009900;">&#40;</span><span style="color: #000088;">$_SERVER</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">&quot;HTTP_FORWARDED&quot;</span><span style="color: #009900;">&#93;</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
<span style="color: #b1b100;">return</span> <span style="color: #000088;">$_SERVER</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">&quot;HTTP_FORWARDED&quot;</span><span style="color: #009900;">&#93;</span><span style="color: #339933;">;</span>
<span style="color: #009900;">&#125;</span> <span style="color: #b1b100;">elseif</span> <span style="color: #009900;">&#40;</span><span style="color: #000088;">$_SERVER</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">&quot;HTTP_X_FORWARDED&quot;</span><span style="color: #009900;">&#93;</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
<span style="color: #b1b100;">return</span> <span style="color: #000088;">$_SERVER</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">&quot;HTTP_X_FORWARDED&quot;</span><span style="color: #009900;">&#93;</span><span style="color: #339933;">;</span>
<span style="color: #009900;">&#125;</span> <span style="color: #b1b100;">else</span> <span style="color: #009900;">&#123;</span>
<span style="color: #b1b100;">return</span> <span style="color: #000088;">$_SERVER</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">&quot;REMOTE_ADDR&quot;</span><span style="color: #009900;">&#93;</span><span style="color: #339933;">;</span>
<span style="color: #009900;">&#125;</span>
<span style="color: #009900;">&#125;</span>
<span style="color: #000000; font-weight: bold;">?&gt;</span></pre></div></div>

<p>Code ดั่งกล่าว  จะทำการ ดึง IP ที่  HTTP_X_FORWARDED   มาไว้ยัง $real_ip และทำการกำหนดให้  REMOTE_ADDR = $real_ip   ทำให้ app ทั่วไปทีเราเขียนขึ้น ไม่ต้องทำการแก้ไข Code แต่อย่างใด</p>
<p>ป.ล.    ส่วนของ prepend และ append  สามารถนำไปใช้งานได้หลายรูปแบบมากกว่านี้เอาไว้โอกาศหน้า ผมจะมาเขียนบอกเล่าให้เพื่อนๆ ได้อ่านต่อไปครับ <img src='http://www.howtoconfig.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
]]></content:encoded>
			<wfw:commentRss>http://www.howtoconfig.com/development/remote_addr-http_x_forwarded_for-reverse-proxy.html/feed</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
		<item>
		<title>Reset MySQL Password for FreeBSD</title>
		<link>http://www.howtoconfig.com/os/reset-mysql-password-for-freebsd.html</link>
		<comments>http://www.howtoconfig.com/os/reset-mysql-password-for-freebsd.html#comments</comments>
		<pubDate>Fri, 06 Feb 2009 19:09:02 +0000</pubDate>
		<dc:creator>อัทศักดิ์ วงศ์กิตตะ</dc:creator>
				<category><![CDATA[Database]]></category>
		<category><![CDATA[FreeBSD]]></category>
		<category><![CDATA[MySQL]]></category>
		<category><![CDATA[Operating System]]></category>

		<guid isPermaLink="false">http://www.howtoconfig.com/?p=70</guid>
		<description><![CDATA[วันนี้กำลังลง Apps ให้ลูกค้าครับ พอดีเค้าลง MySQL 4.0 ไว้พอถามไปเค้าบอกว่า ลืม Password MySQL สะงั้น  ผมเลยต้อง Reset Password MySQL ใหม่    วิธีก็มีหลายหลากครับ แต่ผมเลือกทางง่ายๆ (สำหรับผม)  ลองทำตามกันดูนะครับ  
1. ทำการดูว่า mysql เรา  start process ยังไง
ps auxww &#124; grep mysql
mysql    23572  0.0  0.3  1724  1372  p2  S  [...]]]></description>
			<content:encoded><![CDATA[<p>วันนี้กำลังลง Apps ให้ลูกค้าครับ พอดีเค้าลง MySQL 4.0 ไว้พอถามไปเค้าบอกว่า ลืม Password MySQL สะงั้น  ผมเลยต้อง Reset Password MySQL ใหม่    วิธีก็มีหลายหลากครับ แต่ผมเลือกทางง่ายๆ (สำหรับผม)  ลองทำตามกันดูนะครับ <img src='http://www.howtoconfig.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<p>1. ทำการดูว่า mysql เรา  start process ยังไง<br />
ps auxww | grep mysql</p>
<p>mysql    23572  0.0  0.3  1724  1372  p2  S     1:52AM   0:00.01 /bin/sh <span style="color: #0000ff;"><em>/usr/local/bin/mysqld_safe &#8211;defaults-extra-file=/var/db/mysql/my.cnf &#8211;user=mysql &#8211;datadir=/var/db/mysql &#8211;pid-file=/var/db/mysql/mail.domain.com.pid</em></span><br />
mysql    23591  0.0  4.8 57084 24936  p2  S     1:52AM   0:00.31 /usr/local/libexec/mysqld &#8211;defaults-extra-file=/var/db/mysql/my.cnf &#8211;basedir=/usr/local &#8211;datadir=/var/db/mysql &#8211;user=mysql &#8211;pid-file=/var/db/mysql/mail.domain.com.pid</p>
<p>2. เรารู้แล้วว่า MySQL Start process ยังไงเราก็stop db + start mysql ผ่าน command</p>
<p><em><span style="color: #0000ff;">/usr/local/bin/mysqld_safe &#8211;defaults-extra-file=/var/db/mysql/my.cnf &#8211;user=mysql &#8211;datadir=/var/db/mysql &#8211;pid-file=/var/db/mysql/mail.domain.com.pid &#8211;skip-grant-tables</span></em></p>
<p>เราใส่ &#8211;skip-grant-tables   MySQL จะไม่ตรวจสอบ table mysql  ทำให้เราสามารถ Login โดยไม่ต้องใส่ Password ได้</p>
<p><span style="color: #333399;">shell# mysql</span><br />
<span style="color: #ff0000;">mysq&gt; use mysql<br />
mysql&gt; UPDATE user SET password=password(&#8217;secret&#8217;) WHERE user=&#8217;root&#8217;;<br />
mysql&gt; exit;</span></p>
<p><span style="color: #333399;">shell#mysqladmin -p shutdown</span><br />
ใส่ password ใหม่ที่เราตั้งใหม่  คือ secret</p>
<p>3. start mysql ผ่าน rc.d ปกติและใช้ password ใหม่ได้แล้วครับ : )</p>
]]></content:encoded>
			<wfw:commentRss>http://www.howtoconfig.com/os/reset-mysql-password-for-freebsd.html/feed</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>PHP &#8211; 2 Way Encrypt by PKI</title>
		<link>http://www.howtoconfig.com/development/php-2way-encrypt-pki-openssl.html</link>
		<comments>http://www.howtoconfig.com/development/php-2way-encrypt-pki-openssl.html#comments</comments>
		<pubDate>Fri, 16 Jan 2009 15:31:14 +0000</pubDate>
		<dc:creator>อัทศักดิ์ วงศ์กิตตะ</dc:creator>
				<category><![CDATA[Development]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[OpenSSL]]></category>
		<category><![CDATA[PKI]]></category>

		<guid isPermaLink="false">http://www.howtoconfig.com/?p=61</guid>
		<description><![CDATA[ช่วงนี้ขยันครับกะจะปั่นบาความใหม่ๆสะหน่อย หลังจากไม่ได้เขียนมาสะนาน  วันนี้เอาเรื่องเกี่ยวกับ Developer บ้างผมเองเป็นทั้ง System,  Programing   เลยยกเรื่องการเ้ข้ารหัสข้อมูลที่เป็นแบบ  2 way คือสามารถ เข้ารหัส และถอดกลับมาได้  และมีความปลอดภัยสูง
 มาพูดเรื่อง PKI ก่อนนะครับ   ส่วนตัวผมเองไม่ได้เรื่อง IT มาเรื่อง PKI  ผมเองก็ได้แต่อ่านๆจากในเน็ต แล้วก็นำมาเล่าสู่กันฟัง    ท่าสามารถหาข้อมูลที่ลึงมากกว่านี้ได้จาก Link ข้างล่าง    &#8220;Public key infrastructure&#8221;  คือการเข้ารหัสข้อมูล โดยใช้  กุญแจ 2 ลูกคือ   Public Key และ Private Key       หากเราเข้ารหัสข้อมูลโดยใช้  Private Key     เราก็ต้องถอดรหัสโดยใช้  Public Key     ในทางกลับกัน ถ้าเข้ารหัสด้วย Public Key ก็ต้องใช้ Private Key ถอดรหัสเท่านั้น
ทีนี้มาพูดถึงความปลอดภัย   ตัว PKI [...]]]></description>
			<content:encoded><![CDATA[<p>ช่วงนี้ขยันครับกะจะปั่นบาความใหม่ๆสะหน่อย หลังจากไม่ได้เขียนมาสะนาน  วันนี้เอาเรื่องเกี่ยวกับ Developer บ้างผมเองเป็นทั้ง System,  Programing   เลยยกเรื่องการเ้ข้ารหัสข้อมูลที่เป็นแบบ  2 way คือสามารถ เข้ารหัส และถอดกลับมาได้  และมีความปลอดภัยสูง</p>
<p><img class="alignleft size-medium wp-image-62" title="PKI " src="http://www.howtoconfig.com/content/uploads/2009/01/pki-300x181.png" alt="PKI " width="300" height="181" /> มาพูดเรื่อง PKI ก่อนนะครับ   ส่วนตัวผมเองไม่ได้เรื่อง IT มาเรื่อง PKI  ผมเองก็ได้แต่อ่านๆจากในเน็ต แล้วก็นำมาเล่าสู่กันฟัง    ท่าสามารถหาข้อมูลที่ลึงมากกว่านี้ได้จาก Link ข้างล่าง    &#8220;Public key infrastructure&#8221;  คือการเข้ารหัสข้อมูล โดยใช้  กุญแจ 2 ลูกคือ   Public Key และ Private Key       หากเราเข้ารหัสข้อมูลโดยใช้  Private Key     เราก็ต้องถอดรหัสโดยใช้  Public Key     ในทางกลับกัน ถ้าเข้ารหัสด้วย Public Key ก็ต้องใช้ Private Key ถอดรหัสเท่านั้น</p>
<p>ทีนี้มาพูดถึงความปลอดภัย   ตัว PKI เองสามารถเลือก bit การเข้ารหัสได้ตามที่เราต้องการ ตั้งแต่ 512, 1024, 2048  และสามารถเข้ารหัวได้สูงกว่านี้   ทำให้เป็นการยากที่จะถอดรหัสได้    ทุกๆวันนี้เราเองก็ใช้เทคโนโลยีนี้แทบทุกวัน โดยที่เราไม่รู้ตัว  อย่างบัตร SmartCard เองก็ใช้ PKI ในการเข้ารหัส หรือ Card UBC  เองก็ใช้เช่นกัน    อีกตัวอย่างคือ   เวลาเข้าเว็บไซด์ผ่าน https   ระหว่าง Web Server และ Browser ก็จะมีการเข้ารหัสข้อมูล โดยใช้เทคโนโลยี PKI    ในการเข้ารหัสเช่นกัน</p>
<p><span id="more-61"></span></p>
<p>ทีนี้มาพูดถึงแนวทางเอาไปใช้งานกับ PHP     ในการณี้ทีเรามีข้อมูลที่เราต้องการเข้ารหัส  และต้องสามารถถอดรหัสกลับมาได้ด้วย  เราสามารถเอา PKI เข้ามาแก้ไขปัญหาดั่งกล่าวได้    โดยการสร้าง Private Key และ Publick Key  ในการถอดรหัส   แต่มีข้อแม้ว่า Key ดั่งกล่าวต้องไม่หาย   ถ้าหาย ก็บอกลา Data ที่คุณเข้ารหัสไว้ได้เลย</p>
<p>ตัวอย่าง ผมมีข้อมูลที่ต้องส่งผ่านหน้า Web โดยการ Redirect ผ่าน URL  ไปยังอีกเว็บหนึ่ง โดยที่ผมไม่ต้องการให้ใครสามารถเปิดข้อมูลได้  ผมจะทำการ  Encryt ข้อมูลโดยใช้ Public Key ของเว็บตรงข้าม และ เว็บตรงข้ามต้องใช้ Private Key  เท่านั้นในการ Decrypt ข้อมูล</p>
<p>1.  สร้าง Private Key และ Pubkic Key  ผ่่าน Command Line</p>

<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;">openssl genrsa <span style="color: #660033;">-out</span> private.key <span style="color: #000000;">2048</span>
openssl rsa -pubout  <span style="color: #000000; font-weight: bold;">&amp;</span>lt; private.key  <span style="color: #000000; font-weight: bold;">&amp;</span>gt; public.key</pre></div></div>

<p>2.  ทำการสร้าง Code PHP  Function</p>
<pre>&lt;?php
function EncryptData($source)
{
	$fp=fopen( "public.key","r");
	$pub_key=fread($fp,8192);
	fclose($fp);
	openssl_get_publickey($pub_key);
	openssl_public_encrypt($source,$crypttext,$pub_key);
	return(base64_encode($crypttext));
}

function DecryptData($source)
{
	$fp=fopen( "private.key","r");
	$priv_key=fread($fp,8192);
	fclose($fp);
	$res = openssl_get_privatekey($priv_key);
	$decoded_source = base64_decode($source);
	openssl_private_decrypt($decoded_source,$newsource,$res);
	return($newsource);
}
?&gt;</pre>
<p>การนำไปใช้งาน  ท่านสามารถเอา  ใช้ PHP เรียก Function  ดั่งกล่าว เพื่อ Encrypt และ Decrypt ได้เลยครับ</p>
<p>Refer:</p>
<p>http://en.wikipedia.org/wiki/Public_key_infrastructure<br />
http://thaicert.nectec.or.th/paper/encryption/sshl.php<br />
http://www.google.co.th/search?hl=th&amp;q=Public+key+infrastructure&amp;btnG=%E0%B8%84%E0%B9%89%E0%B8%99%E0%B8%AB%E0%B8%B2&amp;meta=cr%3DcountryTH</p>
]]></content:encoded>
			<wfw:commentRss>http://www.howtoconfig.com/development/php-2way-encrypt-pki-openssl.html/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>SSH โดยไม่ต้องใส่รหัสผ่าน</title>
		<link>http://www.howtoconfig.com/os/ubuntu/ssh-login-without-password.html</link>
		<comments>http://www.howtoconfig.com/os/ubuntu/ssh-login-without-password.html#comments</comments>
		<pubDate>Fri, 16 Jan 2009 12:30:01 +0000</pubDate>
		<dc:creator>กวิน ชัยเลิศ</dc:creator>
				<category><![CDATA[CentOS]]></category>
		<category><![CDATA[FreeBSD]]></category>
		<category><![CDATA[Mac OS X]]></category>
		<category><![CDATA[Operating System]]></category>
		<category><![CDATA[debian]]></category>
		<category><![CDATA[ubuntu]]></category>
		<category><![CDATA[*BSD]]></category>
		<category><![CDATA[centos]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[Login]]></category>
		<category><![CDATA[OpenSSH]]></category>
		<category><![CDATA[password]]></category>
		<category><![CDATA[ssh]]></category>
		<category><![CDATA[รหัสผ่าน]]></category>

		<guid isPermaLink="false">http://www.howtoconfig.com/?p=57</guid>
		<description><![CDATA[สำหรับผู้ดูแลระบบที่มีความจำเป็นต้องใช้งาน Remote Login ผ่าน OpenSSH Client อยู่เป็นประจำไม่ว่าจะใช้งานบน Linux, *BSD, Mac OS X คงจะเกิดอาการเบื่อไม่น้อยที่ต้องพิมพ์ Password ทุกๆ ครั้งที่ต้องการจะ Login (ไม่นับ Password จำพวก 123456 นะครับ) ทางออกสำหรับผู้ที่ต้องการ Login โดยไม่ต้องพิมพ์ Password แถมยังคงความปลอดภัยตามแบบฉบับของ OpenSSH สามารถทำได้ตามวิธีดังต่อไปนี้ครับ
ระบบที่ทำการทดสอบ
- OpenSSH Client บน Mac OS X 10.5.6
- OpenSSH Server บน Ubuntu 8.04
ขั้นตอนแรก ทำการสร้าง keys สำหรับยืนยันตัวตนระหว่าง Client และ Server (ทำบนเครื่อง Client ในที่นี้คือ Mac OS X)

MacClient:~ UserA$ ssh-keygen [...]]]></description>
			<content:encoded><![CDATA[<p>สำหรับผู้ดูแลระบบที่มีความจำเป็นต้องใช้งาน Remote Login ผ่าน OpenSSH Client อยู่เป็นประจำไม่ว่าจะใช้งานบน Linux, *BSD, Mac OS X คงจะเกิดอาการเบื่อไม่น้อยที่ต้องพิมพ์ Password ทุกๆ ครั้งที่ต้องการจะ Login (ไม่นับ Password จำพวก 123456 นะครับ) ทางออกสำหรับผู้ที่ต้องการ Login โดยไม่ต้องพิมพ์ Password แถมยังคงความปลอดภัยตามแบบฉบับของ OpenSSH สามารถทำได้ตามวิธีดังต่อไปนี้ครับ</p>
<p>ระบบที่ทำการทดสอบ<br />
- OpenSSH Client บน Mac OS X 10.5.6<br />
- OpenSSH Server บน Ubuntu 8.04</p>
<p>ขั้นตอนแรก ทำการสร้าง keys สำหรับยืนยันตัวตนระหว่าง Client และ Server (ทำบนเครื่อง Client ในที่นี้คือ Mac OS X)</p>

<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;">MacClient:~ UserA$ <span style="color: #c20cb9; font-weight: bold;">ssh-keygen</span> <span style="color: #660033;">-t</span> rsa</pre></div></div>


<div class="wp_syntax"><div class="code"><pre class="txt" style="font-family:monospace;">MacClient:~ UserA$ ssh-keygen -t rsa
Generating public/private rsa key pair.
Enter file in which to save the key (/Users/UserA/.ssh/id_rsa):
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /Users/UserA/.ssh/id_rsa.
Your public key has been saved in /Users/UserA/.ssh/id_rsa.pub.
The key fingerprint is:
a4:74:0b:bc:2f:d1:f5:c7:4e:90:51:7f:f4:45:84:a0 UserA@MacClient</pre></div></div>

<p><span id="more-57"></span></p>
<p>ขั้นตอนต่อไป ใช้ ssh สร้าง directory ~/.ssh บน Server ปลายทาง (ทำบน Client ได้เลย โดยผ่าน ssh)</p>

<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;">MacClient:~ UserA$ <span style="color: #c20cb9; font-weight: bold;">ssh</span> UserA<span style="color: #000000; font-weight: bold;">@</span>UbuntuServer <span style="color: #c20cb9; font-weight: bold;">mkdir</span> <span style="color: #660033;">-p</span> .ssh</pre></div></div>


<div class="wp_syntax"><div class="code"><pre class="txt" style="font-family:monospace;">MacClient:~ UserA$ ssh UserA@UbuntuServer mkdir -p .ssh
UserA@vmtuserver's password:</pre></div></div>

<p>ขั้นตอนสุดท้าย ทำการเพิ่ม Public keys ที่สร้างขึ้นในขั้นตอนแรกไปยังไฟล์ ~/.ssh/authorized_keys บน Server ปลายทาง (ทำบน Client โดยผ่าน ssh เช่นเคย)</p>

<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;">MacClient:~ UserA$ <span style="color: #c20cb9; font-weight: bold;">cat</span> .ssh<span style="color: #000000; font-weight: bold;">/</span>id_rsa <span style="color: #000000; font-weight: bold;">|</span> <span style="color: #c20cb9; font-weight: bold;">ssh</span> UserA<span style="color: #000000; font-weight: bold;">@</span>UbuntuServer <span style="color: #ff0000;">'cat &gt;&gt; .ssh/authorized_keys'</span></pre></div></div>


<div class="wp_syntax"><div class="code"><pre class="txt" style="font-family:monospace;">MacClient:~ UserA$ cat .ssh/id_rsa | ssh UserA@UbuntuServer 'cat &gt;&gt; .ssh/authorized_keys'
UserA@vmtuserver's password:</pre></div></div>

<p>ทำการทดสอบ</p>

<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;">MacClient:~ UserA$ <span style="color: #c20cb9; font-weight: bold;">ssh</span> UserA<span style="color: #000000; font-weight: bold;">@</span>UbuntuServer</pre></div></div>


<div class="wp_syntax"><div class="code"><pre class="txt" style="font-family:monospace;">MacClient:~ UserA$ ssh UserA@UbuntuServer
Linux UbuntuServer 2.6.24-19-server #1 SMP Wed Jun 18 15:18:00 UTC 2008 i686
&nbsp;
The programs included with the Ubuntu system are free software;
the exact distribution terms for each program are described in the
individual files in /usr/share/doc/*/copyright.
&nbsp;
Ubuntu comes with ABSOLUTELY NO WARRANTY, to the extent permitted by
applicable law.
&nbsp;
To access official Ubuntu documentation, please visit:
http://help.ubuntu.com/
You have mail.
Last login: Tue Jan 13 00:14:19 2009 from MacClient
UserA@UbuntuServer:~$</pre></div></div>

<p>*สามารถเพิ่ม Public keys ที่สร้างขึ้นไปยัง User ใดๆ ก็ได้ ไม่จำเป็นต้องมีชื่อเหมือนกับ User ที่มีอยู่บน Client</p>
]]></content:encoded>
			<wfw:commentRss>http://www.howtoconfig.com/os/ubuntu/ssh-login-without-password.html/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>วิธีตรวจสอบ Linux / Unix distribution version</title>
		<link>http://www.howtoconfig.com/os/ubuntu/how-to-check-linux-unix-distribution-version.html</link>
		<comments>http://www.howtoconfig.com/os/ubuntu/how-to-check-linux-unix-distribution-version.html#comments</comments>
		<pubDate>Fri, 16 Jan 2009 12:10:15 +0000</pubDate>
		<dc:creator>กวิน ชัยเลิศ</dc:creator>
				<category><![CDATA[CentOS]]></category>
		<category><![CDATA[Operating System]]></category>
		<category><![CDATA[debian]]></category>
		<category><![CDATA[ubuntu]]></category>
		<category><![CDATA[*BSD]]></category>
		<category><![CDATA[command]]></category>
		<category><![CDATA[Distribution]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[คำสั่ง]]></category>

		<guid isPermaLink="false">http://www.howtoconfig.com/?p=53</guid>
		<description><![CDATA[กรณีที่ผู้ดูแลระบบได้รับมอบหมายให้ดูแล server ที่ตนเองไม่ได้ติดตั้ง คงจะอยากรู้ว่า Linux / Unix server ที่ใช้อยู่เป็น version อะไร &#8230;
สามารถตรวจสอบได้จากคำสั่งต่อไปนี้ครับ

cat /proc/version

ได้ Output ประมาณนี้ครับ

Linux version 2.6.27-9-generic &#40;buildd@rothera&#41; &#40;gcc version 4.3.2 &#40;Ubuntu 4.3.2-1ubuntu11&#41; &#41; #1 SMP Thu Nov 20 21:57:00 UTC 200

หรือดู version ในไฟล์ /etc/issue
(issue &#8211; pre-login message and identification file)

cat /etc/issue

ได้ Output ประมาณนี้ครับ

Ubuntu 8.10 \n \l

* ทดสอบบน Ubuntu 8.10
]]></description>
			<content:encoded><![CDATA[<p>กรณีที่ผู้ดูแลระบบได้รับมอบหมายให้ดูแล server ที่ตนเองไม่ได้ติดตั้ง คงจะอยากรู้ว่า Linux / Unix server ที่ใช้อยู่เป็น version อะไร &#8230;<br />
สามารถตรวจสอบได้จากคำสั่งต่อไปนี้ครับ</p>

<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;"><span style="color: #c20cb9; font-weight: bold;">cat</span> <span style="color: #000000; font-weight: bold;">/</span>proc<span style="color: #000000; font-weight: bold;">/</span>version</pre></div></div>

<p>ได้ Output ประมาณนี้ครับ</p>

<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;">Linux version 2.6.27-<span style="color: #000000;">9</span>-generic <span style="color: #7a0874; font-weight: bold;">&#40;</span>buildd<span style="color: #000000; font-weight: bold;">@</span>rothera<span style="color: #7a0874; font-weight: bold;">&#41;</span> <span style="color: #7a0874; font-weight: bold;">&#40;</span><span style="color: #c20cb9; font-weight: bold;">gcc</span> version 4.3.2 <span style="color: #7a0874; font-weight: bold;">&#40;</span>Ubuntu 4.3.2-1ubuntu11<span style="color: #7a0874; font-weight: bold;">&#41;</span> <span style="color: #7a0874; font-weight: bold;">&#41;</span> <span style="color: #666666; font-style: italic;">#1 SMP Thu Nov 20 21:57:00 UTC 200</span></pre></div></div>

<p>หรือดู version ในไฟล์ /etc/issue<br />
(issue &#8211; pre-login message and identification file)</p>

<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;"><span style="color: #c20cb9; font-weight: bold;">cat</span> <span style="color: #000000; font-weight: bold;">/</span>etc<span style="color: #000000; font-weight: bold;">/</span>issue</pre></div></div>

<p>ได้ Output ประมาณนี้ครับ</p>

<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;">Ubuntu <span style="color: #000000;">8.10</span> \n \l</pre></div></div>

<p>* ทดสอบบน Ubuntu 8.10</p>
]]></content:encoded>
			<wfw:commentRss>http://www.howtoconfig.com/os/ubuntu/how-to-check-linux-unix-distribution-version.html/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>OpenVPN on Debian</title>
		<link>http://www.howtoconfig.com/os/debian/openvpn-on-debian.html</link>
		<comments>http://www.howtoconfig.com/os/debian/openvpn-on-debian.html#comments</comments>
		<pubDate>Thu, 15 Jan 2009 16:43:25 +0000</pubDate>
		<dc:creator>อัทศักดิ์ วงศ์กิตตะ</dc:creator>
				<category><![CDATA[Operating System]]></category>
		<category><![CDATA[debian]]></category>
		<category><![CDATA[OpenVPN]]></category>

		<guid isPermaLink="false">http://www.howtoconfig.com/?p=50</guid>
		<description><![CDATA[สวัสดีอีกครั้งครับหลังจากหายหน้าหายตาไปนาน จริงๆก็ไม่ได้ไปไหนแค่หลังๆมางานที่ office ค่อนข้างมากแล้วผมเองก็ไปเที่ยวสะบ่อยๆ เลยไม่ค่อยได้มาเขียนบทความให้อ่านกัน   วันนี้เป็นเรื่องการทำ VPN  โดยใช้ OpenVPN    ทำไมต้องเป็น OpenVPN  สาเหตุของผมคือ ผมเองต้องติดตั้งระบบ Auth System (Radius + Chillispot + Syslog-ng)    แต่ละที่ดันเป็น Dynamic IP หมด  เวลาจะแก้ไขอะไรก็ต้องไป set router    ซึ่งมันไม่ใช่ทางเลือกที่ดีเลย    ทางแก้ผมเลย set up ที่ Center แล้วให้ Site แต่ละที่ทำการสร้าง VPN Connection ไปยัง Center

Server# apt-get install openvpn
Server# vi /etc/openvpn/server.conf

# ไฟล์ /etc/openvpn/server.conf

dev tap0
proto tcp-server
ping 1
ping-restart 5
port 10000
ifconfig 10.10.10.1 255.255.255.0


Client# apt-get [...]]]></description>
			<content:encoded><![CDATA[<p>สวัสดีอีกครั้งครับหลังจากหายหน้าหายตาไปนาน จริงๆก็ไม่ได้ไปไหนแค่หลังๆมางานที่ office ค่อนข้างมากแล้วผมเองก็ไปเที่ยวสะบ่อยๆ เลยไม่ค่อยได้มาเขียนบทความให้อ่านกัน   วันนี้เป็นเรื่องการทำ VPN  โดยใช้ OpenVPN    ทำไมต้องเป็น OpenVPN  สาเหตุของผมคือ ผมเองต้องติดตั้งระบบ Auth System (Radius + Chillispot + Syslog-ng)    แต่ละที่ดันเป็น Dynamic IP หมด  เวลาจะแก้ไขอะไรก็ต้องไป set router    ซึ่งมันไม่ใช่ทางเลือกที่ดีเลย    ทางแก้ผมเลย set up ที่ Center แล้วให้ Site แต่ละที่ทำการสร้าง VPN Connection ไปยัง Center</p>

<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;">Server<span style="color: #666666; font-style: italic;"># apt-get install openvpn</span>
Server<span style="color: #666666; font-style: italic;"># vi /etc/openvpn/server.conf</span></pre></div></div>

<p># ไฟล์ /etc/openvpn/server.conf</p>
<pre>
dev tap0
proto tcp-server
ping 1
ping-restart 5
port 10000
ifconfig 10.10.10.1 255.255.255.0
</pre>

<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;">Client<span style="color: #666666; font-style: italic;"># apt-get install openvpn</span>
Client<span style="color: #666666; font-style: italic;"># vi /etc/openvpn/client.conf</span></pre></div></div>

<p># ไฟล์ /etc/openvpn/server.conf</p>
<pre>
dev tap0
proto tcp-client
ping 1
ping-restart 5
port 10003
ifconfig 10.10.10.2 255.255.255.0
remote 203.1.1.1
</pre>

<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;">Server<span style="color: #666666; font-style: italic;"># /etc/init.d/openvpn start</span>
Client<span style="color: #666666; font-style: italic;"># /etc/init.d/openvpn start</span></pre></div></div>

]]></content:encoded>
			<wfw:commentRss>http://www.howtoconfig.com/os/debian/openvpn-on-debian.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Mac OS X (แมค โอเอส เท็น)</title>
		<link>http://www.howtoconfig.com/mac-os-x/macosx.html</link>
		<comments>http://www.howtoconfig.com/mac-os-x/macosx.html#comments</comments>
		<pubDate>Mon, 08 Dec 2008 15:46:21 +0000</pubDate>
		<dc:creator>กวิน ชัยเลิศ</dc:creator>
				<category><![CDATA[Mac OS X]]></category>
		<category><![CDATA[Apple]]></category>
		<category><![CDATA[Darwin]]></category>
		<category><![CDATA[OS X]]></category>
		<category><![CDATA[UNIX]]></category>
		<category><![CDATA[ยูนิกซ์]]></category>
		<category><![CDATA[ระบบปฏิบัติการ]]></category>
		<category><![CDATA[แมคอินทอช]]></category>
		<category><![CDATA[แมคโอเอส]]></category>
		<category><![CDATA[โอเอส]]></category>

		<guid isPermaLink="false">http://www.howtoconfig.com/?p=48</guid>
		<description><![CDATA[&#8220;Mac OS X&#8221; หลายๆ คนอาจเข้าใจผิดออกเสียงโอเอสตัวเก่งของ Apple ว่า &#8220;โอเอส เอ็ก&#8221; ซึ่งความจริงแล้วโอเอสที่ว่านี้ทาง Apple ตั้งใจให้ออกเสียงว่า &#8220;โอเอส เท็น&#8221; (ผมก็คนนึงละที่เคยเรียกมันว่า &#8220;โอเอส เอ็ก&#8221;)
ทำไมต้องออกเสียง X ว่า &#8220;เท็น&#8221; ?
ตัวอักษร &#8220;X&#8221; หมายถึงเลขสิบในระบบโรมัน และอ่านออกเสียงว่า &#8220;เท็น&#8221; (Ten, แปลว่า &#8220;สิบ&#8221; ในภาษาอังกฤษ) และยังแสดงถึงรุ่นที่ต่อมากจากแมคโอเอสตัวก่อนหน้านี้คือ แมคโอเอส 9 นอกจากนี้ตัวอักษร X ยังแสดงถึงความเป็นยูนิกซ์ (UNIX) ในตัวโอเอสด้วย ซึ่งแมคโอเอสเท็นได้ใช้ยูนิกซ์ที่เป็นโอเพนซอร์สที่ชื่อว่า Darwin เป็นแกนกลาง
Mac OS X รุ่นต่างๆ
Mac OS X 10.0 (Cheetah)
วางจำหน่าย 24 มีนาคม พ.ศ. 2544 ได้รับคำชมในเรื่องความเสถียรและความสามารถ แต่มีปัญหาในด้านความเร็วในการทำงาน ราคาจำหน่าย 129 [...]]]></description>
			<content:encoded><![CDATA[<p>&#8220;Mac OS X&#8221; หลายๆ คนอาจเข้าใจผิดออกเสียงโอเอสตัวเก่งของ Apple ว่า &#8220;โอเอส เอ็ก&#8221; ซึ่งความจริงแล้วโอเอสที่ว่านี้ทาง Apple ตั้งใจให้ออกเสียงว่า &#8220;โอเอส เท็น&#8221; (ผมก็คนนึงละที่เคยเรียกมันว่า &#8220;โอเอส เอ็ก&#8221;)</p>
<p><strong>ทำไมต้องออกเสียง X ว่า &#8220;เท็น&#8221; ?</strong></p>
<p>ตัวอักษร &#8220;X&#8221; หมายถึงเลขสิบในระบบโรมัน และอ่านออกเสียงว่า &#8220;เท็น&#8221; (Ten, แปลว่า &#8220;สิบ&#8221; ในภาษาอังกฤษ) และยังแสดงถึงรุ่นที่ต่อมากจากแมคโอเอสตัวก่อนหน้านี้คือ แมคโอเอส 9 นอกจากนี้ตัวอักษร X ยังแสดงถึงความเป็นยูนิกซ์ (UNIX) ในตัวโอเอสด้วย ซึ่งแมคโอเอสเท็นได้ใช้ยูนิกซ์ที่เป็นโอเพนซอร์สที่ชื่อว่า Darwin เป็นแกนกลาง</p>
<p><span id="more-48"></span><strong>Mac OS X รุ่นต่างๆ</strong></p>
<p><strong>Mac OS X 10.0 (Cheetah)</strong></p>
<p>วางจำหน่าย 24 มีนาคม พ.ศ. 2544 ได้รับคำชมในเรื่องความเสถียรและความสามารถ แต่มีปัญหาในด้านความเร็วในการทำงาน ราคาจำหน่าย 129 ดอลลาร์</p>
<p><strong>Mac OS X 10.1 (Puma)</strong></p>
<p>วางจำหน่าย 25 กันยายน พ.ศ. 2544 ไม่ได้วางจำหน่าย แต่แจกเป็นชุดอัพเกรดฟรีสำหรับ Cheetah เพิ่มความเร็วในการทำงาน และความสามารถอื่นๆ เช่น การเล่นดีวีดี</p>
<p><strong>Mac OS X 10.2 (Jaguar)</strong></p>
<p>วางจำหน่าย 23 สิงหาคม พ.ศ. 2545 เพิ่มความรวดเร็วในการทำงาน หน้าตาแบบใหม่ และความสามารถ เช่น</p>
<ul>
<li>สนับสนุนเครือข่ายที่เป็นไมโครซอฟท์วินโดวส์</li>
</ul>
<ul>
<li> iChat &#8211; อินสแตนท์ เมสเซจจริง</li>
</ul>
<ul>
<li> Apple Rendezvous &#8211; การเชื่อมต่อเครือข่ายแบบอัตโนมัติ</li>
</ul>
<ul>
<li> CUPS (The Common Unix Printing System) &#8211; ระบบการพิมพ์&#8217;กลาง&#8217;ของระบบยูนิกซ์</li>
</ul>
<p><strong>Mac OS X 10.3 (Panther)</strong><br />
วางจำหน่าย 24 ตุลาคม พ.ศ. 2546 พัฒนาความสามารถด้านอื่นเพิ่มขึ้น แต่หยุดสนับสนุนสถาปัตยกรรมแบบ G3 แล้ว ความสามารถเด่นมีดังนี้</p>
<ul>
<li> Exposé &#8211; การแสดงหน้าต่างทำงานทั้งหมดในหน้าจอเดียว ทำให้ผู้ใช้เปลี่ยนหน้าต่างทำงานได้อย่างรวดเร็ว</li>
</ul>
<ul>
<li> Fast User Switching</li>
</ul>
<ul>
<li> FileVault</li>
</ul>
<p><strong>Mac OS X 10.4 (Tiger)</strong><br />
กำหนดวางจำหน่าย 29 เมษายน พ.ศ. 2548 ความสามารถเด่นมีดังนี้</p>
<ul>
<li> Spotlight</li>
</ul>
<ul>
<li> Dashboard</li>
</ul>
<ul>
<li> QuickTime 7</li>
</ul>
<ul>
<li> Automator</li>
</ul>
<ul>
<li> Front row</li>
</ul>
<p><strong>Mac OS X 10.5 (Leopard)</strong><br />
แมคโอเอสเทน เลเพิร์ด (มักเรียกผิดเป็น ลีโอพาร์ด) วางจำหน่ายในวันที่ 26 ตุลาคม พ.ศ. 2550 มีความสามารถเด่นที่ประกาศแล้วดังนี้</p>
<ul>
<li> Time Machine</li>
</ul>
<ul>
<li> Spaces</li>
</ul>
<ul>
<li> Core Animation</li>
</ul>
<ul>
<li> Quicklook</li>
</ul>
<ul>
<li> Stack</li>
</ul>
<ul>
<li> Finder ใหม่ที่รวม Cover Flow view เข้าไป</li>
</ul>
<ul>
<li> รองรับ 64-bit</li>
</ul>
<p>นอกจากนี้ยังมีการปรับปรุงแอปพลิเคชันที่มีอยู่เดิมอีกด้วย</p>
]]></content:encoded>
			<wfw:commentRss>http://www.howtoconfig.com/mac-os-x/macosx.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Check Transparent Proxy</title>
		<link>http://www.howtoconfig.com/os/debian/check-transparent-proxy.html</link>
		<comments>http://www.howtoconfig.com/os/debian/check-transparent-proxy.html#comments</comments>
		<pubDate>Mon, 01 Sep 2008 05:18:35 +0000</pubDate>
		<dc:creator>อัทศักดิ์ วงศ์กิตตะ</dc:creator>
				<category><![CDATA[Development]]></category>
		<category><![CDATA[FreeBSD]]></category>
		<category><![CDATA[Shell script]]></category>
		<category><![CDATA[debian]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[Proxy]]></category>
		<category><![CDATA[Squid]]></category>
		<category><![CDATA[Transparent]]></category>
		<category><![CDATA[TransparentProxy]]></category>

		<guid isPermaLink="false">http://www.howtoconfig.com/?p=43</guid>
		<description><![CDATA[คือมี case ที่ต้องทำ transparent proxy ครับ  แต่ว่าเวลา proxy มีปัญหา ผมอยากให้ทำการ ปลด proxy ออกเอง  ผมเลยเขียน shell script  มาเพื่อทำการ ตรวจสอบว่า proxy ทำได้หรือเปล่า ถ้าทำงานได้ ก็จะเพิ่ม iptables  ทำการสร้าง DNAT  ไปยังเครื่อง Proxy ครับ

หลักกาารง่ายๆคือ  จะใช้ curl แล้ว set proxy เป็นเครื่อง Proxy ที่เรากำหนด   เสร็จแล้วก็ให้ curl ทำการ connect ไปยัง web ปลายทาง   ถ้า connect ได้ content ที่ return มาจาก curl จะมากกว่า 0    และทำให้ script [...]]]></description>
			<content:encoded><![CDATA[<p>คือมี case ที่ต้องทำ transparent proxy ครับ  แต่ว่าเวลา proxy มีปัญหา ผมอยากให้ทำการ ปลด proxy ออกเอง  ผมเลยเขียน shell script  มาเพื่อทำการ ตรวจสอบว่า proxy ทำได้หรือเปล่า ถ้าทำงานได้ ก็จะเพิ่ม iptables  ทำการสร้าง DNAT  ไปยังเครื่อง Proxy ครับ</p>
<p><span id="more-43"></span></p>
<p>หลักกาารง่ายๆคือ  จะใช้ curl แล้ว set proxy เป็นเครื่อง Proxy ที่เรากำหนด   เสร็จแล้วก็ให้ curl ทำการ connect ไปยัง web ปลายทาง   ถ้า connect ได้ content ที่ return มาจาก curl จะมากกว่า 0    และทำให้ script เพิ่ม iptables  เข้าไปครับผม</p>

<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;"><span style="color: #666666; font-style: italic;">#!/bin/sh</span>
&nbsp;
<span style="color: #666666; font-style: italic;">#</span>
<span style="color: #666666; font-style: italic;">#	Check Proxy	v.10</span>
<span style="color: #666666; font-style: italic;">#	By Auttasak Wongkitta</span>
<span style="color: #666666; font-style: italic;">#	http://howtoconfig.com</span>
&nbsp;
<span style="color: #007800;">PROXY</span>=<span style="color: #ff0000;">&quot;192.168.100.254:3128&quot;</span>
<span style="color: #007800;">URL</span>=<span style="color: #ff0000;">&quot;http://manager.co.th&quot;</span>
<span style="color: #007800;">LINUX_IP</span>=<span style="color: #ff0000;">&quot;192.168.100.254&quot;</span>
<span style="color: #007800;">LINUX_IF</span>=<span style="color: #ff0000;">&quot;eth2.1&quot;</span>
&nbsp;
<span style="color: #007800;">RESULT</span>=$<span style="color: #7a0874; font-weight: bold;">&#40;</span>curl <span style="color: #660033;">-x</span> <span style="color: #007800;">$PROXY</span>  <span style="color: #007800;">$URL</span> <span style="color: #000000;">2</span><span style="color: #000000; font-weight: bold;">&amp;</span>gt;<span style="color: #000000; font-weight: bold;">/</span>dev<span style="color: #000000; font-weight: bold;">/</span>null <span style="color: #000000; font-weight: bold;">|</span> <span style="color: #c20cb9; font-weight: bold;">wc</span> -l<span style="color: #7a0874; font-weight: bold;">&#41;</span>
<span style="color: #007800;">USEPROXY</span>=$<span style="color: #7a0874; font-weight: bold;">&#40;</span>iptables <span style="color: #660033;">-t</span> nat <span style="color: #660033;">-L</span> PREROUTING <span style="color: #660033;">-n</span> <span style="color: #000000; font-weight: bold;">|</span> <span style="color: #c20cb9; font-weight: bold;">grep</span> <span style="color: #007800;">$PROXY</span> <span style="color: #000000; font-weight: bold;">|</span> <span style="color: #c20cb9; font-weight: bold;">wc</span> -l<span style="color: #7a0874; font-weight: bold;">&#41;</span>
&nbsp;
<span style="color: #000000; font-weight: bold;">if</span> <span style="color: #7a0874; font-weight: bold;">&#91;</span> <span style="color: #007800;">$RESULT</span> <span style="color: #660033;">-eq</span> <span style="color: #000000;">0</span> <span style="color: #7a0874; font-weight: bold;">&#93;</span>; <span style="color: #000000; font-weight: bold;">then</span>
        <span style="color: #000000; font-weight: bold;">if</span> <span style="color: #7a0874; font-weight: bold;">&#91;</span> <span style="color: #007800;">$USEPROXY</span> <span style="color: #660033;">-ne</span> <span style="color: #000000;">0</span> <span style="color: #7a0874; font-weight: bold;">&#93;</span>; <span style="color: #000000; font-weight: bold;">then</span>
                iptables <span style="color: #660033;">-t</span> nat <span style="color: #660033;">-D</span> PREROUTING <span style="color: #660033;">-i</span> <span style="color: #007800;">$LINUX_IF</span> <span style="color: #660033;">-d</span> <span style="color: #000000; font-weight: bold;">!</span> <span style="color: #007800;">$LINUX_IP</span> <span style="color: #660033;">-p</span> tcp <span style="color: #660033;">--dport</span> http <span style="color: #660033;">-j</span> DNAT <span style="color: #660033;">--to</span> <span style="color: #007800;">$PROXY</span>
        <span style="color: #000000; font-weight: bold;">fi</span>
<span style="color: #000000; font-weight: bold;">else</span>
        <span style="color: #000000; font-weight: bold;">if</span> <span style="color: #7a0874; font-weight: bold;">&#91;</span> <span style="color: #007800;">$USEPROXY</span> <span style="color: #660033;">-eq</span> <span style="color: #000000;">0</span> <span style="color: #7a0874; font-weight: bold;">&#93;</span>; <span style="color: #000000; font-weight: bold;">then</span>
                iptables <span style="color: #660033;">-t</span> nat <span style="color: #660033;">-A</span> PREROUTING <span style="color: #660033;">-i</span> <span style="color: #007800;">$LINUX_IF</span> <span style="color: #660033;">-d</span> <span style="color: #000000; font-weight: bold;">!</span> <span style="color: #007800;">$LINUX_IP</span> <span style="color: #660033;">-p</span> tcp <span style="color: #660033;">--dport</span> http <span style="color: #660033;">-j</span> DNAT <span style="color: #660033;">--to</span> <span style="color: #007800;">$PROXY</span>
        <span style="color: #000000; font-weight: bold;">fi</span>
<span style="color: #000000; font-weight: bold;">fi</span></pre></div></div>

]]></content:encoded>
			<wfw:commentRss>http://www.howtoconfig.com/os/debian/check-transparent-proxy.html/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>พรบ. การกระทำความผิดเกี่ยวกับคอมพิวเตอร์ &#8211; Revert Proxy Log Rotate</title>
		<link>http://www.howtoconfig.com/os/debian/revert_proxy_log_rotate.html</link>
		<comments>http://www.howtoconfig.com/os/debian/revert_proxy_log_rotate.html#comments</comments>
		<pubDate>Sat, 23 Aug 2008 19:19:50 +0000</pubDate>
		<dc:creator>อัทศักดิ์ วงศ์กิตตะ</dc:creator>
				<category><![CDATA[Development]]></category>
		<category><![CDATA[Shell script]]></category>
		<category><![CDATA[debian]]></category>
		<category><![CDATA[Apache]]></category>
		<category><![CDATA[Log]]></category>
		<category><![CDATA[Proxy]]></category>
		<category><![CDATA[Revert]]></category>
		<category><![CDATA[Rotate]]></category>
		<category><![CDATA[Squid]]></category>
		<category><![CDATA[พรบ]]></category>

		<guid isPermaLink="false">http://www.howtoconfig.com/?p=39</guid>
		<description><![CDATA[ตามที่ พรบ  ได้กำหนดให้ &#8220;ผู้ให้บริการ&#8221; เก็บ log การใช้บริการ   โชคดีที่ผมมี Revert Proxy วางไว้หน้า Web Server  ทำให้สามารถเก็บ Log ได้ง่ายหน่อย   ตัว script ที่ผมเขียนนี้ จะทำการ rotate log และ compress log ไว้    ใน version ต่อไป จะทำการ ftp ไปไว้ยัง Log Server  อื่น แทนครับ 


#!/bin/sh
#
#    Howtoconfig.com
#    Squid Log Rotate v0.1
#    By Mr. Auttasak Wongkitta
&#160;
SQUID_CONF=&#34;/etc/squid/squid.conf&#34;
COMPRESS=yes
LOG=&#34;/var/log/backup_log&#34;
&#160;
###############################
DATE=$&#40;date &#34;+%Y%m%d-%H&#34;&#41;
HOSTNAME=$&#40;hostname -s&#41;
SQUID_PATH=$&#40;whereis squid &#124; awk '{print $2}'&#41;
&#160;
SQUID_LOG=$&#40;cat $SQUID_CONF &#124; [...]]]></description>
			<content:encoded><![CDATA[<p>ตามที่ พรบ  ได้กำหนดให้ &#8220;ผู้ให้บริการ&#8221; เก็บ log การใช้บริการ   โชคดีที่ผมมี Revert Proxy วางไว้หน้า Web Server  ทำให้สามารถเก็บ Log ได้ง่ายหน่อย   ตัว script ที่ผมเขียนนี้ จะทำการ rotate log และ compress log ไว้    ใน version ต่อไป จะทำการ ftp ไปไว้ยัง Log Server  อื่น แทนครับ <img src='http://www.howtoconfig.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /><br />
<span id="more-39"></span></p>

<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;"><span style="color: #666666; font-style: italic;">#!/bin/sh</span>
<span style="color: #666666; font-style: italic;">#</span>
<span style="color: #666666; font-style: italic;">#    Howtoconfig.com</span>
<span style="color: #666666; font-style: italic;">#    Squid Log Rotate v0.1</span>
<span style="color: #666666; font-style: italic;">#    By Mr. Auttasak Wongkitta</span>
&nbsp;
<span style="color: #007800;">SQUID_CONF</span>=<span style="color: #ff0000;">&quot;/etc/squid/squid.conf&quot;</span>
<span style="color: #007800;">COMPRESS</span>=<span style="color: #c20cb9; font-weight: bold;">yes</span>
<span style="color: #007800;">LOG</span>=<span style="color: #ff0000;">&quot;/var/log/backup_log&quot;</span>
&nbsp;
<span style="color: #666666; font-style: italic;">###############################</span>
<span style="color: #007800;">DATE</span>=$<span style="color: #7a0874; font-weight: bold;">&#40;</span><span style="color: #c20cb9; font-weight: bold;">date</span> <span style="color: #ff0000;">&quot;+%Y%m%d-%H&quot;</span><span style="color: #7a0874; font-weight: bold;">&#41;</span>
<span style="color: #007800;">HOSTNAME</span>=$<span style="color: #7a0874; font-weight: bold;">&#40;</span><span style="color: #c20cb9; font-weight: bold;">hostname</span> -s<span style="color: #7a0874; font-weight: bold;">&#41;</span>
<span style="color: #007800;">SQUID_PATH</span>=$<span style="color: #7a0874; font-weight: bold;">&#40;</span><span style="color: #c20cb9; font-weight: bold;">whereis</span> squid <span style="color: #000000; font-weight: bold;">|</span> <span style="color: #c20cb9; font-weight: bold;">awk</span> <span style="color: #ff0000;">'{print $2}'</span><span style="color: #7a0874; font-weight: bold;">&#41;</span>
&nbsp;
<span style="color: #007800;">SQUID_LOG</span>=$<span style="color: #7a0874; font-weight: bold;">&#40;</span><span style="color: #c20cb9; font-weight: bold;">cat</span> <span style="color: #007800;">$SQUID_CONF</span> <span style="color: #000000; font-weight: bold;">|</span> <span style="color: #c20cb9; font-weight: bold;">grep</span> <span style="color: #ff0000;">&quot;^access_log&quot;</span> <span style="color: #000000; font-weight: bold;">|</span> <span style="color: #c20cb9; font-weight: bold;">awk</span> <span style="color: #ff0000;">'{print $2}'</span><span style="color: #7a0874; font-weight: bold;">&#41;</span>
<span style="color: #000000; font-weight: bold;">if</span> <span style="color: #7a0874; font-weight: bold;">&#91;</span> <span style="color: #660033;">-z</span> <span style="color: #007800;">$SQUID_LOG</span> <span style="color: #7a0874; font-weight: bold;">&#93;</span>; <span style="color: #000000; font-weight: bold;">then</span>
<span style="color: #7a0874; font-weight: bold;">echo</span> <span style="color: #ff0000;">&quot; * Error : access_log not found!!!&quot;</span>
<span style="color: #000000; font-weight: bold;">fi</span>
<span style="color: #007800;">SQUID_LOG_NEW</span>=<span style="color: #ff0000;">&quot;<span style="color: #007800;">$SQUID_LOG</span>-<span style="color: #007800;">$HOSTNAME</span>-<span style="color: #007800;">$DATE</span>&quot;</span>
&nbsp;
<span style="color: #666666; font-style: italic;">###############################</span>
Log<span style="color: #7a0874; font-weight: bold;">&#40;</span><span style="color: #7a0874; font-weight: bold;">&#41;</span>
<span style="color: #7a0874; font-weight: bold;">&#123;</span>
<span style="color: #7a0874; font-weight: bold;">local</span> LogText;
<span style="color: #007800;">LogText</span>=<span style="color: #ff0000;">&quot;$@&quot;</span>
<span style="color: #7a0874; font-weight: bold;">echo</span> $<span style="color: #7a0874; font-weight: bold;">&#40;</span><span style="color: #c20cb9; font-weight: bold;">date</span> +<span style="color: #ff0000;">&quot;%d/%m/%y %T&quot;</span><span style="color: #7a0874; font-weight: bold;">&#41;</span>  <span style="color: #ff0000;">&quot;   &quot;</span> <span style="color: #007800;">$LogText</span> <span style="color: #000000; font-weight: bold;">&amp;</span>gt;<span style="color: #000000; font-weight: bold;">&amp;</span>gt; <span style="color: #007800;">$LOG</span>
<span style="color: #7a0874; font-weight: bold;">&#125;</span>
<span style="color: #666666; font-style: italic;">###############################</span>
<span style="color: #666666; font-style: italic;">###############################</span>
Log <span style="color: #ff0000;">&quot;&quot;</span>
Log <span style="color: #ff0000;">&quot;&quot;</span>
Log <span style="color: #ff0000;">&quot;--------------------------------------------&quot;</span>
Log <span style="color: #ff0000;">&quot;Squid log rotate - startup&quot;</span>
Log <span style="color: #ff0000;">&quot;&quot;</span>
&nbsp;
Log <span style="color: #ff0000;">&quot;Rotate Log&quot;</span>
<span style="color: #007800;">$SQUID_PATH</span> <span style="color: #660033;">-k</span> rotate
Log <span style="color: #ff0000;">&quot;done&quot;</span>
Log <span style="color: #ff0000;">&quot;&quot;</span>
&nbsp;
Log <span style="color: #ff0000;">&quot;Loop check <span style="color: #007800;">$SQUID_LOG</span>.0&quot;</span>
<span style="color: #000000; font-weight: bold;">while</span> <span style="color: #7a0874; font-weight: bold;">&#91;</span> <span style="color: #000000; font-weight: bold;">!</span> <span style="color: #660033;">-f</span> <span style="color: #007800;">$SQUID_LOG</span>.0 <span style="color: #7a0874; font-weight: bold;">&#93;</span>; <span style="color: #000000; font-weight: bold;">do</span>
<span style="color: #c20cb9; font-weight: bold;">sleep</span> <span style="color: #000000;">1</span>;
<span style="color: #000000; font-weight: bold;">done</span>
Log <span style="color: #ff0000;">&quot;done&quot;</span>
Log <span style="color: #ff0000;">&quot;&quot;</span>
&nbsp;
Log <span style="color: #ff0000;">&quot;Move <span style="color: #007800;">$SQUID_LOG</span>.0 <span style="color: #007800;">$SQUID_LOG_NEW</span>&quot;</span>
<span style="color: #c20cb9; font-weight: bold;">mv</span> <span style="color: #007800;">$SQUID_LOG</span>.0 <span style="color: #007800;">$SQUID_LOG_NEW</span>
Log <span style="color: #ff0000;">&quot;done&quot;</span>
Log <span style="color: #ff0000;">&quot;&quot;</span>
&nbsp;
<span style="color: #000000; font-weight: bold;">if</span> <span style="color: #7a0874; font-weight: bold;">&#91;</span> <span style="color: #660033;">-f</span> <span style="color: #007800;">$SQUID_LOG_NEW</span> <span style="color: #7a0874; font-weight: bold;">&#93;</span>; <span style="color: #000000; font-weight: bold;">then</span>
Log <span style="color: #ff0000;">&quot;MD5 Sum : <span style="color: #007800;">$SQUID_LOG_NEW</span>&quot;</span>
<span style="color: #007800;">SQUID_MD5</span>=$<span style="color: #7a0874; font-weight: bold;">&#40;</span>md5sum <span style="color: #007800;">$SQUID_LOG_NEW</span> <span style="color: #000000; font-weight: bold;">|</span> <span style="color: #c20cb9; font-weight: bold;">awk</span> <span style="color: #ff0000;">'{print $1}'</span><span style="color: #7a0874; font-weight: bold;">&#41;</span>
Log <span style="color: #ff0000;">&quot;Checksum : <span style="color: #007800;">$SQUID_MD5</span>&quot;</span>
Log <span style="color: #ff0000;">&quot;done&quot;</span>
Log <span style="color: #ff0000;">&quot;&quot;</span>
<span style="color: #000000; font-weight: bold;">fi</span>
&nbsp;
<span style="color: #000000; font-weight: bold;">if</span> <span style="color: #7a0874; font-weight: bold;">&#91;</span> <span style="color: #007800;">$COMPRESS</span>==<span style="color: #ff0000;">'yes'</span> <span style="color: #7a0874; font-weight: bold;">&#93;</span>; <span style="color: #000000; font-weight: bold;">then</span>
Log <span style="color: #ff0000;">&quot;Compress log <span style="color: #007800;">$SQUID_LOG_NEW</span>&quot;</span>
<span style="color: #007800;">SIZE_OLD</span>=$<span style="color: #7a0874; font-weight: bold;">&#40;</span><span style="color: #c20cb9; font-weight: bold;">ls</span> <span style="color: #660033;">-sh</span> <span style="color: #007800;">$SQUID_LOG_NEW</span> <span style="color: #000000; font-weight: bold;">|</span> <span style="color: #c20cb9; font-weight: bold;">awk</span> <span style="color: #ff0000;">'{print $1}'</span><span style="color: #7a0874; font-weight: bold;">&#41;</span>
<span style="color: #c20cb9; font-weight: bold;">tar</span> jpcf <span style="color: #007800;">$SQUID_LOG_NEW</span>.tar.bz2 <span style="color: #007800;">$SQUID_LOG_NEW</span> <span style="color: #000000;">2</span><span style="color: #000000; font-weight: bold;">&amp;</span>gt;<span style="color: #000000; font-weight: bold;">/</span>dev<span style="color: #000000; font-weight: bold;">/</span>null
<span style="color: #007800;">SIZE_NEW</span>=$<span style="color: #7a0874; font-weight: bold;">&#40;</span><span style="color: #c20cb9; font-weight: bold;">ls</span> <span style="color: #660033;">-sh</span> <span style="color: #007800;">$SQUID_LOG_NEW</span>.tar.bz2 <span style="color: #000000; font-weight: bold;">|</span> <span style="color: #c20cb9; font-weight: bold;">awk</span> <span style="color: #ff0000;">'{print $1}'</span><span style="color: #7a0874; font-weight: bold;">&#41;</span>
Log <span style="color: #ff0000;">&quot;Compress from <span style="color: #007800;">$SIZE_OLD</span> -&amp;gt; <span style="color: #007800;">$SIZE_NEW</span>&quot;</span>
Log <span style="color: #ff0000;">&quot;done&quot;</span>
Log <span style="color: #ff0000;">&quot;&quot;</span>
&nbsp;
<span style="color: #000000; font-weight: bold;">if</span> <span style="color: #7a0874; font-weight: bold;">&#91;</span> <span style="color: #660033;">-f</span> <span style="color: #007800;">$SQUID_LOG_NEW</span>.tar.bz2 <span style="color: #7a0874; font-weight: bold;">&#93;</span>; <span style="color: #000000; font-weight: bold;">then</span>
Log <span style="color: #ff0000;">&quot;Remove file : <span style="color: #007800;">$SQUID_LOG_NEW</span>&quot;</span>
<span style="color: #c20cb9; font-weight: bold;">rm</span> <span style="color: #007800;">$SQUID_LOG_NEW</span>
Log <span style="color: #ff0000;">&quot;done&quot;</span>
Log <span style="color: #ff0000;">&quot;&quot;</span>
<span style="color: #000000; font-weight: bold;">fi</span>
<span style="color: #000000; font-weight: bold;">fi</span>
&nbsp;
Log <span style="color: #ff0000;">&quot;&quot;</span>
Log <span style="color: #ff0000;">&quot;End&quot;</span></pre></div></div>

]]></content:encoded>
			<wfw:commentRss>http://www.howtoconfig.com/os/debian/revert_proxy_log_rotate.html/feed</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Apache 2.0 &#8211; Name Base VHost</title>
		<link>http://www.howtoconfig.com/os/freebsd/apache-20-name-base-vhost.html</link>
		<comments>http://www.howtoconfig.com/os/freebsd/apache-20-name-base-vhost.html#comments</comments>
		<pubDate>Mon, 21 Jul 2008 19:06:14 +0000</pubDate>
		<dc:creator>อัทศักดิ์ วงศ์กิตตะ</dc:creator>
				<category><![CDATA[FreeBSD]]></category>
		<category><![CDATA[Apache]]></category>
		<category><![CDATA[IP Base Vhost]]></category>
		<category><![CDATA[Name Base Vhost]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[Vhost]]></category>

		<guid isPermaLink="false">http://www.howtoconfig.com/?p=34</guid>
		<description><![CDATA[พอไปอ่านกระทู้ใน thaibsd.com  เลยกะต่อยอดเล็กน้อย  หลังจากที่ติดตั้ง &#8220;Apache2.0 + PHP5 on FreeBSD&#8221;  ก็ถึงครามาทำ Name Base Vhost  ในรูปแบบของผม  พูดถึงเรื่อง Vhosts  มันทำได้หลายแบบ  แต่ที่เราทำกันบ่อยๆก็  Name Base Host และ IP Base VHost
อะไรคือ &#8220;Name Base Vhost&#8221;    ขอกล่าวถึง HTTP Protocol  ละกันครับ  เวลาที่ IE, Firefox ในเครื่องเ้้ราซึ่งเค้าเรียกรวมกันว่า  Browser   เข้าไปเว็บๆหนึ่ง เช่น [...]]]></description>
			<content:encoded><![CDATA[<p>พอไปอ่านกระทู้ใน thaibsd.com  เลยกะต่อยอดเล็กน้อย  หลังจากที่ติดตั้ง &#8220;<a href="http://www.howtoconfig.com/os/freebsd/apache20-php5-on-freebsd.html">Apache2.0 + PHP5 on FreeBSD</a>&#8221;  ก็ถึงครามาทำ Name Base Vhost  ในรูปแบบของผม  พูดถึงเรื่อง Vhosts  มันทำได้หลายแบบ  แต่ที่เราทำกันบ่อยๆก็  Name Base Host และ IP Base VHost</p>
<p>อะไรคือ &#8220;Name Base Vhost&#8221;    ขอกล่าวถึง HTTP Protocol  ละกันครับ  เวลาที่ IE, Firefox ในเครื่องเ้้ราซึ่งเค้าเรียกรวมกันว่า  Browser   เข้าไปเว็บๆหนึ่ง เช่น   เข้าไปที่  http://howtoconfig.com/index.php    Browser ของเราก็จะสร้าง tcp connect ไปยัง IP ปลายทาง  port 80  และส่ง<br />
<span id="more-34"></span></p>
<address style="padding-left: 30px;">GET /index.php HTTP/1.0</address>
<address style="padding-left: 30px;"> HOST: howtoconfig.com</address>
<p>ตรงนี้เค้าเรียนว่า Header   เวลา Server ได้รับ ก็จะส่ง  กลับมาว่า</p>
<address style="padding-left: 30px;">HTTP/1.1 301 Moved Permanently</address>
<address style="padding-left: 30px;"> Date: Mon, 21 Jul 2008 18:39:42 GMT</address>
<address style="padding-left: 30px;"> Server: Apache/2.2.3 (CentOS)</address>
<address style="padding-left: 30px;"> X-Powered-By: PHP/5.1.6</address>
<address style="padding-left: 30px;"> X-Pingback: http://www.howtoconfig.com/xmlrpc.php</address>
<address style="padding-left: 30px;"> Location: http://www.howtoconfig.com/</address>
<address style="padding-left: 30px;"> Content-Length: 0</address>
<address style="padding-left: 30px;"> Connection: close</address>
<address style="padding-left: 30px;"> Content-Type: text/html; charset=UTF-8</address>
<p>ส่วนนี้ก็ Header  ที่ Apache ตอบกลับมา   ถ้ามว่ามัน เกียวกัน ตรงไหน   ก็สังเกตุดี ที่  Browser ส่ง Request ไป จะมี HOST: howtoconfig.com  ไปด้วย  เวลา apache ได้รับ Request ก็จะไปตรวจสอบที่ httpd.conf  ว่ามีการทำ Vhost ไว้หรือไม่ ถ้ามีและชื่อ ตรงก็จะเปลี่ยน DocumetRoot ไปยัง ที่กำหนดไว้และ เอา Content ส่งไปยัง Broswer ต่อไป</p>
<p>อะไรคือ &#8220;IP Base VHost&#8221;    มันก็เหมือนกะ Name Base Vhost แหละครับ แต่ Apache จะสนใจแค่ IP ที่ Client วิ่งเข้ามา  ถ้าตรงกะ Vhost ที่ Config ไว้ระบบก็จะเปลีั่ยน DocumetRoot ไปยังที่กำหนด</p>
<p>อ่านมามาก มาสู่การทำงาน จริงๆ    ผมได้ติดตั้ง Apache2.0 + PHP5 จาก Ports  เพราะเวลาลงอะไรต่อๆไป จะได้ง่าย และสะดวกเวลา Upgrade PHP    ในเมื่อ FreeBSD ออกแบบระบบ Ports มาให้ดีแล้ว เราก็ต้องใช้มัน    เวลาผมลง จะ ไม่ยุ่งเกี่ยวกะไฟล์ httpd.conf เลยแต่จะสร้างไฟล์   /usr/local/etc/apache2/Includes/0default.conf  แทนเพราะ apache2.0 ใน FreeBSD  จะทำการ Include Includes/*.conf  มาเอง ทำให้เราแก้ไขแค่ใน  Includes/*.conf ก็พอ</p>
<p>แนะนำให้ไปอ่าน &#8220;<a href="http://www.howtoconfig.com/os/freebsd/apache20-php5-on-freebsd.html">Apache2.0 + PHP5 on FreeBSD</a>&#8221;  ก่อนนะครับ</p>
<p>การทำ Name Base Vhost   โดย Domain ชื่อ   abc.com  และเก็บเว็บไว้ที่  /home/vhosts/abc.com  เราก็ทำการสร้างไฟล์</p>

<div class="wp_syntax"><div class="code"><pre class="sh" style="font-family:monospace;">vi /usr/local/etc/apache2/Includes/abc.com.conf</pre></div></div>


<div class="wp_syntax"><div class="code"><pre class="httpd" style="font-family:monospace;">ServerName    abc.com
ServerAlias    www.abc.com
DocumentRoot    /home/vhosts/abc.com/httpdocs
CustomLog        /home/vhosts/abc.com/logs/access_log combined
ErrorLog        /home/vhosts/abc.com/logs/error_log
&nbsp;
AllowOverride All
Options SymLinksIfOwnerMatch
Order allow,deny
Allow from all</pre></div></div>

<p>ส่วนของ IP Base Vhost ก็เหมือนกันครับแต่เราต้องทำการ สร้าง Aliase IP ก่อน ที่ไฟล์ rc.conf เช่น</p>

<div class="wp_syntax"><div class="code"><pre class="sh" style="font-family:monospace;">vi /etc/rc.conf</pre></div></div>


<div class="wp_syntax"><div class="code"><pre class="sh" style="font-family:monospace;">defaultrouter=&quot;192.168.1.1&quot;
hostname=&quot;kumandtong.siambox.com&quot;
ifconfig_rl0=&quot;inet 192.168.1.1  netmask 255.255.255.0&quot;
ifconfig_rl0_alias0=&quot;inet 192.168.1.2  netmask 255.255.255.255</pre></div></div>

<p>เราก็สร้างไฟล์ apache</p>

<div class="wp_syntax"><div class="code"><pre class="sh" style="font-family:monospace;">vi /usr/local/etc/apach2/Includes/192.168.1.2.conf</pre></div></div>


<div class="wp_syntax"><div class="code"><pre class="httpd" style="font-family:monospace;">DocumentRoot    /home/vhosts/ip-2/httpdocs
CustomLog        /home/vhosts/ip-2/logs/access_log combined
ErrorLog        /home/vhosts/ip-2/logs/error_log
&nbsp;
AllowOverride All
Options SymLinksIfOwnerMatch
Order allow,deny
Allow from all</pre></div></div>

<p>ง่ายปะครับ  ไอ้คนที่เคยทำบ่อยๆอย่างผม ก็พูดได้ว่าง่ายๆ  แต่คนที่ไม่ค่อยได้ setup นี้สิ   ไงก็ลองเอาวิธี setup ของผมไปละกันนะครับ  น่าจะช่วยเพื่อนๆได้ <img src='http://www.howtoconfig.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
]]></content:encoded>
			<wfw:commentRss>http://www.howtoconfig.com/os/freebsd/apache-20-name-base-vhost.html/feed</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
	</channel>
</rss>
