การติดตั้ง web server ด้วยโปรแกรม Apache
การติดตั้ง web server ด้วยโปรแกรม Apache
วิธีติดตั้ง www server ด้วยโปรแกรม httpd (apache 2.0)
- ขอแนะนำให้ปิดการทำงานของระบบ selinux ทำงานเสียก่อน
เพราะอาจสร้างปัญหาปวดหัว ทำให้ใช้โปรแกรม httpd ที่ติดตั้งไม่ได้
โดยแก้ไขแฟ้มชื่อ /etc/selinux/config ให้แก้ไขจากเดิมบรรทัดว่า
SELINUX=enforcing ให้เป็น SELINUX=disabled แล้วรีบูทเครื่องใหม่
- ติดตั้งโปรแกรม httpd พร้อมคู่มือ ด้วยคำสั่ง
apt-get install httpd
apt-get install httpd-manual
ถ้าต้องการติดตั้งให้รองรับ https port ด้วย ให้ติดตั้ง mod_ssl เพิ่มเติมด้วยคำสั่ง
apt-get install mod_ssl
ในกรณีที่ใช้ yum ให้เปลี่ยนคำว่า apt-get เป็น yum ดังตัวอย่าง
yum install httpd
yum install httpd-manual
yum install mod_ssl
- แก้ไขให้ทำงานทุกครั้งที่บูทเครื่อง
chkconfig httpd on
- สั่งให้ทำงานด้วยคำสั่งว่า
service httpd start
Starting httpd: [ OK ]
*** บน fedora core 3 หากได้ error ว่า
Starting httpd: /usr/sbin/httpd: error while loading shared libraries:
librt.so.1: failed to map segment from shared object: Permission denied
แสดงว่ามีการเปิดระบบ selinux ทำงาน เราสามารถทำการปิด selinux
- การปรับแต่งระบบทำได้โดยการแก้ไขแฟ้ม /etc/httpd/conf/httpd.conf แล้ว ให้ระบบอ่านค่าที่ปรับใหม่ได้ด้วยคำสั่ง
service httpd restart
Stopping httpd: [ OK ]
Starting httpd: [ OK ]
- คำแนะนำในการปรับแต่งค่าต่างๆของ /etc/httpd/conf/httpd.conf
- การทำให้รองรับระบบภาษาไทย ต้องแก้ไขให้มีค่าดังต่อไปนี้
***โปรดระวัง หากมีการใส่ข้อมูลผิดพลาด อาจทำให้ web server ไม่ทำงาน
***ห้ามแปะข้อความทั้งหมดนี้ต่อท้ายแฟ้มเดิม เพราะเป็นวิธีที่ไม่ถูกต้อง
DefaultLanguage th
AddLanguage th .th
LanguagePriority th en da nl et fr de el it ja kr no pl pt pt-br ltz ca es sv tw
AddCharset TIS-620 .tis-620 .th
***หมายเหตุ มักเจอปัญหาการใส่ข้อมูลผิดพลาดบ่อยๆมากๆ
***คำแนะนำ/ข้อสังเกตุ
เดิมมีบรรทัดว่า # DefaultLanguage nl
ให้เพิ่มบรรทัดใหม่ข้อความว่า DefaultLanguage th
(ห้ามมีเครื่องหมาย # อยู่ข้างหน้า)
เดิมมีบรรทัดว่า AddLanguage ... ซึ่งเป็นภาษาอื่นๆ
ให้เพิ่มบรรทัดใหม่ข้อความว่า AddLanguage th .th
เดิมมีบรรทัดว่า LanguagePriority en ca cs da de ....
ให้เพิ่มข้อความอักษร th แทรกเข้าไป
กลายเป็น LanguagePriority th en ca ca da de ....
เดิมมีบรรทัดว่า AddDefaultCharset UTF-8
ให้เพิ่มเครื่องหมาย # นำหน้าบรรทัดกลายเป็นว่า #AddDefaultCharset UTF-8
*** หากจำเป็นจริงๆ อาจต้องเปลี่ยนเป็น
AddDefaultCharset TIS-620
เดิมมีบรรทัดว่า AddCharset ...ซึ่งเป็นภาษาอื่นๆ
ให้เพิ่มบรรทัดใหม่ข้อความว่า AddCharset TIS-620 .tis-620 .th
- การทำให้รองรับระบบภาษาไทย ต้องแก้ไขให้มีค่าดังต่อไปนี้
- ข้อมูลสำหรับโอมเพจอยู่ที่ /var/www/html
- หากไม่ต้องการให้ www server แสดงผลรายการชื่อแฟ้มใน directory
ให้แก้ไขแฟ้ม /etc/httpd/conf/httpd.conf ในลบคำว่า Indexes ออกจากพื้นที่
<Directory "/var/www/html">
....
</Directory>
จากตัวอย่างข้อความเดิมคือ Options Indexes FollowSymLinks
แก้ไขใหม่เป็น Options FollowSymLinks
- หากไม่ต้องการให้แสดงโฮมเพจ Test Page for The Apache
ให้ลบแฟ้ม /etc/httpd/conf.d/welcome.conf ทิ้ง
- การทำให้มีโฮมเพจของผู้ใช้
- แก้ไขแฟ้ม /etc/httpd/conf/httpd.conf ให้มีบรรทัดข้อความดังนี้
UserDir public_html
*** ตรวจสอบให้ละเอียด หากมีของเดิมค่า default คือ UserDir disable ก็ให้เปลี่ยนเป็น UserDir public_html ได้เลย
และถัดลงมาอีกมีบรรทัดข้อความดังต่อไปนี้
(อาจมีข้อมูลนี้อยู่แล้ว ให้เอาเครื่อง # ออกไปก็พอ)
<Directory /home/*/public_html>
AllowOverride FileInfo AuthConfig Limit
Options MultiViews Indexes SymLinksIfOwnerMatch IncludesNoExec
<Limit GET POST OPTIONS>
Order allow,deny
Allow from all
</Limit>
<LimitExcept GET POST OPTIONS>
Order deny,allow
Deny from all
</LimitExcept>
</Directory>
- home ของผู้ใช้ต้องมี permission เป็น 711 ดังตัวอย่างคำสั่ง
chmod 711 /home/userid
- ต้องสร้าง directory ชื่อ public_html ใน home ของผู้ใช้
และมี permission เป็น 755 ดังตัวอย่างคำสั่ง
mkdir /home/userid/public_html
chmod 755 /home/userid/public_html
- แก้ไขแฟ้ม /etc/httpd/conf/httpd.conf ให้มีบรรทัดข้อความดังนี้
- การสร้าง virtual host ให้ทำดังนี้
- ต้องเป็นชื่อที่บันทึกแสดงไว้ในระบบ DNS
- แก้ไขแฟ้ม /etc/httpd/conf/httpd.conf ให้มีบรรทัดข้อความดังนี้
NameVirtualHost *:80
<VirtualHost *:80>
DocumentRoot /var/www/html
ServerName origin.hostname.domain
</VirtualHost>
** ข้างบนนี้ต้องมีเพื่อให้คงชื่อ web host ของเดิมไว้
<VirtualHost *:80>
DocumentRoot /var/www/newfile
ServerName new.name.domain
</VirtualHost>
** เพิ่มชื่อ web host ใหม่เข้าไป
- ต้องเป็นชื่อที่บันทึกแสดงไว้ในระบบ DNS
- หากต้องการทำเป็น virtual host ที่เป็น https ให้ทำดังนี้
- ต้องได้ติดตั้ง mod_ssl ตามข้อ 2 ข้างบนแล้ว
- แก้ไขทำนองเดียวกับสร้าง virtual host ที่เป็น http ธรรมดา
แตกต่างที่
เปลี่ยนเป็นแก้ไขแฟ้ม /etc/httpd/conf.d/ssl.conf
แทนแฟ้ม /etc/httpd/conf/httpd.conf
และเปลี่ยนค่า <VirtualHost *:80>
ให้กลายเป็น <VirtualHost *:443> เท่านั้น ดังตัวอย่าง
<VirtualHost *:443>
DocumentRoot /var/www/newfile
ServerName new.name.domain
</VirtualHost>
- ต้องได้ติดตั้ง mod_ssl ตามข้อ 2 ข้างบนแล้ว
- การกำหนดสิทธิการเข้าถึง directory โดยวิธีจัดการแฟ้ม .htaccess
- ต้องมีแฟ้มชื่อ .htaccess ภายใต้ directory ที่ต้องการกำหนดสิทธิ
- หากต้องการกำหนดสำหรับ home ของผู้ใช้ทั่วไป
ให้แก้ไขแฟ้ม /etc/httpd/conf/httpd.conf ให้มีบรรทัดข้อความดังนี้
<Directory /home/*/public_html>
AllowOverride FileInfo AuthConfig Limit
Options MultiViews Indexes SymLinksIfOwnerMatch IncludesNoExec
<Limit GET POST OPTIONS>
Order allow,deny
Allow from all
</Limit>
<LimitExcept GET POST OPTIONS>
Order deny,allow
Deny from all
</LimitExcept>
</Directory>
- ต้องมีแฟ้มชื่อ .htaccess ภายใต้ directory ที่ต้องการกำหนดสิทธิ