<?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; Apache</title>
	<atom:link href="http://spalinux.com/category/apache/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  อัพโหลดไฟล์ไม่ได้</title>
		<link>http://spalinux.com/2012/05/fix-wordpress-cannot-upload-file</link>
		<comments>http://spalinux.com/2012/05/fix-wordpress-cannot-upload-file#comments</comments>
		<pubDate>Sat, 12 May 2012 10:35:27 +0000</pubDate>
		<dc:creator>editor</dc:creator>
				<category><![CDATA[Apache]]></category>
		<category><![CDATA[CentOS 6]]></category>
		<category><![CDATA[Filesystem]]></category>
		<category><![CDATA[HTML]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[Troubleshooting]]></category>
		<category><![CDATA[Web Server]]></category>
		<category><![CDATA[upload file error]]></category>

		<guid isPermaLink="false">http://spalinux.com/?p=2359</guid>
		<description><![CDATA[หลังจาก ติดตั้ง WordPress บน CentOS 6 เรียบร้อยแล้ว หากเจอปัญหาสามารถโพสต์ข้อความได้ แต่ไม่สามารถอัพโหลด (upload) ไฟล์ เช่นรูป ได้ ตัวอย่างข้อความ error เมื่อ upload file &#8220;Picture-01.jpg&#8221; has failed to upload due to an error Unable to create directory /var/www/html/wordpress/wp-content/uploads/2012/05. Is its parent directory writable by the server? ในที่นี้จะแสดงวิธีการแก้ไขปัญหา สาเหตเป็นเพราะ wordpress ไม่สามารถสร้างไฟล์หรือไดเร็คทอรี เพื่อเก็บไฟล์ที่อัพโหลดได้ โดยดีฟอลต์ wordpress จะสร้างไฟล์ที่อัพโหลดไว้ภายใต้ไดเร็คทอรี wp-content/uploads เทียบกับไดเร็คทอรีที่ติดตั้ง (เช่น /var/www/html/wordpress/) โดยจะแยกย่อยเป็นปี คศ. และเลขเดือนอีกที [...]]]></description>
			<content:encoded><![CDATA[<p>หลังจาก <a title="View Details: ติดตั้ง WordPress บน CentOS 6" href="http://spalinux.com/2012/05/install-wordpress-on-centos-6" rel="bookmark">ติดตั้ง WordPress บน CentOS 6</a> เรียบร้อยแล้ว หากเจอปัญหาสามารถโพสต์ข้อความได้ แต่ไม่สามารถอัพโหลด (upload) ไฟล์ เช่นรูป ได้</p>
<p>ตัวอย่างข้อความ error เมื่อ upload file</p>
<p><span style="color: #ff0000;">&#8220;Picture-01.jpg&#8221; has failed to upload due to an error</span><br />
<span style="color: #ff0000;">Unable to create directory /var/www/html/wordpress/wp-content/uploads/2012/05. Is its parent directory writable by the server?</span></p>
<p>ในที่นี้จะแสดงวิธีการแก้ไขปัญหา</p>
<p><span id="more-2359"></span></p>
<p><a href="http://spalinux.com/wp-content/uploads/2012/05/w31-wordpress-fail-to-upload-due-to-error-unable-to-create-directory.png"><img class="alignnone size-full wp-image-2360" title="w31-wordpress-fail-to-upload-due-to-error-unable-to-create-directory" src="http://spalinux.com/wp-content/uploads/2012/05/w31-wordpress-fail-to-upload-due-to-error-unable-to-create-directory.png" alt="" width="834" height="600" /></a></p>
<p>สาเหตเป็นเพราะ wordpress ไม่สามารถสร้างไฟล์หรือไดเร็คทอรี เพื่อเก็บไฟล์ที่อัพโหลดได้</p>
<p>โดยดีฟอลต์ wordpress จะสร้างไฟล์ที่อัพโหลดไว้ภายใต้ไดเร็คทอรี wp-content/uploads เทียบกับไดเร็คทอรีที่ติดตั้ง (เช่น /var/www/html/wordpress/) โดยจะแยกย่อยเป็นปี คศ. และเลขเดือนอีกที</p>
<p>วิธีการแก้ไขปัญหา ต้องสร้างไดเร็คทอรี uploads ขึ้นมา แล้วเปลี่ยนสิทธิ (permission) ให้ wordpress สามารถเขียนได้ หากใช้ Apache เป็นเว็บเซิร์ฟเวอร์รันด้วยชื่อผู้ใช้ apache การเปลี่ยนสิทธิก็คือการอนุญาตให้ apache สามารถเขียน (write) ไดเร็คทอรี uploads ได้นั่นเอง</p>
<p>โดยดีฟอลต์จากการติดตั้ง wordpress จะไม่มีไดเร็คทอรี uploads</p>
<pre>[root@cent6 ~]# <strong>cd /var/www/html/wordpress/wp-content/</strong>
[root@cent6 wp-content]# <strong>ls -l</strong>
total 12
-rw-r--r--. 1 root root   30 May  5  2007 index.php
drwxr-xr-x. 3 root root 4096 Apr 20 21:54 plugins
drwxr-xr-x. 4 root root 4096 Apr 20 21:54 themes</pre>
<p>ใช้คำสั่ง mkdir, chown, chmod สร้างไดเร็คทอรี uploads และเปลี่ยนสิทธิ</p>
<pre>[root@cent6 wp-content]# <strong>mkdir uploads</strong>
[root@cent6 wp-content]# <strong>chown apache uploads/</strong>
[root@cent6 wp-content]# <strong>chmod 700 uploads/</strong>
[root@cent6 wp-content]# <strong>ls -l</strong>
total 16
-rw-r--r--. 1 root   root   30 May  5  2007 index.php
drwxr-xr-x. 3 root   root 4096 Apr 20 21:54 plugins
drwxr-xr-x. 4 root   root 4096 Apr 20 21:54 themes
drwx------. 2 apache root 4096 May 12 16:58 uploads</pre>
<p>ส่วนไดเร็คทอรีย่อย ปีคศ. และเลขเดือน โปรแกรม wordpress จะสร้างขึ้นมาเองอัตโนมัติ</p>
<p>ทดลองโพสต์แล้วอัพโหลดรูปอีกครั้ง</p>
<p><a href="http://spalinux.com/wp-content/uploads/2012/05/w32-upload-success.png"><img class="alignnone size-full wp-image-2361" title="w32-upload-success" src="http://spalinux.com/wp-content/uploads/2012/05/w32-upload-success.png" alt="" width="834" height="651" /></a><br />
ลองดูไฟล์และไดเร็คทอรีที่ถูกสร้างใน uploads</p>
<pre>[root@cent6 wp-content]# <strong>ls -lR uploads/</strong>
uploads/:
total 4
drwx------. 3 apache apache 4096 May 12 17:02 2012

uploads/2012:
total 4
drwx------. 2 apache apache 4096 May 12 17:02 05

uploads/2012/05:
total 36
-rw-------. 1 apache apache 33625 May 12 17:02 Picture-01.jpg</pre>
<p>&nbsp;</p>
<p>หมายเหตุ ออปชั่น &#8216;-R&#8217; ของคำสั่ง ls เป็นการแสดงข้อมูลไฟล์และไดเร็คทอรีย่อยทั้งหมด</p>
<p>&nbsp;</p>
<h4>ข้อมูลอ้างอิง</h4>
<ul>
<li><a title="View Details: ติดตั้ง WordPress บน CentOS 6" href="http://spalinux.com/2012/05/install-wordpress-on-centos-6" rel="bookmark">ติดตั้ง WordPress บน CentOS 6</a></li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://spalinux.com/2012/05/fix-wordpress-cannot-upload-file/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<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</title>
		<link>http://spalinux.com/2012/04/install-apache-web-server</link>
		<comments>http://spalinux.com/2012/04/install-apache-web-server#comments</comments>
		<pubDate>Sun, 01 Apr 2012 09:00:02 +0000</pubDate>
		<dc:creator>editor</dc:creator>
				<category><![CDATA[Apache]]></category>
		<category><![CDATA[CentOS 6]]></category>
		<category><![CDATA[Web Server]]></category>

		<guid isPermaLink="false">http://spalinux.com/?p=1929</guid>
		<description><![CDATA[ในบทนี้จะสอนวิธีการติดตั้งไฟล์ rpm เพื่อจะรันเป็นเว็บเซิรฟ์เวอร์ Apache บน CentOS 6.2 โดยจะอธิบายทีละขั้นตอน ถึงวิธีการติดตั้งไฟล์ 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 ของ Apache Web Server จะมีชื่อไฟล์ขึ้นต้นด้วย httpd [root@cent6 ~]# cd /mnt/Packages/ [root@cent6 Packages]# ls -l httpd* -rw-r--r--. 2 500 [...]]]></description>
			<content:encoded><![CDATA[<p>ในบทนี้จะสอนวิธีการติดตั้งไฟล์ rpm เพื่อจะรันเป็นเว็บเซิรฟ์เวอร์ Apache บน CentOS 6.2</p>
<p>โดยจะอธิบายทีละขั้นตอน ถึงวิธีการติดตั้งไฟล์ rpm และการแก้ไขปัญหา</p>
<p><span id="more-1929"></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 ของ Apache Web Server จะมีชื่อไฟล์ขึ้นต้นด้วย httpd</p>
<pre>[root@cent6 ~]# <strong>cd /mnt/Packages/</strong>
[root@cent6 Packages]# <strong>ls -l httpd*</strong>
-rw-r--r--. 2 500 500 828156 Dec 9 03:06 httpd-2.2.15-15.el6.centos.x86_64.rpm
-rw-r--r--. 4 500 500 150236 Dec 9 03:06 httpd-devel-2.2.15-15.el6.centos.i686.rpm
-rw-r--r--. 2 500 500 150200 Dec 9 03:06 httpd-devel-2.2.15-15.el6.centos.x86_64.rpm
-rw-r--r--. 2 500 500 799272 Dec 9 03:06 httpd-manual-2.2.15-15.el6.centos.noarch.rpm
-rw-r--r--. 2 500 500 71296 Dec 9 03:06 httpd-tools-2.2.15-15.el6.centos.x86_64.rpm</pre>
<p>ไฟล์ที่จำเป็นต้องติดตั้งเพื่อรันเป็นเว็บเซิร์ฟเวอร์คือ httpd กับ httpd-tools</p>
<p>ใช้คำสั่ง rpm -i เพื่อติดตั้งไฟล์ httpd</p>
<pre>[root@cent6 Packages]# <strong>rpm -i httpd-2.2.15-15.el6.centos.x86_64.rpm</strong>
<span style="color: #ff0000;">error: Failed dependencies</span>:
 /etc/mime.types is needed by httpd-2.2.15-15.el6.centos.x86_64
 apr-util-ldap is needed by httpd-2.2.15-15.el6.centos.x86_64
 httpd-tools = 2.2.15-15.el6.centos is needed by httpd-2.2.15-15.el6.centos.x86_64
 libapr-1.so.0()(64bit) is needed by httpd-2.2.15-15.el6.centos.x86_64
 libaprutil-1.so.0()(64bit) is needed by httpd-2.2.15-15.el6.centos.x86_64</pre>
<p>ต้องลงไฟล์ rpm อื่นก่อน ที่เห็นชัดพอจะเดาได้คือ httpd-tools</p>
<p>ลองลง httpd-tools ดู</p>
<pre>[root@cent6 Packages]# <strong>rpm -i httpd-tools-2.2.15-15.el6.centos.x86_64.rpm</strong>
<span style="color: #ff0000;">error: Failed dependencies</span>:
 libapr-1.so.0()(64bit) is needed by httpd-tools-2.2.15-15.el6.centos.x86_64
 libaprutil-1.so.0()(64bit) is needed by httpd-tools-2.2.15-15.el6.centos.x86_64</pre>
<p>ก็จำเป็นต้องลง libapr กับ libaprutil ก่อน ลองหาข้อมูลบนอินเตอร์เน็ต สองไฟล์นี้อยู่ในไฟล์ rpm ที่มีชื่อ apr กับ apr-util</p>
<p>ใช้คำสั่ง ls ดูไฟล์ในแผ่นที่ขึ้นต้นด้วย apr</p>
<pre>[root@cent6 Packages]# <strong>ls -l apr-*</strong>
-rw-r--r--. 4 500 500 132120 Sep 28 2011 apr-1.3.9-3.el6_1.2.i686.rpm
-rw-r--r--. 2 500 500 126336 Sep 28 2011 apr-1.3.9-3.el6_1.2.x86_64.rpm
-rw-r--r--. 4 500 500 180328 Sep 28 2011 apr-devel-1.3.9-3.el6_1.2.i686.rpm
-rw-r--r--. 2 500 500 180300 Sep 28 2011 apr-devel-1.3.9-3.el6_1.2.x86_64.rpm
-rw-r--r--. 4 500 500 91196 Jul 6 2011 apr-util-1.3.9-3.el6_0.1.i686.rpm
-rw-r--r--. 2 500 500 89340 Jul 6 2011 apr-util-1.3.9-3.el6_0.1.x86_64.rpm
-rw-r--r--. 4 500 500 70424 Jul 6 2011 apr-util-devel-1.3.9-3.el6_0.1.i686.rpm
-rw-r--r--. 2 500 500 70420 Jul 6 2011 apr-util-devel-1.3.9-3.el6_0.1.x86_64.rpm
-rw-r--r--. 2 500 500 15824 Jul 6 2011 apr-util-ldap-1.3.9-3.el6_0.1.x86_64.rpm</pre>
<p>สำหรับ apr จะมีสองไฟล์ ลงท้ายด้วย i686.rpm กับ x86_64.rpm</p>
<ul>
<li>ไฟล์ rpm ที่ลงท้ายด้วย i686.rpm สำหรับลงบนลีนุกซ์ 32 bit</li>
<li>ไฟล์ rpm ที่ลงท้ายด้วย x86_64.rpm สำหรับลงบนลีนุกซ์ 64 bit</li>
</ul>
<p>ในที่นี้เลือกไฟล์ลงท้ายด้วย x86_64.rpm</p>
<p>ติดตั้งไฟล์ rpm ของ apr กับ apr-util</p>
<pre>[root@cent6 Packages]# <strong>rpm -i apr-1.3.9-3.el6_1.2.x86_64.rpm</strong>
[root@cent6 Packages]# <strong>rpm -i apr-util-1.3.9-3.el6_0.1.x86_64.rpm</strong></pre>
<p>ลองติดตั้ง httpd-tools อีกครั้ง</p>
<pre>[root@cent6 Packages]# <strong>rpm -i httpd-tools-2.2.15-15.el6.centos.x86_64.rpm</strong></pre>
<p>ติดตั้งสำเร็จ ลองติดตั้ง httpd อีกครั้ง</p>
<pre>[root@cent6 Packages]# <strong>rpm -i httpd-2.2.15-15.el6.centos.x86_64.rpm</strong>
<span style="color: #ff0000;">error: Failed dependencies</span>:
 /etc/mime.types is needed by httpd-2.2.15-15.el6.centos.x86_64
 apr-util-ldap is needed by httpd-2.2.15-15.el6.centos.x86_64</pre>
<p>ยัง error อยู่ ต้องติดตั้งไฟล์ rpm เพิ่มเติม ที่พอเดาได้เพิ่มเติมคือ apr-util-ldap</p>
<p>หาไฟล์ในแผ่นที่ขึ้นต้นด้วย apr-util-ldap แล้วลองติดตั้ง</p>
<pre>[root@cent6 Packages]# <strong>ls -l apr-util-ldap*</strong>
-rw-r--r--. 2 500 500 15824 Jul 6 2011 apr-util-ldap-1.3.9-3.el6_0.1.x86_64.rpm</pre>
<pre>[root@cent6 Packages]# <strong>rpm -i apr-util-ldap-1.3.9-3.el6_0.1.x86_64.rpm</strong></pre>
<p>ส่วน /etc/mime.types ลองหาข้อมูลบนอินเตอร์เน็ตดู จะพบข้อมูลว่าอยู่ในไฟล์ rpm ที่ชื่อ mailcap</p>
<p>หาไฟล์ในแผ่นที่ขึ้นต้นด้วย mailcap แล้วติดตั้ง</p>
<pre>[root@cent6 Packages]# <strong>ls -l mailcap*</strong>
-rw-r--r--. 2 500 500 27280 Sep 26 2011 mailcap-2.1.31-2.el6.noarch.rpm</pre>
<pre>[root@cent6 Packages]# <strong>rpm -i mailcap-2.1.31-2.el6.noarch.rpm</strong></pre>
<p>ลองติดตั้ง httpd อีกครั้ง ก็จะติดตั้งสำเร็จ</p>
<pre>[root@cent6 Packages]# <strong>rpm -i httpd-2.2.15-15.el6.centos.x86_64.rpm</strong></pre>
<p>ทดลองรัน httpd ตามด้วยออปชั่น &#8216;-v&#8217; เพื่อแสดงเวอร์ขั่นของ Apache Web Server ที่ติดตั้ง</p>
<pre>[root@cent6 ~]# <strong>httpd -v</strong>
Server version: Apache/2.2.15 (Unix)
Server built: Dec 8 2011 18:10:49</pre>
<pre></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: ติดตั้งโปรแกรมภาษาเว็บ PHP บน Apache" href="http://spalinux.com/2012/04/install-php-web-programming-on-apache" rel="bookmark">ติดตั้งโปรแกรมภาษาเว็บ PHP บน Apache</a></li>
</ul>
<pre></pre>
]]></content:encoded>
			<wfw:commentRss>http://spalinux.com/2012/04/install-apache-web-server/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>สร้าง self-signed SSL Certificate</title>
		<link>http://spalinux.com/2012/02/generate-self-signed-ssl-certificate</link>
		<comments>http://spalinux.com/2012/02/generate-self-signed-ssl-certificate#comments</comments>
		<pubDate>Sat, 25 Feb 2012 11:16:27 +0000</pubDate>
		<dc:creator>editor</dc:creator>
				<category><![CDATA[Apache]]></category>
		<category><![CDATA[Security]]></category>
		<category><![CDATA[SSL]]></category>
		<category><![CDATA[Web Server]]></category>
		<category><![CDATA[certificate]]></category>
		<category><![CDATA[ssl]]></category>

		<guid isPermaLink="false">http://spalinux.com/?p=1635</guid>
		<description><![CDATA[จาก ติดตั้ง Apache SSL Web Server หากเราต้องการสร้าง self-signed SSL Certificate ขึ้นมาใช้เอง เช่นภายในบริษัท อาจต้องการใส่ข้อมูลบางอย่างลงไป เพื่อให้ผู้ใช้งานดูได้เบื้องต้น สามารถทำได้โดยใช้คำสั่ง openssl ข้อมูลที่กรอกในคำสั่ง openssl นี้จะถูกเก็บไว้ใน Certificate ที่สร้างขึ้น โดยผู้ใช้สามารถดูได้ใน Browser &#160; [root@fc16-64 ~]# openssl req -new -x509 -nodes -out my-web.crt -keyout my-web.key Generating a 2048 bit RSA private key ........+++ ...........................+++ writing new private key to 'my-web.key' ----- You are about to [...]]]></description>
			<content:encoded><![CDATA[<p>จาก<a href="http://spalinux.com/2012/02/install-apache-ssl-web-server"> ติดตั้ง Apache SSL Web Server</a> หากเราต้องการสร้าง self-signed SSL Certificate ขึ้นมาใช้เอง เช่นภายในบริษัท อาจต้องการใส่ข้อมูลบางอย่างลงไป เพื่อให้ผู้ใช้งานดูได้เบื้องต้น สามารถทำได้โดยใช้คำสั่ง openssl</p>
<p>ข้อมูลที่กรอกในคำสั่ง openssl นี้จะถูกเก็บไว้ใน Certificate ที่สร้างขึ้น โดยผู้ใช้สามารถดูได้ใน Browser</p>
<p><span id="more-1635"></span></p>
<p>&nbsp;</p>
<pre>[root@fc16-64 ~]# <strong>openssl req -new -x509 -nodes -out my-web.crt -keyout my-web.key</strong>
Generating a 2048 bit RSA private key
........+++
...........................+++
writing new private key to 'my-web.key'
-----
You are about to be asked to enter information that will be incorporated
into your certificate request.
What you are about to enter is what is called a Distinguished Name or a DN.
There are quite a few fields but you can leave some blank
For some fields there will be a default value,
If you enter '.', the field will be left blank.
-----
Country Name (2 letter code) [XX]:<strong>TH</strong>
State or Province Name (full name) []:<strong>Bangkok</strong>
Locality Name (eg, city) [Default City]:<strong>Bangkapi</strong>
Organization Name (eg, company) [Default Company Ltd]:<strong>SpaLinux</strong>
Organizational Unit Name (eg, section) []:<strong>IT</strong>
Common Name (eg, your name or your server's hostname) []:<strong>fc16-64.example.com</strong>
Email Address []:<strong>info@example.com</strong></pre>
<p>&nbsp;</p>
<p>จากการรันคำสั่ง openssl จะได้มาสองไฟล์</p>
<ul>
<li> my-web.key ไฟล์ private key</li>
</ul>
<ul>
<li> my-web.crt ไฟล์ certificate</li>
</ul>
<p>copy สองไฟล์นี้ไปไว้ใน ไดเร็คทอรีคอนฟิก ของ apache</p>
<pre>[root@fc16-64 ~]# <strong>cp my-web.crt my-web.key /etc/httpd/conf</strong></pre>
<p>เปลี่ยน permission ของไฟล์ my-web.key เป็น 400</p>
<pre>[root@fc16-64 ~]# <strong>cd /etc/httpd/conf</strong>
[root@fc16-64 conf]# <strong>chmod 400 my-web.key</strong>

[root@fc16-64 conf]# <strong>ls -l my-web.*</strong>
-rw-r--r--. 1 root root 1436 Feb 25 17:52 my-web.crt
-r--------. 1 root root 1704 Feb 25 17:52 my-web.key</pre>
<p>&nbsp;</p>
<p>แก้ไขไฟล์ ssl.conf เพื่อให้ชี้มายังไฟล์ private key และ certificate ใหม่</p>
<pre>[root@fc16-64 conf]# <strong>cat /etc/httpd/conf.d/ssl.conf</strong>
...
#   Server Certificate:
# Point SSLCertificateFile at a PEM encoded certificate.  If
# the certificate is encrypted, then you will be prompted for a
# pass phrase.  Note that a kill -HUP will prompt again.  A new
# certificate can be generated using the genkey(1) command.
#SSLCertificateFile /etc/pki/tls/certs/localhost.crt
<span style="color: #0000ff;">SSLCertificateFile /etc/httpd/conf/my-web.crt</span>

#   Server Private Key:
#   If the key is not combined with the certificate, use this
#   directive to point at the key file.  Keep in mind that if
#   you've both a RSA and a DSA private key you can configure
#   both in parallel (to also allow the use of DSA ciphers, etc.)
#SSLCertificateKeyFile /etc/pki/tls/private/localhost.key
<span style="color: #0000ff;">SSLCertificateKeyFile /etc/httpd/conf/my-web.key</span>
...</pre>
<p>&nbsp;</p>
<p>ใช้คำสั่ง service เพื่อรีโหลด Apache Web Server</p>
<pre>[root@fc16-64 conf]# <strong>service httpd reload</strong>
Reloading httpd configuration (via systemctl):             [  OK  ]</pre>
<p>&nbsp;</p>
<p>ทดลองใช้ Firefox เปิดหน้าเว็บ https นี้อีกครั้ง จะมีหน้าขึ้นเตือนว่า Untrusted Connection เหมือนเดิม</p>
<p>แต่ลองกดเข้าไปเพื่อ View ข้อมูล Certificate จะแสดงข้อมูลที่ระบุลงไปตอนรันคำสั่ง openssl</p>
<p><a href="http://spalinux.com/wp-content/uploads/2012/02/11-Certificate-Viewer.png"><img class="alignnone size-full wp-image-1636" title="11-Certificate-Viewer" src="http://spalinux.com/wp-content/uploads/2012/02/11-Certificate-Viewer.png" alt="" width="518" height="608" /></a></p>
<p>&nbsp;</p>
<p><a href="http://spalinux.com/wp-content/uploads/2012/02/12-Certificate-Issuer.png"><img class="alignnone size-full wp-image-1637" title="12-Certificate-Issuer" src="http://spalinux.com/wp-content/uploads/2012/02/12-Certificate-Issuer.png" alt="" width="518" height="608" /></a></p>
<h4>ข้อมูลอ้างอิง</h4>
<ul>
<li><a href="http://spalinux.com/2012/02/install-apache-ssl-web-server">ติดตั้ง Apache SSL Web Server</a></li>
<li><a href="http://httpd.apache.org/docs/2.2/ssl/ssl_faq.html" target="_blank">SSL/TLS Strong Encryption: FAQ</a></li>
</ul>
<p>&nbsp;</p>
]]></content:encoded>
			<wfw:commentRss>http://spalinux.com/2012/02/generate-self-signed-ssl-certificate/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>ติดตั้ง Apache SSL Web Server</title>
		<link>http://spalinux.com/2012/02/install-apache-ssl-web-server</link>
		<comments>http://spalinux.com/2012/02/install-apache-ssl-web-server#comments</comments>
		<pubDate>Sat, 25 Feb 2012 10:41:50 +0000</pubDate>
		<dc:creator>editor</dc:creator>
				<category><![CDATA[Apache]]></category>
		<category><![CDATA[Security]]></category>
		<category><![CDATA[SSL]]></category>
		<category><![CDATA[encryption]]></category>
		<category><![CDATA[https]]></category>
		<category><![CDATA[mod_ssl]]></category>
		<category><![CDATA[ssl]]></category>
		<category><![CDATA[web]]></category>

		<guid isPermaLink="false">http://spalinux.com/?p=1620</guid>
		<description><![CDATA[หลายๆ เว็บไซต์ เช่น facebook เริ่มเปลี่ยนการเข้าเว็บจาก http มาเป็น https ทั้งเว็บไซต์ ด้วยเหตุผลเรื่องความปลอดภัย เพื่อเข้ารหัสข้อมูล (encryption) ป้องกันการดักจับข้อมูลส่วนตัว รหัสผ่าน รูปภาพ ข้อความ หรือข้อมูลอื่นๆ ในบทความนี้ขอนำเสนอวิธีการติดตั้ง https หรือ SSL แบบง่ายๆ โดยใช้ Apache Web Server และ mod_ssl  ทดสอบบน Fedora 16 (x86_64) ติดตั้งไฟล์ rpm จากแผ่นดีวีดีติดตั้ง [root@fc16-64 Packages]# rpm -i apr-util-ldap-1.3.12-1.fc16.x86_64.rpm [root@fc16-64 Packages]# rpm -i httpd-tools-2.2.21-1.fc16.x86_64.rpm [root@fc16-64 Packages]# rpm -i httpd-2.2.21-1.fc16.x86_64.rpm [root@fc16-64 Packages]# rpm -i mod_ssl-2.2.21-1.fc16.x86_64.rpm [...]]]></description>
			<content:encoded><![CDATA[<p>หลายๆ เว็บไซต์ เช่น facebook เริ่มเปลี่ยนการเข้าเว็บจาก http มาเป็น https ทั้งเว็บไซต์ ด้วยเหตุผลเรื่องความปลอดภัย เพื่อเข้ารหัสข้อมูล (encryption) ป้องกันการดักจับข้อมูลส่วนตัว รหัสผ่าน รูปภาพ ข้อความ หรือข้อมูลอื่นๆ</p>
<p><span id="more-1620"></span><br />
<a href="http://spalinux.com/wp-content/uploads/2012/02/00-https-facebook.png"><img class="alignnone size-full wp-image-1621" title="00-https-facebook" src="http://spalinux.com/wp-content/uploads/2012/02/00-https-facebook.png" alt="" width="702" height="313" /></a></p>
<p>ในบทความนี้ขอนำเสนอวิธีการติดตั้ง https หรือ SSL แบบง่ายๆ โดยใช้ Apache Web Server และ mod_ssl  ทดสอบบน Fedora 16 (x86_64)</p>
<p>ติดตั้งไฟล์ rpm จากแผ่นดีวีดีติดตั้ง</p>
<pre>[root@fc16-64 Packages]# <strong>rpm -i apr-util-ldap-1.3.12-1.fc16.x86_64.rpm</strong>
[root@fc16-64 Packages]# <strong>rpm -i httpd-tools-2.2.21-1.fc16.x86_64.rpm</strong>
[root@fc16-64 Packages]# <strong>rpm -i httpd-2.2.21-1.fc16.x86_64.rpm</strong>
[root@fc16-64 Packages]# <strong>rpm -i mod_ssl-2.2.21-1.fc16.x86_64.rpm</strong></pre>
<p>ใช้คำสั่ง service เพื่อสตาร์ตเซอร์วิส apache</p>
<pre>[root@fc16-64base ~]# <strong>service httpd start</strong>
Starting httpd (via systemctl):                  [  OK  ]</pre>
<p>ใช้คำสั่ง ps เพื่อดูโปรเซสของ apache ที่รัน</p>
<pre>[root@fc16-64 ~]# <strong>ps -ef | grep apache</strong>
apache    5225  5164  0 16:11 ?        00:00:00 /usr/sbin/httpd -k start
apache    5226  5164  0 16:11 ?        00:00:00 /usr/sbin/httpd -k start
apache    5227  5164  0 16:11 ?        00:00:00 /usr/sbin/httpd -k start
apache    5228  5164  0 16:11 ?        00:00:00 /usr/sbin/httpd -k start
apache    5229  5164  0 16:11 ?        00:00:00 /usr/sbin/httpd -k start
apache    5230  5164  0 16:11 ?        00:00:00 /usr/sbin/httpd -k start
apache    5231  5164  0 16:11 ?        00:00:00 /usr/sbin/httpd -k start
apache    5232  5164  0 16:11 ?        00:00:00 /usr/sbin/httpd -k start</pre>
<p>ใช้คำสั่ง netstat -an เพื่อดูพอร์ตที่เปิด จะมีทั้ง http พอร์ต 80 และ https พอร์ต 443</p>
<pre>[root@fc16-64base ~]# <strong>netstat -an</strong>
Active Internet connections (servers and established)
Proto Recv-Q Send-Q Local Address               Foreign Address             State
...
tcp        0      0 :::443                      :::*                        LISTEN
tcp        0      0 :::80                       :::*                        LISTEN
...</pre>
<p>เพื่อสะดวกต่อการทดสอบ ในที่นี้จะปิดทั้ง firewall และ selinux</p>
<pre>[root@fc16-64 ~]# <strong>service iptables stop</strong>
Redirecting to /bin/systemctl  stop iptables.service

[root@fc16-64 ~]# setenforce 0</pre>
<p>&nbsp;</p>
<h4>self-signed SSL Certificate</h4>
<p>จากการติดตั้ง mod_ssl จะมีการสร้าง SSL Certificate สำหรับการทดสอบขึ้นมา โดยเป็นการสร้างแบบ self-signed ด้วยคำสั่ง openssl</p>
<p>SSL Certificate นี้สามารถใช้เข้ารหัสข้อมูล (encryption) เว็บไซต์ ได้จริง เพียงแต่ว่า Browser ที่ใช้เปิด ไม่ว่าจะเป็น IE, Firefox หรือ Chrome ไม่สามารถตรวจสอบ (verify) ผู้ออก Certificate ได้ ทำให้ขึ้นหน้าเตือนขึ้นมา</p>
<p>หลังจากทดสอบเรียบร้่อยแล้ว หากต้องการเปิดเว็บไซต์  https สำหรับผู้ใช้ทั่วๆ ไป  โดยที่ browser จะไม่มีการเตือนว่า Certificate ไม่ถูกต้อง ต้องจ่ายเงินซื้อ Certificate มาจากผู้ออกเช่น Verisign, Thawte</p>
<p>ทดลองใช้ Firefox Browser เข้า web site แบบ https</p>
<p><a href="http://spalinux.com/wp-content/uploads/2012/02/01-This-Connection-is-Untrusted.png"><img class="alignnone size-full wp-image-1622" title="01-This-Connection-is-Untrusted" src="http://spalinux.com/wp-content/uploads/2012/02/01-This-Connection-is-Untrusted.png" alt="" width="663" height="475" /></a></p>
<p>&nbsp;</p>
<p><a href="http://spalinux.com/wp-content/uploads/2012/02/02-Techical-Details.png"><img class="alignnone size-full wp-image-1623" title="02-Techical-Details" src="http://spalinux.com/wp-content/uploads/2012/02/02-Techical-Details.png" alt="" width="661" height="306" /></a></p>
<p>&nbsp;</p>
<p>ในที่นี้ต้องกดปุ่ม [Add Exception] เพื่อยืนยันว่า เราต้องการเข้าเว็บไซต์นี้จริง</p>
<p>&nbsp;</p>
<p><a href="http://spalinux.com/wp-content/uploads/2012/02/03-Add-Security-Exception.png"><img class="alignnone size-full wp-image-1624" title="03-Add-Security-Exception" src="http://spalinux.com/wp-content/uploads/2012/02/03-Add-Security-Exception.png" alt="" width="507" height="512" /></a></p>
<p>กดปุ่ม [Confirm Security Exception]</p>
<p>&nbsp;</p>
<p>ข้อมูล Certificate ที่ self-signed เอง</p>
<p><a href="http://spalinux.com/wp-content/uploads/2012/02/04-Certificate-Viewer.png"><img class="alignnone size-full wp-image-1625" title="04-Certificate-Viewer" src="http://spalinux.com/wp-content/uploads/2012/02/04-Certificate-Viewer.png" alt="" width="518" height="608" /></a></p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>แม้จะเป็น self-signed แต่การเข้าเว็บไซต์ https นี้ ก็มีการเข้ารหัสจริงๆ อาจทดลองเอาโปรแกรมประเภท wireshark จับ traffic ดูได้</p>
<p><a href="http://spalinux.com/wp-content/uploads/2012/02/05-Fedora-Test-Page.png"><img class="alignnone size-full wp-image-1626" title="05-Fedora-Test-Page" src="http://spalinux.com/wp-content/uploads/2012/02/05-Fedora-Test-Page.png" alt="" width="729" height="353" /></a></p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<h4>ข้อมูลอ้างอิง</h4>
<ul>
<li><a href="https://www.facebook.com/blog/blog.php?post=486790652130" target="_blank">The Facebook Blog &#8211; A Continued Commitment to Security</a></li>
<li><a href="http://httpd.apache.org/docs/2.2/ssl/ssl_faq.html" target="_blank">SSL/TLS Strong Encryption: FAQ</a></li>
</ul>
<p>&nbsp;</p>
]]></content:encoded>
			<wfw:commentRss>http://spalinux.com/2012/02/install-apache-ssl-web-server/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>การแสดงผล Error ของ PHP</title>
		<link>http://spalinux.com/2010/02/configure_display_php_errors</link>
		<comments>http://spalinux.com/2010/02/configure_display_php_errors#comments</comments>
		<pubDate>Fri, 12 Feb 2010 08:21:45 +0000</pubDate>
		<dc:creator>editor</dc:creator>
				<category><![CDATA[Apache]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[Programming]]></category>
		<category><![CDATA[php error]]></category>

		<guid isPermaLink="false">http://spalinux.com/?p=1077</guid>
		<description><![CDATA[การตรวจสอบข้อผิดพลาด (error) เวลาพัฒนาโปรแกรม หรือเมื่อรันโปรแกรม ถือว่ามีความสำคัญอย่างหนึ่ง เพื่อที่จะทำให้ระบบทำงานได้อย่างถูกต้อง สำหรับการพัฒนา Web Application ด้วย PHP การตรวจสอบหรือแสดงผลข้อผิดพลาด สามารถทำได้ สองวิธีหลักๆ คือ แสดงข้อผิดพลาด (error) ผ่านหน้าเว็บ เก็บข้อผิดพลาดไว้ในไฟล์ (log file) เพื่อการตรวจสอบ วิธีแรก การแสดงผลข้อผิดพลาด ผ่านหน้าเว็บเมื่อรันโปรแกรมเลย ถือว่ามีความสะดวกสบายมาก คือเมื่อโปรแกรมเมอร์พัฒนาโปรแกรมไป รันผ่านหน้าเว็บ ก็สามารถเห็นข้อผิดพลาดที่เกิดขึ้นได้เลย ว่าเกิดปัญหาที่ไหน ไฟล์อะไร บรรทัดเท่าไร แต่จะมีข้อเสียอย่างมาก หากปล่อยให้มีการแสดงผลข้อผิดพลาดนี้ แก่ผู้ใช้งานทั่วไป เพราะอาจแสดงรายละเอียดโปรแกรมมากเกินไป ซึ่งอาจทำให้เปิดเผยช่องโหว่ของโปรแกรมได้ คำแนะนำคือ ในขณะที่กำลังพัฒนาโปรแกรม (development) หรือบนเครื่องเซิร์ฟเวอร์สำหรับทดสอบโปรแกรม เราอาจเปิดการแสดงผลข้อผิดพลาดผ่านหน้าเว็บเลย เพื่อสะดวกต่อโปรแกรมเมอร์ ในการตรวจสอบ แต่เมื่อไรก็ตาม ระบบเริ่มใช้งานจริง (production) แนะนำให้ปิดการแสดงผลข้อผิดพลาดผ่านหน้าเว็บ ให้เก็บข้อผิดพลาดไว้ในแบบที่ 2 คือเก็บไว้ในไฟล์ (log file) แล้วดูข้อผิดพลาดจากในไฟล์ ตัวอย่างข้อผิดพลาดในการเขียน [...]]]></description>
			<content:encoded><![CDATA[<p>การตรวจสอบข้อผิดพลาด (error) เวลาพัฒนาโปรแกรม หรือเมื่อรันโปรแกรม ถือว่ามีความสำคัญอย่างหนึ่ง เพื่อที่จะทำให้ระบบทำงานได้อย่างถูกต้อง</p>
<p>สำหรับการพัฒนา Web Application ด้วย PHP การตรวจสอบหรือแสดงผลข้อผิดพลาด สามารถทำได้ สองวิธีหลักๆ คือ</p>
<ol>
<li>แสดงข้อผิดพลาด (error) ผ่านหน้าเว็บ</li>
<li>เก็บข้อผิดพลาดไว้ในไฟล์ (log file) เพื่อการตรวจสอบ</li>
</ol>
<p><span id="more-1077"></span></p>
<p>วิธีแรก การแสดงผลข้อผิดพลาด ผ่านหน้าเว็บเมื่อรันโปรแกรมเลย ถือว่ามีความสะดวกสบายมาก คือเมื่อโปรแกรมเมอร์พัฒนาโปรแกรมไป รันผ่านหน้าเว็บ ก็สามารถเห็นข้อผิดพลาดที่เกิดขึ้นได้เลย ว่าเกิดปัญหาที่ไหน ไฟล์อะไร บรรทัดเท่าไร</p>
<p>แต่จะมีข้อเสียอย่างมาก หากปล่อยให้มีการแสดงผลข้อผิดพลาดนี้ แก่ผู้ใช้งานทั่วไป เพราะอาจแสดงรายละเอียดโปรแกรมมากเกินไป ซึ่งอาจทำให้เปิดเผยช่องโหว่ของโปรแกรมได้</p>
<p>คำแนะนำคือ ในขณะที่กำลังพัฒนาโปรแกรม (development) หรือบนเครื่องเซิร์ฟเวอร์สำหรับทดสอบโปรแกรม เราอาจเปิดการแสดงผลข้อผิดพลาดผ่านหน้าเว็บเลย เพื่อสะดวกต่อโปรแกรมเมอร์ ในการตรวจสอบ</p>
<p>แต่เมื่อไรก็ตาม ระบบเริ่มใช้งานจริง (production) แนะนำให้ปิดการแสดงผลข้อผิดพลาดผ่านหน้าเว็บ ให้เก็บข้อผิดพลาดไว้ในแบบที่ 2 คือเก็บไว้ในไฟล์ (log file) แล้วดูข้อผิดพลาดจากในไฟล์</p>
<p>ตัวอย่างข้อผิดพลาดในการเขียน PHP เช่น พิมพ์เครื่องหมาย : แทนที่เป็น ;</p>
<pre>$ <strong>cat /var/www/html/test.php
</strong>&lt;?php</pre>
<pre>print 'hello'<span style="color: #ff0000;"><strong>:</strong></span></pre>
<pre>?&gt;</pre>
<h4>แสดงข้อผิดพลาดผ่านหน้าเว็บ (display_errors)</h4>
<p>PHP เวอร์ชั่นหลังๆ จะปิดการแสดงข้อผิดพลาดผ่านหน้าเว็บ หากต้องการเปิดคุณสมบัตินี้ทำได้สองวิธีคือ</p>
<p>1. แก้ไฟล์ /etc/php.ini จะมีผลทั้งเซิร์ฟเวอร์</p>
<p>ออปชั่นที่ต้องแก้ไขคือ &#8220;display_errors&#8221;</p>
<ul>
<li>&#8220;On&#8221; หากต้องการเปิดการแสดงผลข้อผิดพลาดผ่านหน้าเว็บ เหมาะสำหรับการพัฒนาโปรแกรม (development)</li>
<li>&#8220;Off&#8221; หากไม่ต้องการแสดงผลข้อผิดพลาดผ่านหน้าเว็บ สำหรับระบบที่ใช้งานจริงแล้ว (production)</li>
</ul>
<p>ตัวอย่างการคอนฟิกในไฟล์ /etc/php.ini</p>
<pre>...
display_errors = On
...</pre>
<p>หลังจากแก้ไขไฟล์ ต้องรีโหลด Web Server เพื่อให้คอนฟิกใหม่มีผล</p>
<pre># <strong>service httpd reload
</strong>Reloading httpd:                                           [  OK  ]</pre>
<p>ตัวอย่างการแสดงผลข้อผิดพลาดผ่านหน้าเว็บ</p>
<p><a href="http://spalinux.com/wp-content/uploads/2010/02/02-display_errors_with_html_errors.png"><img title="display_errors = On" src="http://spalinux.com/wp-content/uploads/2010/02/02-display_errors_with_html_errors.png" alt="" width="595" height="272" /></a></p>
<p>2. หากไม่สามารถแก้ไขไฟล์ /etc/php.ini ได้ สามารถใช้ฟังก์ชั่น &#8220;ini_set&#8221; เพื่อเปิดคุณสมบัตินี้ได้</p>
<p>ตัวอย่างการใช้ฟังก์ชั่น &#8220;ini_set&#8221; เพื่อตั้งค่าคอนฟิก &#8220;display_errors&#8221;</p>
<pre>&lt;?php

ini_set('display_errors', TRUE);
...
?&gt;</pre>
<h4>เก็บข้อผิดพลาดไว้ในไฟล์ (error_log)</h4>
<p>เมื่อระบบใช้งานจริง (production) แล้ว แนะนำให้ปิดการแสดงผลข้อผิดพลาดผ่านหน้าเว็บ แต่ให้เก็บไว้ในไฟล์ ไว้ดูย้อนหลังได้</p>
<p>ตัวอย่างคอนฟิกให้เก็บข้อผิดพลาดของการรัน PHP ไว้ในไฟล์ /var/log/httpd/php_errors.log</p>
<pre>...
html_errors = Off
log_errors = On
error_log = /var/log/httpd/php_errors.log
...</pre>
<p>ต้องสร้างไฟล์สำหรับเก็บ และตั้งค่าเจ้าของไฟล์ (owner) เพื่อให้โปรเซสเว็บเซิร์ฟเวอร์ เช่น apache เขียนไฟล์ได้</p>
<pre># <strong>touch /var/log/httpd/php_errors.log
</strong># <strong>chown apache /var/log/httpd/php_errors.log</strong></pre>
<p>หลังจากแก้ไขไฟล์ ต้องรีโหลด Web Server เพื่อให้คอนฟิกใหม่มีผล</p>
<pre># <strong>service httpd reload
</strong>Reloading httpd:                                           [  OK  ]</pre>
<p>ตัวอย่างข้อผิดพลาดที่ถูกเก็บไว้ในไฟล์</p>
<pre># <strong>tail -f /var/log/httpd/php_errors.log
</strong>[12-Feb-2010 12:49:25] PHP Parse error:  syntax error, unexpected ':' in /var/www/html/test.php on line 3</pre>
<p>หรือถ้าต้องการเก็บไว้ใน syslog ก็แก้คอนฟิก &#8220;error_log&#8221; ให้เป็น syslog ได้</p>
<pre>...
html_errors = Off
log_errors = On
error_log = syslog
...</pre>
<p>ตัวอย่างการแสดงผลในไฟล์ /var/log/messages</p>
<pre># <strong>tail -f /var/log/messages
</strong>Feb 12 15:05:08 web httpd: PHP Parse error:  syntax error, unexpected ':' in /var/www/html/test.php on line 3</pre>
]]></content:encoded>
			<wfw:commentRss>http://spalinux.com/2010/02/configure_display_php_errors/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

