<?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; Programming</title>
	<atom:link href="http://spalinux.com/category/programming/feed" rel="self" type="application/rss+xml" />
	<link>http://spalinux.com</link>
	<description>เพื่อชีวิตที่ผ่อนคลายของคนใช้ลีนุกซ์</description>
	<lastBuildDate>Sat, 12 May 2012 10:38:31 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.2</generator>
		<item>
		<title>ติดตั้ง WordPress บน CentOS 6</title>
		<link>http://spalinux.com/2012/05/install-wordpress-on-centos-6</link>
		<comments>http://spalinux.com/2012/05/install-wordpress-on-centos-6#comments</comments>
		<pubDate>Sat, 12 May 2012 09:37:12 +0000</pubDate>
		<dc:creator>editor</dc:creator>
				<category><![CDATA[Apache]]></category>
		<category><![CDATA[CentOS 6]]></category>
		<category><![CDATA[HTML]]></category>
		<category><![CDATA[MySQL]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[Programming]]></category>
		<category><![CDATA[Security]]></category>
		<category><![CDATA[Web Server]]></category>
		<category><![CDATA[wordpress]]></category>

		<guid isPermaLink="false">http://spalinux.com/?p=2342</guid>
		<description><![CDATA[WordPress โปรแกรมทำเว็บไซต์ blog ที่สามารถนำมาใช้งานได้ฟรี เป็นที่นิยมเป็นอย่างมาก เนื่องจากข้อดีหลายอย่างเช่นการติดตั้งและคอนฟิกง่าย มีโปรแกรมเสริม (plugin) เพื่อช่วยเพิ่มประสิทธิภาพของเว็บไซต์ และที่สำคัญหน้าเว็บที่แสดงบนเว็บไซต์จะถูกจัดเรียบเรียงเพื่อให้ search engine เช่น Google สามารถเข้ามาทำ index แล้วค้นหาเนื้อหา (keyword) ในเว็บเราได้สะดวก ซึ่งจะมีผลต่อลำดับในผลลัพธ์การค้นหา WordPress พัฒนาด้วยภาษา PHP และใช้ MySQL เป็นฐานข้อมูล ติดตั้งได้ทั้งบน Linux, Unix, MAC OS และ Windows ในที่นี้จะแสดงวิธีการติดตั้ง WordPress บน CentOS 6 ตั้งแต่การดาวน์โหลดไฟล์ การสร้างฐานข้อมูล คอนฟิกผ่านหน้าเว็บ จนสามารถล็อกอินเข้าสู่หน้า admin ของ WordPress ได้ เครื่องที่ทดสอบ ติดตั้ง CentOS 6.2 แบบ &#8220;Minimal &#8211; Base System [...]]]></description>
			<content:encoded><![CDATA[<p>WordPress โปรแกรมทำเว็บไซต์ blog ที่สามารถนำมาใช้งานได้ฟรี เป็นที่นิยมเป็นอย่างมาก เนื่องจากข้อดีหลายอย่างเช่นการติดตั้งและคอนฟิกง่าย มีโปรแกรมเสริม (plugin) เพื่อช่วยเพิ่มประสิทธิภาพของเว็บไซต์ และที่สำคัญหน้าเว็บที่แสดงบนเว็บไซต์จะถูกจัดเรียบเรียงเพื่อให้ search engine เช่น Google สามารถเข้ามาทำ index แล้วค้นหาเนื้อหา (keyword) ในเว็บเราได้สะดวก ซึ่งจะมีผลต่อลำดับในผลลัพธ์การค้นหา</p>
<p>WordPress พัฒนาด้วยภาษา PHP และใช้ MySQL เป็นฐานข้อมูล ติดตั้งได้ทั้งบน Linux, Unix, MAC OS และ Windows</p>
<p>ในที่นี้จะแสดงวิธีการติดตั้ง WordPress บน CentOS 6 ตั้งแต่การดาวน์โหลดไฟล์ การสร้างฐานข้อมูล คอนฟิกผ่านหน้าเว็บ จนสามารถล็อกอินเข้าสู่หน้า admin ของ WordPress ได้</p>
<p><span id="more-2342"></span></p>
<h4>เครื่องที่ทดสอบ</h4>
<ul>
<li>ติดตั้ง CentOS 6.2 แบบ &#8220;Minimal &#8211; Base System &#8211; Base&#8221;  (<a title="View Details: ติดตั้ง CentOS 6.2 : เลือกชุดซอฟต์แวร์ที่จะลง" href="http://spalinux.com/2012/03/centos-6-2-installation-select-a-set-of-software-to-install" rel="bookmark">ติดตั้ง CentOS 6.2 : เลือกชุดซอฟต์แวร์ที่จะลง</a>)</li>
<li>IP Address ของเซิร์ฟเวอร์ 192.168.5.62</li>
<li><a title="View Details: ติดตั้งเว็บเซิร์ฟเวอร์ ​Apache" href="http://spalinux.com/2012/04/install-apache-web-server" rel="bookmark">ติดตั้งเว็บเซิร์ฟเวอร์ ​Apache</a></li>
<li><a title="View Details: ติดตั้งฐานข้อมูล MySQL" href="http://spalinux.com/2012/04/install-mysql-database" rel="bookmark">ติดตั้งฐานข้อมูล MySQL</a></li>
<li><a title="View Details: ติดตั้งโมดูล PHP เพิ่มเติม บน CentOS 6" href="http://spalinux.com/2012/04/install-more-php-module-on-centos-6" rel="bookmark">ติดตั้งโมดูล PHP เพิ่มเติม บน CentOS 6</a></li>
</ul>
<p>&nbsp;</p>
<p>สรุปไฟล์ rpm จากแผ่นดีวีดีที่ต้องติดตั้งเพิ่ม หลังจากลง CentOS 6.2 แบบ Minimal +Base</p>
<ul>
<li>apr-1.3.9-3.el6_1.2.x86_64.rpm</li>
<li>apr-util-1.3.9-3.el6_0.1.x86_64.rpm</li>
<li>apr-util-ldap-1.3.9-3.el6_0.1.x86_64.rpm</li>
<li>mailcap-2.1.31-2.el6.noarch.rpm</li>
<li>httpd-tools-2.2.15-15.el6.centos.x86_64.rpm</li>
<li>httpd-2.2.15-15.el6.centos.x86_64.rpm</li>
<li>mysql-5.1.52-1.el6_0.1.x86_64.rpm</li>
<li>perl-DBI-1.609-4.el6.x86_64.rpm</li>
<li>perl-DBD-MySQL-4.013-3.el6.x86_64.rpm</li>
<li>mysql-server-5.1.52-1.el6_0.1.x86_64.rpm</li>
<li>php-5.3.3-3.el6_1.3.x86_64.rpm</li>
<li>php-cli-5.3.3-3.el6_1.3.x86_64.rpm</li>
<li>php-common-5.3.3-3.el6_1.3.x86_64.rpm</li>
<li>php-pdo-5.3.3-3.el6_1.3.x86_64.rpm</li>
<li>php-mysql-5.3.3-3.el6_1.3.x86_64.rpm</li>
</ul>
<p>&nbsp;</p>
<h4>ดาวน์โหลดโปรแกรม WordPress</h4>
<p>เข้าเว็บไซต์ wordpress.org เพื่อดาวน์โหลดโปรแกรม wordpress</p>
<p>คลิ้กที่เมนู Download หรือคลิ้กปุ่ม Download WordPress เพื่อเข้าสู่หน้าดาวน์โหลด</p>
<p><a href="http://spalinux.com/wp-content/uploads/2012/05/w01-Download-WordPress.png"><img class="alignnone size-full wp-image-2343" title="w01-Download-WordPress" src="http://spalinux.com/wp-content/uploads/2012/05/w01-Download-WordPress.png" alt="" width="493" height="343" /></a></p>
<p>ล่าสุด ณ ตอนที่เขียนเป็นเวอร์ชั่น WordPress 3.3.2</p>
<p>ในหน้าดาวน์โหลด แนะนำให้คลิ้กที่ลิ้งค์ Download .tar.gz เพราะจะมีขนาดไฟล์เล็กกว่า .zip และใช้ติดตั้งได้เหมือนกัน</p>
<p><a href="http://spalinux.com/wp-content/uploads/2012/05/w02-Download.WordPress.tar.gz.png"><img class="alignnone size-full wp-image-2344" title="w02-Download.WordPress.tar.gz" src="http://spalinux.com/wp-content/uploads/2012/05/w02-Download.WordPress.tar.gz.png" alt="" width="235" height="263" /></a><br />
ใช้โปรแกรมประเภท scp เพื่อถ่ายโอนไฟล์ไปยังเครื่องลีนุกซ์ที่จะติดตั้ง</p>
<p>หรือถ้าจะดาวน์โหลดบนคำสั่งลีนุกซ์เลย ก็สามารถทำได้โดยใช้โปรแกรม curl หรือ wget</p>
<p>ตัวอย่างเช่นใช้คำสั่ง curl เพื่อดาวน์โหลดโปรแกรม wordpress</p>
<pre>[root@cent6 ~]# <strong>curl -o wordpress-3.3.2.tar.gz 'http://wordpress.org/latest.tar.gz'</strong>
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
100 3792k    0 3792k    0     0  53721      0 --:--:--  0:01:12 --:--:-- 59257</pre>
<p>&nbsp;</p>
<p>ออปชั่น &#8216;<strong>-o</strong>&#8216; ระบุชื่อไฟล์ที่ต้องการเซฟ ส่วน http://wordpress.org/latest.tar.gz เป็น URL ที่ทาง wordpress สร้างไว้สำหรับให้ดาวน์โหลดโปรแกรมที่เป็นเวอร์ชั่นล่าสุด</p>
<p>ไฟล์ที่ได้</p>
<pre>[root@cent6 ~]# <strong>ls -l wordpress-3.3.2.tar.gz</strong>
-rw-r--r--. 1 root root 3883667 May 12 13:20 wordpress-3.3.2.tar.gz</pre>
<h4>ติดตั้งไฟล์ wordpress</h4>
<p>ใช้คำสั่ง tar แตก (extract) ไฟล์ที่ดาวน์โหลดมาในไดเร็คทอรี /var/www/html/</p>
<pre>[root@cent6 ~]# <strong>cd /var/www/html/</strong>
[root@cent6 html]# <strong>tar zxvf /root/wordpress-3.3.2.tar.gz</strong>
wordpress/
wordpress/license.txt
wordpress/wp-activate.php
wordpress/wp-pass.php
wordpress/wp-login.php
wordpress/readme.html
...
wordpress/wp-mail.php
wordpress/wp-config-sample.php
wordpress/wp-links-opml.php
wordpress/wp-comments-post.php
wordpress/wp-app.php
[root@cent6 html]#</pre>
<p>หลังการใช้คำสั่ง tar เพื่อแตกไฟล์ที่ดาวน์โหลดมา ทุกครั้งแนะนำให้แก้ไข owner และ group ของไฟล์ เพื่อป้องกัน owner หรือ group ไปตรงกับผู้ใช้ (user) ที่อยู่บนเครื่อง</p>
<pre>[root@cent6 html]# <strong>ls -l wordpress/</strong>
total 204
-rw-r--r--. 1 33 tape   397 May 26  2008 index.php
-rw-r--r--. 1 33 tape 16899 Jun  9  2011 license.txt
-rw-r--r--. 1 33 tape  9202 Apr 20 19:44 readme.html
-rw-r--r--. 1 33 tape  4268 Oct 20  2011 wp-activate.php
...</pre>
<p>ใช้คำสั่ง chown เพื่อแก้ไข owner และ group ให้เป็น root ทั้งหมด</p>
<p>หมายเหตุ หรือถ้าต้องการเพิ่มความปลอดภัยของระบบอีกขั้น แนะนำให้สร้าง user เพื่อเป็นเจ้าของไฟล์ที่ติดตั้งนี้อีกที แต่ในที่นี้ขอใช้ root เพื่อความง่ายต่อการนำเสนอ</p>
<p>ใช้คำสั่ง chown ออปชั่น &#8216;-R&#8217; เพื่อเปลี่ยน owner และ group ของทุกไฟล์ภายใต้ไดเร็คทอรีที่ระบุ</p>
<pre>[root@cent6 html]# <strong>chown -R root.root wordpress/</strong>

[root@cent6 html]# <strong>ls -l wordpress/</strong>
total 204
-rw-r--r--. 1 root root   397 May 26  2008 index.php
-rw-r--r--. 1 root root 16899 Jun  9  2011 license.txt
-rw-r--r--. 1 root root  9202 Apr 20 19:44 readme.html
-rw-r--r--. 1 root root  4268 Oct 20  2011 wp-activate.php
...</pre>
<h4>คอนฟิก wordpress ผ่านเว็บ</h4>
<p>ใช้ browser เข้าไปที่ http://192.168.5.62/wordpress/ เพื่อเริ่มคอนฟิก wordpress ผ่านเว็บ</p>
<p>หน้าแรกที่เจอ แสดงข้อความ &#8220;There doesn&#8217;t seem to be a wp-config.php file&#8221; คือไม่สามารถหาไฟล์ wp-config.php ซึ่งเป็นไฟล์คอนฟิกหลักของ  wordpress</p>
<p><a href="http://spalinux.com/wp-content/uploads/2012/05/w11-wordpress-config.png"><img class="alignnone size-full wp-image-2345" title="w11-wordpress-config" src="http://spalinux.com/wp-content/uploads/2012/05/w11-wordpress-config.png" alt="" width="781" height="358" /></a><br />
กดปุ่ม [Create a Configuration File] เพื่อเริ่มสร้างคอนฟิกไฟล์ wp-config.php</p>
<p>&nbsp;</p>
<p>หน้าถัดมา แสดงข้อมูลคำอธิบายเกี่ยวกับฐานข้อมูล (database) ที่ wordpress ต้องใช้</p>
<p><a href="http://spalinux.com/wp-content/uploads/2012/05/w12-wordpress-need-information.png"><img class="alignnone size-full wp-image-2346" title="w12-wordpress-need-information" src="http://spalinux.com/wp-content/uploads/2012/05/w12-wordpress-need-information.png" alt="" width="775" height="510" /></a></p>
<p>ก่อนจะกดปุ่ม [Let's go!] เพื่อไปหน้าต่อไป ต้องสร้าง database และ GRANT สิทธิ ให้ wordpress ใช้เชื่อมต่อได้ก่อน</p>
<p>รันคำสั่ง mysql (หรือ phpmyadmin) เพื่อสร้าง database และ GRANT สิทธิให้ wordpress เชื่อมเข้าต่อฐานข้อมูล</p>
<pre>[root@cent6 html]# <strong>mysql -u root -p</strong>
Enter password:
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 14
Server version: 5.1.52 Source distribution

Copyright (c) 2000, 2010, Oracle and/or its affiliates. All rights reserved.
This software comes with ABSOLUTELY NO WARRANTY. This is free software,
and you are welcome to modify and redistribute it under the GPL v2 license

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement

mysql&gt; <strong>CREATE DATABASE wordpress;</strong>
Query OK, 1 row affected (0.00 sec)

mysql&gt; <strong>GRANT ALL ON wordpress.* TO 'wordpress'@'localhost' IDENTIFIED BY 'password';</strong>
Query OK, 0 rows affected (0.01 sec)</pre>
<p>&nbsp;</p>
<p>สร้างเสร็จเรียบร้อย กลับมาที่หน้าเว็บแล้วกดปุ่ม [Let's go!]</p>
<p>ใส่ข้อมูลการเชื่อมต่อเข้าฐานข้อมูล แล้วกดปุ่ม [Submit]</p>
<p><a href="http://spalinux.com/wp-content/uploads/2012/05/w13-wordpress-database-connection.png"><img class="alignnone size-full wp-image-2347" title="w13-wordpress-database-connection" src="http://spalinux.com/wp-content/uploads/2012/05/w13-wordpress-database-connection.png" alt="" width="775" height="526" /></a></p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>โปรแกรมจะพยายามเขียนไฟล์คอนฟิก wp-config.php ให้ แต่ไม่สามารถเขียนได้ ฟ้องข้อความ &#8220;Sorry, but I can&#8217;t write the wp-config.php file.&#8221;</p>
<p>เราต้องสร้างไฟล์ wp-config.php ขึ้นมาเอง ด้วยการคัดลอกคอนฟิกที่หมดที่แสดงในช่องฟอร์ม สำหรับ Windows ให้คลิ้กเมาส์ในช่องฟอร์มแล้วกด <strong>[Ctrl]+[A]</strong> เพื่อเลือกข้อความทั้งหมดในฟอร์ม แล้วกด<strong> [Ctrl]+[C]</strong> เพื่อคัดลอก</p>
<p><a href="http://spalinux.com/wp-content/uploads/2012/05/w14-wp-config.png"><img class="alignnone size-full wp-image-2348" title="w14-wp-config" src="http://spalinux.com/wp-content/uploads/2012/05/w14-wp-config.png" alt="" width="773" height="568" /></a></p>
<p>&nbsp;</p>
<p>สร้างไฟล์บนเซิร์ฟเวอร์ ด้วยคำสั่ง vi</p>
<pre>[root@cent6 html]# <strong>vi wordpress/wp-config.php</strong></pre>
<p>หากเราใช้ PuTTY เพื่อ SSH เข้าเซิร์ฟเวอร์ลีนุกซ์ กด <strong>i</strong> เพื่อเข้าสู่โหมด INSERT แล้วกดปุ่ม <strong>[Shift]+[Insert]</strong> เพื่อวางข้อความ (paste) ที่คัดลอกมาได้</p>
<p>กดปุ่ม<strong> [Esc]</strong> เพื่อกลับสู่โหมดคำสั่ง แล้วพิมพ์ <strong>:wq</strong> เซฟไฟล์แล้วออกจาก vi</p>
<p><a href="http://spalinux.com/wp-content/uploads/2012/05/w15-vi-wp-config.png"><img class="alignnone size-full wp-image-2349" title="w15-vi-wp-config" src="http://spalinux.com/wp-content/uploads/2012/05/w15-vi-wp-config.png" alt="" width="650" height="420" /></a></p>
<p>เนื่องจากในไฟล์คอนฟิก wp-config.php นี้ มีข้อมูล user, password ที่ใช้เชื่อมต่อเข้าฐานข้อมูลของ wordpress อยู่ด้วย เพื่อความปลอดภัย (security) แนะนำให้เปลี่ยน owner และ permission ให้ apache อ่านได้เท่านั้น ผู้ใช้ธรรมดา (user) ไม่สามารถเข้ามาอ่านได้</p>
<p>ตัวอย่างการเปลี่ยน permission และ owner ของไฟล์</p>
<pre>[root@cent6 html]# <strong>ls -l wordpress/wp-config.php</strong>
-rw-r--r--. 1 root root 3366 May 12 15:08 wordpress/wp-config.php

[root@cent6 html]# <strong>chmod 400 wordpress/wp-config.php</strong>
[root@cent6 html]# <strong>chown apache wordpress/wp-config.php</strong>

<strong>[root@cent6 html]#</strong> ls -l wordpress/wp-config.php
-r--------. 1 apache root 3366 May 12 15:08 wordpress/wp-config.php</pre>
<p>หลังจากสร้างไฟล์ wp-config.php เรียบร้อย กลับมาหน้าเว็บแล้ว กดปุ่ม [Run the install]</p>
<p>หน้าใส่ข้อมูลเบื้องต้นของเว็บไซต์ และตั้ง username และ password ไว้เป็น admin ของโปรแกรม wordpress</p>
<p><a href="http://spalinux.com/wp-content/uploads/2012/05/w16-wordpress-username-password.png"><img class="alignnone size-full wp-image-2350" title="w16-wordpress-username-password" src="http://spalinux.com/wp-content/uploads/2012/05/w16-wordpress-username-password.png" alt="" width="718" height="712" /></a></p>
<p>แนะนำให้เปลี่ยน username จาก admin เป็นชื่ออื่น เพื่อเพิ่มความปลอดภัย ป้องกันการคาดเดา username, password</p>
<p>หน้าเว็บจะมีการตรวจสอบความยากง่ายของ password ที่เราใส่  แนะนำให้ตั้งยากหน่อย อย่างน้อยน่าจะได้ Medium หรือจะให้ดีก็ Strong</p>
<p>สำหรับการทดสอบ แนะนำให้คลิ้กไม่เลือก &#8220;Allow my site to appear in search engines like Google and Technorati.&#8221; ไว้ติดตั้งเว็บไซต์ใช้งานจริงแล้วค่อยเลือก</p>
<p>กดปุ่ม [Install WordPress]</p>
<p>หน้าแสดงการติดตั้งเสร็จสิ้น &#8220;Success&#8221;</p>
<p><a href="http://spalinux.com/wp-content/uploads/2012/05/w17-install-Success.png"><img class="alignnone size-full wp-image-2351" title="w17-install-Success" src="http://spalinux.com/wp-content/uploads/2012/05/w17-install-Success.png" alt="" width="556" height="364" /></a></p>
<p>กดปุ่ม [Log In] เพื่อเข้าสู่หน้า admin ของ wordpress (หรือเข้าโดยตรง http://192.168.5.62/wordpress/wp-admin/)</p>
<p>หน้าล็อกอินของ WordPress ใส่ username, password ที่ตั้งไว้<br />
<a href="http://spalinux.com/wp-content/uploads/2012/05/w21-wordpress-login.png"><img class="alignnone size-full wp-image-2352" title="w21-wordpress-login" src="http://spalinux.com/wp-content/uploads/2012/05/w21-wordpress-login.png" alt="" width="466" height="410" /></a></p>
<p>ถ้าล็อกอินสำเร็จ จะเข้าสู่หน้า Dashboard ของ WordPress</p>
<p><a href="http://spalinux.com/wp-content/uploads/2012/05/w22-wordpress-Dashboard.png"><img class="alignnone size-full wp-image-2353" title="w22-wordpress-Dashboard" src="http://spalinux.com/wp-content/uploads/2012/05/w22-wordpress-Dashboard.png" alt="" width="964" height="744" /></a></p>
<h4>ข้อมูลอ้างอิง</h4>
<ul>
<li><a href="http://wordpress.org/download/" target="_blank">Download WordPress</a></li>
<li><a title="View Details: แก้ปัญหา WordPress  อัพโหลดไฟล์ไม่ได้" href="http://spalinux.com/2012/05/fix-wordpress-cannot-upload-file" rel="bookmark">แก้ปัญหา WordPress อัพโหลดไฟล์ไม่ได้</a></li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://spalinux.com/2012/05/install-wordpress-on-centos-6/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>ติดตั้งโมดูล PHP เพิ่มเติม บน CentOS 6</title>
		<link>http://spalinux.com/2012/04/install-more-php-module-on-centos-6</link>
		<comments>http://spalinux.com/2012/04/install-more-php-module-on-centos-6#comments</comments>
		<pubDate>Mon, 16 Apr 2012 16:00:43 +0000</pubDate>
		<dc:creator>editor</dc:creator>
				<category><![CDATA[Apache]]></category>
		<category><![CDATA[CentOS 6]]></category>
		<category><![CDATA[Database]]></category>
		<category><![CDATA[HTML]]></category>
		<category><![CDATA[Linux Installation]]></category>
		<category><![CDATA[MySQL]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[Programming]]></category>
		<category><![CDATA[Web Server]]></category>

		<guid isPermaLink="false">http://spalinux.com/?p=2115</guid>
		<description><![CDATA[จากการ ติดตั้งโปรแกรมภาษาเว็บ PHP บน Apache เว็บเซิร์ฟเวอร์ Apache และ PHP เครื่องนี้ สามารถเขียนเว็บเพจโดยใช้ภาษา PHP ได้แล้ว  แต่สามารถเรียกใช้ฟังก์ชั่นแค่พื้นฐานเท่านั้น  ถ้าต้องการใช้ฟังก์ชั่นอื่นๆ ด้วย เช่นเชื่อมต่อเข้ากับ MySQL เราจำเป็นต้องติดตั้งโมดูล PHP เพิ่มเติม ในบทความนี้จะอธิบายวิธีการตรวจสอบและติดตั้งโมดูลเพิ่มเติมจากไฟล์ rpm ที่อยู่ในแผ่นดีวีดี CentOS 6.2  โดยจะเป็นการติดตั้งโมดูล MySQL เพื่อให้สามารถเขียน PHP เชื่อมเข้ากับฐานข้อมูล MySQL ได้ ตัวอย่าง error เมื่อเรียกใช้ฟังก์ชั่นของโมดูลที่ไม่มีหรือยังไม่ได้ติดตั้ง [root@cent6 ~]# cat test-mysql.php &#60;?php mysql_connect('localhost', 'mysql_user', 'mysql_password'); ?&#62; ทดลองรันไฟล์นี้ด้วย php [root@cent6 ~]# php test-mysql.php PHP Fatal error:  Call [...]]]></description>
			<content:encoded><![CDATA[<p>จากการ <a title="View Details: ติดตั้งโปรแกรมภาษาเว็บ PHP บน Apache" href="http://spalinux.com/2012/04/install-php-web-programming-on-apache" rel="bookmark">ติดตั้งโปรแกรมภาษาเว็บ PHP บน Apache</a></p>
<p>เว็บเซิร์ฟเวอร์ Apache และ PHP เครื่องนี้ สามารถเขียนเว็บเพจโดยใช้ภาษา PHP ได้แล้ว  แต่สามารถเรียกใช้ฟังก์ชั่นแค่พื้นฐานเท่านั้น  ถ้าต้องการใช้ฟังก์ชั่นอื่นๆ ด้วย เช่นเชื่อมต่อเข้ากับ MySQL เราจำเป็นต้องติดตั้งโมดูล PHP เพิ่มเติม</p>
<p>ในบทความนี้จะอธิบายวิธีการตรวจสอบและติดตั้งโมดูลเพิ่มเติมจากไฟล์ rpm ที่อยู่ในแผ่นดีวีดี CentOS 6.2  โดยจะเป็นการติดตั้งโมดูล MySQL เพื่อให้สามารถเขียน PHP เชื่อมเข้ากับฐานข้อมูล MySQL ได้</p>
<p><span id="more-2115"></span></p>
<p>ตัวอย่าง error เมื่อเรียกใช้ฟังก์ชั่นของโมดูลที่ไม่มีหรือยังไม่ได้ติดตั้ง</p>
<pre>[root@cent6 ~]# <strong>cat test-mysql.php</strong>
&lt;?php
mysql_connect('localhost', 'mysql_user', 'mysql_password');
?&gt;</pre>
<p>ทดลองรันไฟล์นี้ด้วย php</p>
<pre>[root@cent6 ~]# <strong>php test-mysql.php</strong>
<span style="color: #ff0000;">PHP Fatal error:  Call to undefined function mysql_connect()</span> in /var/www/html/test-mysql.php on line 2</pre>
<p>วิธีการตรวจสอบว่า การเขียนโปรแกรมภาษา PHP บนเว็บเซิร์ฟเวอร์นี้ สามารถเรียกใช้โมดูล PHP อะไรได้บ้าง ทำได้โดยใช้ฟังก์ชั่น phpinfo() แล้วเปิดผ่านหน้าเว็บเพจ หรือรันคำสั่ง php ตามด้วยออปชั่น &#8220;-m&#8221;</p>
<pre>[root@cent6 html]# <strong>php -m</strong>
[PHP Modules]
bz2
calendar
Core
ctype
curl
date
ereg
exif
fileinfo
filter
ftp
gettext
gmp
hash
iconv
json
libxml
openssl
pcntl
pcre
Phar
readline
Reflection
session
shmop
SimpleXML
sockets
SPL
standard
tokenizer
xml
zip
zlib</pre>
<pre>[Zend Modules]</pre>
<p>&nbsp;</p>
<p>หากต้องการเรียกใช้โมดูลมากกว่านี้ จำเป็นต้องติดตั้งเพิ่มเติม  วิธีหนึ่งคือติดตั้งจากไฟล์ rpm ในแผ่นดีวีดี CentOS 6.2</p>
<p>ไฟล์ rpm ใน CentOS 6.2 ที่เกี่ยวข้องกับ PHP ไม่ว่าจะเป็นส่วนโปรแกรมหลัก หรือโมดูลเพิ่มเติม จะขึ้นต้นชื่อไฟล์ด้วย php</p>
<pre>[root@cent6 ~]# <strong>mount /dev/cdrom /mnt</strong>
 mount: block device /dev/sr0 is write-protected, mounting read-only</pre>
<pre>[root@cent6 ~]# <strong>cd /mnt/Packages/</strong>
[root@cent6 Packages]# <strong>ls -l php-*</strong>
-rw-r--r--. 2 500 500 1176604 Nov 15 18:02 php-5.3.3-3.el6_1.3.x86_64.rpm
-rw-r--r--. 2 500 500 2276776 Nov 15 18:02 php-cli-5.3.3-3.el6_1.3.x86_64.rpm
-rw-r--r--. 2 500 500  534024 Nov 15 18:02 php-common-5.3.3-3.el6_1.3.x86_64.rpm
-rw-r--r--. 2 500 500  105780 Nov 15 18:02 php-gd-5.3.3-3.el6_1.3.x86_64.rpm
-rw-r--r--. 2 500 500   36360 Nov 15 18:02 php-ldap-5.3.3-3.el6_1.3.x86_64.rpm
-rw-r--r--. 2 500 500   80300 Nov 15 18:02 <span style="color: #0000ff;">php-mysql-5.3.3-3.el6_1.3.x86_64.rpm</span>
-rw-r--r--. 2 500 500   49116 Nov 15 18:02 php-odbc-5.3.3-3.el6_1.3.x86_64.rpm
-rw-r--r--. 2 500 500   74148 Nov 15 18:02 <span style="color: #0000ff;">php-pdo-5.3.3-3.el6_1.3.x86_64.rpm</span>
-rw-r--r--. 2 500 500  402492 Dec  9 03:54 php-pear-1.9.4-4.el6.noarch.rpm
-rw-r--r--. 2 500 500   95556 Jul  3  2011 php-pecl-apc-3.1.3p1-1.2.el6.1.x86_64.rpm
-rw-r--r--. 2 500 500   61400 Sep 26  2011 php-pecl-memcache-3.0.5-3.el6.x86_64.rpm
-rw-r--r--. 2 500 500   69044 Nov 15 18:02 php-pgsql-5.3.3-3.el6_1.3.x86_64.rpm
-rw-r--r--. 2 500 500  140600 Nov 15 18:02 php-soap-5.3.3-3.el6_1.3.x86_64.rpm
-rw-r--r--. 2 500 500  102132 Nov 15 18:02 php-xml-5.3.3-3.el6_1.3.x86_64.rpm
-rw-r--r--. 2 500 500   50964 Nov 15 18:02 php-xmlrpc-5.3.3-3.el6_1.3.x86_64.rpm</pre>
<p>ใช้คำสั่ง rpm เพื่อติดตั้ง module เพิ่มเติม สำหรับการติดตั้ง MySQL module</p>
<pre>[root@cent6 Packages]# <strong>rpm -i php-mysql-5.3.3-3.el6_1.3.x86_64.rpm</strong>
<span style="color: #ff0000;">error: Failed dependencies:</span>
 php-pdo is needed by php-mysql-5.3.3-3.el6_1.3.x86_64</pre>
<p>ต้องติดตั้ง php-pdo (PDO module) ก่อน</p>
<pre>[root@cent6 Packages]# <strong>rpm -i php-pdo-5.3.3-3.el6_1.3.x86_64.rpm</strong>
[root@cent6 Packages]# <strong>rpm -i php-mysql-5.3.3-3.el6_1.3.x86_64.rpm</strong></pre>
<p>ใช้คำสั่ง php ออปชั่น -m เพื่อตรวจสอบ module ที่ติดตั้งเพิ่มเติม</p>
<pre>[root@cent6 Packages]# <strong>php -m</strong>
[PHP Modules]
bz2
calendar
Core
ctype
curl
date
ereg
exif
fileinfo
filter
ftp
gettext
gmp
hash
iconv
json
libxml
<span style="color: #0000ff;">mysql</span>
<span style="color: #0000ff;">mysqli</span>
openssl
pcntl
pcre
<span style="color: #0000ff;">PDO</span>
<span style="color: #0000ff;">pdo_mysql</span>
<span style="color: #0000ff;">pdo_sqlite</span>
Phar
readline
Reflection
session
shmop
SimpleXML
sockets
SPL
<span style="color: #0000ff;">sqlite3</span>
standard
tokenizer
xml
zip
zlib</pre>
<pre>Zend Modules]</pre>
<p>คำอธิบาย</p>
<ul>
<li>PDO, pdo_sqlite, sqlite3 ได้จากการติดตั้งไฟล์ php-pdo</li>
<li>mysql, mysqli, pdo_mysql ได้จากการติดตั้งไฟล์ php-mysql</li>
</ul>
<p>&nbsp;</p>
<p>หลังจากการติดตั้ง PHP module เพิ่มเติม การรัน PHP ที่เป็น command line สามารถเรียกใช้โมดูลใหม่นี้ได้เลย แต่ถ้าต้องการเรียกผ่านเว็บเซิร์ฟเวอร์ ต้องรีสตาร์ตเซอร์วิส httpd ก่อน</p>
<p>ใช้คำสั่ง service เพื่อรีสตาร์ตเซอร์วิส httpd</p>
<pre>[root@cent6 Packages]# <strong>service httpd restart</strong>
Stopping httpd:                                            [  OK  ]
Starting httpd:                                            [  OK  ]</pre>
<p>ตัวอย่างการใช้ฟังก์ชั่น phpinfo() แสดงผลผ่านหน้าเว็บเพจ เพื่อดูข้อมูลรายละเอียดโมดูล MySQL ที่ติดตั้งใหม่</p>
<pre>[root@cent6 ~]# <strong>cat /var/www/html/info.php</strong>
 &lt;?php
 phpinfo();
 ?&gt;</pre>
<p>ผลลัพธ์ที่ได้จากการเรียกผ่านหน้าเว็บ</p>
<p><a href="http://spalinux.com/wp-content/uploads/2012/04/install-php-module.png"><img title="install-php-module" src="http://spalinux.com/wp-content/uploads/2012/04/install-php-module.png" alt="" width="624" height="289" /></a></p>
<p>&nbsp;</p>
]]></content:encoded>
			<wfw:commentRss>http://spalinux.com/2012/04/install-more-php-module-on-centos-6/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>การสตาร์ต Apache Web Server บน CentOS 6</title>
		<link>http://spalinux.com/2012/04/howto-start-apache-web-server-on-centos-6</link>
		<comments>http://spalinux.com/2012/04/howto-start-apache-web-server-on-centos-6#comments</comments>
		<pubDate>Thu, 12 Apr 2012 17:23:20 +0000</pubDate>
		<dc:creator>editor</dc:creator>
				<category><![CDATA[Apache]]></category>
		<category><![CDATA[CentOS 6]]></category>
		<category><![CDATA[Firewall]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[Programming]]></category>
		<category><![CDATA[Web Server]]></category>
		<category><![CDATA[start]]></category>

		<guid isPermaLink="false">http://spalinux.com/?p=2062</guid>
		<description><![CDATA[จากที่ได้ ติดตั้งเว็บเซิร์ฟเวอร์ ​Apache และ ติดตั้งโปรแกรมภาษาเว็บ PHP บน Apache เรียบร้อยแล้ว ขั้นตอนต่อไปก็เป็นรัน Apache Web Server ขึ้นมาเพื่อให้ใช้งานได้ ในบทความนี้จะอธิบายการรันหรือสตาร์ต Apache Web Server บน CentOS 6.2 โดยจะใช้คำสั่ง service เพื่อสะดวกในการจัดการ กล่าวถึงวิธีการแก้ไขคอนฟิกเบื้องต้น และเมื่อทดสอบเรียบร้อยแล้ว ก็จะใช้คำสั่ง chkconfig เพื่อเวลาตอนบู๊ตเครื่องจะได้รันเซอร์วิสเว็บเซิร์ฟเวอร์ขึ้นมาโดยอัตโนมัติ บน CentOS จะตั้งชื่อเซอร์วิสเรียก Apache ว่า httpd เพราะฉะนั้นเวลาใช้คำสั่ง service หรือ chkconfig ต้องใช้ชื่อเป็น httpd รันเซอร์วิส httpd ใช้คำสั่ง service เพื่อสตาร์ตเซอร์วิส httpd [root@cent6 ~]# service httpd start Starting httpd:            [...]]]></description>
			<content:encoded><![CDATA[<p>จากที่ได้ <a title="ติดตั้งเว็บเซิร์ฟเวอร์ ​Apache" href="http://spalinux.com/2012/04/install-apache-web-server">ติดตั้งเว็บเซิร์ฟเวอร์ ​Apache</a> และ <a title="View Details: ติดตั้งโปรแกรมภาษาเว็บ PHP บน Apache" href="http://spalinux.com/2012/04/install-php-web-programming-on-apache" rel="bookmark">ติดตั้งโปรแกรมภาษาเว็บ PHP บน Apache</a> เรียบร้อยแล้ว</p>
<p>ขั้นตอนต่อไปก็เป็นรัน Apache Web Server ขึ้นมาเพื่อให้ใช้งานได้</p>
<p>ในบทความนี้จะอธิบายการรันหรือสตาร์ต Apache Web Server บน CentOS 6.2 โดยจะใช้คำสั่ง service เพื่อสะดวกในการจัดการ กล่าวถึงวิธีการแก้ไขคอนฟิกเบื้องต้น และเมื่อทดสอบเรียบร้อยแล้ว ก็จะใช้คำสั่ง chkconfig เพื่อเวลาตอนบู๊ตเครื่องจะได้รันเซอร์วิสเว็บเซิร์ฟเวอร์ขึ้นมาโดยอัตโนมัติ</p>
<p><span id="more-2062"></span></p>
<p>บน CentOS จะตั้งชื่อเซอร์วิสเรียก Apache ว่า httpd เพราะฉะนั้นเวลาใช้คำสั่ง service หรือ chkconfig ต้องใช้ชื่อเป็น httpd</p>
<h4>รันเซอร์วิส httpd</h4>
<p>ใช้คำสั่ง service เพื่อสตาร์ตเซอร์วิส httpd</p>
<pre>[root@cent6 ~]# <strong>service httpd start</strong>
Starting httpd:                                            [  OK  ]</pre>
<p>ต้องขึ้นผลลัพธ์ว่า OK แสดงว่าสตาร์ตเซอร์วิสสำเร็จ</p>
<p>หลังจากสตาร์ตเสร็จเรียบร้อย ลองใช้คำสั่ง ps เพื่อดูโปรเซสของ httpd</p>
<pre>[root@cent6 ~]# <strong>ps -ef | egrep "(UID|httpd)"</strong>
UID        PID  PPID  C STIME TTY          TIME CMD
root      1623     1  0 15:23 ?        00:00:00 /usr/sbin/httpd
apache    1625  1623  0 15:23 ?        00:00:00 /usr/sbin/httpd
apache    1626  1623  0 15:23 ?        00:00:00 /usr/sbin/httpd
apache    1627  1623  0 15:23 ?        00:00:00 /usr/sbin/httpd
apache    1628  1623  0 15:23 ?        00:00:00 /usr/sbin/httpd
apache    1629  1623  0 15:23 ?        00:00:00 /usr/sbin/httpd
apache    1630  1623  0 15:23 ?        00:00:00 /usr/sbin/httpd
apache    1631  1623  0 15:23 ?        00:00:00 /usr/sbin/httpd
apache    1632  1623  0 15:23 ?        00:00:00 /usr/sbin/httpd</pre>
<div></div>
<div>เนื่องจากผลลัพธ์ของคำสั่ง ps จะแสดงโปรเซสทั้งหมดที่อยู่บนเครื่อง เพื่อให้ดูง่าย นิยมใช้คำสั่ง grep เพื่อดูเฉพาะบรรทัดที่มีคำที่ต้องการดู</div>
<p>ในที่นี้ใช้คำสั่ง egrep เพื่อค้นหาบรรทัดที่มีคำว่า UID หรือ httpd เพื่อให้แสดงชื่อฟิลด์ต่างๆ ด้วย</p>
<h4></h4>
<h4>ทดสอบจาก Web Client (Browser)</h4>
<p>หลังจากสตาร์ตเซอร์วิสเรียบร้อยแล้ว ลองใช้ browser จากเครื่อง client อื่นทดสอบดู</p>
<p>หน้าจอของ browser แสดง error ว่าเข้าเว็บไม่ได้</p>
<p><a href="http://spalinux.com/wp-content/uploads/2012/04/w01-cannot-access-web.png"><img class="alignnone size-full wp-image-2065" title="w01-cannot-access-web" src="http://spalinux.com/wp-content/uploads/2012/04/w01-cannot-access-web.png" alt="" width="524" height="218" /></a></p>
<p>&nbsp;</p>
<p>เหตุผลก็เป็นเพราะว่า โดยดีฟอลต์จากการติดตั้ง CentOS คอนฟิกของ firewall จะอนุญาตให้เข้าได้เฉพาะ ssh ได้เท่านั้น</p>
<p>ใช้คำสั่ง system-config-firewall-tui เพื่อเพิ่มคอนฟิก firewall อนุญาตให้เครื่องอื่นสามารถเข้ามาใช้เซอร์วิส WWW(HTTP) ได้</p>
<pre>[root@cent6 ~]# <strong>system-config-firewall-tui</strong></pre>
<p><a href="http://spalinux.com/wp-content/uploads/2012/04/w02-allow-www-http-service.png"><img class="alignnone size-full wp-image-2066" title="w02-allow-www-http-service" src="http://spalinux.com/wp-content/uploads/2012/04/w02-allow-www-http-service.png" alt="" width="499" height="337" /></a></p>
<p>&nbsp;</p>
<p>ลองใช้ browser จากเครื่อง client ทดสอบดูอีกครั้ง ก็จะใช้งานได้ ขึ้นหน้า Apache 2 Test Page</p>
<p><a href="http://spalinux.com/wp-content/uploads/2012/04/w03-browser-test-web-ok.png"><img class="alignnone size-full wp-image-2067" title="w03-browser-test-web-ok" src="http://spalinux.com/wp-content/uploads/2012/04/w03-browser-test-web-ok.png" alt="" width="777" height="562" /></a></p>
<p>&nbsp;</p>
<p>หมายเหตุ หน้า Apache 2 Test Page นี้ จะถูกแสดงขึ้นมา ในกรณีที่ไดเร็คทอรีเว็บที่เราเรียก ไม่มีไฟล์ index โดยจะไปเรียกไฟล์​ /var/www/error/noindex.html  มาแสดงแทน</p>
<p>&nbsp;</p>
<h4>ทดสอบเขียนไฟล์เว็บ html</h4>
<p>ดีฟอลต์คอนฟิก apache ที่ติดตั้งจาก rpm ไดเร็คทอรีหลัก (DocumentRoot) ที่เก็บไฟล์เว็บหน้าแรกจะอยู่ใน /var/www/html/</p>
<p>ทดสอบเขียนไฟล์เว็บ ชื่อ test.html ไว้ในไดเร็คทอรี /var/www/html/</p>
<pre>[root@cent6 ~]# <strong>cat /var/www/html/test.html</strong>
 &lt;html&gt;
 &lt;body&gt;
 ทดสอบเขียนเว็บ
 &lt;/body&gt;
 &lt;/html&gt;</pre>
<pre></pre>
<p>ลองเปิดด้วย browser ดู</p>
<p><a href="http://spalinux.com/wp-content/uploads/2012/04/w04-test-web-html.png"><img class="alignnone size-full wp-image-2069" title="w04-test-web-html" src="http://spalinux.com/wp-content/uploads/2012/04/w04-test-web-html.png" alt="" width="309" height="82" /></a></p>
<p>&nbsp;</p>
<h4>ทดลองเขียนไฟล์เว็บโปรแกรม php</h4>
<p>หากได้ <a title="View Details: ติดตั้งโปรแกรมภาษาเว็บ PHP บน Apache" href="http://spalinux.com/2012/04/install-php-web-programming-on-apache" rel="bookmark">ติดตั้งโปรแกรมภาษาเว็บ PHP บน Apache</a> ด้วย ลองเขียนไฟล์  php เพื่อทดสอบรันบนเว็บเซิร์ฟเวอร์ดู</p>
<pre>[root@cent6 ~]# <strong>cat /var/www/html/test.php</strong></pre>
<pre>&lt;?php</pre>
<pre>print 'เขียนโปรแกรม PHP&lt;br&gt;';</pre>
<pre>for ($i=1; $i&lt;=9; $i++) {
 print "$i";
}</pre>
<pre>?&gt;</pre>
<p>&nbsp;</p>
<p>ลองเปิดด้วย browser ดู</p>
<p><a href="http://spalinux.com/wp-content/uploads/2012/04/w05-test-web-php.png"><img class="alignnone size-full wp-image-2070" title="w05-test-web-php" src="http://spalinux.com/wp-content/uploads/2012/04/w05-test-web-php.png" alt="" width="313" height="101" /></a></p>
<p>&nbsp;</p>
<h4>คอนฟิกให้ สตาร์ต Apache ตอนบู๊ตเครื่อง</h4>
<p>เมื่อทดสอบเรียบร้อยแล้ว หากต้องการให้สตาร์ต apache ตอนบู๊ตเครื่องโดยอัตโนมัติ สามารถทำได้โดยใช้คำสั่ง chkconfig</p>
<pre>[root@cent6 ~]# chkconfig httpd on</pre>
<pre>[root@cent6 ~]# chkconfig --list | grep http
httpd          0:off 1:off 2:on 3:on 4:on 5:on 6:off</pre>
<div></div>
<h4>ปิดเซอร์วิส Apache</h4>
<p>ในกรณีที่ต้องการปิดเซอร์วิส Apache สามารถทำได้โดยใช้คำสั่ง service</p>
<pre>[root@cent6 ~]# <strong>service httpd stop</strong>
Stopping httpd:                                            [  OK  ]</pre>
<p>&nbsp;</p>
<h4>ข้อมูลอ้างอิง</h4>
<ul>
<li><a title="ติดตั้งเว็บเซิร์ฟเวอร์ ​Apache" href="http://spalinux.com/2012/04/install-apache-web-server">ติดตั้งเว็บเซิร์ฟเวอร์ ​Apache</a></li>
<li><a title="View Details: ติดตั้งโปรแกรมภาษาเว็บ PHP บน Apache" href="http://spalinux.com/2012/04/install-php-web-programming-on-apache" rel="bookmark">ติดตั้งโปรแกรมภาษาเว็บ PHP บน Apache</a></li>
<li><a title="View Details: วิธีการเปิด ปิด เซอร์วิสของ CentOS 6" href="http://spalinux.com/2012/04/how-to-start-stop-service-in-centos-6" rel="bookmark">วิธีการเปิด ปิด เซอร์วิส</a></li>
<li><a title="View Details: การเปิดเซอร์วิสตอนบู๊ตเครื่องของ CentOS 6" href="http://spalinux.com/2012/04/start-service-when-boot-centos-6" rel="bookmark">การเปิดเซอร์วิสตอนบู๊ตเครื่อง</a></li>
<li><a title="View Details: แก้ไขคอนฟิก firewall ด้วย system-config-firewall" href="http://spalinux.com/2012/04/configure-firewall-using-system-config-firewall" rel="bookmark">แก้ไขคอนฟิก firewall ด้วย system-config-firewall</a></li>
</ul>
<p>&nbsp;</p>
]]></content:encoded>
			<wfw:commentRss>http://spalinux.com/2012/04/howto-start-apache-web-server-on-centos-6/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>ติดตั้งโปรแกรมภาษาเว็บ PHP บน Apache</title>
		<link>http://spalinux.com/2012/04/install-php-web-programming-on-apache</link>
		<comments>http://spalinux.com/2012/04/install-php-web-programming-on-apache#comments</comments>
		<pubDate>Sun, 01 Apr 2012 09:48:01 +0000</pubDate>
		<dc:creator>editor</dc:creator>
				<category><![CDATA[Apache]]></category>
		<category><![CDATA[CentOS 6]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[Programming]]></category>

		<guid isPermaLink="false">http://spalinux.com/?p=1933</guid>
		<description><![CDATA[หลังจาก ติดตั้งเว็บเซิร์ฟเวอร์ ​Apache ในบทนี้จะสอนวิธีการติดตั้งไฟล์ rpm เพื่อจะติดตั้ง php เป็นโมดูลใน Apache เพื่อให้สามารถเขียนเว็บโปรแกรมภาษา PHP ได้ โดยจะอธิบายทีละขั้นตอน ถึงวิธีการติดตั้งไฟล์ rpm และการแก้ไขปัญหา ใส่แผ่นดีวีดีติดตั้ง ใช้คำสั่ง mount แผ่นกับพาธ /mnt [root@cent6 ~]# mount /dev/cdrom /mnt mount: block device /dev/sr0 is write-protected, mounting read-only เข้าไปใน /mnt/Packages/ เพื่อติดตั้งไฟล์ rpm สำหรับ CentOS ไฟล์ rpm ของ php จะมีชื่อไฟล์ขึ้นต้นด้วย php [root@cent6 ~]# cd /mnt/Packages/ [root@cent6 Packages]# ls -l php* -rw-r--r--. [...]]]></description>
			<content:encoded><![CDATA[<p>หลังจาก <a title="View Details: ติดตั้งเว็บเซิร์ฟเวอร์ ​Apache" href="http://spalinux.com/2012/04/install-apache-web-server" rel="bookmark">ติดตั้งเว็บเซิร์ฟเวอร์ ​Apache</a></p>
<p>ในบทนี้จะสอนวิธีการติดตั้งไฟล์ rpm เพื่อจะติดตั้ง php เป็นโมดูลใน Apache เพื่อให้สามารถเขียนเว็บโปรแกรมภาษา PHP ได้</p>
<p>โดยจะอธิบายทีละขั้นตอน ถึงวิธีการติดตั้งไฟล์ rpm และการแก้ไขปัญหา</p>
<p><span id="more-1933"></span></p>
<p>ใส่แผ่นดีวีดีติดตั้ง ใช้คำสั่ง mount แผ่นกับพาธ /mnt</p>
<pre>[root@cent6 ~]# <strong>mount /dev/cdrom /mnt</strong>
mount: block device /dev/sr0 is write-protected, mounting read-only</pre>
<p>เข้าไปใน /mnt/Packages/ เพื่อติดตั้งไฟล์ rpm</p>
<p>สำหรับ CentOS ไฟล์ rpm ของ php จะมีชื่อไฟล์ขึ้นต้นด้วย php</p>
<pre>[root@cent6 ~]# <strong>cd /mnt/Packages/</strong>
[root@cent6 Packages]# <strong>ls -l php*</strong>
-rw-r--r--. 2 500 500 1176604 Nov 15 18:02 php-5.3.3-3.el6_1.3.x86_64.rpm
-rw-r--r--. 2 500 500 2276776 Nov 15 18:02 php-cli-5.3.3-3.el6_1.3.x86_64.rpm
-rw-r--r--. 2 500 500 534024 Nov 15 18:02 php-common-5.3.3-3.el6_1.3.x86_64.rpm
-rw-r--r--. 2 500 500 105780 Nov 15 18:02 php-gd-5.3.3-3.el6_1.3.x86_64.rpm
-rw-r--r--. 2 500 500 36360 Nov 15 18:02 php-ldap-5.3.3-3.el6_1.3.x86_64.rpm
-rw-r--r--. 2 500 500 80300 Nov 15 18:02 php-mysql-5.3.3-3.el6_1.3.x86_64.rpm
-rw-r--r--. 2 500 500 49116 Nov 15 18:02 php-odbc-5.3.3-3.el6_1.3.x86_64.rpm
-rw-r--r--. 2 500 500 74148 Nov 15 18:02 php-pdo-5.3.3-3.el6_1.3.x86_64.rpm
-rw-r--r--. 2 500 500 402492 Dec 9 03:54 php-pear-1.9.4-4.el6.noarch.rpm
-rw-r--r--. 2 500 500 95556 Jul 3 2011 php-pecl-apc-3.1.3p1-1.2.el6.1.x86_64.rpm
-rw-r--r--. 2 500 500 61400 Sep 26 2011 php-pecl-memcache-3.0.5-3.el6.x86_64.rpm
-rw-r--r--. 2 500 500 69044 Nov 15 18:02 php-pgsql-5.3.3-3.el6_1.3.x86_64.rpm
-rw-r--r--. 2 500 500 140600 Nov 15 18:02 php-soap-5.3.3-3.el6_1.3.x86_64.rpm
-rw-r--r--. 2 500 500 102132 Nov 15 18:02 php-xml-5.3.3-3.el6_1.3.x86_64.rpm
-rw-r--r--. 2 500 500 50964 Nov 15 18:02 php-xmlrpc-5.3.3-3.el6_1.3.x86_64.rpm</pre>
<p>ไฟล์ rpm ของ php จะถูกแยกเป็นไฟล์ย่อยๆ เป็นโมดูลของ php สามารถเลือกติดตั้งได้ตามความต้องการของเรา เช่น ถ้าต้องการเขียนโปรแกรม php ให้จัดการรูปภาพได้ ก็ติดตั้งไฟล์ php-gd</p>
<p>เพื่อให้สามารถเขียน php บนเว็บเบื้องต้นได้ ต้องติดตั้งไฟล์ rpm จำนวน 3 ไฟล์ ดังนี้</p>
<ul>
<li>php</li>
<li>php-cli</li>
<li>php-common</li>
</ul>
<p>ใช้คำสั่ง rpm ติดตั้ง php</p>
<pre>[root@cent6 Packages]# <strong>rpm -i php-5.3.3-3.el6_1.3.x86_64.rpm</strong>
<span style="color: #ff0000;">error: Failed dependencies</span>:
 php-cli = 5.3.3-3.el6_1.3 is needed by php-5.3.3-3.el6_1.3.x86_64
 php-common = 5.3.3-3.el6_1.3 is needed by php-5.3.3-3.el6_1.3.x86_64</pre>
<p>มีปัญหาเรื่อง dependencies อีกแล้ว คือต้องติดตั้ง php-cli และ php-common ก่อน</p>
<p>ลองติดตั้ง php-cli</p>
<pre>[root@cent6 Packages]# <strong>rpm -i php-cli-5.3.3-3.el6_1.3.x86_64.rpm</strong>
<span style="color: #ff0000;">error: Failed dependencies</span>:
 php-common = 5.3.3-3.el6_1.3 is needed by php-cli-5.3.3-3.el6_1.3.x86_64</pre>
<p>ฟ้องว่าต้องติดตั้ง php-common ก่อน</p>
<p>ลองติดตั้ง php-common</p>
<pre>[root@cent6 Packages]# <strong>rpm -i php-common-5.3.3-3.el6_1.3.x86_64.rpm</strong></pre>
<p>ติดตั้งสำเร็จ</p>
<p>ย้อนกลับไปติดตั้งไฟล์ php-cli และ php ตามลำดับ</p>
<pre>[root@cent6 Packages]# <strong>rpm -i php-cli-5.3.3-3.el6_1.3.x86_64.rpm</strong>
[root@cent6 Packages]# <strong>rpm -i php-5.3.3-3.el6_1.3.x86_64.rpm</strong></pre>
<p>หรือถ้าเจอปัญหา dependencies แบบนี้ อาจใส่ชื่อไฟล์ที่ต้องติดตั้งก่อน เรียงลำดับไปเรื่อยๆ (คั่นด้วยเว้นวรรค) ตัวอย่างเช่น</p>
<pre>[root@cent6 Packages]# <strong>rpm -i php-5.3.3-3.el6_1.3.x86_64.rpm</strong>
<span style="color: #ff0000;">error: Failed dependencies</span>:
 php-cli = 5.3.3-3.el6_1.3 is needed by php-5.3.3-3.el6_1.3.x86_64
 php-common = 5.3.3-3.el6_1.3 is needed by php-5.3.3-3.el6_1.3.x86_64</pre>
<pre>[root@cent6 Packages]# <strong>rpm -i php-5.3.3-3.el6_1.3.x86_64.rpm <span style="color: #0000ff;">php-cli-5.3.3-3.el6_1.3.x86_64.rpm</span></strong>
<span style="color: #ff0000;">error: Failed dependencies</span>:
 php-common = 5.3.3-3.el6_1.3 is needed by php-5.3.3-3.el6_1.3.x86_64
 php-common = 5.3.3-3.el6_1.3 is needed by php-cli-5.3.3-3.el6_1.3.x86_64</pre>
<pre>[root@cent6 Packages]# <strong>rpm -i php-5.3.3-3.el6_1.3.x86_64.rpm php-cli-5.3.3-3.el6_1.3.x86_64.rpm <span style="color: #0000ff;">php-common-5.3.3-3.el6_1.3.x86_64.rpm</span></strong></pre>
<p>ทดสอบรัน php ตามด้วยออปชั่น -v เพื่อดูเวอร์ชั่น</p>
<pre>[root@cent6 ~]# <strong>php -v</strong>
PHP 5.3.3 (cli) (built: Nov 3 2011 12:00:26)
Copyright (c) 1997-2010 The PHP Group
Zend Engine v2.3.0, Copyright (c) 1998-2010 Zend Technologies</pre>
<h4>ข้อมูลอ้างอิง</h4>
<ul>
<li><a title="ติดตั้งโปรแกรมเพิ่มบน CentOS 6.2" href="http://spalinux.com/2012/04/how-to-install-program-on-centos-6-2">ติดตั้งโปรแกรมเพิ่มบน CentOS 6.2</a></li>
<li><a title="View Details: ติดตั้งเว็บเซิร์ฟเวอร์ ​Apache" href="http://spalinux.com/2012/04/install-apache-web-server" rel="bookmark">ติดตั้งเว็บเซิร์ฟเวอร์ ​Apache</a></li>
</ul>
<p>&nbsp;</p>
]]></content:encoded>
			<wfw:commentRss>http://spalinux.com/2012/04/install-php-web-programming-on-apache/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>คอนฟิกหลายชื่อเว็บไซต์บนเว็บเซิร์ฟเวอร์เครื่องเดียวด้วย Apache VirtualHost</title>
		<link>http://spalinux.com/2012/03/configure-multiple-web-site-on-one-web-server-by-apache-virtualhost</link>
		<comments>http://spalinux.com/2012/03/configure-multiple-web-site-on-one-web-server-by-apache-virtualhost#comments</comments>
		<pubDate>Fri, 09 Mar 2012 17:15:32 +0000</pubDate>
		<dc:creator>editor</dc:creator>
				<category><![CDATA[Apache]]></category>
		<category><![CDATA[HTML]]></category>
		<category><![CDATA[Name Service]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[Programming]]></category>
		<category><![CDATA[Web Server]]></category>
		<category><![CDATA[virtual host]]></category>
		<category><![CDATA[web hosting]]></category>

		<guid isPermaLink="false">http://spalinux.com/?p=1687</guid>
		<description><![CDATA[วิธีการหนึ่งสำหรับคนที่ต้องการมีเว็บไซต์บนอินเตอร์เน็ตเป็นของตัวเอง คือใช้บริการ Web Hosting เคยสงสัยไหมว่า ผู้ให้บริการต้องมีเซิร์ฟเวอร์กี่เครื่อง เพื่อจะรองรับเว็บไซต์หรือโดเมนเนมของลูกค้าจำนวนมากได้ โดยทั่วไป ผู้ให้บริการ Web Hosting อาจมีเซิร์ฟเวอร์เพียงไม่กี่เครื่องเท่านั้น โดยแต่ละเครื่องสามารถคอนฟิกเพื่อให้รองรับจำนวนเว็บไซต์ได้เป็นหลักร้อย หลักพัน หรือเคยได้ยินมาว่าบางที่ ที่ค่าบริการถูกมากๆ มีจำนวนเว็บไซต์ต่อเครื่องถึงหลักหมื่นเลยทีเดียว วิธีการที่คอนฟิกเว็บเซิร์ฟเวอร์เพื่อให้สามารถรองรับได้หลายเว็บไซต์หรือโดเมน โดยพื้นฐานแล้วก็คือการใช้ VirtualHost นั่นเอง บทความนี้จะอธิบายวิธีการคอนฟิก Apache VirtualHost บน Fedora 16 ระบบทดสอบ Fedora 16 IP Address: 192.168.5.16 ในที่นี้สมมติว่าเราแก้ไข DNS (หรืออาจแก้ไฟล์ host บนเครื่อง Client) โดยเพิ่มชื่อ 3 เว็บไซต์ ให้ชี้มายัง IP 192.168.5.16 web1.example.com web2.example.com web3.example.com ติดตั้งไฟล์ rpm ของ Apache ใช้คำสั่ง rpm เพื่อตรวจสอบเวอร์ชั่นที่ติดตั้ง [...]]]></description>
			<content:encoded><![CDATA[<p>วิธีการหนึ่งสำหรับคนที่ต้องการมีเว็บไซต์บนอินเตอร์เน็ตเป็นของตัวเอง คือใช้บริการ Web Hosting</p>
<p>เคยสงสัยไหมว่า ผู้ให้บริการต้องมีเซิร์ฟเวอร์กี่เครื่อง เพื่อจะรองรับเว็บไซต์หรือโดเมนเนมของลูกค้าจำนวนมากได้</p>
<p>โดยทั่วไป ผู้ให้บริการ Web Hosting อาจมีเซิร์ฟเวอร์เพียงไม่กี่เครื่องเท่านั้น โดยแต่ละเครื่องสามารถคอนฟิกเพื่อให้รองรับจำนวนเว็บไซต์ได้เป็นหลักร้อย หลักพัน หรือเคยได้ยินมาว่าบางที่ ที่ค่าบริการถูกมากๆ มีจำนวนเว็บไซต์ต่อเครื่องถึงหลักหมื่นเลยทีเดียว</p>
<p>วิธีการที่คอนฟิกเว็บเซิร์ฟเวอร์เพื่อให้สามารถรองรับได้หลายเว็บไซต์หรือโดเมน โดยพื้นฐานแล้วก็คือการใช้ VirtualHost นั่นเอง</p>
<p>บทความนี้จะอธิบายวิธีการคอนฟิก Apache VirtualHost บน Fedora 16</p>
<p><span id="more-1687"></span></p>
<p>ระบบทดสอบ</p>
<ul>
<li>Fedora 16</li>
<li>IP Address: 192.168.5.16</li>
</ul>
<p>ในที่นี้สมมติว่าเราแก้ไข DNS (หรืออาจแก้ไฟล์ host บนเครื่อง Client) โดยเพิ่มชื่อ 3 เว็บไซต์ ให้ชี้มายัง IP 192.168.5.16</p>
<ul>
<li>web1.example.com</li>
<li>web2.example.com</li>
<li>web3.example.com</li>
</ul>
<p>ติดตั้งไฟล์ rpm ของ Apache</p>
<p>ใช้คำสั่ง rpm เพื่อตรวจสอบเวอร์ชั่นที่ติดตั้ง</p>
<pre>[root@fc16-64a ~]# <strong>rpm -qa | grep httpd</strong>
httpd-tools-2.2.21-1.fc16.x86_64
httpd-2.2.21-1.fc16.x86_64</pre>
<p>โดยดีฟอลต์การติดตั้งไฟล์ rpm ของ Apache บนลีนุกซ์ ตระกูล RedHat, CentOS, หรือ Fedora จะรองรับแค่ชื่อเว็บไซต์เดียวเท่านั้น</p>
<h4>การคอนฟิก VirtualHost บนเว็บเซิร์ฟเวอร์</h4>
<p>เริ่มต้น ถ้าต้องการเปิดคุณสมบัติ VirtualHost ต้องแก้ไขคอนฟิกไฟล์ httpd.conf โดยเอาเครื่องหมาย &#8216;#&#8217; (comment) หน้าออปชั่น NameVirtualHost ออก</p>
<p>วิธีการคอนฟิก VirtualHost ในที่นี้จะอ้างอิงตามชื่อเว็บไซต์ที่เรียกเข้ามา เช่น ถ้า Browser (client)</p>
<ul>
<li>ใช้ชื่อ &#8220;ServerName&#8221; web1.example.com เข้ามา เราต้องการให้เข้าไปอ่านไฟล์เว็บในไดเร็คทอรี &#8220;DocumentRoot&#8221; /var/www/html/web1.example.com</li>
<li>แต่ถ้าใช้ชื่อ web2.example.com ให้อ่านไฟล์ใน /var/www/html/web2.example.com</li>
<li>และถ้าใช้ชื่อ web3.example.com ให้ไปอ่านไฟล์จาก /var/www/html/web3.example.com</li>
<li>แต่ถ้าใช้ชื่ออื่นๆ หรือใช้ IP Address ของเซิร์ฟเวอร์ ให้อ่านไฟล์ใน /var/www/html/default</li>
</ul>
<p>ตัวอย่างไฟล์คอนฟิก httpd.conf ที่แก้ไข</p>
<pre>[root@fc16-64a ~]# cat /etc/httpd/conf/httpd.conf
...
#
# Use name-based virtual hosting.
#
NameVirtualHost *:80</pre>
<pre>&lt;VirtualHost *:80&gt;
<span style="color: #0000ff;"> ServerName 192.168.5.16</span>
<span style="color: #0000ff;"> DocumentRoot /var/www/html/default</span>
 ErrorLog logs/default-error_log
 CustomLog logs/default-access_log common
&lt;/VirtualHost&gt;</pre>
<pre>&lt;VirtualHost *:80&gt;
<span style="color: #0000ff;"> ServerName web1.example.com</span>
<span style="color: #0000ff;"> DocumentRoot /var/www/html/web1.example.com</span>
 ErrorLog logs/web1.example.com-error_log
 CustomLog logs/web1.example.com-access_log common
&lt;/VirtualHost&gt;</pre>
<pre>&lt;VirtualHost *:80&gt;
<span style="color: #0000ff;"> ServerName web2.example.com</span>
<span style="color: #0000ff;"> DocumentRoot /var/www/html/web2.example.com</span>
 ErrorLog logs/web2.example.com-error_log
 CustomLog logs/web2.example.com-access_log common
&lt;/VirtualHost&gt;</pre>
<pre>&lt;VirtualHost *:80&gt;
<span style="color: #0000ff;"> ServerName web3.example.com</span>
<span style="color: #0000ff;"> DocumentRoot /var/www/html/web3.example.com</span>
 ErrorLog logs/web3.example.com-error_log
 CustomLog logs/web3.example.com-access_log common
&lt;/VirtualHost&gt;</pre>
<p>&nbsp;</p>
<p>สร้างไดเร็คทอรี DocumentRoot สำหรับเก็บไฟล์ของชื่อเว็บไซต์ต่างๆ</p>
<pre>[root@fc16-64a ~]# <strong>mkdir /var/www/html/default</strong>
[root@fc16-64a ~]# <strong>mkdir /var/www/html/web1.example.com</strong>
[root@fc16-64a ~]# <strong>mkdir /var/www/html/web2.example.com</strong>
[root@fc16-64a ~]# <strong>mkdir /var/www/html/web3.example.com</strong></pre>
<p>สร้างไฟล์เว็บ index.html ของแต่ละเว็บไซต์</p>
<pre>[root@fc16-64a ~]# <strong>echo "Hello, default web site" &gt; /var/www/html/default/index.html</strong>
[root@fc16-64a ~]# <strong>echo "Hello, web1" &gt; /var/www/html/web1.example.com/index.html</strong>
[root@fc16-64a ~]# <strong>echo "Hello, web2" &gt; /var/www/html/web2.example.com/index.html</strong>
[root@fc16-64a ~]# <strong>echo "Hello, web3" &gt; /var/www/html/web3.example.com/index.html</strong></pre>
<p>ใช้คำสั่ง service restart เพื่อรีสตาร์ตเซอร์วิส httpd ใหม่</p>
<pre>[root@fc16-64a ~]# <strong>service httpd restart</strong>
Restarting httpd (via systemctl): [ OK ]</pre>
<p>การคอนฟิก VirtualHost ในที่นี้จะแยก log file ทั้ง access_log และ error_log ตามชื่อเว็บไซต์ด้วย เพื่อสะดวกต่อการตรวจสอบและการทำรายงานการเข้าใช้</p>
<pre>[root@fc16-64a httpd]# <strong>ls -l</strong>
total 4
-rw-r--r--. 1 root root 0 Mar 9 16:34 access_log
-rw-r--r--. 1 root root 0 Mar 9 16:34 default-access_log
-rw-r--r--. 1 root root 0 Mar 9 16:34 default-error_log
-rw-r--r--. 1 root root 458 Mar 9 16:35 error_log
-rw-r--r--. 1 root root 0 Mar 9 16:34 web1.example.com-access_log
-rw-r--r--. 1 root root 0 Mar 9 16:34 web1.example.com-error_log
-rw-r--r--. 1 root root 0 Mar 9 16:34 web2.example.com-access_log
-rw-r--r--. 1 root root 0 Mar 9 16:34 web2.example.com-error_log
-rw-r--r--. 1 root root 0 Mar 9 16:34 web3.example.com-access_log
-rw-r--r--. 1 root root 0 Mar 9 16:34 web3.example.com-error_log</pre>
<p>&nbsp;</p>
<h4>ทดสอบจาก Browser (client)</h4>
<p>ใช้ Browser บนเครื่อง Client เปิดไปที่เว็บไซต์ http://web1.example.com</p>
<p><a href="http://spalinux.com/wp-content/uploads/2012/03/01-test-virtualhost.png"><img class="alignnone size-full wp-image-1688" title="01-test-virtualhost" src="http://spalinux.com/wp-content/uploads/2012/03/01-test-virtualhost.png" alt="" width="306" height="122" /></a></p>
<p>ผลที่ทดสอบ ก็เข้าไปอ่านไฟล์ใน /var/www/html/web1.example.com/index.html จริง</p>
<p>ลองดู log file ที่เกิดขึ้น จะเห็นว่าเกิด log เฉพาะในโดเมน web1.example.com เท่านั้น</p>
<pre>[root@fc16-64a ~]# <strong>ls -l /var/log/httpd/</strong>
total 12
-rw-r--r--. 1 root root 0 Mar 9 16:34 access_log
-rw-r--r--. 1 root root 0 Mar 9 16:34 default-access_log
-rw-r--r--. 1 root root 0 Mar 9 16:34 default-error_log
-rw-r--r--. 1 root root 458 Mar 9 16:35 error_log
<span style="color: #0000ff;">-rw-r--r--. 1 root root 222 Mar 9 16:36 web1.example.com-access_log</span>
<span style="color: #0000ff;">-rw-r--r--. 1 root root 234 Mar 9 16:36 web1.example.com-error_log</span>
-rw-r--r--. 1 root root 0 Mar 9 16:34 web2.example.com-access_log
-rw-r--r--. 1 root root 0 Mar 9 16:34 web2.example.com-error_log
-rw-r--r--. 1 root root 0 Mar 9 16:34 web3.example.com-access_log
-rw-r--r--. 1 root root 0 Mar 9 16:34 web3.example.com-error_log</pre>
<pre>[root@fc16-64a ~]# <strong>tail /var/log/httpd/web1.example.com-access_log</strong>
192.168.5.101 - - [09/Mar/2012:16:36:06 +0700] "GET / HTTP/1.1" 200 12
192.168.5.101 - - [09/Mar/2012:16:36:06 +0700] "GET /favicon.ico HTTP/1.1" 404 291</pre>
<pre>[root@fc16-64a ~]# <strong>tail /var/log/httpd/web1.example.com-error_log</strong>
[Fri Mar 09 16:36:06 2012] [error] [client 192.168.5.101] File does not exist: /var/www/html/web1.example.com/favicon.ico</pre>
<p>&nbsp;</p>
<p>ทดลองอีกครั้งด้วยชื่อเว็บ web2.example.com</p>
<p><a href="http://spalinux.com/wp-content/uploads/2012/03/02-test-web2.png"><img class="alignnone size-full wp-image-1689" title="02-test-web2" src="http://spalinux.com/wp-content/uploads/2012/03/02-test-web2.png" alt="" width="291" height="105" /></a></p>
<p>&nbsp;</p>
<p>log file ที่เกิดขึ้น ก็จะไปขึ้นในไฟล์ web2.example.com-access_log และ web2.example.com-error_log ที่คอนฟิกไว้<br />
แต่ถ้าเข้าด้วย IP ของ Server หรือชื่อ ServerName อื่นๆ ที่ไม่ได้คอนฟิก VirtualHost ไว้ ผลที่ได้จะไปเรียก VirtualHost ที่คอนฟิกไว้บนสุด ในที่นี้คือ DocumentRoot /var/www/html/default</p>
<p><a href="http://spalinux.com/wp-content/uploads/2012/03/03-default-virtualhost.png"><img class="alignnone size-full wp-image-1690" title="03-default-virtualhost" src="http://spalinux.com/wp-content/uploads/2012/03/03-default-virtualhost.png" alt="" width="288" height="101" /></a></p>
<p>&nbsp;</p>
<p>เพราะฉะนั้น ลำดับคอนฟิก VirtualHost ในไฟล์ httpd.conf จึงมีความสำคัญ ในกรณีที่ไม่มีชื่อ ServerName ระบุไว้</p>
<p>&nbsp;</p>
<h4>ข้อมูลอ้างอิง</h4>
<ul>
<li><a href="http://httpd.apache.org/docs/2.2/vhosts/" target="_blank">Apache Virtual Host documentation</a></li>
</ul>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
]]></content:encoded>
			<wfw:commentRss>http://spalinux.com/2012/03/configure-multiple-web-site-on-one-web-server-by-apache-virtualhost/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>แก้ไข Joomla Directory Permissions Unwritable บนลีนุกซ์ที่เปิด SELinux</title>
		<link>http://spalinux.com/2012/03/fix-joomla-directory-permissions-unwritable-on-linux-enable-selinux</link>
		<comments>http://spalinux.com/2012/03/fix-joomla-directory-permissions-unwritable-on-linux-enable-selinux#comments</comments>
		<pubDate>Mon, 05 Mar 2012 17:49:10 +0000</pubDate>
		<dc:creator>editor</dc:creator>
				<category><![CDATA[CMS]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[Programming]]></category>
		<category><![CDATA[Security]]></category>
		<category><![CDATA[SELinux]]></category>
		<category><![CDATA[SEO]]></category>
		<category><![CDATA[Web Server]]></category>
		<category><![CDATA[Apache]]></category>
		<category><![CDATA[context]]></category>
		<category><![CDATA[httpd]]></category>
		<category><![CDATA[security]]></category>
		<category><![CDATA[upload]]></category>
		<category><![CDATA[write]]></category>

		<guid isPermaLink="false">http://spalinux.com/?p=1677</guid>
		<description><![CDATA[เมื่อลูกค้าขอให้ดูเรื่องความปลอดภัยของเว็บไซต์เป็นพิเศษ เลยต้องจัดเต็มซะหน่อย จากที่เคยปิดคุณสมบัติ SELinux เพื่อแก้ปัญหา Directory Permissions Unwritable มาแล้วในบทความ แก้ไข permission ไฟล์หลังการติดตั้ง Joomla 2.5 ครั้งนี้ขอปรับปรุงใหม่ ด้วยการเปิดคุณสมบัติ SELinux ไว้ แล้วแก้ไข security context ของไดเร็คทอรีที่มีปัญหา เพื่อให้สามารถเขียนไฟล์ได้ ในที่นี้ยังคงทดลองบน ​Fedora 16 เหมือนเดิม แต่เท่าที่ลองกับ Linux Distributions อื่นๆ วิธีการแก้ไขก็คล้ายกัน [root@fc16-64a ~]# cat /etc/redhat-release  Fedora release 16 (Verne) ใช้คำสั่ง sestatus เพื่อตรวจสอบสถานะการเปิดคุณสมบัติ SELinux [root@fc16-64a ~]# sestatus SELinux status: enabled SELinuxfs mount: /sys/fs/selinux Current mode: enforcing [...]]]></description>
			<content:encoded><![CDATA[<p>เมื่อลูกค้าขอให้ดูเรื่องความปลอดภัยของเว็บไซต์เป็นพิเศษ เลยต้องจัดเต็มซะหน่อย</p>
<p>จากที่เคยปิดคุณสมบัติ SELinux เพื่อแก้ปัญหา Directory Permissions Unwritable มาแล้วในบทความ <a href="http://spalinux.com/2012/03/fix-file-permission-after-install-joomla-2-5">แก้ไข permission ไฟล์หลังการติดตั้ง Joomla 2.5</a></p>
<p>ครั้งนี้ขอปรับปรุงใหม่ ด้วยการเปิดคุณสมบัติ SELinux ไว้ แล้วแก้ไข security context ของไดเร็คทอรีที่มีปัญหา เพื่อให้สามารถเขียนไฟล์ได้</p>
<p><span id="more-1677"></span></p>
<p>ในที่นี้ยังคงทดลองบน ​Fedora 16 เหมือนเดิม แต่เท่าที่ลองกับ Linux Distributions อื่นๆ วิธีการแก้ไขก็คล้ายกัน</p>
<pre>[root@fc16-64a ~]# <strong>cat /etc/redhat-release </strong>
Fedora release 16 (Verne)</pre>
<p>ใช้คำสั่ง sestatus เพื่อตรวจสอบสถานะการเปิดคุณสมบัติ SELinux</p>
<pre>[root@fc16-64a ~]# <strong>sestatus</strong>
<span style="color: #0000ff;">SELinux status: enabled</span>
SELinuxfs mount: /sys/fs/selinux
<span style="color: #0000ff;">Current mode: enforcing</span>
Mode from config file: enforcing
Policy version: 26
Policy from config file: targeted</pre>
<p>เมื่อเปิด SELinux แล้ว แม้เราจะเปลี่ยน owner หรือ permission ของไฟล์ เพื่อให้ apache สามารถ เขียนไฟล์ (write) ได้ แล้ว ในหน้าตรวจสอบ Directory Permissions ก็ยังขึ้น Unwritable เหมือนเดิม</p>
<p>ตัวอย่างการเปลี่ยน owner ของไดเร็คทอรีย่อยภายใต้ administrator แล้ว</p>
<pre>[root@fc16-64a ~]# <strong>cd /var/www/html/joomla25/</strong>
[root@fc16-64a joomla25]# ls -l administrator/
total 36
drwxr-xr-x. 3  apache root 4096 Mar 4 00:42 cache
<span style="color: #0000ff;">drwxr-xr-x. 28 apache root 4096 Mar 4 00:37 components</span>
drwxr-xr-x. 3  root   root 4096 Mar 3 22:54 help
drwxr-xr-x. 2  root   root 4096 Mar 3 22:54 includes
-rw-r--r--. 1  root   root 1495 Feb 1 12:45 index.php
drwxr-xr-x. 15 apache root 4096 Mar 4 00:37 language
drwxr-xr-x. 5  root   root 4096 Mar 3 22:54 manifests
drwxr-xr-x. 16 apache root 4096 Mar 3 22:54 modules
drwxr-xr-x. 5  apache root 4096 Feb 1 12:45 templates</pre>
<p>ที่เป็นเช่นนี้เพราะว่า หลังจากตรวจสอบสิทธิในการอ่านเขียนไฟล์ (owner, group, permission) พื้นฐาน Discretionary Access Control (DAC) ของลีนุกซ์แล้ว คุณสมบัติ SELinux จะทำการตรวจสอบสิทธิเพิ่มเติม Mandatory Access Control (MAC) ว่าเป็นไปตามนโยบาย (Policy) หลักของเครื่องหรือไม่</p>
<p>ปัญหาอย่างแรกผู้ใช้ (apache) ต้องการเขียนไฟล์ลงบนไดเร็คทอรีต่างๆ ยกตัวอย่างเช่น &#8220;administrator/components/&#8221;</p>
<p>เริ่มต้น จะมีการตรวจสอบสิทธิพื้นฐานของลีนุกซ์ ผู้ใช้ apache สามารถเขียนไฟล์ลงในไดเร็คทอรีนี้ได้ เพราะเป็น owner และ permission เป็น rwx (read, write, executue ได้)</p>
<pre>[root@fc16-64a joomla25]# <strong>ls -ld administrator/components/</strong>
d<span style="color: #0000ff;">rwx</span>r-xr-x. 28 <span style="color: #0000ff;">apache</span> root 4096 Mar 4 00:37 administrator/components/</pre>
<p>ขั้นต่อไปจะมีการตรวจสอบ SELinux Contexts ของไฟล์ ใช้คำสั่ง ls ตามด้วยออปชั่น &#8216;-Z&#8217;</p>
<pre>[root@fc16-64a joomla25]# <strong>ls -Zd administrator/components/</strong>
drwxr-xr-x. apache root system_u:object_r:<span style="color: #0000ff;">httpd_sys_content_t</span>:s0 administrator/components/</pre>
<p>ในที่นี้ให้สนใจเฉพาะ httpd_sys_content_t เป็น SELinux Context &#8220;type&#8221; ของไฟล์</p>
<p>อ้างอิงจาก</p>
<p>http://docs.redhat.com/docs/en-US/Red_Hat_Enterprise_Linux/6/html/Managing_Confined_Services/sect-Managing_Confined_Services-The_Apache_HTTP_Server-Types.html</p>
<p><span style="color: #0000ff;">httpd_sys_content_t</span><br />
Use this type for static web content, such as .html files used by a static website. Files labeled with this type are accessible <span style="color: #0000ff;">(read only) to httpd and scripts executed by httpd</span>. By default, files and directories labeled with this type can not be written to or modified by httpd or other processes. Note: by default, files created in or copied into /var/www/html/ are labeled with the httpd_sys_content_t type.</p>
<p>ไฟล์ที่มีค่า &#8220;type&#8221; แบบนี้ สามารถอ่านได้อย่างเดียว (readonly) เท่านั้น</p>
<h4>การแก้ไขปัญหา</h4>
<p>ต้องเปลี่ยน &#8220;type&#8221; ของไฟล์เป็นแบบอื่น เท่าที่ทดสอบดู ลองเปลี่ยนเป็น httpd_sys_content_rw_t ก็น่าจะสามารถเขียนได้แล้ว</p>
<p>หมายเหตุ มีหลายวิธีการที่แก้ไขปัญหานี้ได้ ขอออกตัวว่านี่เป็นวิธีการหนึ่งเท่านั้นที่น่าง่ายสุด และตรงไปตรงมา</p>
<p><span style="color: #0000ff;">httpd_sys_content_rw_t</span><br />
Files labeled with this type <span style="color: #0000ff;">can be written to by scripts labeled with the httpd_sys_script_exec_t type</span>, but can not be modified by scripts labeled with any other type. You must use the httpd_sys_content_rw_t type to label files that will be read from and written to by scripts labeled with the httpd_sys_script_exec_t type.<br />
ใช้คำสั่ง chcon เพื่อเปลี่ยน SELinux security context ของไฟล์</p>
<p>ตัวอย่างการทดลองเปลี่ยนสองไดเร็คทอรี</p>
<pre>[root@fc16-64a joomla25]# <strong>chcon -t httpd_sys_content_rw_t administrator/components/</strong>
[root@fc16-64a joomla25]# <strong>chcon -t httpd_sys_content_rw_t administrator/language/</strong></pre>
<pre>[root@fc16-64a joomla25]# <strong>ls -Zd administrator/components/</strong>
drwxr-xr-x. apache root system_u:object_r:httpd_sys_rw_content_t:s0 administrator/components/</pre>
<pre>[root@fc16-64a joomla25]# <strong>ls -Zd administrator/language/</strong>
drwxr-xr-x. apache root system_u:object_r:httpd_sys_rw_content_t:s0 administrator/language/</pre>
<p>ทดลองรีเฟรชในหน้าจอ Joomla Administration ก็จะเปลี่ยนเป็น Writable แล้ว</p>
<p><a href="http://spalinux.com/wp-content/uploads/2012/03/s01-after-chcon.png"><img class="alignnone size-full wp-image-1678" title="s01-after-chcon" src="http://spalinux.com/wp-content/uploads/2012/03/s01-after-chcon.png" alt="" width="793" height="422" /></a></p>
<p>&nbsp;</p>
<p>ส่วนที่เหลือก็ไล่เปลี่ยนไดเร็คทอรีทั้งหมดที่แสดงขึ้นมาว่า Unwritable</p>
<p>ขออธิบายแค่นี้ก่อน บอกตามตรงเป็นเรื่องยากพอสมควร ในการทำความเข้าใจ และแก้ปัญหา SELinux แต่ด้วยข้อดีเพื่อช่วยเพิ่มความปลอดภัยให้กับระบบ ทางผู้เขียน จะพยายามศึกษา ทดลอง แล้วนำมาแชร์เล่าสู่กันฟัง</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<h4>ข้อมูลอ้างอิง</h4>
<ul>
<li><a href="http://spalinux.com/2012/03/fix-file-permission-after-install-joomla-2-5">แก้ไข permission ไฟล์หลังการติดตั้ง Joomla 2.5</a></li>
<li><a href="http://docs.redhat.com/docs/en-US/Red_Hat_Enterprise_Linux/6/html/Security-Enhanced_Linux/index.html" target="_blank">Red Hat Enterprise Linux 6 : Security-Enhanced Linux User Guide Edition 2</a></li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://spalinux.com/2012/03/fix-joomla-directory-permissions-unwritable-on-linux-enable-selinux/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>แก้ไข permission ไฟล์หลังการติดตั้ง Joomla 2.5</title>
		<link>http://spalinux.com/2012/03/fix-file-permission-after-install-joomla-2-5</link>
		<comments>http://spalinux.com/2012/03/fix-file-permission-after-install-joomla-2-5#comments</comments>
		<pubDate>Sat, 03 Mar 2012 16:59:12 +0000</pubDate>
		<dc:creator>editor</dc:creator>
				<category><![CDATA[CMS]]></category>
		<category><![CDATA[HTML]]></category>
		<category><![CDATA[Programming]]></category>
		<category><![CDATA[Web Server]]></category>
		<category><![CDATA[directory]]></category>
		<category><![CDATA[file]]></category>
		<category><![CDATA[joomla]]></category>
		<category><![CDATA[permission]]></category>

		<guid isPermaLink="false">http://spalinux.com/?p=1659</guid>
		<description><![CDATA[หลัง ติดตั้ง Joomla 2.5 บนลีนุกซ์ เสร็จเรียบร้อยแล้ว ต้องมีการแก้ไข permission ของไฟล์และไดเร็คทอรีที่ติดตั้งให้ถูกต้อง เพื่อให้สามารถใช้งานผ่านเว็บ ไม่ว่าจะเป็นการติดตั้งโมดูลใหม่ plugin template การเพิ่มรูป การแก้ไขข้อมูล เข้าสู่หน้า Adminstration ภายใต้เมนู Site -&#62; System Information คลิ้กที่แท็ป Directory Permissions จะแสดงข้อมูล permission ของแต่ละไดเร็คทอรี ต้องแก้ไขให้ Status เป็น Writable ทั้งหมด &#160; วิธีการแก้ไข ทำได้สองวิธี 1. ถ้าเป็น root แนะนำให้ใช้คำสั่ง chown เพื่อเปลี่ยน owner ของไดเร็คทอรี ให้เป็น apache 2. ถ้าไม่สามารถ log เป็น root ได้ ต้องใช้คำสั่ง chmod เพื่อเปลี่ยน permission เป็น [...]]]></description>
			<content:encoded><![CDATA[<p>หลัง <a href="http://spalinux.com/2012/03/install-joomla-2-5-on-linux">ติดตั้ง Joomla 2.5 บนลีนุกซ์</a> เสร็จเรียบร้อยแล้ว ต้องมีการแก้ไข permission ของไฟล์และไดเร็คทอรีที่ติดตั้งให้ถูกต้อง เพื่อให้สามารถใช้งานผ่านเว็บ ไม่ว่าจะเป็นการติดตั้งโมดูลใหม่ plugin template การเพิ่มรูป การแก้ไขข้อมูล</p>
<p><span id="more-1659"></span></p>
<p>เข้าสู่หน้า Adminstration</p>
<p>ภายใต้เมนู Site -&gt; System Information คลิ้กที่แท็ป Directory Permissions จะแสดงข้อมูล permission ของแต่ละไดเร็คทอรี ต้องแก้ไขให้ Status เป็น Writable ทั้งหมด</p>
<p><a href="http://spalinux.com/wp-content/uploads/2012/03/f01-Directory-Permissions.png"><img class="alignnone size-full wp-image-1660" title="f01-Directory-Permissions" src="http://spalinux.com/wp-content/uploads/2012/03/f01-Directory-Permissions.png" alt="" width="802" height="600" /></a></p>
<p>&nbsp;</p>
<p>วิธีการแก้ไข ทำได้สองวิธี</p>
<p>1. ถ้าเป็น root แนะนำให้ใช้คำสั่ง chown เพื่อเปลี่ยน owner ของไดเร็คทอรี ให้เป็น apache<br />
2. ถ้าไม่สามารถ log เป็น root ได้ ต้องใช้คำสั่ง chmod เพื่อเปลี่ยน permission เป็น 777</p>
<p>ตัวอย่างการใช้คำสั่ง chown เพื่อเปลี่ยน owner ของไฟล์ ให้เป็น apache</p>
<pre>[root@fc16-64a ~]# cd /var/www/html/joomla25/</pre>
<pre>[root@fc16-64a joomla25]# chown apache administrator/components
[root@fc16-64a joomla25]# chown apache administrator/language
[root@fc16-64a joomla25]# chown apache administrator/language/en-GB
[root@fc16-64a joomla25]# chown apache administrator/language/overrides
[root@fc16-64a joomla25]# chown apache administrator/manifests/files
[root@fc16-64a joomla25]# chown apache administrator/manifests/libraries
[root@fc16-64a joomla25]# chown apache administrator/manifests/packages
[root@fc16-64a joomla25]# chown apache administrator/modules
[root@fc16-64a joomla25]# chown apache administrator/templates
[root@fc16-64a joomla25]# chown apache components
[root@fc16-64a joomla25]# chown apache images
[root@fc16-64a joomla25]# chown apache images/banners
[root@fc16-64a joomla25]# chown apache images/sampledata
[root@fc16-64a joomla25]# chown apache language
[root@fc16-64a joomla25]# chown apache language/en-GB
[root@fc16-64a joomla25]# chown apache language/overrides
[root@fc16-64a joomla25]# chown apache libraries
[root@fc16-64a joomla25]# chown apache media
[root@fc16-64a joomla25]# chown apache modules
[root@fc16-64a joomla25]# chown apache plugins
[root@fc16-64a joomla25]# chown apache plugins/authentication
[root@fc16-64a joomla25]# chown apache plugins/captcha
[root@fc16-64a joomla25]# chown apache plugins/content
[root@fc16-64a joomla25]# chown apache plugins/editors
[root@fc16-64a joomla25]# chown apache plugins/editors-xtd/
[root@fc16-64a joomla25]# chown apache plugins/extension
[root@fc16-64a joomla25]# chown apache plugins/finder
[root@fc16-64a joomla25]# chown apache plugins/quickicon
[root@fc16-64a joomla25]# chown apache plugins/search
[root@fc16-64a joomla25]# chown apache plugins/system
[root@fc16-64a joomla25]# chown apache plugins/user
[root@fc16-64a joomla25]# chown apache templates
[root@fc16-64a joomla25]# chown apache cache
[root@fc16-64a joomla25]# chown apache administrator/cache
[root@fc16-64a joomla25]# chown apache logs
[root@fc16-64a joomla25]# chown apache tmp</pre>
<pre></pre>
<p>รีเฟรชหน้าเพจ หลังการแก้ไข</p>
<p><a href="http://spalinux.com/wp-content/uploads/2012/03/f02-After-Fix-Directory-Permissions.png"><img class="alignnone size-full wp-image-1668" title="f02-After-Fix-Directory-Permissions" src="http://spalinux.com/wp-content/uploads/2012/03/f02-After-Fix-Directory-Permissions.png" alt="" width="801" height="627" /></a></p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<h4>ข้อมูลอ้างอิง</h4>
<ul>
<li><a href="http://spalinux.com/2012/03/install-joomla-2-5-on-linux">ติดตั้ง Joomla 2.5 บนลีนุกซ์</a></li>
<li><a href="http://spalinux.com/2012/03/fix-joomla-directory-permissions-unwritable-on-linux-enable-selinux">แก้ไข Joomla Directory Permissions Unwritable บนลีนุกซ์ที่เปิด SELinux</a></li>
</ul>
<p>&nbsp;</p>
<p>&nbsp;</p>
]]></content:encoded>
			<wfw:commentRss>http://spalinux.com/2012/03/fix-file-permission-after-install-joomla-2-5/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>ติดตั้ง Joomla 2.5 บนลีนุกซ์</title>
		<link>http://spalinux.com/2012/03/install-joomla-2-5-on-linux</link>
		<comments>http://spalinux.com/2012/03/install-joomla-2-5-on-linux#comments</comments>
		<pubDate>Sat, 03 Mar 2012 08:09:03 +0000</pubDate>
		<dc:creator>editor</dc:creator>
				<category><![CDATA[CMS]]></category>
		<category><![CDATA[Programming]]></category>
		<category><![CDATA[SEO]]></category>
		<category><![CDATA[cms]]></category>
		<category><![CDATA[joomla]]></category>

		<guid isPermaLink="false">http://spalinux.com/?p=1643</guid>
		<description><![CDATA[คิดจะตั้งเว็บไซต์ คิดถึง Joomla ติดตั้งง่าย ใช้งานง่าย สามารถจัดการ แก้ไขข้อมูลไม่ว่าจะเป็นเนื้อหา รูปภาพ สามารถทำผ่านหน้าเว็บได้ทั้งหมด ด้วยคุณสมบัติที่หลากหลาย และที่สำคัญเป็นมิตรต่อ Search Engine (SEO Friendly) เพิ่มโอกาสที่ผู้สนใจหรือลูกค้า สามารถค้นหาข้อมูลแล้วเจอเว็บของเราได้มากขึ้น มาลองดูวิธีการติดตั้งง่ายๆ กันบนลีนุกซ์ ระบบทดสอบ Joomla เวอร์ชั่น 2.5.1 Fedora 16 (ปิด SELinux, iptables) IP: 192.168.5.16 Apache DocumentRoot /var/www/html ดาวน์โหลดไฟล์ Joomla 2.5 ไว้ในไดเร็คทอรี DocumentRoot [root@fc16-64a ~]# cd /var/www/html/ [root@fc16-64a html]# ls -l Joomla_2.5.1-Stable-Full_Package.zip -rw-r--r--. 1 root root 7980714 Mar  3 13:42 [...]]]></description>
			<content:encoded><![CDATA[<p>คิดจะตั้งเว็บไซต์ คิดถึง Joomla</p>
<p>ติดตั้งง่าย ใช้งานง่าย สามารถจัดการ แก้ไขข้อมูลไม่ว่าจะเป็นเนื้อหา รูปภาพ สามารถทำผ่านหน้าเว็บได้ทั้งหมด</p>
<p>ด้วยคุณสมบัติที่หลากหลาย และที่สำคัญเป็นมิตรต่อ Search Engine (SEO Friendly) เพิ่มโอกาสที่ผู้สนใจหรือลูกค้า สามารถค้นหาข้อมูลแล้วเจอเว็บของเราได้มากขึ้น</p>
<p>มาลองดูวิธีการติดตั้งง่ายๆ กันบนลีนุกซ์</p>
<p><span id="more-1643"></span><br />
ระบบทดสอบ</p>
<ul>
<li>Joomla เวอร์ชั่น 2.5.1</li>
<li>Fedora 16 (ปิด SELinux, iptables)</li>
<li>IP: 192.168.5.16</li>
<li>Apache DocumentRoot /var/www/html</li>
</ul>
<p>ดาวน์โหลดไฟล์ Joomla 2.5 ไว้ในไดเร็คทอรี DocumentRoot</p>
<pre>[root@fc16-64a ~]# <strong>cd /var/www/html/</strong></pre>
<pre>[root@fc16-64a html]# ls -l Joomla_2.5.1-Stable-Full_Package.zip
-rw-r--r--. 1 root root 7980714 Mar  3 13:42 Joomla_2.5.1-Stable-Full_Package.zip</pre>
<p>&nbsp;</p>
<p>สร้างไดเร็คทอรี แล้วใช้คำสั่ง unzip เพื่อแตกไฟล์ zip ในไดเร็คทอรีที่สร้างใหม่นี้</p>
<pre>[root@fc16-64a html]# <strong>mkdir joomla25</strong>
[root@fc16-64a html]# <strong>cd joomla25/</strong>
[root@fc16-64a joomla25]# <strong>unzip ../Joomla_2.5.1-Stable-Full_Package.zip</strong>
Archive:  ../Joomla_2.5.1-Stable-Full_Package.zip
  inflating: LICENSE.txt
  inflating: README.txt
   creating: administrator/
   creating: administrator/cache/
  inflating: administrator/cache/index.html
   creating: administrator/components/
   creating: administrator/components/com_admin/
  inflating: administrator/components/com_admin/admin.php
  inflating: administrator/components/com_admin/admin.xml
...
   creating: tmp/
  inflating: tmp/index.html
  inflating: web.config.txt
[root@fc16-64a joomla25]#</pre>
<p>&nbsp;</p>
<p>เปิด Web Browser ไปยัง path ที่ unzip ไว้ ในที่นี้คือ http://192.168.5.16/joomla25/</p>
<p>หน้าแรกจะเป็นการเลือกภาษาที่ใช้ตอนติดตั้ง เลือก English แล้วกดปุ่ม Next</p>
<p><a href="http://spalinux.com/wp-content/uploads/2012/03/j01-Choose-language.png"><img class="alignnone size-full wp-image-1644" title="j01-Choose-language" src="http://spalinux.com/wp-content/uploads/2012/03/j01-Choose-language.png" alt="" width="1040" height="577" /></a></p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>หน้า Pre-Installation Check เป็นการตรวจสอบคอนฟิกของเซิร์ฟเวอร์ว่าสามารถใช้รัน Joomla ได้หรือไม่</p>
<p><a href="http://spalinux.com/wp-content/uploads/2012/03/j02a-Pre-Installation-Check.png"><img class="alignnone size-full wp-image-1645" title="j02a-Pre-Installation-Check" src="http://spalinux.com/wp-content/uploads/2012/03/j02a-Pre-Installation-Check.png" alt="" width="1036" height="459" /></a></p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>ตัวอย่างการแก้ไขปัญหา &#8220;configuration.php Writeable&#8221; ที่ฟ้องขึ้นมาในหน้า Pre-Installation Check</p>
<p><a href="http://spalinux.com/wp-content/uploads/2012/03/j02b-fix-configuration.php-Writable-No.png"><img class="alignnone size-full wp-image-1646" title="j02b-fix-configuration.php-Writable-No" src="http://spalinux.com/wp-content/uploads/2012/03/j02b-fix-configuration.php-Writable-No.png" alt="" width="523" height="113" /></a></p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>สร้างไฟล์ configuration.php แล้วเปลี่ยน permission ให้ Apache Web Server สามารถเขียนอ่านได้</p>
<pre>[root@fc16-64a joomla25]# <strong>pwd</strong>
/var/www/html/joomla25
[root@fc16-64a joomla25]# <strong>touch configuration.php</strong>
[root@fc16-64a joomla25]# <strong>chown apache.apache configuration.php</strong>
[root@fc16-64a joomla25]# <strong>chmod 640 configuration.php</strong></pre>
<p>&nbsp;</p>
<p>หลังจากแก้แล้ว ทดลองกดปุ่ม [Check Again] อีกครั้ง</p>
<p><a href="http://spalinux.com/wp-content/uploads/2012/03/j02c-fix-configuration.php-Writable-Yes.png"><img class="alignnone size-full wp-image-1647" title="j02c-fix-configuration.php-Writable-Yes" src="http://spalinux.com/wp-content/uploads/2012/03/j02c-fix-configuration.php-Writable-Yes.png" alt="" width="309" height="18" /></a></p>
<p>&nbsp;</p>
<p>ถ้าถูกต้องแล้ว กดปุ่ม [Next]</p>
<p>หน้า License ให้เรารับทราบ กด [Next]</p>
<p><a href="http://spalinux.com/wp-content/uploads/2012/03/j03-License.png"><img class="alignnone size-full wp-image-1648" title="j03-License" src="http://spalinux.com/wp-content/uploads/2012/03/j03-License.png" alt="" width="1037" height="305" /></a></p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>หน้า Database Configuration</p>
<p>ใช้คำสั่ง mysql หรือ phpmyadmin สร้าง Database สำหรับเก็บข้อมูล Joomla และ GRANT Username, Password เพื่อให้แก้ไขข้อมูลได้</p>
<p>&nbsp;</p>
<pre>mysql&gt; <strong>CREATE DATABASE joomla25;</strong>
Query OK, 1 row affected (0.00 sec)

mysql&gt; <strong>GRANT ALL ON joomla25.* TO joomla IDENTIFIED BY 'joom.secret';</strong>
Query OK, 0 rows affected (0.03 sec)</pre>
<p>&nbsp;</p>
<p>กรอกข้อมูล Username, Password, Database Name ที่สร้างไว้</p>
<p><a href="http://spalinux.com/wp-content/uploads/2012/03/j04-Database-Confiugaration.png"><img class="alignnone size-full wp-image-1649" title="j04-Database-Confiugaration" src="http://spalinux.com/wp-content/uploads/2012/03/j04-Database-Confiugaration.png" alt="" width="1036" height="473" /></a></p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>หน้า FTP Configuration กดปุ่ม [Next] ข้ามไป เพราะเราจะไม่ใช้ FTP</p>
<p><a href="http://spalinux.com/wp-content/uploads/2012/03/j05-FTP-Configuration.png"><img class="alignnone size-full wp-image-1650" title="j05-FTP-Configuration" src="http://spalinux.com/wp-content/uploads/2012/03/j05-FTP-Configuration.png" alt="" width="1035" height="353" /></a></p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>หน้า Main Configuration กรอกข้อมูลเบื้องต้นเกี่ยวกับเว็บไซต์</p>
<p>Site Name: ชื่อเว็บไซต์ จะขึ้นเป็น Title<br />
Your Email: กรอกอีเมล์ของ Administrator<br />
Admin Username: ชื่อ Username ของ Administrator แนะนำให้เปลี่ยนเป็นชื่ออื่น เพื่อความปลอดภัย<br />
Admin Password: กรอก Password ของ Administartor สองครั้ง</p>
<p>กดปุ่ม [Install Sample Data] หากต้องการโหลดข้อมูลตัวอย่าง</p>
<p>เสร็จแล้วกดปุ่ม [Next]</p>
<p><a href="http://spalinux.com/wp-content/uploads/2012/03/j06-Main-Configuration.png"><img class="alignnone size-full wp-image-1651" title="j06-Main-Configuration" src="http://spalinux.com/wp-content/uploads/2012/03/j06-Main-Configuration.png" alt="" width="1034" height="528" /></a></p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>หน้า Finish  สุดท้าย ต้องลบไดเร็คทอรี installation ออก ไม่งั้นจะไม่สามารถใช้งานได้</p>
<p><a href="http://spalinux.com/wp-content/uploads/2012/03/j07-Finish.png"><img class="alignnone size-full wp-image-1652" title="j07-Finish" src="http://spalinux.com/wp-content/uploads/2012/03/j07-Finish.png" alt="" width="1037" height="419" /></a></p>
<p>&nbsp;</p>
<pre>[root@fc16-64a joomla25]# <strong>rm -rf installation/</strong></pre>
<p>&nbsp;</p>
<p>ด้านบนขวาในหน้า Finish จะมีปุ่มให้สามารถกด Site หรือ Administator ได้</p>
<p>ปุ่ม  Site เพื่อเข้าหน้า front-end หรือหน้าเว็บที่คนทั่วไปจะเห็น</p>
<p><a href="http://spalinux.com/wp-content/uploads/2012/03/j08-Site.png"><img class="alignnone size-full wp-image-1653" title="j08-Site" src="http://spalinux.com/wp-content/uploads/2012/03/j08-Site.png" alt="" width="1079" height="608" /></a></p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>ปุ่ม Administartor สำหรับเข้าหน้า back-end สำหรับ Administrator</p>
<p><a href="http://spalinux.com/wp-content/uploads/2012/03/j09-Administration-Login.png"><img class="alignnone size-full wp-image-1654" title="j09-Administration-Login" src="http://spalinux.com/wp-content/uploads/2012/03/j09-Administration-Login.png" alt="" width="1082" height="587" /></a></p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<h4> ข้อมูลอ้างอิง</h4>
<ul>
<li><a href="http://www.joomla.org/" target="_blank">Joomla!</a></li>
<li><a href="http://spalinux.com/2012/03/fix-file-permission-after-install-joomla-2-5">แก้ไข permission ไฟล์หลังการติดตั้ง Joomla 2.5</a></li>
<li><a href="http://spalinux.com/2012/03/fix-joomla-directory-permissions-unwritable-on-linux-enable-selinux">แก้ไข Joomla Directory Permissions Unwritable บนลีนุกซ์ที่เปิด SELinux</a></li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://spalinux.com/2012/03/install-joomla-2-5-on-linux/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<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>
	</channel>
</rss>

