<?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>SpaLinux.com &#187; Web Server</title>
	<atom:link href="http://spalinux.com/category/web-server/feed" rel="self" type="application/rss+xml" />
	<link>http://spalinux.com</link>
	<description>Resources for Relaxing Linux System Administrators</description>
	<lastBuildDate>Sat, 21 Jan 2012 16:07:59 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3</generator>
		<item>
		<title>เขียนโปรแกรมโหลดเว็บเพจด้วย PHP cURL</title>
		<link>http://spalinux.com/2011/12/program-php-curl-to-load-web-page</link>
		<comments>http://spalinux.com/2011/12/program-php-curl-to-load-web-page#comments</comments>
		<pubDate>Thu, 22 Dec 2011 16:11:06 +0000</pubDate>
		<dc:creator>editor</dc:creator>
				<category><![CDATA[HTML]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[Programming]]></category>
		<category><![CDATA[Utility]]></category>
		<category><![CDATA[Web Server]]></category>
		<category><![CDATA[load web page]]></category>
		<category><![CDATA[php curl]]></category>

		<guid isPermaLink="false">http://spalinux.com/?p=1574</guid>
		<description><![CDATA[จากที่ได้นำเสนอ วิธีการใช้ cURL เพื่อโหลดเว็บเพจ ซึ่งเป็นการรันคำสั่งแบบ command line มาแล้ว คราวนี้จะเป็นการเขียนโปรแกรม PHP โดยเรียกใช้ฟังก์ชั่นในโมดูล curl เพื่อโหลดเว็บเพจ ตรวจสอบโมดูล php curl ก่อนที่เราจะเรียกใช้ฟังก์ชั่นจากโมดูล curl เพื่อเขียนโปรแกรมใน PHP ได้นั้น จำเป็นต้องมีโมดูล curl ติดตั้งอยู่แล้ว ซึ่งสามารถตรวจสอบได้ด้วยการรันคำสั่ง php ตามด้วยออปชั่น &#8216;-m&#8217; ดูผลลัพธ์ที่ได้ ตัวอย่างการรันคำสั่ง php ด้วยออปชั่น &#8216;-m&#8217; เพื่อดูว่ามีโมดูล curl หรือไม่ [user1@dev ~]$ php -m &#124; grep curl curl ถ้าไม่มี ต้องติดตั้งเพิ่มเติม ซึ่งอาจจะด้วยการใช้ rpm หรือ yum ก็ได้ เริ่มใช้ฟังก์ชั่น curl เริ่มต้นด้วยตัวอย่างการเขียนโปรแกรมโดยใช้ฟังก์ชั่น curl [...]]]></description>
			<content:encoded><![CDATA[<p>จากที่ได้นำเสนอ <a href="http://spalinux.com/2011/12/using-curl-to-load-web-page">วิธีการใช้ cURL เพื่อโหลดเว็บเพจ</a> ซึ่งเป็นการรันคำสั่งแบบ command line มาแล้ว</p>
<p>คราวนี้จะเป็นการเขียนโปรแกรม PHP โดยเรียกใช้ฟังก์ชั่นในโมดูล curl เพื่อโหลดเว็บเพจ</p>
<p><span id="more-1574"></span></p>
<h4>ตรวจสอบโมดูล php curl</h4>
<p>ก่อนที่เราจะเรียกใช้ฟังก์ชั่นจากโมดูล curl เพื่อเขียนโปรแกรมใน PHP ได้นั้น จำเป็นต้องมีโมดูล curl ติดตั้งอยู่แล้ว ซึ่งสามารถตรวจสอบได้ด้วยการรันคำสั่ง php ตามด้วยออปชั่น &#8216;-m&#8217; ดูผลลัพธ์ที่ได้</p>
<p>ตัวอย่างการรันคำสั่ง php ด้วยออปชั่น &#8216;-m&#8217; เพื่อดูว่ามีโมดูล curl หรือไม่</p>
<pre>[user1@dev ~]$ <strong>php -m | grep curl</strong>
curl</pre>
<p>ถ้าไม่มี ต้องติดตั้งเพิ่มเติม ซึ่งอาจจะด้วยการใช้ rpm หรือ yum ก็ได้</p>
<h4>เริ่มใช้ฟังก์ชั่น curl</h4>
<p>เริ่มต้นด้วยตัวอย่างการเขียนโปรแกรมโดยใช้ฟังก์ชั่น curl แบบง่ายสุด เพื่อโหลดเว็บเพจ มีสามขั้นตอนคือ</p>
<ul>
<li>curl_init ระบุเว็บไซต์ที่ต้องการโหลด</li>
<li>curl_exec โหลดหน้าเว็บและแสดงผลลัพธ์</li>
<li>curl_close สิ้นสุดการใช้ curl</li>
</ul>
<p>เช่นต้องการโหลดเว็บ www.php.net</p>
<pre>[user1@dev ~]$ <strong>cat curl.php</strong>
&lt;?php

// Create a curl handle
$ch = <span style="color: #0000ff;">curl_init</span>('http://www.php.net');

// Execute
$ret = <span style="color: #0000ff;">curl_exec</span>($ch);

// Close handle
<span style="color: #0000ff;">curl_close</span>($ch);

?&gt;</pre>
<p>ทดลองรันโปรแกรมที่เขียน</p>
<pre>[user1@dev ~]$ <strong>php curl.php</strong>
&lt;!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
                      "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"&gt;
&lt;html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en"&gt;
&lt;head&gt;
 &lt;title&gt;PHP: Hypertext Preprocessor&lt;/title&gt;
 &lt;style type="text/css" media="all"&gt;
  @import url("http://static.php.net/www.php.net/styles/site.css");
  @import url("http://static.php.net/www.php.net/styles/phpnet.css");

 &lt;/style&gt;
...</pre>
<p>สังเกตว่าผลลัพธ์การโหลด หรือไฟล์เว็บเพจจะแสดงผลออกหน้าจอเลย เมื่อใช้ฟังก์ชั่น curl_exec() ไม่ได้เก็บไว้ในตัวแปร $ret</p>
<p>หากต้องการเก็บผลลัพธ์ที่ได้ไว้ในตัวแปรก่อน เพื่อนำไปประมวลผล ต้องใช้ฟังก์ชั่น curl_setopt เพื่อตั้งค่า CURLOPT_RETURNTRANSFER ให้เป็น true</p>
<pre>&lt;?php

// Create a curl handle
$ch = curl_init('http://www.php.net');

<span style="color: #0000ff;">// Set curl options</span>
<span style="color: #0000ff;">curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);</span>

// Execute
$ret = curl_exec($ch);

// Return
<span style="color: #0000ff;">print 'return = ' . $ret . "\n";</span>

// Close handle
curl_close($ch);

?&gt;</pre>
<p>ลองรันโปรแกรมหลังจากแก้ไขแล้ว</p>
<pre>[user1@dev ~]$ php curl.php
<span style="color: #0000ff;">return =</span> &lt;!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
                      "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"&gt;
&lt;html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en"&gt;
&lt;head&gt;
 &lt;title&gt;PHP: Hypertext Preprocessor&lt;/title&gt;
 &lt;style type="text/css" media="all"&gt;
  @import url("http://static.php.net/www.php.net/styles/site.css");
  @import url("http://static.php.net/www.php.net/styles/phpnet.css");

 &lt;/style&gt;
...</pre>
<p>&nbsp;</p>
<h4>ดูรายละเอียดการโหลดเว็บเพจ</h4>
<p>หากต้องการดูข้อมูลรายละเอียดของการโหลดเว็บเพจ สามารถใช้ฟังก์ชั่น curl_getinfo() ได้</p>
<pre>&lt;?php

// Create a curl handle
$ch = curl_init('http://www.php.net');

// Set curl options
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);

// Execute
$ret = curl_exec($ch);

<span style="color: #0000ff;">// Get information about the last transfer</span>
<span style="color: #0000ff;">$get_info = curl_getinfo($ch);</span>

<span style="color: #0000ff;">print_r($get_info);</span>

// Close handle
curl_close($ch);

?&gt;</pre>
<p>ผลการรันโปรแกรม จะแสดงค่าเกี่ยวกับการโหลดเว็บเพจทั้งหมด</p>
<pre>[user1@dev ~]$ <strong>php curl.php</strong>
Array
(
    [url] =&gt; http://www.php.net
    [content_type] =&gt; text/html;charset=utf-8
    [http_code] =&gt; 200
    [header_size] =&gt; 382
    [request_size] =&gt; 50
    [filetime] =&gt; -1
    [ssl_verify_result] =&gt; 0
    [redirect_count] =&gt; 0
    [total_time] =&gt; 1.523659
    [namelookup_time] =&gt; 0.006906
    [connect_time] =&gt; 0.249598
    [pretransfer_time] =&gt; 0.249602
    [size_upload] =&gt; 0
    [size_download] =&gt; 45325
    [speed_download] =&gt; 29747
    [speed_upload] =&gt; 0
    [download_content_length] =&gt; -1
    [upload_content_length] =&gt; 0
    [starttransfer_time] =&gt; 0.551071
    [redirect_time] =&gt; 0
    [certinfo] =&gt; Array
        (
        )

)</pre>
<p>&nbsp;</p>
<p>แต่ถ้าต้องการแสดงเฉพาะบางค่า เช่นขนาดไฟล์เว็บเพจที่โหลด ต้องระบุ CURLINFO_SIZE_DOWNLOAD ไว้ในฟังก์ชั่น curl_getinfo() ด้วย</p>
<pre>&lt;?php

// Create a curl handle
$ch = curl_init('http://www.php.net');

// Set curl options
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);

// Execute
$ret = curl_exec($ch);

// Get information about the last transfer
$get_info_size_download = curl_getinfo($ch, <span style="color: #0000ff;">CURLINFO_SIZE_DOWNLOAD</span>);

<span style="color: #0000ff;">print 'SIZE_DOWNLOAD = ' . $get_info_size_download . "\n";</span>

// Close handle
curl_close($ch);

?&gt;</pre>
<p>ผลการรันโปรแกรม</p>
<pre>[user1@dev ~]$ <strong>php curl.php</strong>
SIZE_DOWNLOAD = 45325</pre>
<p>&nbsp;</p>
<h4>ข้อมูลอ้างอิง</h4>
<ul>
<li><a href="http://www.php.net/manual/en/intro.curl.php" target="_blank">PHP: cURL Functions &#8211; Manual</a></li>
<li><a href="http://spalinux.com/2011/12/using-curl-to-load-web-page">วิธีการใช้ cURL เพื่อโหลดเว็บเพจ</a></li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://spalinux.com/2011/12/program-php-curl-to-load-web-page/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>วิธีการใช้ cURL เพื่อโหลดเว็บเพจ</title>
		<link>http://spalinux.com/2011/12/using-curl-to-load-web-page</link>
		<comments>http://spalinux.com/2011/12/using-curl-to-load-web-page#comments</comments>
		<pubDate>Fri, 16 Dec 2011 16:19:34 +0000</pubDate>
		<dc:creator>editor</dc:creator>
				<category><![CDATA[HTML]]></category>
		<category><![CDATA[Programming]]></category>
		<category><![CDATA[Utility]]></category>
		<category><![CDATA[Web Server]]></category>
		<category><![CDATA[curl]]></category>
		<category><![CDATA[libcurl]]></category>

		<guid isPermaLink="false">http://spalinux.com/?p=1565</guid>
		<description><![CDATA[จากที่เคยแนะนำ วิธีการใช้คำสั่ง wget รันเป็นคำสั่งบน comand line เพื่อโหลดเว็บเพจได้ มาครั้งนี้ ขอแนะนำอีกคำสั่งคือ cURL โปรแกรมทำหน้าที่คล้ายกันแต่มีคุณสมบัติมากกว่า แถม curl ยังมี library (libcurl) ที่ภาษาต่างๆ เช่น PHP นำไปพัฒนาสร้างเป็นฟังก์ชั่นให้เรียกใช้ในการเขียนโปรแกรมได้ เริ่มต้นการใช้ด้วยการรันคำสั่ง curl ตามด้วย URL ของเว็บไซต์ เช่นต้องการโหลดเว็บหน้าแรกของ www.apple.com [user1@dev ~]$ curl http://www.apple.com &#60;!DOCTYPE html&#62; &#60;html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en-US" lang="en-US"&#62; &#60;head&#62; &#60;meta http-equiv="content-type" content="text/html; charset=utf-8" /&#62; &#60;meta name="Author" content="Apple Inc." /&#62; &#60;meta name="viewport" content="width=1024" /&#62; &#60;meta http-equiv="X-UA-Compatible" content="IE=EmulateIE7, [...]]]></description>
			<content:encoded><![CDATA[<p>จากที่เคยแนะนำ<a href="http://spalinux.com/2010/01/using_wget"> วิธีการใช้คำสั่ง wget</a> รันเป็นคำสั่งบน comand line เพื่อโหลดเว็บเพจได้ มาครั้งนี้ ขอแนะนำอีกคำสั่งคือ cURL โปรแกรมทำหน้าที่คล้ายกันแต่มีคุณสมบัติมากกว่า แถม curl ยังมี library (libcurl) ที่ภาษาต่างๆ เช่น PHP นำไปพัฒนาสร้างเป็นฟังก์ชั่นให้เรียกใช้ในการเขียนโปรแกรมได้</p>
<p><span id="more-1565"></span><br />
เริ่มต้นการใช้ด้วยการรันคำสั่ง curl ตามด้วย URL ของเว็บไซต์ เช่นต้องการโหลดเว็บหน้าแรกของ www.apple.com</p>
<pre>[user1@dev ~]$ <strong>curl http://www.apple.com</strong>
 &lt;!DOCTYPE html&gt;
 &lt;html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en-US" lang="en-US"&gt;
 &lt;head&gt;
 &lt;meta http-equiv="content-type" content="text/html; charset=utf-8" /&gt;
 &lt;meta name="Author" content="Apple Inc." /&gt;
 &lt;meta name="viewport" content="width=1024" /&gt;
 &lt;meta http-equiv="X-UA-Compatible" content="IE=EmulateIE7, IE=9" /&gt;
 &lt;link id="globalheader-stylesheet" rel="stylesheet" href="http://images.apple.com/global/nav/styles/navigation.css" type="text/css" /&gt;
 &lt;title&gt;Apple&lt;/title&gt;
 ...</pre>
<p>ดีฟอลต์ผลลัพธ์ที่ได้จะแสดงผลออกทางหน้าจอ (stdout)</p>
<h4>ออปชั่น -o (output)</h4>
<p>ระบุออปชั่น &#8220;-o&#8217; ถ้าต้องการบันทึกผลลัพธ์เป็นไฟล์</p>
<pre>[user1@dev dev]$ <strong>curl -o apple-index.html http://www.apple.com</strong>
 % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
 Dload  Upload   Total   Spent    Left  Speed
 100  9346  100  9346    0     0  31031      0 --:--:-- --:--:-- --:--:-- 59151</pre>
<p>ไฟล์ผลลัพธ์ที่ได้</p>
<pre>[user1@dev dev]$ <strong>ls -l</strong>
 total 12
 -rw-r--r--. 1 user1 users 9346 Dec 16 22:56 apple-index.html

[user1@dev dev]$ <strong>head apple-index.html</strong>
 &lt;!DOCTYPE html&gt;
 &lt;html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en-US" lang="en-US"&gt;
 &lt;head&gt;
 &lt;meta http-equiv="content-type" content="text/html; charset=utf-8" /&gt;
 &lt;meta name="Author" content="Apple Inc." /&gt;
 &lt;meta name="viewport" content="width=1024" /&gt;
 &lt;meta http-equiv="X-UA-Compatible" content="IE=EmulateIE7, IE=9" /&gt;
 &lt;link id="globalheader-stylesheet" rel="stylesheet" href="http://images.apple.com/global/nav/styles/navigation.css" type="text/css" /&gt;
&lt;title&gt;Apple&lt;/title&gt;</pre>
<h4>ออปชั่น -v (verbose)</h4>
<p>หากต้องการดูรายละเอียด ขั้นตอนการโหลดเว็บเพจ สามารถทำได้โดยการระบุออปชั่น &#8220;-v&#8221;</p>
<pre>[user1@dev dev]$ <strong>curl -v http://www.apple.com</strong>
 * About to connect() to www.apple.com port 80 (#0)
 *   Trying 118.214.125.15... connected
 * Connected to www.apple.com (118.214.125.15) port 80 (#0)
 &gt; GET / HTTP/1.1
 &gt; User-Agent: curl/7.21.7 (x86_64-redhat-linux-gnu) libcurl/7.21.7 NSS/3.12.10.0 zlib/1.2.5 libidn/1.22 libssh2/1.2.7
 &gt; Host: www.apple.com
 &gt; Accept: */*
 &gt;
 &lt; HTTP/1.1 200 OK
 &lt; Content-Type: text/html; charset=UTF-8
 &lt; Server: Apache/2.2.3 (Oracle)
 &lt; Cache-Control: max-age=531
 &lt; Expires: Fri, 16 Dec 2011 16:06:55 GMT
 &lt; Date: Fri, 16 Dec 2011 15:58:04 GMT
 &lt; Content-Length: 9346
 &lt; Connection: keep-alive
 &lt;
 &lt;!DOCTYPE html&gt;
 &lt;html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en-US" lang="en-US"&gt;
 &lt;head&gt;
 &lt;meta http-equiv="content-type" content="text/html; charset=utf-8" /&gt;
 &lt;meta name="Author" content="Apple Inc." /&gt;
 &lt;meta name="viewport" content="width=1024" /&gt;
 &lt;meta http-equiv="X-UA-Compatible" content="IE=EmulateIE7, IE=9" /&gt;
 &lt;link id="globalheader-stylesheet" rel="stylesheet" href="http://images.apple.com/global/nav/styles/navigation.css" type="text/css" /&gt;
&lt;title&gt;Apple&lt;/title&gt;
 ...</pre>
<h4>ออปชั่น -h (help)</h4>
<p>ระบุออปชั่น &#8220;-h&#8221; เพื่อดูออปชั่นอื่นๆ พร้อมคำอธิบายคร่าวๆ</p>
<pre>[user1@dev ~]$ <strong>curl  --help</strong>
Usage: curl [options...] &lt;url&gt;
Options: (H) means HTTP/HTTPS only, (F) means FTP only
     --anyauth       Pick "any" authentication method (H)
 -a, --append        Append to target file when uploading (F/SFTP)
     --basic         Use HTTP Basic Authentication (H)
     --cacert FILE   CA certificate to verify peer against (SSL)
     --capath DIR    CA directory to verify peer against (SSL)
 -E, --cert CERT[:PASSWD] Client certificate file and password (SSL)
     --cert-type TYPE Certificate file type (DER/PEM/ENG) (SSL)
...</pre>
<h4>ข้อมูลอ้างอิง</h4>
<ul>
<li><a href="http://curl.haxx.se/" target="_blank">cURL groks URLs</a></li>
<li><a href="http://spalinux.com/2010/01/using_wget">วิธีการใช้คำสั่ง wget</a></li>
<li><a href="http://spalinux.com/2011/12/program-php-curl-to-load-web-page">เขียนโปรแกรมโหลดเว็บเพจด้วย PHP cURL</a></li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://spalinux.com/2011/12/using-curl-to-load-web-page/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>ไฟล์คอนฟิก httpd.conf ของ Apache อยู่ที่ไหน</title>
		<link>http://spalinux.com/2011/08/where-is-apache-httpd-conf-configuration-file</link>
		<comments>http://spalinux.com/2011/08/where-is-apache-httpd-conf-configuration-file#comments</comments>
		<pubDate>Sun, 07 Aug 2011 06:00:43 +0000</pubDate>
		<dc:creator>editor</dc:creator>
				<category><![CDATA[Web Server]]></category>
		<category><![CDATA[Apache]]></category>
		<category><![CDATA[httpd.conf]]></category>

		<guid isPermaLink="false">http://spalinux.com/?p=1444</guid>
		<description><![CDATA[หลังจากปล่อยเว็บเซิร์ฟเวอร์ (Apache Web Server) ให้ทำงานไว้นานมากหลายปี  ได้เวลาปรับปรุงเป็นเวอร์ชั่นล่าสุด เพื่อประสิทธิภาพ และเพื่อความปลอดภัย แต่ปัญหาคือเครื่องจะปรับปรุงนี้ รัน httpd ไว้หลายโปรเซส หลายพอร์ตมาก ทำให้เริ่มงงว่า โปรเซสไหน รันจาก httpd ไฟล์ไหน ใช้คอนฟิก httpd.conf  ที่ไหน โดยดีฟอล์ตถ้าเป็น RedHat, CentOS, Fedora ไฟล์คอนฟิกของ Apache ที่ติดตั้งมากับแผ่นจะอยู่ใน /etc/httpd/conf/  แต่ถ้าคอมไพล์ Apache จาก source เอง ไดเร็คทอรีนี้ก็จะเปลี่ยนไป หลังจากศึกษาทำความเข้าใจ เลยนำมาสรุปให้ฟัง เพื่อจะมีประโยชน์ หมายเหตุ ตัวอย่างในบทความนี้จะทดสอบกับ Apache เวอร์ชั่น 2.2.19  แต่วิธีการนี้สามารถนำไปใช้ได้กับ apache เวอร์ชั่นเก่า รวมถึงเวอร์ชั่น 2.0 ได้ ใช้คำสั่ง ps เพื่อดูโปรเซสที่รัน [root@web ~]# ps [...]]]></description>
			<content:encoded><![CDATA[<p>หลังจากปล่อยเว็บเซิร์ฟเวอร์ (Apache Web Server) ให้ทำงานไว้นานมากหลายปี  ได้เวลาปรับปรุงเป็นเวอร์ชั่นล่าสุด เพื่อประสิทธิภาพ และเพื่อความปลอดภัย</p>
<p>แต่ปัญหาคือเครื่องจะปรับปรุงนี้ รัน httpd ไว้หลายโปรเซส หลายพอร์ตมาก ทำให้เริ่มงงว่า โปรเซสไหน รันจาก httpd ไฟล์ไหน ใช้คอนฟิก httpd.conf  ที่ไหน</p>
<p><span id="more-1444"></span></p>
<p>โดยดีฟอล์ตถ้าเป็น RedHat, CentOS, Fedora ไฟล์คอนฟิกของ Apache ที่ติดตั้งมากับแผ่นจะอยู่ใน /etc/httpd/conf/  แต่ถ้าคอมไพล์ Apache จาก source เอง ไดเร็คทอรีนี้ก็จะเปลี่ยนไป</p>
<p>หลังจากศึกษาทำความเข้าใจ เลยนำมาสรุปให้ฟัง เพื่อจะมีประโยชน์</p>
<p>หมายเหตุ ตัวอย่างในบทความนี้จะทดสอบกับ Apache เวอร์ชั่น 2.2.19  แต่วิธีการนี้สามารถนำไปใช้ได้กับ apache เวอร์ชั่นเก่า รวมถึงเวอร์ชั่น 2.0 ได้</p>
<p>ใช้คำสั่ง ps เพื่อดูโปรเซสที่รัน</p>
<pre>[root@web ~]# <strong>ps -ef
</strong>UID        PID  PPID  C STIME TTY          TIME CMD
...
<span style="color: #0000ff;">root     28859     1  0 03:34 ?        00:00:00 httpd
</span>apache   28860 28859  0 03:34 ?        00:00:00 httpd
apache   28861 28859  0 03:34 ?        00:00:00 httpd
apache   28862 28859  0 03:34 ?        00:00:00 httpd
apache   28863 28859  0 03:34 ?        00:00:00 httpd
apache   28864 28859  0 03:34 ?        00:00:00 httpd</pre>
<p>อย่างแรก httpd ที่รันเนี่ย อยู่ที่ไหน</p>
<p>หาได้จากเข้าไปดูใน /proc ตามไดเร็คทอรีย่อยเป็น PID (Process ID) ของโปรเซสที่รันด้วย root เช่นในที่นี้ PID เท่ากับ 28859 ต้องเข้าไปดูใน /proc/28859/</p>
<pre>[root@web ~]# <strong>ls -l /proc/28859/
</strong>total 0
dr-xr-xr-x 2 root root 0 Aug  6 03:36 attr
-r-------- 1 root root 0 Aug  6 03:36 auxv
-r--r--r-- 1 root root 0 Aug  6 03:34 cmdline
-rw-r--r-- 1 root root 0 Aug  6 03:36 coredump_filter
-r--r--r-- 1 root root 0 Aug  6 03:36 cpuset
lrwxrwxrwx 1 root root 0 Aug  6 03:36 cwd -&gt; /
-r-------- 1 root root 0 Aug  6 03:36 environ
<span style="color: #0000ff;">lrwxrwxrwx 1 root root 0 Aug  6 03:36 exe -&gt; /usr/local/sbin/httpd
</span>...</pre>
<p>ไฟล์ symbolic link ที่ชื่อ exe จะชึ้ไปยัง full path ของไฟล์ที่รัน</p>
<p>ได้ละว่าไฟล์ daemon ที่รัน อยู่ที่ไหน</p>
<p>ขั้นต่อไป หาไฟล์คอนฟิก httpd.conf ที่ daemon ตัวนี้ใช้</p>
<pre>[root@web ~]# <strong>ls -l /usr/local/sbin/httpd
</strong>-rwxr-xr-x 1 root root 1473263 Aug  6 03:29 /usr/local/sbin/httpd</pre>
<p>รัน httpd ตามด้วยออปชั่น &#8216;-V&#8217;  (ตัวอักษร วี ใหญ่) จะบอกรายละเอียดของไฟล์ httpd</p>
<pre>[root@web ~]# <strong>/usr/local/sbin/httpd -V
</strong>Server version: Apache/2.2.19 (Unix)
Server built:   Aug  6 2011 03:24:26
Server's Module Magic Number: 20051115:28
Server loaded:  APR 1.4.5, APR-Util 1.3.12
Compiled using: APR 1.4.5, APR-Util 1.3.12
Architecture:   64-bit
Server MPM:     Prefork
  threaded:     no
    forked:     yes (variable process count)
Server compiled with....
 -D APACHE_MPM_DIR="server/mpm/prefork"
 -D APR_HAS_SENDFILE
 -D APR_HAS_MMAP
 -D APR_HAVE_IPV6 (IPv4-mapped addresses enabled)
 -D APR_USE_SYSVSEM_SERIALIZE
 -D APR_USE_PTHREAD_SERIALIZE
 -D SINGLE_LISTEN_UNSERIALIZED_ACCEPT
 -D APR_HAS_OTHER_CHILD
 -D AP_HAVE_RELIABLE_PIPED_LOGS
 -D DYNAMIC_MODULE_LIMIT=128
<span style="color: #0000ff;"> -D HTTPD_ROOT="/usr/local/httpd-2.2.19"
</span> -D SUEXEC_BIN="/usr/local/httpd-2.2.19/bin/suexec"
 -D DEFAULT_PIDLOG="logs/httpd.pid"
 -D DEFAULT_SCOREBOARD="logs/apache_runtime_status"
 -D DEFAULT_LOCKFILE="logs/accept.lock"
 -D DEFAULT_ERRORLOG="logs/error_log"
 -D AP_TYPES_CONFIG_FILE="conf/mime.types"
<span style="color: #0000ff;"> -D SERVER_CONFIG_FILE="conf/httpd.conf"</span></pre>
<p>ไดเร็คทอรีหลักของ httpd (HTTPD_ROOT) คือ &#8220;/usr/local/httpd-2.2.19&#8243;</p>
<p>ไฟล์คอนฟิก (SERVER_CONFIG_FILE) คือ &#8220;conf/httpd.conf&#8221;  ซึ่งถ้าไม่มีเครื่องหมาย &#8220;/&#8221; นำหน้า จะเป็น relative path กับ HTTPD_ROOT อีกที หรือ full path ของคอนฟิกไฟล์ httpd.conf นี้คือ /usr/local/httpd-2.2.19/conf/httpd.conf<br />
 </p>
<h4>ข้อมูลอ้างอิง</h4>
<ul>
<li> man proc(5) </li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://spalinux.com/2011/08/where-is-apache-httpd-conf-configuration-file/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>โหลด mod_dav_svn ไม่สำเร็จ ฟ้องว่า undefined symbol: dav_register_provider</title>
		<link>http://spalinux.com/2011/06/cannot-load-mod_dav_svn-so-undefined-symbol-dav_register_provider</link>
		<comments>http://spalinux.com/2011/06/cannot-load-mod_dav_svn-so-undefined-symbol-dav_register_provider#comments</comments>
		<pubDate>Mon, 13 Jun 2011 17:06:41 +0000</pubDate>
		<dc:creator>editor</dc:creator>
				<category><![CDATA[Troubleshooting]]></category>
		<category><![CDATA[Version Control]]></category>
		<category><![CDATA[Web Server]]></category>
		<category><![CDATA[mod_dav_svn]]></category>
		<category><![CDATA[subversion]]></category>

		<guid isPermaLink="false">http://spalinux.com/?p=1381</guid>
		<description><![CDATA[ขอแปะไว้กันลืม และเผื่อมีท่านใด เจอปัญหาเหมือนผมบ้าง หาอยู่นานพอสมควร เพื่อจะพยายามคอนฟิกเก็บข้อมูล subversion (svn) ไว้บน Web Server หลังจากติดตั้ง &#8220;mod_dav_svn&#8221; แล้วพยายาม สตาร์ต httpd ไม่สำเร็จ ดังนี้ [root@repos ~]# service httpd restart Stopping httpd:                                            [FAILED] Starting httpd: httpd: Syntax error on line 210 of /etc/httpd/conf/httpd.conf: Syntax error on line 2 of /etc/httpd/conf.d/subversion.conf: Cannot load /etc/httpd/modules/mod_dav_svn.so into server: /etc/httpd/modules/mod_dav_svn.so: undefined symbol: dav_register_provider                                                           [FAILED] ไฟล์คอนฟิก &#8220;/etc/httpd/conf.d/subversion.conf&#8221; [...]]]></description>
			<content:encoded><![CDATA[<p>ขอแปะไว้กันลืม และเผื่อมีท่านใด เจอปัญหาเหมือนผมบ้าง หาอยู่นานพอสมควร เพื่อจะพยายามคอนฟิกเก็บข้อมูล subversion (svn) ไว้บน Web Server</p>
<p>หลังจากติดตั้ง &#8220;mod_dav_svn&#8221; แล้วพยายาม สตาร์ต httpd ไม่สำเร็จ ดังนี้</p>
<pre>[root@repos ~]# <strong>service httpd restart
</strong>Stopping httpd:                                            [FAILED]
Starting httpd: httpd: Syntax error on line 210 of /etc/httpd/conf/httpd.conf: Syntax error on line 2 of /etc/httpd/conf.d/subversion.conf: Cannot load</pre>
<pre><span style="color: #ff0000;">/etc/httpd/modules/mod_dav_svn.so into server: /etc/httpd/modules/mod_dav_svn.so: undefined symbol: dav_register_provider
</span><span style="color: #ff0000;">                                                          [FAILED]</span></pre>
<p><span id="more-1381"></span><br />
ไฟล์คอนฟิก &#8220;/etc/httpd/conf.d/subversion.conf&#8221;</p>
<pre>[root@repos ~]# <strong>cat /etc/httpd/conf.d/subversion.conf</strong></pre>
<pre>LoadModule dav_svn_module     modules/mod_dav_svn.so
LoadModule authz_svn_module   modules/mod_authz_svn.so
...</pre>
<p>วิธีการแก้ไขคือ คือต้องเปิดคอนฟิกเพื่อโหลดโมดูล &#8220;dav_fs_module&#8221; โดยแก้ไขในไฟล์คอนฟิก /etc/httpd/conf/httpd.conf</p>
<pre>[root@repos ~]# cat /etc/httpd/conf/httpd.conf</pre>
<pre><span style="color: #0000ff;">LoadModule dav_fs_module modules/mod_dav_fs.so</span></pre>
<p>หลังจากแก้ไข ใช้คำสั่ง service เพื่อรีสตาร์ต httpd อีกครั้ง</p>
<pre>[root@repos ~]# <strong>service httpd restart
</strong>Stopping httpd:                                            [  OK  ]
Starting httpd:                                            [  OK  ]</pre>
]]></content:encoded>
			<wfw:commentRss>http://spalinux.com/2011/06/cannot-load-mod_dav_svn-so-undefined-symbol-dav_register_provider/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>วิธีการใช้คำสั่ง wget</title>
		<link>http://spalinux.com/2010/01/using_wget</link>
		<comments>http://spalinux.com/2010/01/using_wget#comments</comments>
		<pubDate>Fri, 22 Jan 2010 08:04:48 +0000</pubDate>
		<dc:creator>editor</dc:creator>
				<category><![CDATA[Console]]></category>
		<category><![CDATA[Proxy]]></category>
		<category><![CDATA[Web Server]]></category>
		<category><![CDATA[wget]]></category>

		<guid isPermaLink="false">http://spalinux.com/?p=1047</guid>
		<description><![CDATA[wget เป็นโปรแกรมที่ใช้เพื่อดาวน์โหลดไฟล์จากเว็บไซต์ได้ ในรูปแบบ text console วิธีการใช้งานก็ง่ายคือรันคำสั่ง wget ตามด้วย URL ที่ต้องการดาวน์โหลด ผลลัพธ์ที่ได้จะถูกบันทึกเป็นไฟล์ของเว็บเพจหน้านั้นๆ รูปแบบการใช้งาน $ wget [option]... [URL]... ตัวอย่างเช่น ต้องการดาวน์โหลดเว็บเพจหน้าแรกของ www.google.co.th $ wget 'http://www.google.co.th' --13:52:23--  http://www.google.co.th/            =&#62; `index.html' Resolving www.google.co.th... 72.14.203.147, 72.14.203.103, 72.14.203.104, ... Connecting to www.google.co.th&#124;72.14.203.147&#124;:80... connected. HTTP request sent, awaiting response... 200 OK Length: unspecified [text/html]     [  &#60;=&#62;                                                                                ] 6,726         11.96K/s 13:52:24 (11.96 [...]]]></description>
			<content:encoded><![CDATA[<p>wget เป็นโปรแกรมที่ใช้เพื่อดาวน์โหลดไฟล์จากเว็บไซต์ได้ ในรูปแบบ text console วิธีการใช้งานก็ง่ายคือรันคำสั่ง wget ตามด้วย URL ที่ต้องการดาวน์โหลด ผลลัพธ์ที่ได้จะถูกบันทึกเป็นไฟล์ของเว็บเพจหน้านั้นๆ</p>
<p><span id="more-1047"></span></p>
<h4>รูปแบบการใช้งาน</h4>
<pre>$ <strong>wget</strong> [option]... [URL]...</pre>
<p>ตัวอย่างเช่น ต้องการดาวน์โหลดเว็บเพจหน้าแรกของ www.google.co.th</p>
<pre>$ <strong>wget 'http://www.google.co.th'
</strong>--13:52:23--  http://www.google.co.th/
           =&gt; `index.html'
Resolving www.google.co.th... 72.14.203.147, 72.14.203.103, 72.14.203.104, ...
Connecting to www.google.co.th|72.14.203.147|:80... connected.
HTTP request sent, awaiting response... 200 OK
Length: unspecified [text/html]</pre>
<pre>    [  &lt;=&gt;                                                                                ] 6,726         11.96K/s</pre>
<pre>13:52:24 (11.96 KB/s) - `<span style="color: #0000ff;">index.html</span>' saved [6726]</pre>
<p>จากตัวอย่าง ผลลัพธ์ที่ได้จะถูกบันทึกเป็นชื่อ index.html</p>
<p>หมายเหตุ แนะนำให้ใส่เครื่องหมายคำพูด &#8216;  คลอบ URL เพราะบางตัวอักษรอาจมีความหมายใน SHELL</p>
<pre>$ <strong>cat index.html
</strong>&lt;!doctype html&gt;&lt;html&gt;&lt;head&gt;&lt;meta http-equiv="content-type" content="text/html; charset=windows-874"&gt;&lt;title&gt;Google&lt;/title&gt;
...</pre>
<p>ระบุออปชั่น &#8216;&#8211;help&#8217; เพื่อดูวิธีการใช้งาน พร้อมทั้งออปชั่นต่างๆ</p>
<pre>$ <strong>wget --help
</strong>GNU Wget 1.10.2 (Red Hat modified), a non-interactive network retriever.
Usage: wget [OPTION]... [URL]...</pre>
<pre>Mandatory arguments to long options are mandatory for short options too.</pre>
<pre>Startup:
  -V,  --version           display the version of Wget and exit.
  -h,  --help              print this help.
  -b,  --background        go to background after startup.
  -e,  --execute=COMMAND   execute a `.wgetrc'-style command.</pre>
<p>ในบทความนี้ขอแนะนำการใช้ออปชั่นที่ผู้เขียนใช้บ่อยๆ</p>
<h4>ดูรายละเอียดการโหลด (debug)</h4>
<p>ระบุออปชั่น &#8216;-d&#8217; เพื่อดูรายละเอียดการดาวน์โหลด เช่นดู HTTP Header, Protocol, Cookie ที่เกิดขึ้นในการดาวน์โหลด</p>
<pre>$ <strong>wget -d 'http://www.google.co.th'
</strong>DEBUG output created by Wget 1.10.2 (Red Hat modified) on linux-gnu.</pre>
<pre>--14:16:24--  http://www.google.co.th/
           =&gt; `index.html'
Resolving www.google.co.th... 72.14.203.105, 72.14.203.106, 72.14.203.99, ...
Caching www.google.co.th =&gt; 72.14.203.105 72.14.203.106 72.14.203.99 72.14.203.104 72.14.203.103 72.14.203.147
Connecting to www.google.co.th|72.14.203.105|:80... connected.
Created socket 3.
Releasing 0x000000000083d390 (new refcount 1).</pre>
<pre>---request begin---
GET / HTTP/1.0
User-Agent: Wget/1.10.2 (Red Hat modified)
Accept: */*
Host: www.google.co.th
Connection: Keep-Alive</pre>
<pre>---request end---
HTTP request sent, awaiting response...
---response begin---
HTTP/1.0 200 OK
Date: Fri, 22 Jan 2010 07:16:29 GMT
Expires: -1
Cache-Control: private, max-age=0
Content-Type: text/html; charset=windows-874
Set-Cookie: PREF=ID=79a6955a36392a2d:TM=1264144589:LM=1264144589:S=c99kK7cOeBwCp4KG; expires=Sun, 22-Jan-2012 07:16:29 GMT; path                                             =/;</pre>
<pre>domain=.google.co.th
Set-Cookie: NID=31=h8-gos7iGB-MXzlXOo4C1_CRqzSNE6wu5Os2WBu6C-jm7tPhrlj4kJp1aiENCM66f388IScBzce4Q-6x7rwbfxUUbp2DGAIcxXu1zwSGy6zKH                                            </pre>
<pre>cjUQ2_59hiym_wuaRt2; expires=Sat, 24-Jul-2010 07:16:29 GMT; path=/; domain=.google.co.th; HttpOnly
Server: gws
X-XSS-Protection: 0</pre>
<pre>---response end---
200 OK
cdm: 1 2 3 4 5 6 7 8
Stored cookie google.co.th -1 (ANY) / &lt;permanent&gt; &lt;insecure&gt; [expiry 2012-01-22 14:16:29] PREF ID=79a6955a36392a2d:TM=1264144589                                            </pre>
<pre>:LM=1264144589:S=c99kK7cOeBwCp4KG
cdm: 1 2 3 4 5 6 7 8
Stored cookie google.co.th -1 (ANY) / &lt;permanent&gt; &lt;insecure&gt; [expiry 2010-07-24 14:16:29] NID 31=h8-gos7iGB-MXzlXOo4C1_CRqzSNE6w                                            </pre>
<pre>u5Os2WBu6C-jm7tPhrlj4kJp1aiENCM66f388IScBzce4Q-6x7rwbfxUUbp2DGAIcxXu1zwSGy6zKHcjUQ2_59hiym_wuaRt2
Length: unspecified [text/html]</pre>
<pre>    [  &lt;=&gt;                                                                                ] 6,702          6.21K/s</pre>
<pre>Closed fd 3
14:16:31 (6.20 KB/s) - `index.html' saved [6702]</pre>
<h4>ดาวน์โหลดต่อไฟล์ (continue)</h4>
<p>สามารถดาวน์โหลดไฟล์ต่อจากที่ดาวน์โหลดยังไม่ครบได้</p>
<p>เช่นต้องการดาวน์โหลดไฟล์ iso ที่มีขนาดใหญ่มาก แล้วดาวน์โหลดครั้งแรกยังไม่ครบ</p>
<pre>$ <strong>wget 'http://www.mirror.in.th/osarchive/fedora/releases/11/Live/x86_64/Fedora-11-x86_64-Live.iso'
</strong>--14:09:51--  http://www.mirror.in.th/osarchive/fedora/releases/11/Live/x86_64/Fedora-11-x86_64-Live.iso
           =&gt; `Fedora-11-x86_64-Live.iso'
Resolving <a href="http://www.mirror.in.th/">www.mirror.in.th</a>... 61.7.253.242
Connecting to www.mirror.in.th|61.7.253.242|:80... connected.
HTTP request sent, awaiting response... 200 OK
Length: 724,097,024 (691M) [application/octet-stream]</pre>
<pre> 0% [                                                                                     ] 1,090,066     87.82K/s  ETA 2:13:52</pre>
<p>หมายเหตุ ในระหว่างการดาวน์โหลด หากต้องการยกเลิกให้กด [Ctrl-C]</p>
<p>ครั้งแรกดาวน์โหลดไฟล์ได้แค่ 1 Meg กว่าๆ</p>
<pre>$ <strong>ls -l
</strong>total 1080
-rw-r--r-- 1 user1  users  1098754 2010-01-22 14:10 Fedora-11-x86_64-Live.iso</pre>
<p>ถ้าต้องการดาวน์โหลดต่อ ต้องระบุออปชั่น &#8216;-c&#8217;</p>
<pre>$ <strong>wget -c 'http://www.mirror.in.th/osarchive/fedora/releases/11/Live/x86_64/Fedora-11-x86_64-Live.iso'
</strong>--14:11:46--  http://www.mirror.in.th/osarchive/fedora/releases/11/Live/x86_64/Fedora-11-x86_64-Live.iso
           =&gt; `Fedora-11-x86_64-Live.iso'
Resolving www.mirror.in.th... 61.7.253.242
Connecting to www.mirror.in.th|61.7.253.242|:80... connected.
HTTP request sent, awaiting response... 206 <span style="color: #0000ff;">Partial Content</span>
Length: 724,097,024 (691M), 722,998,270 (690M) remaining [application/octet-stream]</pre>
<pre> 0% [                                                                                     ] 1,401,045     94.59K/s  ETA 2:04:50</pre>
<pre>$ <strong>ls -l
</strong>total 1384
-rw-r--r-- 1 user1  users  1409733 2010-01-22 14:11 Fedora-11-x86_64-Live.iso</pre>
<h4>จำกัดความเร็วการโหลด</h4>
<p>ต้องการโหลดไฟล์แต่ไม่ต้องการเบียดบังความเร็วการใช้อินเตอร์เน็ตจากคนอื่นมากเกินไป เราสามารถจำกัดความเร็วในการโหลดของเราได้ ด้วยออปชั่น &#8216;&#8211;limit-rate&#8217;</p>
<p>เช่นต้องการจำกัดไว้ที่ 10 KBytes/s</p>
<pre>$ <strong>wget --limit-rate 10000 'http://www.mirror.in.th/osarchive/fedora/releases/11/Live/x86_64/Fedora-11-x86_64-Live.iso'
</strong>--14:25:14--  http://www.mirror.in.th/osarchive/fedora/releases/11/Live/x86_64/Fedora-11-x86_64-Live.iso
           =&gt; `Fedora-11-x86_64-Live.iso'
Resolving www.mirror.in.th... 61.7.253.242
Connecting to www.mirror.in.th|61.7.253.242|:80... connected.
HTTP request sent, awaiting response... 200 OK
Length: 724,097,024 (691M) [application/octet-stream]</pre>
<pre> 0% [                                                                                     ] 62,618         9.77K/s ETA 20:07:01</pre>
<p>หมายเหตุ หน่วยของออปชั่น &#8216;&#8211;limit-rate&#8217; เป็น bytes per second</p>
<h4>โหลดผ่าน proxy</h4>
<p>หากต้องใช้ proxy ในการโหลด ต้องมีการระบุตัวแปร &#8216;http_proxy&#8217; ไว้ใน shell ก่อนรันคำสั่ง เช่น IP ของ proxy คือ 192.168.1.1 และพอร์ต proxy คือ 3128 ถ้าใช้ BASH สามารถทำได้โดย</p>
<pre>$ <strong>export http_proxy=http://192.168.1.1:3128</strong></pre>
<p>ใช้คำสั่ง wget พร้อมระบุออปชั่น &#8216;&#8211;proxy&#8217; เพื่อให้โหลดผ่าน proxy</p>
<pre>$ <strong>wget --proxy 'http://www.mirror.in.th/osarchive/fedora/releases/11/Live/x86_64/Fedora-11-x86_64-Live.iso'
</strong>--2010-01-22 14:30:26--  http://www.mirror.in.th/osarchive/fedora/releases/11/Live/x86_64/Fedora-11-x86_64-Live.iso
Connecting to 192.168.1.1:3128... connected.
Proxy request sent, awaiting response... 200 OK
Length: 724097024 (691M) [application/octet-stream]
Saving to: `Fedora-11-x86_64-Live.iso'</pre>
<pre> 0% [                                                                                     ] 63,434      96.4K/s</pre>
<p>แต่ถ้า proxy ต้องระบุ user, password ด้วย จะขึ้น error ดังนี้</p>
<pre>$ <strong>wget --proxy  'http://www.mirror.in.th/osarchive/fedora/releases/11/Live/x86_64/Fedora-11-x86_64-Live.iso'
</strong>--2010-01-22 14:31:06--  http://www.mirror.in.th/osarchive/fedora/releases/11/Live/x86_64/Fedora-11-x86_64-Live.iso
Connecting to 192.168.1.1:3128... connected.
Proxy request sent, awaiting response... 407 Proxy Authentication Required
2010-01-22 14:31:06 ERROR 407: Proxy Authentication Required.</pre>
<pre>ใช้ออปชั่น '--proxy-user' และ '--proxy-password' เพื่อระบุ user, password ในการใช้ proxy</pre>
<pre>$ <strong>wget --proxy-user=prxuser --proxy-password=prx1234  'http://www.mirror.in.th/osarchive/fedora/releases/11/Live/x86_64/Fedora-11-x86_64-Live.iso'
</strong>--2010-01-22 14:30:26--  http://www.mirror.in.th/osarchive/fedora/releases/11/Live/x86_64/Fedora-11-x86_64-Live.iso
Connecting to 192.168.1.1:3128... connected.
Proxy request sent, awaiting response... 200 OK
Length: 724097024 (691M) [application/octet-stream]
Saving to: `Fedora-11-x86_64-Live.iso'</pre>
<pre> 0% [                                                                                     ] 63,434      96.4K/s</pre>
<h4>ไฟล์คอนฟิก .wgetrc</h4>
<p>แทนที่จะต้องระบุออปชั่น proxy ทุกครั้ง สามารถสร้างเป็นไฟล์คอนฟิกสำหรับใช้คำสั่ง wget โดยสร้างไฟล์ชื่อ .wgetrc (มีเครื่องหมายจุดนำหน้าชื่อไฟล์ด้วย) ไว้ใน HOME ของผู้ใช้งาน</p>
<pre>$ <strong>cat ~/.wgetrc
</strong>http_proxy=http://192.168.1.1:3128/
proxy_user=prxuser
proxy_password=prx1234</pre>
<p>หลังจากสร้างไฟล์คอนฟิก .wgetrc แล้ว เวลาใช้คำสั่ง wget ก็ไม่ต้องระบุออปชั่นใดๆ อีก</p>
<pre>$ <strong>wget  'http://www.mirror.in.th/osarchive/fedora/releases/11/Live/x86_64/Fedora-11-x86_64-Live.iso'
</strong>--2010-01-22 14:37:46--  http://www.mirror.in.th/osarchive/fedora/releases/11/Live/x86_64/Fedora-11-x86_64-Live.iso
Connecting to 192.168.1.1:3128... connected.
Proxy request sent, awaiting response... 200 OK
Length: 724097024 (691M) [application/octet-stream]
Saving to: `Fedora-11-x86_64-Live.iso.1'</pre>
<pre> 0% [                                                                                     ] 80,810      95.8K/s</pre>
<h4>ข้อมูลอ้างอิง</h4>
<ul>
<li><a href="http://www.gnu.org/software/wget/" target="_blank">GNU Wget</a></li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://spalinux.com/2010/01/using_wget/feed</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>ติดตั้ง Ruby on Rails บน Fedora 11</title>
		<link>http://spalinux.com/2009/09/install_ruby_on_rails_on_fedora_11</link>
		<comments>http://spalinux.com/2009/09/install_ruby_on_rails_on_fedora_11#comments</comments>
		<pubDate>Sat, 19 Sep 2009 07:36:54 +0000</pubDate>
		<dc:creator>editor</dc:creator>
				<category><![CDATA[Programming]]></category>
		<category><![CDATA[Ruby]]></category>
		<category><![CDATA[Web Server]]></category>
		<category><![CDATA[Ruby on Rails]]></category>

		<guid isPermaLink="false">http://spalinux.com/?p=923</guid>
		<description><![CDATA[Ruby on Rails ช่วยทำให้การพัฒนา Web Application ด้วยภาษา Ruby ได้ง่ายขึ้น Rails เป็น web framework ประกอบด้วยส่วน (components) ต่างๆ ซึ่งสามารถนำไปสร้างเป็น Web Application ได้เลย เพียงแค่รันไม่กี่คำสั่งเท่านั้น ดาวน์โหลดไฟล์ rpm และติดตั้ง ไฟล์ RPM ที่ต้องใช้สำหรับติดตั้ง Ruby on Rails ruby-rdoc-1.8.6.287-8.fc11.x86_64.rpm rubygems-1.3.1-2.fc11.noarch.rpm rubygem-activesupport-2.3.2-1.fc11.noarch.rpm rubygem-actionpack-2.3.2-1.fc11.noarch.rpm rubygem-actionmailer-2.3.2-1.fc11.noarch.rpm rubygem-activerecord-2.3.2-1.fc11.noarch.rpm rubygem-activeresource-2.3.2-1.fc11.noarch.rpm rubygem-rake-0.8.4-1.fc11.noarch.rpm rubygem-rails-2.3.2-2.fc11.noarch.rpm rubygem-sqlite3-ruby-1.2.4-2.fc11.x86_64.rpm ใช้คำสั่ง rpm เพิ่มติดตั้ง packages ตามลำดับต่อไปนี้ [root@fc11-64a ~]# rpm -ivh ruby-rdoc-1.8.6.287-8.fc11.x86_64.rpm [root@fc11-64a ~]# rpm -ivh rubygems-1.3.1-2.fc11.noarch.rpm [...]]]></description>
			<content:encoded><![CDATA[<p>Ruby on Rails ช่วยทำให้การพัฒนา Web Application ด้วยภาษา Ruby ได้ง่ายขึ้น</p>
<p>Rails เป็น web framework ประกอบด้วยส่วน (components) ต่างๆ ซึ่งสามารถนำไปสร้างเป็น Web Application ได้เลย เพียงแค่รันไม่กี่คำสั่งเท่านั้น</p>
<p><span id="more-923"></span></p>
<h4>ดาวน์โหลดไฟล์ rpm และติดตั้ง</h4>
<p>ไฟล์ RPM ที่ต้องใช้สำหรับติดตั้ง Ruby on Rails</p>
<pre>ruby-rdoc-1.8.6.287-8.fc11.x86_64.rpm
rubygems-1.3.1-2.fc11.noarch.rpm
rubygem-activesupport-2.3.2-1.fc11.noarch.rpm
rubygem-actionpack-2.3.2-1.fc11.noarch.rpm
rubygem-actionmailer-2.3.2-1.fc11.noarch.rpm
rubygem-activerecord-2.3.2-1.fc11.noarch.rpm
rubygem-activeresource-2.3.2-1.fc11.noarch.rpm
rubygem-rake-0.8.4-1.fc11.noarch.rpm
rubygem-rails-2.3.2-2.fc11.noarch.rpm
rubygem-sqlite3-ruby-1.2.4-2.fc11.x86_64.rpm</pre>
<p>ใช้คำสั่ง rpm เพิ่มติดตั้ง packages ตามลำดับต่อไปนี้</p>
<pre>[root@fc11-64a ~]# <strong>rpm -ivh ruby-rdoc-1.8.6.287-8.fc11.x86_64.rpm
</strong>[root@fc11-64a ~]# <strong>rpm -ivh rubygems-1.3.1-2.fc11.noarch.rpm
</strong>[root@fc11-64a ~]# <strong>rpm -ivh rubygem-activesupport-2.3.2-1.fc11.noarch.rpm
</strong>[root@fc11-64a ~]# <strong>rpm -ivh rubygem-actionpack-2.3.2-1.fc11.noarch.rpm
</strong>[root@fc11-64a ~]# <strong>rpm -ivh rubygem-actionmailer-2.3.2-1.fc11.noarch.rpm
</strong>[root@fc11-64a ~]# <strong>rpm -ivh rubygem-activerecord-2.3.2-1.fc11.noarch.rpm
</strong>[root@fc11-64a ~]# <strong>rpm -ivh rubygem-activeresource-2.3.2-1.fc11.noarch.rpm
</strong>[root@fc11-64a ~]# <strong>rpm -ivh rubygem-rake-0.8.4-1.fc11.noarch.rpm
</strong>[root@fc11-64a ~]# <strong>rpm -ivh rubygem-rails-2.3.2-2.fc11.noarch.rpm
</strong>[root@fc11-64a ~]# <strong>rpm -ivh rubygem-sqlite3-ruby-1.2.4-2.fc11.x86_64.rpm</strong></pre>
<h4>ทดสอบสร้าง Blog ด้วย Rails</h4>
<p>ตัวอย่างต่อไปนี้ แสดงวิธีการสร้าง Web Application ด้วย Rails</p>
<p>สร้างไดเร็คทอรีสำหรับเก็บ application</p>
<pre>[root@fc11-64a ~# <strong>cd /var/www/html/
</strong>[root@fc11-64a html]# <strong>mkdir rails
</strong>[root@fc11-64a html]# <strong>cd rails/</strong></pre>
<p>ใช้คำสั่ง rails เพื่อสร้าง application ขึ้นมา ในที่นี้ตั้งชื่อว่า blog</p>
<pre>[root@fc11-64a rails]# <strong>rails blog
</strong>      create
      create  app/controllers
      create  app/helpers
      create  app/models
      create  app/views/layouts
      create  config/environments
      create  config/initializers
      create  config/locales
      create  db
      create  doc
      create  lib
      create  lib/tasks
      create  log
      create  public/images
      create  public/javascripts
      create  public/stylesheets
      create  script/performance
      create  test/fixtures
      create  test/functional
      create  test/integration
      create  test/performance
      create  test/unit
      create  vendor
      create  vendor/plugins
      create  tmp/sessions
      create  tmp/sockets
      create  tmp/cache
      create  tmp/pids
      create  Rakefile
      create  README
      create  app/controllers/application_controller.rb
      create  app/helpers/application_helper.rb
      create  config/database.yml
      create  config/routes.rb
      create  config/locales/en.yml
      create  config/initializers/backtrace_silencers.rb
      create  config/initializers/inflections.rb
      create  config/initializers/mime_types.rb
      create  config/initializers/new_rails_defaults.rb
      create  config/initializers/session_store.rb
      create  config/environment.rb
      create  config/boot.rb
      create  config/environments/production.rb
      create  config/environments/development.rb
      create  config/environments/test.rb
      create  script/about
      create  script/console
      create  script/dbconsole
      create  script/destroy
      create  script/generate
      create  script/runner
      create  script/server
      create  script/plugin
      create  script/performance/benchmarker
      create  script/performance/profiler
      create  test/test_helper.rb
      create  test/performance/browsing_test.rb
      create  public/404.html
      create  public/422.html
      create  public/500.html
      create  public/index.html
      create  public/favicon.ico
No such file or directory - /usr/lib/ruby/gems/1.8/gems/rails-2.3.2/bin/../lib/rails_generator/generators/applications/app/../../../../../html/favicon.ico</pre>
<p>คำสั่ง rails จะสร้างไดเร็คทอรีชื่อ blog สำหรับเก็บไฟล์ของ application ที่สร้างขึ้น พร้อมทั้งไดเร็คทอรีย่อยต่างๆ</p>
<pre>[root@fc11-64a rails]# <strong>ls -l
</strong>total 0
drwxr-xr-x 13 root root 156 2009-09-19 12:29 blog</pre>
<pre>[root@fc11-64a rails]# <strong>ls -l blog/
</strong>total 16
drwxr-xr-x 6 root root    63 2009-09-19 12:29 app
drwxr-xr-x 5 root root   128 2009-09-19 12:29 config
drwxr-xr-x 2 root root     6 2009-09-19 12:29 db
drwxr-xr-x 2 root root     6 2009-09-19 12:29 doc
drwxr-xr-x 3 root root    18 2009-09-19 12:29 lib
drwxr-xr-x 2 root root     6 2009-09-19 12:29 log
drwxr-xr-x 5 root root   135 2009-09-19 12:29 public
-rw-r--r-- 1 root root   307 2009-09-19 12:29 Rakefile
-rw-r--r-- 1 root root 10011 2009-09-19 12:29 README
drwxr-xr-x 3 root root   134 2009-09-19 12:29 script
drwxr-xr-x 7 root root   106 2009-09-19 12:29 test
drwxr-xr-x 6 root root    58 2009-09-19 12:29 tmp
drwxr-xr-x 3 root root    20 2009-09-19 12:29 vendor</pre>
<p>เข้าไปในไดเร็คทอรี blog แล้วรันคำสั่ง rake เพื่อสร้าง database สำหรับเก็บข้อมูลของ application blog</p>
<p>โดยดีฟอลต์จะใช้ฐานข้อมูล SQLite version 3 (sqlite3) ดูคอนฟิก database ได้ในไฟล์ &#8220;config/database.yml&#8221;</p>
<pre>[root@fc11-64a rails]# cd blog</pre>
<pre>[root@fc11-64a blog]# <strong>cat config/database.yml
</strong># SQLite version 3.x
#   gem install sqlite3-ruby (not necessary on OS X Leopard)
development:
  adapter: sqlite3
  database: db/development.sqlite3
  pool: 5
  timeout: 5000
...</pre>
<pre>[root@fc11-64a blog]# <strong>rake db:create
</strong>(in /var/www/html/rails/blog)</pre>
<p>ไฟล์ database ของ sqlite3 ที่ถูกสร้างขึ้นจะถูกเก็บไว้ใน &#8220;db/&#8221;</p>
<pre>[root@fc11-64a blog]# <strong>ls -l db/
</strong>total 0
-rw-r--r-- 1 root root 0 2009-09-19 12:35 development.sqlite3</pre>
<p>ใช้คำสั่ง script/generate เพื่อสร้าง controller และ view ของ application</p>
<pre>[root@fc11-64a blog]# <strong>script/generate controller home index
</strong>      exists  app/controllers/
      exists  app/helpers/
      create  app/views/home
      exists  test/functional/
      create  test/unit/helpers/
      create  app/controllers/home_controller.rb
      create  test/functional/home_controller_test.rb
      create  app/helpers/home_helper.rb
      create  test/unit/helpers/home_helper_test.rb
      create  app/views/home/index.html.erb</pre>
<p> รันคำสั่ง script/server เพื่อสตาร์ตเว็บเซิร์ฟเวอร์ของ application ที่สร้างขึ้น</p>
<p>หมายเหตุ</p>
<ul>
<li>โดยดีฟอลต์ Rails จะรันเว็บเซิร์ฟเวอร์ของตัวเองที่พอร์ต 3000 ไม่ได้ใช้ Apache</li>
<li>
<pre>คำสั่งรันเซิร์ฟเวอร์นี้ หน้าจอจะค้างที่ console เพื่อแสดงเหตุการณ์ (log) ต่างๆ เมื่อมีการเรียกใช้</pre>
</li>
</ul>
<pre>[root@fc11-64a blog]# <strong>script/server
</strong>=&gt; Booting WEBrick
=&gt; Rails 2.3.2 application starting on http://0.0.0.0:3000
=&gt; Call with -d to detach
=&gt; Ctrl-C to shutdown server
[2009-09-19 13:02:23] INFO  WEBrick 1.3.1
[2009-09-19 13:02:23] INFO  ruby 1.8.6 (2008-08-11) [x86_64-linux]
[2009-09-19 13:02:23] INFO  WEBrick::HTTPServer#start: pid=2351 port=3000</pre>
<p>ทดสอบใช้ Browser เรียกเข้ามาที่เครื่อง ระบุ IP และพอร์ต 3000</p>
<p><img title="Ruby on Rails - Welcome-aboard" src="http://spalinux.com/wp-content/uploads/2009/09/01-Welcome-aboard.png" alt="Ruby on Rails - Welcome-aboard" width="768" height="737" /><br />
ตัวอย่าง log ที่แสดงออกหน้าจอ console</p>
<pre>Processing ApplicationController#index (for 10.3.3.1 at 2009-09-19 13:02:42) [GET]</pre>
<pre>ActionController::RoutingError (No route matches "/javascripts/prototype.js" with {:method=&gt;:get}):
  /usr/lib/ruby/1.8/webrick/httpserver.rb:104:in `service'
  /usr/lib/ruby/1.8/webrick/httpserver.rb:65:in `run'
  /usr/lib/ruby/1.8/webrick/server.rb:173:in `start_thread'
  /usr/lib/ruby/1.8/webrick/server.rb:162:in `start'
  /usr/lib/ruby/1.8/webrick/server.rb:162:in `start_thread'
  /usr/lib/ruby/1.8/webrick/server.rb:95:in `start'
  /usr/lib/ruby/1.8/webrick/server.rb:92:in `each'
  /usr/lib/ruby/1.8/webrick/server.rb:92:in `start'
  /usr/lib/ruby/1.8/webrick/server.rb:23:in `start'
  /usr/lib/ruby/1.8/webrick/server.rb:82:in `start'</pre>
<pre>Rendering rescues/layout (not_found)</pre>
<p>หากต้องการยกเลิก (stop) เว็บเซิร์ฟเวอร์ ให้กดปุ่ม [Ctrl-C] ที่ Console</p>
<pre><strong><span style="color: #0000ff;">[Ctrl-C]
</span></strong>^C
[2009-09-19 13:06:18] INFO  going to shutdown ...
[2009-09-19 13:06:18] INFO  WEBrick::HTTPServer#start done.
Exiting</pre>
<h4>ข้อมูลอ้างอิง</h4>
<ul>
<li><a href="http://spalinux.com/2009/09/install_ruby_on_fedora_11">ติดตั้ง Ruby บน Fedora 11</a></li>
<li><a href="http://www.ruby-lang.org/" target="_blank">Ruby Programming Language</a></li>
<li><a href="http://guides.rubyonrails.org/getting_started.html" target="_blank">Getting Started with Rails</a></li>
<li><a href="http://mirrors.kernel.org/fedora/releases/11/Everything/x86_64/os/Packages" target="_blank">Fedora 11 Everything (x86_64)</a></li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://spalinux.com/2009/09/install_ruby_on_rails_on_fedora_11/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>คอนฟิกลีนุกซ์ผ่านเว็บด้วย webmin</title>
		<link>http://spalinux.com/2009/08/configure_linux_by_webmin</link>
		<comments>http://spalinux.com/2009/08/configure_linux_by_webmin#comments</comments>
		<pubDate>Sat, 29 Aug 2009 05:35:45 +0000</pubDate>
		<dc:creator>editor</dc:creator>
				<category><![CDATA[Web Server]]></category>
		<category><![CDATA[webmin]]></category>

		<guid isPermaLink="false">http://spalinux.com/?p=906</guid>
		<description><![CDATA[วันก่อนไปรับงานติดตั้งลีนุกซ์ให้กับลูกค้ารายหนึ่ง เพื่อใช้เป็น File Server แชร์ไฟล์กันระหว่างเครื่อง client หลังจากติดตั้งเสร็จแล้วใช้งานได้แล้ว ลูกค้าอยากได้วิธีการง่ายๆ เพื่อดูสถานะของเครื่องลีนุกซ์เซิร์ฟเวอร์ หรืออยากจะสั่งปิดเครื่อง (shutdown) เองได้ แต่ไม่อยากทำผ่าน Secure Shell ซึ่งต้องจำคำสั่งมากมาย เลยติดตั้งโปรแกรม webmin เพื่อให้ลูกค้าสามารถที่จะจัดการลีนุกซ์ผ่านหน้าเว็บได้ ซึ่งใช้งานง่ายเลย เพียงแต่บอกว่าการปิดเครื่องต้องคลิ้กที่ลิ้งค์ไหน ในทีนี่เลยนำมาเรียบเรียงเขียนเป็นบทความเผื่อผู้สนใจนำไปติดตั้ง ใช้งาน ดาวน์โหลด webmin เข้าเว็บไซต์ www.webmin.com คลิ้กที่ &#8220;Downloads&#8221; เลือกรูปแบบไฟล์ที่ต้องการ สำหรับ Fedora แนะนำให้เลือกเป็นแบบ RPM ติดตั้ง webmin ใช้คำสั่ง rpm เพื่อติดตั้งไฟล์ที่ดาวน์โหลดมา [root@fc11-64a ~]# rpm -ivh webmin-1.480-1.noarch.rpm warning: webmin-1.480-1.noarch.rpm: Header V3 DSA signature: NOKEY, key ID 11f63c51 Preparing...                [...]]]></description>
			<content:encoded><![CDATA[<p>วันก่อนไปรับงานติดตั้งลีนุกซ์ให้กับลูกค้ารายหนึ่ง เพื่อใช้เป็น File Server แชร์ไฟล์กันระหว่างเครื่อง client หลังจากติดตั้งเสร็จแล้วใช้งานได้แล้ว ลูกค้าอยากได้วิธีการง่ายๆ เพื่อดูสถานะของเครื่องลีนุกซ์เซิร์ฟเวอร์ หรืออยากจะสั่งปิดเครื่อง (shutdown) เองได้ แต่ไม่อยากทำผ่าน Secure Shell ซึ่งต้องจำคำสั่งมากมาย</p>
<p>เลยติดตั้งโปรแกรม webmin เพื่อให้ลูกค้าสามารถที่จะจัดการลีนุกซ์ผ่านหน้าเว็บได้ ซึ่งใช้งานง่ายเลย เพียงแต่บอกว่าการปิดเครื่องต้องคลิ้กที่ลิ้งค์ไหน</p>
<p><span id="more-906"></span></p>
<p>ในทีนี่เลยนำมาเรียบเรียงเขียนเป็นบทความเผื่อผู้สนใจนำไปติดตั้ง ใช้งาน</p>
<h4>ดาวน์โหลด webmin</h4>
<p>เข้าเว็บไซต์ <a href="http://www.webmin.com/">www.webmin.com</a> คลิ้กที่ &#8220;Downloads&#8221; เลือกรูปแบบไฟล์ที่ต้องการ สำหรับ Fedora แนะนำให้เลือกเป็นแบบ RPM</p>
<h4>ติดตั้ง webmin</h4>
<p>ใช้คำสั่ง rpm เพื่อติดตั้งไฟล์ที่ดาวน์โหลดมา</p>
<pre>[root@fc11-64a ~]# <strong>rpm -ivh webmin-1.480-1.noarch.rpm
</strong>warning: webmin-1.480-1.noarch.rpm: Header V3 DSA signature: NOKEY, key ID 11f63c51
Preparing...                ########################################### [100%]
Operating system is Redhat Linux
   1:webmin                 ########################################### [100%]
Webmin install complete. You can now login to http://fc11-64a.spalinux.com:10000/
as root with your root password.</pre>
<p>จากการติดตั้ง จะมีการรันเซอร์วิสของ webmin และคอนฟิกไว้ว่าถ้ามีการรีบู๊ตเครื่องใหม่ ให้สตาร์ตเซอร์วิส webmin โดยอัตโนมัติ</p>
<pre>[root@fc11-64a ~]# <strong>ps -ef | grep webmin
</strong>root      1909     1  0 19:06 ?        00:00:00 /usr/bin/perl /usr/libexec/webmin/miniserv.pl /etc/webmin/miniserv.conf</pre>
<pre>[root@fc11-64a ~]# <strong>chkconfig --list webmin
</strong>webmin          0:off   1:off   2:on    3:on    4:off   5:on    6:off</pre>
<h4>ใช้งาน webmin</h4>
<p>webmin จะทำหน้าที่เว็บเซิร์ฟเวอร์อยู่ในตัว รันอยู่ที่พอร์ต 10000 วิธีการเรียกใช้คือเปิด browser เรียกเข้าไปที่ ชื่อ Hostname หรือ IP Address ของเครื่องลีนุกซ์ แต่ต้องระบุพอร์ตเป็นพอร์ต 10000 โดยใช้เครื่องหมาย : ต่อท้ายชื่อ</p>
<p><strong>http://&lt;hostname or ip-address&gt;:10000/</strong></p>
<p>ตัวอย่างหน้าเว็บแสดง System Information</p>
<p><img title="Webmin - System Information" src="http://spalinux.com/wp-content/uploads/2009/08/01-Webmin_System_Information.png" alt="Webmin - System Information" width="600" height="351" /></p>
<p>ตัวอย่างหน้าเว็บ สำหรับการปิดเครื่อง (Shutdown System)</p>
<p><img title="Webmin - Shutdown System" src="http://spalinux.com/wp-content/uploads/2009/08/02-Webmin_Shutdown_System.png" alt="Webmin - Shutdown System" width="600" height="351" /></p>
<h4> </h4>
<h4>ข้อมูลอ้างอิง</h4>
<ul>
<li><a href="http://www.webmin.com" target="_blank">webmin</a></li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://spalinux.com/2009/08/configure_linux_by_webmin/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>ติดตั้ง Apache, PHP บน Fedora 11</title>
		<link>http://spalinux.com/2009/06/install_apache_php_on_fedora_11</link>
		<comments>http://spalinux.com/2009/06/install_apache_php_on_fedora_11#comments</comments>
		<pubDate>Sun, 28 Jun 2009 12:13:49 +0000</pubDate>
		<dc:creator>editor</dc:creator>
				<category><![CDATA[Apache]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[Programming]]></category>
		<category><![CDATA[Web Server]]></category>
		<category><![CDATA[install apache php]]></category>

		<guid isPermaLink="false">http://spalinux.com/?p=825</guid>
		<description><![CDATA[ในบทความนี้จะอธิบายวิธีการติดตั้งและคอนฟิก Apache บน Fedora 11 (x86_64) โดยทดสอบบนเครื่องที่ ติดตั้ง Fedora 11 แบบประหยัดพื้นที่สุด ใส่แผ่นดีวีดี Fedora 11 แล้วติดตั้งไฟล์ rpm ต่อไปนี้ตามตัวอย่าง [root@fc11-64min ~]# mount /dev/scd0 /media/ mount: block device /dev/sr0 is write-protected, mounting read-only [root@fc11-64min ~]# cd /media/Packages/ ติดตั้ง Apache Web Server [root@fc11-64min Packages]# rpm -i apr-1.3.3-4.fc11.x86_64.rpm [root@fc11-64min Packages]# rpm -i apr-util-1.3.4-3.fc11.x86_64.rpm [root@fc11-64min Packages]# rpm -i apr-util-ldap-1.3.4-3.fc11.x86_64.rpm [root@fc11-64min Packages]# [...]]]></description>
			<content:encoded><![CDATA[<p>ในบทความนี้จะอธิบายวิธีการติดตั้งและคอนฟิก Apache บน Fedora 11 (x86_64) โดยทดสอบบนเครื่องที่ <a href="http://spalinux.com/2009/06/install_minimal_fedora_11">ติดตั้ง Fedora 11 แบบประหยัดพื้นที่สุด</a></p>
<p><span id="more-825"></span>ใส่แผ่นดีวีดี Fedora 11 แล้วติดตั้งไฟล์ rpm ต่อไปนี้ตามตัวอย่าง</p>
<pre>[root@fc11-64min ~]# <strong>mount /dev/scd0 /media/
</strong>mount: block device /dev/sr0 is write-protected, mounting read-only
[root@fc11-64min ~]# <strong>cd /media/Packages/</strong></pre>
<p>ติดตั้ง Apache Web Server</p>
<pre>[root@fc11-64min Packages]# <strong>rpm -i apr-1.3.3-4.fc11.x86_64.rpm
</strong>[root@fc11-64min Packages]# <strong>rpm -i apr-util-1.3.4-3.fc11.x86_64.rpm
</strong>[root@fc11-64min Packages]# <strong>rpm -i apr-util-ldap-1.3.4-3.fc11.x86_64.rpm
</strong>[root@fc11-64min Packages]# <strong>rpm -i httpd-tools-2.2.11-8.x86_64.rpm
</strong>[root@fc11-64min Packages]# <strong>rpm -i httpd-2.2.11-8.x86_64.rpm</strong></pre>
<p>ติดตั้ง PHP พื้นฐาน</p>
<pre>[root@fc11-64min Packages]# <strong>rpm -i php-common-5.2.9-2.fc11.x86_64.rpm
</strong>[root@fc11-64min Packages]# <strong>rpm -i php-cli-5.2.9-2.fc11.x86_64.rpm
</strong>[root@fc11-64min Packages]# <strong>rpm -i php-5.2.9-2.fc11.x86_64.rpm</strong></pre>
<p>ใช้คำสั่ง service เพื่อรันเซอร์วิสเว็บเซิร์ฟเวอร์</p>
<pre>[root@fc11-64min ~]# <strong>service httpd start
</strong>Starting httpd:                                            [  OK  ]</pre>
<p>ทดลองเปิดจาก browser</p>
<p><img title="Fedora 11 - Test Page" src="http://spalinux.com/wp-content/uploads/2009/06/01_Fedora_11_Test_Page.png" alt="Fedora 11 - Test Page" width="600" height="546" /></p>
<p> </p>
<p>เขียนไฟล์ phpinfo.php ใส่ไว้ในไดเร็คทอรี /var/www/html/ เพื่อตรวจสอบคอนฟิกของ Apache และ PHP</p>
<pre>[root@fc11-64min html]# <strong>cat phpinfo.php
</strong>&lt;?php
phpinfo();
?&gt;</pre>
<pre>ตัวอย่างผลลัพธ์จากการเรียกไฟล์ phpinfo.php ผ่าน Web Browser</pre>
<p><img title="Fedora 11 - phpinfo" src="http://spalinux.com/wp-content/uploads/2009/06/02_Fedora_11_phpinfo.png" alt="Fedora 11 - phpinfo" width="600" height="546" /></p>
<p>ในบทความนี้เป็นการติดตั้งเว็บเซิร์ฟเวอร์และคอนฟิก PHP แบบพื้นฐานเท่านั้น คือสามารถใช้เขียนโปรแกรมและใช้ฟังก์ชั่นหลักๆ ของ PHP ได้ แต่ยังไม่สามารถใช้ MySQL, GD, SNMP, &#8230; ซึ่งเราต้องลงไฟล์ rpm เพิ่มเติมต่อไป</p>
<h4>ข้อมูลอ้างอิง</h4>
<ul>
<li><a href="http://spalinux.com/2009/07/install_php_module_on_fedora_11">ติดตั้ง PHP Module เพิ่มบน Fedora 11</a></li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://spalinux.com/2009/06/install_apache_php_on_fedora_11/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>ติดตั้ง Sun Freeware บน Solaris</title>
		<link>http://spalinux.com/2009/05/install_sun_freeware_on_solaris</link>
		<comments>http://spalinux.com/2009/05/install_sun_freeware_on_solaris#comments</comments>
		<pubDate>Sun, 24 May 2009 15:41:22 +0000</pubDate>
		<dc:creator>editor</dc:creator>
				<category><![CDATA[Solaris]]></category>
		<category><![CDATA[Web Server]]></category>
		<category><![CDATA[Sun Freeware]]></category>

		<guid isPermaLink="false">http://spalinux.com/?p=709</guid>
		<description><![CDATA[เว็บไซต์ Sunfreeware.com เป็นแหล่งรวม free software ที่ถูก compile ให้อยู่ในรูปแบบ package (.pkg)  ทำให้สะดวกต่อการติดตั้งบน Solaris  ไฟล์ที่มีให้ดาวน์โหลดมีตั้งแต่ Solaris 2.5 จนถึงเวอร์ชั่นล่าสุด Solaris 10 ทั้งสำหรับรันบนเครื่อง SPARC และ Intel (x86) การดาวน์โหลดไฟล์เพื่อนำมาติดตั้งมีขั้นตอนดังนี้ เลือกเวอร์ชั่นของ Solaris เป็น SPARC หรือ Intel x86 (Pick Processor/OS) เลือก Package ที่จะติดตั้ง อ่านรายละเอียดของ Package นั้น เช่น ต้องติดตั้งโปรแกรมอะไรก่อน (Dependencies) คลิ้กดาวน์โหลดไฟล์ที่ต้องใช้ บทความนี้ขอนำเสนอตัวอย่างการติดตั้ง apache-2.2.11 โดยจะทดลองบน Solaris  10(x86) เลือกเวอร์ชั่นของ Solaris คลิ้กเลือก x86/Solaris 10 เลือก Package [...]]]></description>
			<content:encoded><![CDATA[<p>เว็บไซต์ Sunfreeware.com เป็นแหล่งรวม free software ที่ถูก compile ให้อยู่ในรูปแบบ package (.pkg)  ทำให้สะดวกต่อการติดตั้งบน Solaris  ไฟล์ที่มีให้ดาวน์โหลดมีตั้งแต่ Solaris 2.5 จนถึงเวอร์ชั่นล่าสุด Solaris 10 ทั้งสำหรับรันบนเครื่อง SPARC และ Intel (x86)</p>
<p><span id="more-709"></span>การดาวน์โหลดไฟล์เพื่อนำมาติดตั้งมีขั้นตอนดังนี้</p>
<ul>
<li>เลือกเวอร์ชั่นของ Solaris เป็น SPARC หรือ Intel x86 (Pick Processor/OS)</li>
<li>เลือก Package ที่จะติดตั้ง</li>
<li>อ่านรายละเอียดของ Package นั้น เช่น ต้องติดตั้งโปรแกรมอะไรก่อน (Dependencies)</li>
<li>คลิ้กดาวน์โหลดไฟล์ที่ต้องใช้</li>
</ul>
<p>บทความนี้ขอนำเสนอตัวอย่างการติดตั้ง apache-2.2.11 โดยจะทดลองบน Solaris  10(x86)</p>
<h4>เลือกเวอร์ชั่นของ Solaris</h4>
<p>คลิ้กเลือก x86/Solaris 10</p>
<p><img class="alignnone size-full wp-image-711" title="Sunfreeware Pick Processor/OS" src="http://spalinux.com/wp-content/uploads/2009/05/01_pick_processor_os.png" alt="Sunfreeware Pick Processor/OS" width="689" height="561" /></p>
<h4>เลือก Package</h4>
<p>คลิ้กเลือก apache-2.2.11</p>
<p><img class="alignnone size-full wp-image-712" title="Sunfreeware - Select Package" src="http://spalinux.com/wp-content/uploads/2009/05/02_select_package.png" alt="Sunfreeware - Select Package" width="689" height="561" /></p>
<h4>อ่านรายละเอียด Package</h4>
<p>รายละเอียดของ apache-2.2.11-sol10-x86-local.gz มีดังนี้</p>
<blockquote><p>apache-2.2.11-sol10-x86-local.gz Apache 2 &#8211; the popular web server &#8211; installs in /usr/local/apache2. Dependencies: expat, libiconv, openldap, sasl, zlib, openssl-0.9.8k, and either the libgcc-3.4.6 or gcc-3.4.6. Documentation can be found in /usr/local/apache2/doc/apache2. The configuration files in /usr/local/apache2/conf must be edited to fit your site&#8217;s needs, including ssl support.</p></blockquote>
<p><img class="alignnone size-full wp-image-713" title="Sunfreeware - Package Details" src="http://spalinux.com/wp-content/uploads/2009/05/03_package_details.png" alt="Sunfreeware - Package Details" width="689" height="561" /></p>
<p>จากรายละเอียด</p>
<ul>
<li>การติดตั้ง apache จะถูกติดตั้งไว้ใน /usr/local/apache2</li>
<li>ต้องดาวน์โหลดไฟล์อื่นๆ ด้วย (Dependencies) ในที่นี้มี expat, libiconv, openldap, sasl, zlib, openssl-0.9.8k สามารถคลิ้กลิ้งค์ที่ชื่อไฟล์ได้เลย โดยแต่ละไฟล์อาจมี Dependencies ที่ต้องลงอีก สามารถอ่านรายละเอียดของแต่ละไฟล์ เช่น libiconv ต้องใช้  db-4.2.52.NC</li>
<li>สำหรับ libgcc_s.so.1 สามารถเลือกไฟล์ติดตั้ง ได้สองแบบคือ libgcc-3.4.6 คือ gcc-3.4.6 แบบแรกไฟล์ libgcc-3.4.6 จะขนาดเล็กกว่าแต่มีเฉพาะ library ที่จำเป็นต้องใช้ ไม่มี compiler เพื่อใช้คอมไพล์โปรแกรมเหมือน gcc-3.4.6 ได้</li>
</ul>
<p>คลิ้กลิงค์ที่ไฟล์ต่างๆ เพื่อดาวน์โหลดไฟล์ทั้งหมดที่ต้องใช้</p>
<h4>ติดตั้ง package</h4>
<p>สำหรับการติดตั้ง apache-2.2.11 ถ้าคลิ้กลิ้งค์ไปเรื่อยๆ ตาม Dependencies ไฟล์ที่ต้องใช้มีดังนี้ (24 May 2009)</p>
<pre># <strong>ls -l
</strong>total 47568
-rw-r--r--   1 user1    other    7873798 May 24 21:20 apache-2.2.11-sol10-x86-local.gz
-rw-r--r--   1 user1    other    3942221 May 24 21:20 db-4.2.52.NC-sol10-intel-local.gz
-rw-r--r--   1 user1    other     299057 May 24 21:20 expat-2.0.1-sol10-x86-local.gz
-rw-r--r--   1 user1    other     526342 May 24 21:20 libgcc-3.4.6-sol10-x86-local.gz
-rw-r--r--   1 user1    other    1451349 May 24 21:20 libiconv-1.11-sol10-x86-local.gz
-rw-r--r--   1 user1    other    6436151 May 24 21:20 openldap-2.4.11-sol10-x86-local.gz
-rw-r--r--   1 user1    other    3174076 May 24 21:20 openssl-0.9.8k-sol10-x86-local.gz
-rw-r--r--   1 user1    other     540742 May 24 21:20 sasl-2.1.21-sol10-x86-local.gz</pre>
<p>รัน gzip เพื่อ unzip ไฟล์</p>
<pre># <strong>gzip -dv *.gz
</strong>apache-2.2.11-sol10-x86-local.gz:        75.3% -- replaced with apache-2.2.11-sol10-x86-local
db-4.2.52.NC-sol10-intel-local.gz:       84.1% -- replaced with db-4.2.52.NC-sol10-intel-local
expat-2.0.1-sol10-x86-local.gz:  65.7% -- replaced with expat-2.0.1-sol10-x86-local
libgcc-3.4.6-sol10-x86-local.gz:         71.7% -- replaced with libgcc-3.4.6-sol10-x86-local
libiconv-1.11-sol10-x86-local.gz:        36.8% -- replaced with libiconv-1.11-sol10-x86-local
openldap-2.4.11-sol10-x86-local.gz:      72.1% -- replaced with openldap-2.4.11-sol10-x86-local
openssl-0.9.8k-sol10-x86-local.gz:       71.3% -- replaced with openssl-0.9.8k-sol10-x86-local
sasl-2.1.21-sol10-x86-local.gz:  71.4% -- replaced with sasl-2.1.21-sol10-x86-local</pre>
<p>รัน pkgadd เพื่อติดตั้ง package ต่างๆ</p>
<p>หมายเหตุ ไม่จำเป็นต้องรัน pkgadd เพื่อติดตั้งไฟล์ตาม Dependencies</p>
<pre># <strong>pkgadd -d apache-2.2.11-sol10-x86-local</strong></pre>
<pre>The following packages are available:
  1  SMCap2211     apache
                   (x86) 2.2.11</pre>
<pre>Select package(s) you wish to process (or 'all' to process
all packages). (default: all) [?,??,q]: <strong>all</strong></pre>
<pre>Processing package instance &lt;SMCap2211&gt; from &lt;/usr/local/src/apache-2.2.11-sol10-x86-local&gt;</pre>
<pre>apache(x86) 2.2.11
The Apache Group
Using &lt;/usr/local&gt; as the package base directory.
## Processing package information.
## Processing system information.
## Verifying disk space requirements.
## Checking for conflicts with packages already installed.
## Checking for setuid/setgid programs.</pre>
<pre>Installing apache as &lt;SMCap2211&gt;</pre>
<pre>## Installing part 1 of 1.
/usr/local/apache2/bin/ab
/usr/local/apache2/bin/apachectl
/usr/local/apache2/bin/apr-1-config
/usr/local/apache2/bin/apu-1-config
/usr/local/apache2/bin/apxs
/usr/local/apache2/bin/checkgid
/usr/local/apache2/bin/dbmmanage
/usr/local/apache2/bin/envvars
/usr/local/apache2/bin/envvars-std
/usr/local/apache2/bin/htcacheclean
/usr/local/apache2/bin/htdbm
/usr/local/apache2/bin/htdigest
/usr/local/apache2/bin/htpasswd
/usr/local/apache2/bin/httpd
...
...
...
/usr/local/doc/apache/docs/manual/vhosts/name-based.html.ja.utf8
/usr/local/doc/apache/docs/manual/vhosts/name-based.html.ko.euc-kr
/usr/local/doc/apache/docs/manual/vhosts/name-based.html.tr.utf8
/usr/local/doc/apache/httpd.spec
[ verifying class &lt;none&gt; ]</pre>
<pre>Installation of &lt;SMCap2211&gt; was successful.</pre>
<pre># <strong>pkgadd -d expat-2.0.1-sol10-x86-local</strong></pre>
<pre>The following packages are available:
  1  SMCexpat     expat
                  (x86) 2.0.1</pre>
<pre>Select package(s) you wish to process (or 'all' to process
all packages). (default: all) [?,??,q]: <strong>all</strong></pre>
<pre>Processing package instance &lt;SMCexpat&gt; from &lt;/usr/local/src/expat-2.0.1-sol10-x86-local&gt;</pre>
<pre>expat(x86) 2.0.1
James Clark et al
Using &lt;/usr/local&gt; as the package base directory.
## Processing package information.
## Processing system information.
   1 package pathname is already properly installed.
## Verifying disk space requirements.
## Checking for conflicts with packages already installed.</pre>
<pre>The following files are already installed on the system and are being
used by another package:
* /usr/local/bin &lt;attribute change only&gt;</pre>
<pre>* - conflict with a file which does not belong to any package.</pre>
<pre>Do you want to install these conflicting files [y,n,?,q] <strong>y
</strong>## Checking for setuid/setgid programs.</pre>
<pre>Installing expat as &lt;SMCexpat&gt;</pre>
<pre>## Installing part 1 of 1.
/usr/local/bin/xmlwf
/usr/local/doc/expat/COPYING
/usr/local/doc/expat/Changes
/usr/local/doc/expat/MANIFEST
/usr/local/doc/expat/README
...
...
...
/usr/local/lib/libexpat.so.0 &lt;symbolic link&gt;
/usr/local/lib/libexpat.so.0.4.0
/usr/local/lib/libexpat.so.1 &lt;symbolic link&gt;
/usr/local/lib/libexpat.so.1.5.2
/usr/local/man/man1/xmlwf.1
[ verifying class &lt;none&gt; ]</pre>
<pre>Installation of &lt;SMCexpat&gt; was successful.</pre>
<pre># <strong>pkgadd -d libiconv-1.11-sol10-x86-local</strong></pre>
<pre>The following packages are available:
  1  SMCliconv     libiconv
                   (x86) 1.11</pre>
<pre>Select package(s) you wish to process (or 'all' to process
all packages). (default: all) [?,??,q]: <strong>all</strong></pre>
<pre>Processing package instance &lt;SMCliconv&gt; from &lt;/usr/local/src/libiconv-1.11-sol10-x86-local&gt;</pre>
<pre>libiconv(x86) 1.11
Bruno Haible
Using &lt;/usr/local&gt; as the package base directory.
## Processing package information.
## Processing system information.
   6 package pathnames are already properly installed.
## Verifying disk space requirements.
## Checking for conflicts with packages already installed.</pre>
<pre>The following files are already installed on the system and are being
used by another package:
* /usr/local/share &lt;attribute change only&gt;
* /usr/local/share/doc &lt;attribute change only&gt;</pre>
<pre>* - conflict with a file which does not belong to any package.</pre>
<pre>Do you want to install these conflicting files [y,n,?,q] y
## Checking for setuid/setgid programs.</pre>
<pre>Installing libiconv as &lt;SMCliconv&gt;</pre>
<pre>## Installing part 1 of 1.
/usr/local/bin/iconv
/usr/local/doc/libiconv/ABOUT-NLS
/usr/local/doc/libiconv/AUTHORS
/usr/local/doc/libiconv/COPYING.LIB
/usr/local/doc/libiconv/ChangeLog
...
...
/usr/local/share/doc/iconv.1.html
/usr/local/share/doc/iconv.3.html
/usr/local/share/doc/iconv_close.3.html
/usr/local/share/doc/iconv_open.3.html
/usr/local/share/doc/iconvctl.3.html
[ verifying class &lt;none&gt; ]</pre>
<pre>Installation of &lt;SMCliconv&gt; was successful.</pre>
<pre># <strong>pkgadd -d openssl-0.9.8k-sol10-x86-local</strong></pre>
<pre>The following packages are available:
  1  SMCossl     openssl
                 (x86) 0.9.8k</pre>
<pre>Select package(s) you wish to process (or 'all' to process
all packages). (default: all) [?,??,q]: <strong>all</strong></pre>
<pre>Processing package instance &lt;SMCossl&gt; from &lt;/usr/local/src/openssl-0.9.8k-sol10-x86-local&gt;</pre>
<pre>openssl(x86) 0.9.8k
The OpenSSL Group
Using &lt;/usr/local&gt; as the package base directory.
## Processing package information.
## Processing system information.
   1 package pathname is already properly installed.
## Verifying disk space requirements.
## Checking for conflicts with packages already installed.
## Checking for setuid/setgid programs.</pre>
<pre>Installing openssl as &lt;SMCossl&gt;</pre>
<pre>## Installing part 1 of 1.
/usr/local/doc/openssl/CHANGES
/usr/local/doc/openssl/CHANGES.SSLeay
/usr/local/doc/openssl/FAQ
/usr/local/doc/openssl/INSTALL
/usr/local/doc/openssl/INSTALL.DJGPP
...
...
...
/usr/local/ssl/misc/c_hash
/usr/local/ssl/misc/c_info
/usr/local/ssl/misc/c_issuer
/usr/local/ssl/misc/c_name
/usr/local/ssl/openssl.cnf
[ verifying class &lt;none&gt; ]</pre>
<pre>Installation of &lt;SMCossl&gt; was successful.</pre>
<pre># <strong>pkgadd -d db-4.2.52.NC-sol10-intel-local</strong></pre>
<pre>The following packages are available:
  1  SMCdb     db
               (intel) 4.2.52.NC</pre>
<pre>Select package(s) you wish to process (or 'all' to process
all packages). (default: all) [?,??,q]: <strong>all</strong></pre>
<pre>Processing package instance &lt;SMCdb&gt; from &lt;/usr/local/src/db-4.2.52.NC-sol10-intel-local&gt;</pre>
<pre>db(intel) 4.2.52.NC
Sleepycat Software
Using &lt;/usr/local&gt; as the package base directory.
## Processing package information.
## Processing system information.
## Verifying disk space requirements.
## Checking for conflicts with packages already installed.
## Checking for setuid/setgid programs.</pre>
<pre>Installing db as &lt;SMCdb&gt;</pre>
<pre>## Installing part 1 of 1.
/usr/local/BerkeleyDB.4.2/bin/db_archive
/usr/local/BerkeleyDB.4.2/bin/db_checkpoint
/usr/local/BerkeleyDB.4.2/bin/db_deadlock
/usr/local/BerkeleyDB.4.2/bin/db_dump
/usr/local/BerkeleyDB.4.2/bin/db_load
...
...
...
/usr/local/BerkeleyDB.4.2/lib/libdb-4.2.la
/usr/local/BerkeleyDB.4.2/lib/libdb-4.2.so
/usr/local/BerkeleyDB.4.2/lib/libdb-4.so &lt;symbolic link&gt;
/usr/local/BerkeleyDB.4.2/lib/libdb.a
/usr/local/BerkeleyDB.4.2/lib/libdb.so &lt;symbolic link&gt;
[ verifying class &lt;none&gt; ]</pre>
<pre>Installation of &lt;SMCdb&gt; was successful.</pre>
<pre># <strong>pkgadd -d libgcc-3.4.6-sol10-x86-local</strong></pre>
<pre>The following packages are available:
  1  SMClgcc346     libgcc
                    (x86) 3.4.6</pre>
<pre>Select package(s) you wish to process (or 'all' to process
all packages). (default: all) [?,??,q]: <strong>all</strong></pre>
<pre>Processing package instance &lt;SMClgcc346&gt; from &lt;/usr/local/src/libgcc-3.4.6-sol10-x86-local&gt;</pre>
<pre>libgcc(x86) 3.4.6
FSF
Using &lt;/usr/local&gt; as the package base directory.
## Processing package information.
## Processing system information.
   1 package pathname is already properly installed.
## Verifying disk space requirements.
## Checking for conflicts with packages already installed.
## Checking for setuid/setgid programs.</pre>
<pre>Installing libgcc as &lt;SMClgcc346&gt;</pre>
<pre>## Installing part 1 of 1.
/usr/local/lib/libg2c.so &lt;symbolic link&gt;
/usr/local/lib/libg2c.so.0 &lt;symbolic link&gt;
/usr/local/lib/libg2c.so.0.0.0
/usr/local/lib/libgcc_s.so &lt;symbolic link&gt;
/usr/local/lib/libgcc_s.so.1
/usr/local/lib/libstdc++.so.6 &lt;symbolic link&gt;
/usr/local/lib/libstdc++.so.6.0.3
[ verifying class &lt;none&gt; ]</pre>
<pre>Installation of &lt;SMClgcc346&gt; was successful.</pre>
<pre># <strong>pkgadd -d openldap-2.4.11-sol10-x86-local</strong></pre>
<pre>The following packages are available:
  1  SMColdap     openldap
                  (x86) 2.4.11</pre>
<pre>Select package(s) you wish to process (or 'all' to process
all packages). (default: all) [?,??,q]: <strong>all</strong></pre>
<pre>Processing package instance &lt;SMColdap&gt; from &lt;/usr/local/src/openldap-2.4.11-sol10-x86-local&gt;</pre>
<pre>openldap(x86) 2.4.11
The OpenLDAP Group
Using &lt;/usr/local&gt; as the package base directory.
## Processing package information.
## Processing system information.
   7 package pathnames are already properly installed.
## Verifying disk space requirements.
## Checking for conflicts with packages already installed.
## Checking for setuid/setgid programs.</pre>
<pre>Installing openldap as &lt;SMColdap&gt;</pre>
<pre>## Installing part 1 of 1.
/usr/local/bin/ldapadd &lt;symbolic link&gt;
/usr/local/bin/ldapcompare
/usr/local/bin/ldapdelete
/usr/local/bin/ldapexop
/usr/local/bin/ldapmodify
...
...
...
/usr/local/var/openldap-data/__db.005
/usr/local/var/openldap-data/alock
/usr/local/var/openldap-data/dn2id.bdb
/usr/local/var/openldap-data/id2entry.bdb
/usr/local/var/openldap-data/log.0000000001
[ verifying class &lt;none&gt; ]</pre>
<pre>Installation of &lt;SMColdap&gt; was successful.</pre>
<pre># <strong>pkgadd -d sasl-2.1.21-sol10-x86-local</strong></pre>
<pre>The following packages are available:
  1  SMCsasl     sasl
                 (x86) 2.1.21</pre>
<pre>Select package(s) you wish to process (or 'all' to process
all packages). (default: all) [?,??,q]: <strong>all</strong></pre>
<pre>Processing package instance &lt;SMCsasl&gt; from &lt;/usr/local/src/sasl-2.1.21-sol10-x86-local&gt;</pre>
<pre>sasl(x86) 2.1.21
The SASL Team
Using &lt;/usr/local&gt; as the package base directory.
## Processing package information.
## Processing system information.
   7 package pathnames are already properly installed.
## Verifying disk space requirements.
## Checking for conflicts with packages already installed.
## Checking for setuid/setgid programs.</pre>
<pre>Installing sasl as &lt;SMCsasl&gt;</pre>
<pre>## Installing part 1 of 1.
/usr/local/doc/sasl2/AUTHORS
/usr/local/doc/sasl2/COPYING
/usr/local/doc/sasl2/ChangeLog
/usr/local/doc/sasl2/INSTALL
/usr/local/doc/sasl2/NEWS
...
...
...
/usr/local/man/man8/sasldblistusers2.8
/usr/local/man/man8/saslpasswd2.8
/usr/local/sbin/saslauthd
/usr/local/sbin/sasldblistusers2
/usr/local/sbin/saslpasswd2
[ verifying class &lt;none&gt; ]</pre>
<pre>Installation of &lt;SMCsasl&gt; was successful.</pre>
<h4>ตรวจสอบ package ที่ติดตั้ง</h4>
<p>รันคำสั่ง pkginfo เพื่อตรวจสอบ package ที่ติดตั้ง ดูเฉพาะที่มีชื่อ SMC</p>
<pre># <strong>pkginfo | grep SMC
</strong>application SMCap2211                        apache
application SMCdb                            db
application SMCexpat                         expat
application SMClgcc346                       libgcc
application SMCliconv                        libiconv
application SMColdap                         openldap
application SMCossl                          openssl
application SMCsasl                          sasl
system      SUNWmgts                         Trusted Extensions, SMC
application SUNWtsmc                         Trusted Extensions SMC Server</pre>
<h4>รันเว็บเซิร์ฟเวอร์ apache</h4>
<p>ใช้คำสั่ง apachectl เพื่อรัน apache</p>
<pre># <strong>/usr/local/apache2/bin/apachectl start
</strong># <strong>ps -ef | grep apache
</strong>  daemon  1016  1011   0 22:13:43 ?           0:00 /usr/local/apache2/bin/httpd -k start
  daemon  1013  1011   0 22:13:43 ?           0:00 /usr/local/apache2/bin/httpd -k start
  daemon  1012  1011   0 22:13:43 ?           0:00 /usr/local/apache2/bin/httpd -k start
  daemon  1015  1011   0 22:13:43 ?           0:00 /usr/local/apache2/bin/httpd -k start
  daemon  1014  1011   0 22:13:43 ?           0:00 /usr/local/apache2/bin/httpd -k start
    root  1011     1   0 22:13:42 ?           0:00 /usr/local/apache2/bin/httpd -k start</pre>
<h4>ข้อมูลอ้างอิง</h4>
<ul>
<li><a href="http://www.sunfreeware.com/" target="_blank">Sunfreeware.com &#8211; Freeware for Solaris</a></li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://spalinux.com/2009/05/install_sun_freeware_on_solaris/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>ปิดโมดูลที่ไม่ใช้งานของ Apache เว็บเซิร์ฟเวอร์</title>
		<link>http://spalinux.com/2008/09/disable_unused_apache_modules</link>
		<comments>http://spalinux.com/2008/09/disable_unused_apache_modules#comments</comments>
		<pubDate>Mon, 29 Sep 2008 16:40:23 +0000</pubDate>
		<dc:creator>editor</dc:creator>
				<category><![CDATA[Performance]]></category>
		<category><![CDATA[Security]]></category>
		<category><![CDATA[Web Server]]></category>
		<category><![CDATA[Apache]]></category>

		<guid isPermaLink="false">http://spalinux.com/?p=220</guid>
		<description><![CDATA[โดยดีฟอลต์คอนฟิกของ Apache เว็บเซิร์ฟเวอร์ที่ติดตั้งมากับลีนุกซ์เวอร์ชั่นต่างๆ จะเปิด (enable) การใช้งานโมดูลต่างๆ ทั้งหมด ทั้งนี้เพื่อสะดวกและง่ายต่อการเริ่มต้นใช้งาน แต่การใช้งานจริงๆ ในระบบ production แนะนำให้ปิด (disable) คอนฟิกของโมดูลที่ไม่ได้ใช้งาน ทั้งนี้เพื่อประโยชน์ทางด้านความปลอดภัย (security) และประหยัดหน่วยความจำ Memory ที่ต้องถูกใช้งานโดยเปล่าประโยชน์ด้วย (แนะนำให้ใช้คำสั่ง ps เปรียบเทียบขนาด memory ที่ใช้ก่อนและหลังการปิดโมดูล) บทความนี้ได้รวบรวมจัดกลุ่มโมดูลตามลักษณะการใช้งาน ซึ่งถ้าคุณไม่ได้ใช้คุณสมบัติในโมดูลนั้นๆ สามารถที่จะปิดได้ ด้วยการใส่เครื่องหมาย # หน้าบรรทัดของ LoadModule โดยคอนฟิกทั้งหมดจะเป็นตัวอย่างที่ทำบน Fedora 9 และหลังจากการแก้ไขทั้งหมดเพื่อปิดโมดูลทั้งหมดนี้แล้ว เว็บยังสามารถรัน PHP ได้ตามปกติ คำเตือน กรุณาทดสอบการเปลี่ยนแปลงคอนฟิกทุกอย่างให้แน่ใจว่า การปิดโมดูลไป จะไม่กระทบต่อการรันโปรแกรมที่ทำงานอยู่บนเว็บเซิร์ฟเวอร์ Apache Module: Authentication and Authorization โมดูลในกลุ่มนี้ถูกใช้เพื่อตรวจสอบผู้ใช้งาน (Authentication) และระบุสิทธิที่ผู้ใช้งานสามารถทำได้ (Authorization) ลักษณะการตรวจสอบคือจะมีหน้าต่าง popup ขึ้นมาให้ใส่ User [...]]]></description>
			<content:encoded><![CDATA[<p>โดยดีฟอลต์คอนฟิกของ Apache เว็บเซิร์ฟเวอร์ที่ติดตั้งมากับลีนุกซ์เวอร์ชั่นต่างๆ จะเปิด (enable) การใช้งานโมดูลต่างๆ ทั้งหมด ทั้งนี้เพื่อสะดวกและง่ายต่อการเริ่มต้นใช้งาน</p>
<p>แต่การใช้งานจริงๆ ในระบบ production แนะนำให้ปิด (disable) คอนฟิกของโมดูลที่ไม่ได้ใช้งาน ทั้งนี้เพื่อประโยชน์ทางด้านความปลอดภัย (security) และประหยัดหน่วยความจำ Memory ที่ต้องถูกใช้งานโดยเปล่าประโยชน์ด้วย (แนะนำให้ใช้คำสั่ง ps เปรียบเทียบขนาด memory ที่ใช้ก่อนและหลังการปิดโมดูล)</p>
<p>บทความนี้ได้รวบรวมจัดกลุ่มโมดูลตามลักษณะการใช้งาน ซึ่งถ้าคุณไม่ได้ใช้คุณสมบัติในโมดูลนั้นๆ สามารถที่จะปิดได้ ด้วยการใส่เครื่องหมาย # หน้าบรรทัดของ LoadModule โดยคอนฟิกทั้งหมดจะเป็นตัวอย่างที่ทำบน Fedora 9 และหลังจากการแก้ไขทั้งหมดเพื่อปิดโมดูลทั้งหมดนี้แล้ว เว็บยังสามารถรัน PHP ได้ตามปกติ</p>
<p><span id="more-220"></span></p>
<p>คำเตือน  กรุณาทดสอบการเปลี่ยนแปลงคอนฟิกทุกอย่างให้แน่ใจว่า การปิดโมดูลไป จะไม่กระทบต่อการรันโปรแกรมที่ทำงานอยู่บนเว็บเซิร์ฟเวอร์</p>
<hr />
<h4>Apache Module: Authentication and Authorization</h4>
<p>โมดูลในกลุ่มนี้ถูกใช้เพื่อตรวจสอบผู้ใช้งาน (Authentication) และระบุสิทธิที่ผู้ใช้งานสามารถทำได้ (Authorization)  ลักษณะการตรวจสอบคือจะมีหน้าต่าง popup ขึ้นมาให้ใส่ User name และ Password  แล้วส่งข้อมูลนี้ตรวจสอบกับไฟล์ที่เก็บรหัสผู้ใช้งาน ว่าถูกต้องหรือไม่</p>
<p>ตัวอย่างไฟล์คอนฟิก .htaccess และไฟล์ .htpasswd เพื่อระบุว่า ก่อนที่จะเข้าดูเว็บไซต์นี้ได้ ต้องใส่ User name และ Password ให้ถูกต้องก่อน โดยตรวจสอบข้อมูลรหัสผ่านที่อยู่ในไฟล์ /var/www/html/.htpasswd</p>
<pre>[root@web-server html]# <strong>cat .htaccess</strong>
AuthType Basic
AuthName "Password Required"
AuthUserFile /var/www/html/.htpasswd
Require valid-user</pre>
<pre>[root@web-server html]# <strong>cat .htpasswd
</strong>john:&lt;password&gt;</pre>
<p>การตรวจสอบสิทธิผู้ใช้งานแบบนี้ เป็นคุณสมบัติของโมดูลหนี่งของ Apache ไม่เกี่ยวข้องกับการเขียนโปรแกรมเว็บเอง เช่น PHP แล้วใช้ SESSION ในการตรวจสอบ</p>
<p>ถ้าเว็บเซิร์ฟเวอร์ไม่มีการใช้การตรวจสอบสิทธิแบบนี้ สามารถปิดคอนฟิกของโมดูลในบรรทัดต่อไปนี้ได้</p>
<p>ตัวอย่างการปิดโมดูล Authentication and Authorization</p>
<pre>[root@web-server ~]# <strong>cat /etc/httpd/conf/httpd.conf
</strong>...
#LoadModule auth_basic_module modules/mod_auth_basic.so
#LoadModule auth_digest_module modules/mod_auth_digest.so
#LoadModule authn_file_module modules/mod_authn_file.so
#LoadModule authn_alias_module modules/mod_authn_alias.so
#LoadModule authn_anon_module modules/mod_authn_anon.so
#LoadModule authn_dbm_module modules/mod_authn_dbm.so
#LoadModule authn_default_module modules/mod_authn_default.so
<span style="color: #3366ff;">LoadModule authz_host_module modules/mod_authz_host.so
</span>#LoadModule authz_user_module modules/mod_authz_user.so
#LoadModule authz_owner_module modules/mod_authz_owner.so
#LoadModule authz_groupfile_module modules/mod_authz_groupfile.so
#LoadModule authz_dbm_module modules/mod_authz_dbm.so
#LoadModule authz_default_module modules/mod_authz_default.so
#LoadModule ldap_module modules/mod_ldap.so
#LoadModule authnz_ldap_module modules/mod_authnz_ldap.so
...</pre>
<p><strong>ข้อควรระวัง</strong> โมดูล <strong>authz_host_module</strong> จะเป็นการตรวจสอบสิทธิโดยสามารถระบุเป็น ip address หรือ host name ในไฟล์คอนฟิก httpd.conf จะมีการเรียกใช้คอนฟิกของโมดลูนี้หลายที่  ไม่แนะนำให้ปิด</p>
<hr />
<h4>Apache Module: Dynamic Content with CGI</h4>
<p>หากไม่มีโปรแกรมที่เป็น CGI รันอยู่บนเว็บเซิร์ฟเวอร์ สามารถที่จะปิดโมดูล cgi_module ได้ (การปิดโมดูลนี้ไม่กระทบกับเว็บที่เขียนเป็น PHP)</p>
<p>ตัวอย่างการปิดโมดูล cgi_module</p>
<pre>[root@web-server ~]# <strong>/etc/httpd/conf/httpd.conf
</strong>...
#LoadModule cgi_module modules/mod_cgi.so
...</pre>
<hr />
<h4>Apache Module: Server Side Includes (SSI)</h4>
<p>หากไม่มีโปรแกรมที่เป็น Sever Side Includes หรือ SSI รันอยู่บนเว็บเซิร์ฟเวอร์ สามารถที่จะปิดโมดูล include_module ได้ (การปิดโมดูลนี้ไม่กระทบกับเว็บที่เขียนเป็น PHP)</p>
<p>ตัวอย่างการปิดโมดูล include_module</p>
<pre>[root@web-server ~]# <strong>/etc/httpd/conf/httpd.conf
</strong>...
#LoadModule include_module modules/mod_include.so
...</pre>
<hr />
<h4>Apache Module: Apache Proxy Server</h4>
<p>นอกจากจะสามารถรันเป็นเว็บเซิร์ฟเวอร์ได้แล้ว โปรแกรม Apache ยังสามารถทำหน้าที่เป็น Proxy Server ได้อีกด้วย เช่นเดียวกับ Squid ถ้าเครื่องทำหน้าที่เป็นเว็บเซิร์ฟเวอร์อย่างเดียว คุณสามารถปิดโมดูลนี้ได้ ใน Fedora 9 การปิดโมดูล Proxy ของ Apache ต้องแก้ไขสองไฟล์คือในไฟล์ /etc/httpd/conf/httpd.conf และไฟล์ /etc/httpd/conf.d/proxy_ajp.conf</p>
<pre>[root@web-server ~]# <strong>cat /etc/httpd/conf/httpd.conf
</strong>...
#LoadModule proxy_module modules/mod_proxy.so
#LoadModule proxy_balancer_module modules/mod_proxy_balancer.so
#LoadModule proxy_ftp_module modules/mod_proxy_ftp.so
#LoadModule proxy_http_module modules/mod_proxy_http.so
#LoadModule proxy_connect_module modules/mod_proxy_connect.so
...</pre>
<pre>[root@web-server ~]# <strong>cat /etc/httpd/conf.d/proxy_ajp.conf</strong></pre>
<pre>LoadModule proxy_ajp_module modules/mod_proxy_ajp.so
...</pre>
<hr />
<h4>Apache Module: Distributed Authoring and Versioning (WebDAV)</h4>
<p>หากไม่ได้ใช้คุณสมบัติของโมดูล WebDAV นี้ สามารถแก้ไขไฟล์ได้ดังนี้</p>
<pre>[root@web-server ~]# <strong>cat /etc/httpd/conf/httpd.conf
</strong>...
#LoadModule dav_module modules/mod_dav.so
#LoadModule dav_fs_module modules/mod_dav_fs.so
...</pre>
<hr />
<h4>Apache Module: Server Status</h4>
<p>โมดูลนี้มีทั้งข้อดีข้อเสีย ข้อดีคือสามารถดูสถานะโดยละเอียดของเว็บเซิร์ฟเวอร์ได้ ในกรณีที่เครื่องช้า แต่ข้อเสียคืออาจเป็นปัญหาทางด้านความปลอดภัยของเครื่องได้ คอนฟิกโดยดีฟอลต์จะอนุญาตให้ดูได้จาก localhost หรือเครื่องที่รันเว็บอยู่เท่านั้น แต่ถ้าเครื่องของคุณทดสอบแล้วทำงานได้ตามปกติ สามารถจะปิดโมดูลนี้ได้</p>
<pre>[root@web-server ~]# <strong>cat /etc/httpd/conf/httpd.conf</strong>
...
#LoadModule status_module modules/mod_status.so
#LoadModule info_module modules/mod_info.so
...</pre>
<hr />
<h4>Apache Module: mod_perl</h4>
<p>หากไม่มีเว็บโปรแกรมที่เขียนเป็น mod_perl รันอยู่บนเว็บเซิร์ฟเวอร์ สามารถที่จะปิดโมดูล mod_perl ได้ (การปิดโมดูลนี้ไม่กระทบกับเว็บที่เขียนเป็น PHP)</p>
<p>ตัวอย่างการปิดโมดูล mod_perl</p>
<pre>[root@web-server ~]# <strong>cat /etc/httpd/conf.d/perl.conf</strong>
...
LoadModule perl_module modules/mod_perl.so
...</pre>
<hr />
<h4>Apache Module: mod_python</h4>
<p>หากไม่มีเว็บโปรแกรมที่เขียนเป็น mod_python รันอยู่บนเว็บเซิร์ฟเวอร์ สามารถที่จะปิดโมดูล mod_python ได้ (การปิดโมดูลนี้ไม่กระทบกับเว็บที่เขียนเป็น PHP)</p>
<p>ตัวอย่างการปิดโมดูล mod_python</p>
<pre>[root@web-server ~]# <strong>cat /etc/httpd/conf.d/python.conf
</strong>...
#LoadModule python_module modules/mod_python.so</pre>
<pre># Override type-map handler for /var/www/manual
#&lt;Directory "/var/www/manual/mod/mod_python"&gt;
#    &lt;Files *.html&gt;
#        SetHandler default-handler
#    &lt;/Files&gt;
#&lt;/Directory&gt;
...</pre>
<hr />
<h4>Apache Module: Others</h4>
<p>โมดูลอื่นๆ ที่น่าจะปิดคือ</p>
<ul>
<li>speling_module – แก้ไข url ที่พิมพ์ผิด</li>
<li>
<pre>userdir_module – อนุญาตผู้ที่มีแอคเคานต์อยู่บนเซิร์ฟเวอร์สามารถมีเว็บส่วนตัวได้</pre>
</li>
</ul>
<pre>[root@web-server ~]# <strong>cat /etc/httpd/conf/httpd.conf
</strong>...
#LoadModule speling_module modules/mod_speling.so
#LoadModule userdir_module modules/mod_userdir.so
...</pre>
<hr />
<h4>ข้อมูลอ้างอิง</h4>
<ul>
<li><a href="http://httpd.apache.org/docs/2.2/mod/" target="_blank">Module Index &#8211; Apache HTTP Server</a></li>
<li><a href="http://spalinux.com/2008/09/basic_tuning_apache_web_server">ปรับแต่งคอนฟิกพื้นฐานของ Apache เว็บเซิร์ฟเวอร์</a></li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://spalinux.com/2008/09/disable_unused_apache_modules/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

