<?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 &#187; PHP</title>
	<atom:link href="http://www.howtoconfig.com/tag/php/feed" rel="self" type="application/rss+xml" />
	<link>http://www.howtoconfig.com</link>
	<description>how to config - how to configure</description>
	<lastBuildDate>Fri, 29 Apr 2011 09:52:54 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.1.2</generator>
		<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[Proxy]]></category>
		<category><![CDATA[Reverse Proxy]]></category>
		<category><![CDATA[Web Server]]></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: [...]]]></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>
<iframe src="http://www.facebook.com/plugins/like.php?href=http%3A%2F%2Fwww.howtoconfig.com%2Fdevelopment%2Fremote_addr-http_x_forwarded_for-reverse-proxy.html&amp;layout=standard&amp;show_faces=true&amp;width=450&amp;action=like&amp;colorscheme=light&amp;height=80" scrolling="no" frameborder="0" style="border:none; overflow:hidden; width:450px; height:80px;" allowTransparency="true"></iframe>]]></content:encoded>
			<wfw:commentRss>http://www.howtoconfig.com/development/remote_addr-http_x_forwarded_for-reverse-proxy.html/feed</wfw:commentRss>
		<slash:comments>6</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 ถอดรหัสเท่านั้น ทีนี้มาพูดถึงความปลอดภัย   ตัว [...]]]></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</p>
<p>http://thaicert.nectec.or.th/paper/encryption/sshl.php</p>
<p>http://www.google.co.th/search?hl=th&#038;q=Public+key+infrastructure&#038;btnG=%E0%B8%84%E0%B9%89%E0%B8%99%E0%B8%AB%E0%B8%B2&#038;meta=cr%3DcountryTH</p>
<iframe src="http://www.facebook.com/plugins/like.php?href=http%3A%2F%2Fwww.howtoconfig.com%2Fdevelopment%2Fphp-2way-encrypt-pki-openssl.html&amp;layout=standard&amp;show_faces=true&amp;width=450&amp;action=like&amp;colorscheme=light&amp;height=80" scrolling="no" frameborder="0" style="border:none; overflow:hidden; width:450px; height:80px;" allowTransparency="true"></iframe>]]></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>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 เข้าไปเว็บๆหนึ่ง เช่น เข้าไปที่ http://howtoconfig.com/index.php Browser ของเราก็จะสร้าง tcp connect ไปยัง IP ปลายทาง port 80 และส่ง GET /index.php HTTP/1.0 [...]]]></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>
<iframe src="http://www.facebook.com/plugins/like.php?href=http%3A%2F%2Fwww.howtoconfig.com%2Fos%2Ffreebsd%2Fapache-20-name-base-vhost.html&amp;layout=standard&amp;show_faces=true&amp;width=450&amp;action=like&amp;colorscheme=light&amp;height=80" scrolling="no" frameborder="0" style="border:none; overflow:hidden; width:450px; height:80px;" allowTransparency="true"></iframe>]]></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>
		<item>
		<title>Split MySQL Query แยก RO/RW</title>
		<link>http://www.howtoconfig.com/development/mysql-query-split-ro-rw-mysql_query.html</link>
		<comments>http://www.howtoconfig.com/development/mysql-query-split-ro-rw-mysql_query.html#comments</comments>
		<pubDate>Sat, 07 Jun 2008 20:43:05 +0000</pubDate>
		<dc:creator>อัทศักดิ์ วงศ์กิตตะ</dc:creator>
				<category><![CDATA[Development]]></category>
		<category><![CDATA[Shell script]]></category>
		<category><![CDATA[MySQL]]></category>
		<category><![CDATA[PHP]]></category>

		<guid isPermaLink="false">http://www.howtoconfig.com/?p=20</guid>
		<description><![CDATA[วันนี้มีปัญหาขึ้นมาครับ เนื่องจาก MySQL Cluster ที่ใช้งบานนั้นลองทดสอบความเร็วแล้วสู้ MySQL แล้วใช้ Local Engine ไม่ได้เลย งานนี้เลยต้องหาทางออกครับ ผมเลยไปมอง เรื่อง MySQL Replication หลังจาก Setup และ Tuning เสร็จ ก็มาลองทดสอบความเร็ว มัน Query เร็วกว่า MySQL Cluster หลายเท่าเลยครับ ทีนี้ก็มาดูเรื่อง Codeing ปัญหาคือมันเป็นโปรแกรมที่เค้าเขียนมานานละ ผมเข้าไปแก้อะไรไม่ค่อยได้ หรือถ้าแก้จริงๆ อยาจจะเป็น Bug อีกก็ได้ คิดไปๆมาๆ อ่าเจอทางออกแล้ว ปัญหา MySQL Cluster ช้า ต้องไปใช้ MySQL Replication แทน แก้ Code ลำบาก เพระา code ค่อนข้างมาก Query ต้องเร็วและเพิ่ม MySQL Server [...]]]></description>
			<content:encoded><![CDATA[<p>วันนี้มีปัญหาขึ้นมาครับ เนื่องจาก MySQL Cluster ที่ใช้งบานนั้นลองทดสอบความเร็วแล้วสู้ MySQL แล้วใช้ Local Engine ไม่ได้เลย  งานนี้เลยต้องหาทางออกครับ  ผมเลยไปมอง เรื่อง MySQL Replication  หลังจาก Setup และ Tuning เสร็จ ก็มาลองทดสอบความเร็ว  มัน Query เร็วกว่า MySQL Cluster หลายเท่าเลยครับ</p>
<p>ทีนี้ก็มาดูเรื่อง Codeing  ปัญหาคือมันเป็นโปรแกรมที่เค้าเขียนมานานละ ผมเข้าไปแก้อะไรไม่ค่อยได้ หรือถ้าแก้จริงๆ อยาจจะเป็น Bug อีกก็ได้  คิดไปๆมาๆ อ่าเจอทางออกแล้ว</p>
<p>ปัญหา</p>
<ul>
<li> MySQL Cluster ช้า ต้องไปใช้ MySQL Replication แทน</li>
<li> แก้ Code ลำบาก เพระา code ค่อนข้างมาก</li>
<li> Query ต้องเร็วและเพิ่ม MySQL Server ได้ในอนาคต</li>
</ul>
<p>ทางแก้</p>
<ul>
<li> MyQL-Proxy    ส่วนนี้ผมลองเอามาใช้แล้วครับ ลอง Query ดูมันก็ยังช้ากว่า Connect เข้า DB ตรงๆถึง 5 &#8211; 10 เท่า</li>
<li> Edit Query      ผมเลือกทางนี้ครับ แต่มันมีวิธีลักไก่หน่อย</li>
</ul>
<p>แนวคิดคือต้องไม่ไปยุ่งกะ Code มาก ผมเลยทำการสร้าง php function ใหม่ขึ้นมาครับ โดยทำหน้าที่ check sql ก่อนที่จะ Query  ว่าเป็น SELECT, UPDATE, INSERT, DELETE  แล้วให้ function ที่สร้างขึ้นมา เลือกที่จะไป query กะ mysql เครื่องไหน</p>
<p>1. สร้าง function mysql_do_query</p>

<div class="wp_syntax"><div class="code"><pre class="php" style="font-family:monospace;"><span style="color: #000000; font-weight: bold;">function</span> mysql_do_query<span style="color: #009900;">&#40;</span> <span style="color: #000088;">$sql</span><span style="color: #339933;">,</span> <span style="color: #000088;">$count_rw</span><span style="color: #339933;">=</span><span style="color: #009900; font-weight: bold;">null</span><span style="color: #009900;">&#41;</span>
<span style="color: #009900;">&#123;</span>
	<span style="color: #000000; font-weight: bold;">global</span> <span style="color: #000088;">$conn_ro</span><span style="color: #339933;">,</span> <span style="color: #000088;">$count_rw</span><span style="color: #339933;">,</span> <span style="color: #000088;">$count_ro</span><span style="color: #339933;">;</span>
	<span style="color: #b1b100;">if</span> <span style="color: #009900;">&#40;</span> <span style="color: #339933;">!</span> <span style="color: #990000;">empty</span><span style="color: #009900;">&#40;</span> <span style="color: #000088;">$sql</span><span style="color: #009900;">&#41;</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;">ereg</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">&quot;^SELECT(.*)&quot;</span><span style="color: #339933;">,</span> <span style="color: #990000;">strtoupper</span><span style="color: #009900;">&#40;</span> <span style="color: #000088;">$sql</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span>
		<span style="color: #009900;">&#123;</span>
			<span style="color: #000088;">$count_ro</span><span style="color: #339933;">++;</span>
			<span style="color: #b1b100;">return</span> <span style="color: #990000;">mysql_query</span><span style="color: #009900;">&#40;</span> <span style="color: #000088;">$sql</span><span style="color: #339933;">,</span> <span style="color: #000088;">$conn_ro</span><span style="color: #009900;">&#41;</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: #000088;">$count_rw</span><span style="color: #339933;">++;</span>
			<span style="color: #b1b100;">return</span> <span style="color: #990000;">mysql_query</span><span style="color: #009900;">&#40;</span> <span style="color: #000088;">$sql</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
		<span style="color: #009900;">&#125;</span>
	<span style="color: #009900;">&#125;</span>
<span style="color: #009900;">&#125;</span></pre></div></div>

<p>2. ทำการ edit *.php  แล้วทำการ replace mysql_query -&gt; mysql_do_query  โดยผมใช้ คำสั่ง sed ใน shell script  เพื่อแก้ไขไฟล์</p>

<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;"><span style="color: #666666; font-style: italic;">#!/bin/bash</span>
<span style="color: #000000; font-weight: bold;">for</span> fl <span style="color: #000000; font-weight: bold;">in</span> <span style="color: #000000; font-weight: bold;">*</span>.php; <span style="color: #000000; font-weight: bold;">do</span>
<span style="color: #c20cb9; font-weight: bold;">mv</span> <span style="color: #007800;">$fl</span> <span style="color: #007800;">$fl</span>.old
<span style="color: #c20cb9; font-weight: bold;">sed</span> <span style="color: #ff0000;">'s/mysql_query/mysql_query/g'</span> <span style="color: #007800;">$fl</span>.old <span style="color: #000000; font-weight: bold;">&amp;</span>gt; <span style="color: #007800;">$fl</span>
<span style="color: #c20cb9; font-weight: bold;">rm</span> <span style="color: #660033;">-f</span> <span style="color: #007800;">$fl</span>.old
<span style="color: #000000; font-weight: bold;">done</span></pre></div></div>

<p>เสร็จแล้วก็รันครับ  shell script จะทำการ find หา *.php แล้วทำการเปลี่ยน function ให้  ต่อไปเวลา ให้ programmer เขียน codeing ก็ให้ทำการ ใช้ function mysql_do_query()  แทนครับ</p>
<iframe src="http://www.facebook.com/plugins/like.php?href=http%3A%2F%2Fwww.howtoconfig.com%2Fdevelopment%2Fmysql-query-split-ro-rw-mysql_query.html&amp;layout=standard&amp;show_faces=true&amp;width=450&amp;action=like&amp;colorscheme=light&amp;height=80" scrolling="no" frameborder="0" style="border:none; overflow:hidden; width:450px; height:80px;" allowTransparency="true"></iframe>]]></content:encoded>
			<wfw:commentRss>http://www.howtoconfig.com/development/mysql-query-split-ro-rw-mysql_query.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Apache2.0 + PHP5 on FreeBSD</title>
		<link>http://www.howtoconfig.com/os/freebsd/apache20-php5-on-freebsd.html</link>
		<comments>http://www.howtoconfig.com/os/freebsd/apache20-php5-on-freebsd.html#comments</comments>
		<pubDate>Wed, 04 Jun 2008 09:47:28 +0000</pubDate>
		<dc:creator>อัทศักดิ์ วงศ์กิตตะ</dc:creator>
				<category><![CDATA[FreeBSD]]></category>
		<category><![CDATA[Apache]]></category>
		<category><![CDATA[CGI]]></category>
		<category><![CDATA[install]]></category>
		<category><![CDATA[PHP]]></category>

		<guid isPermaLink="false">http://www.howtoconfig.com/?p=18</guid>
		<description><![CDATA[ผ่านไปพักใหญ่ MySQL Cluster ก็ยังไม่ Start สะทีเลยถือโอกาศมาเขียน docs เรื่องการติดตั้ง Apache + PHP + Mysql ในรูปแบบของผมกันครับ ก่อนอื่นให้ทำการติดตั้ง MySQL ตามเอกสารนี้ครับ 1. ทำการ Update pors ครับ (แนะนำว่าให้ทำบ่อยๆ ใส่ crontab ไว้เลยก็ได้ครับ) cvsup -g -L 2 /usr/share/examples/cvsup/ports-supfile -h cvsup.th.freebsd.org 2. ทำการติดตั้ง Apache 2.0 cd /usr/ports/www/apache20/ make all install clean WITH_SSL_MODULES=yes 3. ทำการติดตั้ง PHP5 cd /usr/ports/lang/php5 make all install clean จะมี box [...]]]></description>
			<content:encoded><![CDATA[<p>ผ่านไปพักใหญ่ MySQL Cluster ก็ยังไม่ Start สะทีเลยถือโอกาศมาเขียน docs เรื่องการติดตั้ง Apache + PHP + Mysql ในรูปแบบของผมกันครับ   ก่อนอื่นให้ทำการติดตั้ง <a href="http://www.howtoconfig.com/os/freebsd/install-mysql-server-on-freebsd.html">MySQL  ตามเอกสารนี้ครับ</a></p>
<p>1. ทำการ Update pors ครับ (แนะนำว่าให้ทำบ่อยๆ ใส่ crontab ไว้เลยก็ได้ครับ)</p>

<div class="wp_syntax"><div class="code"><pre class="genero" style="font-family:monospace;">cvsup <span style="color: #008000;">-</span>g <span style="color: #008000;">-</span>L <span style="color: #FF0000;">2</span> <span style="color: #008000;">/</span>usr<span style="color: #008000;">/</span><span style="color: #0600FF;">share</span><span style="color: #008000;">/</span>examples<span style="color: #008000;">/</span>cvsup<span style="color: #008000;">/</span>ports<span style="color: #008000;">-</span>supfile <span style="color: #008000;">-</span>h cvsup.<span style="color: #0000FF;">th</span>.<span style="color: #0000FF;">freebsd</span>.<span style="color: #0000FF;">org</span></pre></div></div>

<p>2. ทำการติดตั้ง Apache 2.0</p>

<div class="wp_syntax"><div class="code"><pre class="genero" style="font-family:monospace;">cd <span style="color: #008000;">/</span>usr<span style="color: #008000;">/</span>ports<span style="color: #008000;">/</span>www<span style="color: #008000;">/</span>apache20<span style="color: #008000;">/</span>
make <span style="color: #0600FF;">all</span> install clean WITH_SSL_MODULES<span style="color: #008000;">=</span>yes</pre></div></div>

<p><span id="more-18"></span><br />
3. ทำการติดตั้ง PHP5</p>

<div class="wp_syntax"><div class="code"><pre class="genero" style="font-family:monospace;">cd <span style="color: #008000;">/</span>usr<span style="color: #008000;">/</span>ports<span style="color: #008000;">/</span>lang<span style="color: #008000;">/</span>php5
make <span style="color: #0600FF;">all</span> install clean</pre></div></div>

<p>จะมี box ให้เราเลือกครับ  ให้เลือก  Apache ด้วยครับ<br />
<code><br />
lqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqk<br />
x                      Options for php5 5.2.6                        x<br />
x lqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqk x<br />
x x[X] CLI        Build CLI version                                x x<br />
x x[X] CGI        Build CGI version                                x x<br />
x x[X] APACHE     Build Apache module                              x x<br />
x x[ ] DEBUG      Enable debug                                     x x<br />
x x[X] SUHOSIN    Enable Suhosin protection system (not for jails) x x<br />
x x[ ] MULTIBYTE  Enable zend multibyte support                    x x<br />
x x[X] IPV6       Enable ipv6 support                              x x<br />
x x[ ] MAILHEAD   Enable mail header patch                         x x<br />
x x[ ] REDIRECT   Enable force-cgi-redirect support (CGI only)     x x<br />
x x[ ] DISCARD    Enable discard-path support (CGI only)           x x<br />
x x[X] FASTCGI    Enable fastcgi support (CGI only)                x x<br />
x x[X] PATHINFO   Enable path-info-check support (CGI only)        x x<br />
x x                                                                x x<br />
x x                                                                x x<br />
x x                                                                x x<br />
tqmqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqjqu<br />
x                       [  OK  ]       Cancel                        x<br />
mqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqj<br />
</code></p>
<p>4. หลังจากติดตั้ง PHP เสร็จ เราก็ทำการติดตั้ง  php5-extentions ต่อครับ  โดยพวก php5-mysql, php5-gd  อะไรพวกนี้ php จะมองว่าเป้น extentions  เวลาติดตั้งให้เลือกเอาแค่ extention ที่เราต้องการแค่นั้นพอครับ</p>

<div class="wp_syntax"><div class="code"><pre class="genero" style="font-family:monospace;">cd <span style="color: #008000;">/</span>usr<span style="color: #008000;">/</span>ports<span style="color: #008000;">/</span>lang<span style="color: #008000;">/</span>php5<span style="color: #008000;">-</span>extensions<span style="color: #008000;">/</span>
make <span style="color: #0600FF;">all</span> install clean</pre></div></div>

<p>จะมี box ให้เลือกเราก็เลือกเอาแค่ใช้งานครับ  หากเลือก extentions มากแล้วไม่ได้ใช้งาน  มันก็จะไปโหลดเครื่อง อันนี้เจอกับตัวเองครับ<br />
<code><br />
lqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqk<br />
x                 Options for php5-extensions 1.1                    x<br />
x lqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqk x<br />
x x   [ ] BCMATH      bc style precision math functions            x x<br />
x x   [ ] BZ2         bzip2 library support                        x x<br />
x x   [ ] CALENDAR    calendar conversion support                  x x<br />
x x   [ ] CTYPE       ctype functions                              x x<br />
x x   [ ] CURL        CURL support                                 x x<br />
x x   [ ] DBA         dba support                                  x x<br />
x x   [ ] DBASE       dBase library support                        x x<br />
x x   [ ] DOM         DOM support                                  x x<br />
x x   [ ] EXIF        EXIF support                                 x x<br />
x x   [ ] FILEINFO    fileinfo support                             x x<br />
x x   [ ] FILTER      input filter support                         x x<br />
x x   [ ] FRIBIDI     FriBidi support                              x x<br />
x x   [ ] FTP         FTP support                                  x x<br />
x x   [ ] GD          GD library support                           x x<br />
x x   [ ] GETTEXT     gettext library support                      x x<br />
tqmqqqqqqqv(+)qqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqjqu<br />
x                       [  OK  ]       Cancel                        x<br />
mqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqj<br />
</code></p>
<p>6. ต่อไปก็จะเป็นการ config apache ให้สามารถใช้งาน php ได้ครับ  ส่วนตัวแล้ว ผมจะไม่ทำการแก้ไขไฟล์์ config ของ apche ตรงๆเพราะ apache จะเปิดให้ทำการ include ไฟล์ *.conf อยู่แล้ว  เวลา config เราก็สร้างไฟล์ 0default.conf  ไว้้ที่  /usr/local/etc/apache2/Includes  apache ก็จะทำการโหลด config ของเราเองครับ (เวลา backup หรือติดตั้งใหม่ ง่ายดีครับ)</p>

<div class="wp_syntax"><div class="code"><pre class="genero" style="font-family:monospace;">vi <span style="color: #008000;">/</span>usr<span style="color: #008000;">/</span>local<span style="color: #008000;">/</span>etc<span style="color: #008000;">/</span>apache2<span style="color: #008000;">/</span>Includes<span style="color: #008000;">/</span>0default.<span style="color: #0000FF;">conf</span></pre></div></div>


<div class="wp_syntax"><div class="code"><pre class="genero" style="font-family:monospace;">Timeout <span style="color: #FF0000;">60</span>
KeepAlive <span style="color: #FF0000;">Off</span>
&nbsp;
StartServers            <span style="color: #FF0000;">16</span>
MinSpareServers         <span style="color: #FF0000;">10</span>
MaxSpareServers         <span style="color: #FF0000;">40</span>
ServerLimit             <span style="color: #FF0000;">500</span>
MaxClients              <span style="color: #FF0000;">500</span>
MaxRequestsPerChild     <span style="color: #FF0000;">1000</span>
&nbsp;
ServerAdmin     webmaster@howtoconfig.<span style="color: #0000FF;">com</span>
ServerName      kumandtong.<span style="color: #0000FF;">howtoconfig</span>.<span style="color: #0000FF;">com</span>
ServerTokens    Prod
ServerSignature <span style="color: #FF0000;">Off</span>
&nbsp;
DocumentRoot    <span style="color: #808080;">&quot;/usr/local/www/data&quot;</span>
&nbsp;
AddType <span style="color: #0600FF;">application</span><span style="color: #008000;">/</span>x<span style="color: #008000;">-</span>httpd<span style="color: #008000;">-</span>php .<span style="color: #0000FF;">php</span>
AddType <span style="color: #0600FF;">application</span><span style="color: #008000;">/</span>x<span style="color: #008000;">-</span>httpd<span style="color: #008000;">-</span>php<span style="color: #008000;">-</span>source .<span style="color: #0000FF;">phps</span>
DirectoryIndex <span style="color: #0600FF;">index</span>.<span style="color: #0000FF;">php</span> <span style="color: #0600FF;">index</span>.<span style="color: #0000FF;">php3</span> <span style="color: #0600FF;">index</span>.<span style="color: #0000FF;">html</span> <span style="color: #0600FF;">index</span>.<span style="color: #0000FF;">htm</span>
&nbsp;
ExtendedStatus <span style="color: #0600FF;">On</span>
&nbsp;
SetHandler server<span style="color: #008000;">-</span>status
<span style="color: #0600FF;">Order</span> deny,allow
Deny <span style="color: #0600FF;">from</span> <span style="color: #0600FF;">all</span>
Allow <span style="color: #0600FF;">from</span> <span style="color: #0600FF;">all</span>
&nbsp;
NameVirtualHost         <span style="color: #008000;">*:</span><span style="color: #FF0000;">80</span>
&nbsp;
DocumentRoot    <span style="color: #808080;">&quot;/usr/local/www/data&quot;</span></pre></div></div>

<p>6. ทำการแก้ไขให้ apache start ทุกครั้งที่ เปิดเครื่อง</p>

<div class="wp_syntax"><div class="code"><pre class="genero" style="font-family:monospace;">echo <span style="color: #808080;">'apache2_enable=&quot;YES&quot;'</span> &amp;gt;&amp;gt; <span style="color: #008000;">/</span>etc<span style="color: #008000;">/</span>rc.<span style="color: #0000FF;">conf</span></pre></div></div>

<p>เป็นอันจบพิธีครับ</p>
<p>ต่อตอน 2  เรื่อง &#8220;<a href="http://www.howtoconfig.com/os/freebsd/apache-20-name-base-vhost.html">Apache2.0 + Name Base Vhost</a>&#8220;</p>
<iframe src="http://www.facebook.com/plugins/like.php?href=http%3A%2F%2Fwww.howtoconfig.com%2Fos%2Ffreebsd%2Fapache20-php5-on-freebsd.html&amp;layout=standard&amp;show_faces=true&amp;width=450&amp;action=like&amp;colorscheme=light&amp;height=80" scrolling="no" frameborder="0" style="border:none; overflow:hidden; width:450px; height:80px;" allowTransparency="true"></iframe>]]></content:encoded>
			<wfw:commentRss>http://www.howtoconfig.com/os/freebsd/apache20-php5-on-freebsd.html/feed</wfw:commentRss>
		<slash:comments>6</slash:comments>
		</item>
	</channel>
</rss>

