ติดตั้ง apache บน ubuntu

จาก Wiki Opensource

บันทึกนี้ปรับปรุงล่าสุดเมื่อวันที่ 12-02-2556

ดูแลโดย WIPAT


  • ทดสอบกับ ubuntu 10.04


  1. ติดตั้ง apache ด้วยคำสั่ง sudo apt-get install apache2 apache2-doc
    ทดสอบผลงานไปที่เวบได้เลย
    พื้นที่เก็บข้อมูลเวบนี้อยู่ที่ /var/www

  2. หาก apache เริ่มทำงานแล้วมี error ประมาณว่า
    apache2: Could not reliably determine the server's fully qualified domain name, using 127.0.1.1 for ServerName
    ไม่ต้องตกใจ ระบบยังทำงานได้ เพียงแต่มันฟ้องว่าหาชื่อ host ไม่เจอ

    วิธีแก้ไขปัญหานี้ ทำได้โดยการแก้ไขแฟ้ม /etc/hosts
    หากข้อมูลเดิมมีประมาณว่า
    127.0.0.1 localhost
    127.0.1.1 ubuntu
    ให้แก้ไขใหม่เป็นประมาณว่า
    127.0.0.1 localhost.local localhost
    127.0.1.1 ubuntu.local ubuntu
    แล้วลองสั่งให้ apache ทำงานใหม่ด้วยคำสั่ง sudo /etc/init.d/apache2 restart จะพบว่า error ดังกล่าวหายไป

    หรือ
    แก้ไขแฟ้ม /etc/apache2/httpd.conf ก็ได้
    เมื่อเปิดแฟ้มนี้จะเป็นแฟ้มเปล่าให้เพิ่มข้อความว่า

    ServerName localhost

    สำหรับ Ubuntu 12.10, 13.04 ให้สร้างแฟ้ม /etc/apache2/conf.d/name โดยมีข้อความว่า

    ServerName localhost

    แล้วลองสั่งให้ apache ทำงานใหม่ด้วยคำสั่ง sudo /etc/init.d/apache2 restart จะพบว่า error ดังกล่าวหายไป

  3. หากต้องการใช้ cgi ให้ทำดังนี้
    sudo apt-get install libapache2-mod-perl2
    sudo a2enmod cgi

    พื้นที่สำหรับเก็บ cgi script อยู่ที่ /usr/lib/cgi-bin
    อย่าลืมตั้งค่าให้แฟ้ม cgi สามารถทำงานแบบ execute ด้วย
    เวลาใช้งานก็เรียกเวบประมาณว่า http://localhost/cgi-bin/yourcgi

  4. หากต้องการเปลี่ยนหรือเพิ่ม port ให้แก้ไขแฟ้ม /etc/apache2/ports.conf เป็นประมาณตัวอย่างว่า
    Listen 80
    Listen 8010

  5. การสร้าง virtual host ให้แก้ไขแฟ้ม /etc/apache2/sites-available/default เป็นประมาณว่า
    <VirtualHost *:80>
    DocumentRoot /var/www/
    ServerName origin.hostname.domain
    </VirtualHost>
    *** ข้างบนนี้ต้องมีเพื่อให้คงชื่อ web host ของเดิมไว้

    <VirtualHost *:80>
    DocumentRoot /var/www/newfile
    ServerName new.name.domain
    </VirtualHost>
    *** เพิ่มชื่อ web host ใหม่เข้าไป

    <VirtualHost *:80>
    ServerName www.mydomain.com
    Redirect / http://new.domain.com/
    </VirtualHost>
    *** ทำการ redirect ต่อไปให้เวบอื่น

    ต้องแก้ไขแฟ้ม /etc/apache2/sites-available/default
    ให้ส่วนของ <Directory /var/www/> บริวเณประมาณบรรทัดที่ 14
    ต้องอนุญาติให้ AllowOverride All ดังตัวอย่าง
    <Directory /var/www/>
    Options Indexes FollowSymLinks MultiViews
    AllowOverride All
    Order allow,deny
    allow from all
    </Directory>

    เสร็จแล้วก็สั่ง apache ทำงานใหม่ ด้วยคำสั่ง sudo /etc/init.d/apache2 force-reload

  6. การสร้าง virtual host ที่เป็น https ทำดังนี้
    สั่งเปิด ssl ด้วยคำสั่ง sudo a2enmod ssl
    ดาวน์โหลดแฟ้มจาก ftp://ftp.psu.ac.th/pub/apache/apache2-ssl.tar.gz
    ด้วยคำสั่ง wget ftp://ftp.psu.ac.th/pub/apache/apache2-ssl.tar.gz
    แล้วแตกแฟ้มออกมาด้วยคำสั่ง tar -zxvf apache2-ssl.tar.gz -C /tmp
    คัดลอกแฟ้มไปยังตำแหน่งที่ถูกต้องด้วยคำสั่ง
    sudo mv /tmp/ssleay.cnf /usr/share/apache2
    sudo mv /tmp/apache2-ssl-certificate /usr/sbin
    sudo mkdir -p /etc/apache2/ssl

    สร้าง certification ด้วยคำสั่ง sudo apache2-ssl-certificate
    ระบบจะมีข้อความออกให้โต้ตอบ ก็ให้กดแป้น Enter อย่างเดียวจนเสร็จ

    แก้ไขแฟ้ม /etc/apache2/sites-available/default
    เพิ่มบรรทัดว่า NameVirtualHost *:443 เข้าไป
    ถัดต่อจากบรรทัดเดิมที่ว่า NameVirtualHost *:80
    แล้วสร้างเพิ่ม tag ทำนองเดียวกับ <VirtualHost *:80>
    แต่เปลี่ยนจากเลข 80 เป็นเลข 443 และเพิ่ม SSL ประมาณว่า
    <VirtualHost *:443>
    ......
    SSLEngine on
    SSLCertificateFile /etc/apache2/ssl/apache.pem
    </VirtualHost>
    เสร็จแล้วก็ให้ restart apache ใหม่ด้วยคำสั่ง sudo /etc/init.d/apache2 force-reload

  7. การทำให้ www server ไม่แสดงผลรายการชื่อแฟ้มใน directory
    ให้แก้ไขแฟ้ม /etc/apache2/sites-available/default
    ประมาณบรรที่ 14 ให้ลบคำว่า Indexes ออกจากส่วนของ
    <Directory "/var/www/l">
    ....
    </Directory>
    จากตัวอย่างข้อความเดิมคือ Options Indexes FollowSymLinks
    แก้ไขใหม่เป็น Options FollowSymLinks

    แล้วสั่งให้ apache ทำงานใหม่ด้วยคำสั่ง sudo /etc/init.d/apache2 force-reload
    /etc/apache2/httpd.conf
  8. หากต้องการบริการจำนวน client มากกว่าเดิม กลายเป็น 500 connection
    ต้องตรวจสอบว่า apache มีการจัดการ process แบบใด ให้ใช้คำสั่ง apache2 -l
    ถ้ามีข้อความคำตอบ prefork.c แสดงว่าจัดการ process แบบ MPM prefork
    ถ้ามีข้อความคำตอบ worker.c แสดงว่าจัดการ process แบบ MPM worker
    ให้แก้ไขที่แฟ้ม /etc/apache2/apache2.conf ที่ประมาณข้อความว่า

    หากเป็นแบบ MPM prefork ให้แก้ไขดังนี้ ที่ประมาณข้อความว่า
    <IfModule mpm_prefork_module>
    StartServers 5
    MinSpareServers 5
    MaxSpareServers 10
    MaxClients 150
    MaxRequestsPerChild 0
    </IfModule>/etc/apache2/httpd.conf
    ให้แก้ใขค่า MaxClients และเพิ่มค่า ServerLimit เป็น 500 ดังตัวอย่าง
    <IfModule mpm_prefork_module>
    StartServers 5
    MinSpareServers 5
    MaxSpareServers 10
    ServerLimit 500
    MaxClients 500
    MaxRequestsPerChild 0
    </IfModule>

    หากเป็นแบบ MPM worker ที่ประมาณข้อความว่า
    <IfModule mpm_worker_module>/etc/apache2/httpd.conf
    StartServers 2
    MinSpareThreads 25
    MaxSpareThreads 75
    ThreadLimit 64
    ThreadsPerChild 25
    MaxClients 150
    MaxRequestsPerChild 0
    </IfModule>
    ให้ แก้ใขค่า MaxClients เป็น 500 และเพิ่มค่า ServerLimit เป็น 20
    หมายเหตุ. MaxClients = ServerLimit x ThreadsPerChild ดังตัวอย่าง
    <IfModule mpm_worker_module>
    StartServers 2
    MinSpareThreads 25
    MaxSpareThreads 75
    ThreadLimit 64
    ThreadsPerChild 25
    ServerLimit 20/etc/apache2/httpd.conf
    MaxClients 500
    # MaxClients 150
    MaxRequestsPerChild 0
    </IfModule>

    เสร็จแล้วสั่งให้ระบบทำงานใหม่ด้วยคำสั่ง sudo /etc/init.d/apache2 force-reload

  9. ตั้งค่าให้เวบแสดงผลภาษาไทยแบบ utf-8 โดยอัตโนมัติ
    ให้แก้ไขแฟ้ม /etc/apache2/conf.d/charset
    ตั้งค่าตัวแปรเป็นว่า AddDefaultCharset UTF-8
    เสร็จแล้วสั่งให้ระบบทำงานใหม่ด้วยคำสั่ง sudo /etc/init.d/apache2 force-reload

  10. หากต้องการให้ apache2 สามารถ authen กับ radius server
    ให้ทำตามคำแนะนำจากเวบ ติดตั้ง apache บน ubuntu ให้ authen กับ radius server