Tag Archive virtual host

Byphunsanit

ทำ Virtual Host ใน Apache

เพราะว่าต้องแยกส่วนของ frontend และ backend ไว้คนละ server เพื่อความสดวกและปลอดภัย โดยทั้งคู่จะติดต่อกันผ่านทาง api แต่เวลาเขียนมีคอมพิวเตอร์แค่เครื่องเดียว ตามปกติสามารถทำได้โดยแยกงานไว้คนละ folder และเพื่อให้เหมือนของจริงยิ่งขึ้นก็ใข้วิธีทำ Virtual Host แยกออกเป็น 2 เซิร์ฟเวอร์ (ถึงจะแค่เครื่องจำลองก็เถอะ)

ทำได้โดยการเปิดไฟล์ C:\xampp\apache\conf\extra\httpd-vhosts.conf และเพิ่ม


## backend
Listen 81
<VirtualHost *:81>

    CustomLog "D:\xampp\htdocs\cms_backend\logs\apacheAccess.txt" common
    ErrorLog "D:\xampp\htdocs\cms_backend\logs\apacheError.txt"

    php_flag display_errors on
    php_flag log_errors on
    php_value error_log "D:\xampp\htdocs\cms_backend\logs\phpError.txt"
    php_value error_reporting 2147483647

    DocumentRoot "D:\xampp\htdocs\cms_backend\www"

    ServerAdmin phunsanit@hotmail.com
    ServerName backend.localhost

</VirtualHost>

## frontend
Listen 82
<VirtualHost *:82>

    CustomLog "D:\xampp\htdocs\cms_frontend\logs\apacheAccess.txt" common
    ErrorLog "D:\xampp\htdocs\cms_frontend\logs\apacheError.txt"

    php_flag display_errors on
    php_flag log_errors on
    php_value error_log "D:\xampp\htdocs\cms_frontend\logs\phpError.txt"
    php_value error_reporting 2147483647

    DocumentRoot "D:\xampp\htdocs\cms_frontend\www"

    ServerAdmin phunsanit@hotmail.com
    ServerName frontend.localhost

</VirtualHost>

อธิบาย

Listen
คือหมายเลขพอร์ตที่จะให้รอรับ request อย่าตั้งให้ชนกับตัวอื่น
CustomLog, ErrorLog
คือไฟล์ log ที่แยกออกมาของแต่ละ virtual host โดยสามารถอ่านคู่มือได้จาก Log Files
php_flag, php_value
คือ การปรับแต่ง php เป็นพิเศษสำหรับ server ตัวนี้เท่านั้น
DocumentRoot
คือ folder ที่ไว้เก็บ php ที่เราตั้งใจแยกไว้ เป็น code ชุดเดียวกับที่เราจะเอาขึ้น server จริง
ServerAdmin, ServerName
คือ ข้อมูล server แต่ละตัว

ทดสอบโดย restart apache ใหม่และเปิดเว็บ

Byphunsanit

การ config visual Directory ใน apache

หลังจากลง appserv หรือ xampp เราก็จะสามารถเข้าไปเพื่อเขียนงานได้ทันที ในบางครั้งการทำเว็บก็มีความต้องการให้บางส่วนของเว็บทำงานเป็นพิเศษต่างจากปกติที่โปรแกรมจัดไว้ให้ เช่น เว็บมีขนาดใหญ่มากไม่เหมาะที่จะเก็บไว้ในไดร์ฟเดียวกับเว็บอื่นๆ ไม่ต้องการที่จะที่จะเก็บไว้ในไดร์ฟซี หรือต้องวางไว้โดยใช้ port พิเศษเพื่อความปลอดภัย
ใช้ editplus เปิด Config จะอยู่ที่ C:\xampp\apache\conf\httpd.conf ใช้ เนื่องจากต้องการจะแยก config ทีเพิ่มมาใหม่ไว้อีกที่เพื่อความเป็นระเบียบและบริหารง่าย จะใช้วิธี include ให้ไปอ่านจากอีกไฟล์หนึ่ง เพิ่มบรรทัด
Include “C:\xampp\apache\conf\extra\httpd-plus.conf” หลัง include คือ ชื่อไฟล์และพาร์ทที่จะเก็บ config ตัวใหม่
ถ้าต้องการ map directory ใหม่ใช้

Alias /www2 "d:/www2/"
<Directory "d:/www2">
AllowOverride All
Order allow,deny
Allow from all
</Directory>

อธิบายคือ map directory d:/www2 โดยจะสามารถเรียกโดย url http://localhost/www2/
ถ้าต้องการกำหนด port หรือค่าอื่นๆด้วย

Listen 8080
Alias /www2 " d:/www2/"
<Directory "d:/www2/">
Options Indexes FollowSymLinks MultiViews ExecCGI
AllowOverride All
Order allow,deny
Allow from all
</Directory>
<VirtualHost *:8080>
ServerAdmin plus@hotmail.com
DocumentRoot "d:/www2"
ServerName Plus.localhost
ServerAlias dev.localhost
ErrorLog "logs/Plus.localhost-error.log"
CustomLog "logs/Plus.localhost-access.log" combined
</VirtualHost>

จะต่างกันที่เรียกโดย url http://localhost:8080 คือต้องระบุ port ด้วยและ config บางส่วนจะต่างกัน
เช่น การกำหนดอีเมล์ผู้ดูแล domain
อ่าน ทำ dns (Domain Name System) ส่วนตัว เพิ่มเติมครับ