Cấu hình domain ảo ở localhost

trong danh mục Web Programming

Nếu bạn đang là php programmer thì hẳn trên máy ít ra phải cài localhost để test web. Đó có thể là AppServ, XAMPP, WAMP…các phần mềm này đều sử dụng Apache làm lớp Web Server, và đó là đối tượng của bài viết này.

Giả sử bạn phát triển 1 dự án và tạo trên localhost, cách thông thường là mỗi dự án thì bạn tạo một thư mục riêng trong thư mục www hoặc bên trong 1 thư mục nào đó. Vd mình có 1 dự án mới tên là shopabc, đặt trong thư mục “www\projects\freelanceproj\”, thì để truy cập tới ứng dụng này trên localhost, bạn cần phải gõ đường dẫn trên trình duyệt là: http://localhost/projects/freelanceproj/shopabc/ <-- đường dẫn ở localhost đến ứng dụng shopabc mà bạn đang phát triển. Đường dẫn dưới localhost này có một số khuyết điểm sau: 1.Mỗi lần type cũng dài và nhiều khi khó nhớ 2. Không hiển thị chân thật được kiến trúc URL đã định ban đầu cho website vì nó không phản ánh đúng domain name 3. Demo cho khách hàng với cái đường dẫn không ấn tượng lắm. Với 3 khuyết điểm trên, mình viết bài này để chia sẽ tới các bạn một cách giúp giải quyết các khuyết điểm trên để làm cho việc phát triển web "vui" hơn một tí. Mục đích của mình cụ thể bây giờ là mình sẽ gõ http://myshop.com vào thanh địa chỉ của trình duyệt, và nó sẽ load nội dung y chang với đường dẫn http://localhost/projects/freelanceproj/shopabc/ của localhost. Để làm việc này mình sẽ sử dụng cơ chế Virtual Host của Apache.

Cấu hình chức năng như thế bạn cần tiến hành 3 bước như sau: cập nhật file host của windows, enable vhost module trong apache và add vhost để nhận domain mà bạn muốn.

Bước 1: Cập nhật file host của windows

Vì hệ thống của windows xp sử dụng file host (các windows khác mình chưa nghiên cứu, nếu ai có nghiên cứu rồi thì chia sẽ nhé!) để gắn 1 số domain để phân giải IP trực tiếp, nên bạn hãy vào file host của window (C:\WINDOWS\system32\drivers\etc\hosts) để thêm 1 dòng để nó phân giải tên miền bạn test, trong trường hợp này là myshop.com, sẽ được phân giải thành 127.0.0.1, tức là localhost của chúng ta.
Chỉ cần thêm 1 hàng mới là:
127.0.0.1 myshop.com
sau đó save lại là xong. Nếu bước 1 làm đúng, bạn vào trình duyệt gõ myshop.com thì nó sẽ load nội dung y chang đường dẫn http://localhost/.

Bước 2: Enable module vhost của apache

Bạn vào thư mục Apache trong localhost trên ổ cứng, nếu xài Appserv thì nó mặc định là : C:\AppServ\Apache2.2\conf\,
mở file “httpd.conf
tìm dòng “#Include conf/extra/httpd-vhosts.conf“, bạn chỉ cần bỏ 1 ký tự dấu # ở đầu dòng này là đã enable module vhost của apache rồi.

Bước 3: Thêm cấu hình cho 1 virtual host

Tiếp tục, bạn vào thư mục “C:\AppServ\Apache2.2\conf\extra“, mở file “httpd-vhosts.conf“, thêm đoạn sau:
<VirtualHost *:80>
ServerName myshop.com
DocumentRoot "C:/AppServ/www/projects/freelanceproj/shopabc"
</VirtualHost>

Khởi động lại server là xong <-- Lưu ý chỗ này đó. Ngoài cấu hình domain chính, bạn cũng có thể làm tương tự 3 bước cho các subdomain để test. Các bạn chú ý là có thể đường dẫn của các bạn sẽ khác mình bởi vì có thể các bạn sử dụng bộ localhost khác nhau nên nó install ở các folder khác, nhưng cấu hình ở bước 2,3 đều là cấu hình trong thư mục Apache, bạn thử tìm thì sẽ thấy thôi. Hy vọng bài viết này sẽ giúp ích cho mọi người. Mong nhận sự chia sẽ từ các bạn. Lấy cảm hứng từ chiến hữu của tui nên viết bài này. Cảm ơn ba nhé!

16 bình luận

  1. dungdeveloper says:

    Bài viết rất hữu ích. Thanks Tuấn!

    [Reply]

  2. t4 says:

    hix, sao mình chạy thử thì chỉ ra trang trắng thui 🙁

    [Reply]

  3. cảm ơn diễn đàn

    [Reply]

  4. phucvh says:

    hay
    tnsk cau vi bai viet rat bo ich

    [Reply]

  5. nguyenthanh says:

    hi,
    lần đầu tiên em vào blog học tập của anh,bài viết của anh hay quá.
    Anh ơi cho em hỏi, anh “sử dụng” php được mấy năm rồi?. Hồi mới bắt đầu học anh tự học hay ra trung tâm học vậy?

    [Reply]

    admin Reply:

    cảm ơn đã ghé thăm blog. PHP thì mình ngâm cứu khoảng 6 năm rồi, tất nhiên cách đây 6 năm thì có trung tâm nào dạy mới sợ :D.

    [Reply]

    TMQuang Reply:

    Chào Tuấn,
    Lâu ko gặp rồi nhỉ. Con số 6 năm của Tuấn cũng đáng nể, nhưng nếu Tuấn nói cách đây 6 năm mà ko 1 trung tâm nào dạy PHP thì có lẽ Tuấn chưa học qua hay ko muốn học.
    Vì mình là bằng chứng sống đây, năm 2003 mình bắt đầu học thiết kế web cao cấp do trung tâm tin học và ngoại ngữ IDC dạy và mình học PHP từ trong đó.
    Một chút đóng góp và sẻ chia 🙂

    [Reply]

    admin Reply:

    Hihi, hồi đó ở Nha Trang, có chỗ dạy PHP mới là lạ,keke. Cảm ơn đã chia sẽ.

  6. zozoclip says:

    Hi, bài viết rất hay. Mình đã làm thử nhưng ko được. Có thể mình làm sai đâu đó.
    Đóng góp chút :D. Nếu muốn test site bằng domain của mình trên localhost đơn giản nhất là chỉnh host file thành 127.0.0.1 -> domain. Chỉnh lại root trong http.conf là folder đặt trong root. Restart lại server -> Ok liền. 😀
    Thanks

    [Reply]

  7. Duy Vo says:

    cảm ơn bạn nhiều..!
    nếu bạn biết cách cài đặt apache sao cho 2 wed chạy trên 1 server thì bài đó hay hơn nữa..

    [Reply]

  8. Quốc Hưng says:

    @Duy Vo,
    “nếu bạn biết cách cài đặt apache sao cho 2 wed chạy trên 1 server thì bài đó hay hơn nữa..”
    bạn có thể làm đc rất nhiều website chạy trên 1 server theo ý bạn bằng cách tạo nhiều cấu hình cho file “httpd-vhosts.conf”

    ServerName domain1
    DocumentRoot “dir1”

    ServerName domain2
    DocumentRoot “dir2”

    ServerName domain3
    DocumentRoot “dir3”

    ….

    [Reply]

  9. Tait says:

    Hi, bài viết rất hay. Xin cảm ơn bạn nhiều..!

    [Reply]

  10. Minh Phuong says:

    Chào
    Cho mình hỏi mình co 1 server window dang chay IIS web asp.net
    nay mình muốn cấu hình chay PHP mình đã cài Appserver chạy localhost rất ok-
    Nhưng tới bước cấu hình tên miền lai ko dc mong cac bạn hướng dẫn minh đã làm gionng o trên
    Khi mình cấu hình xong http://www.tenmien.com:8080/index.php thi ok nhung ko chay dc http://www.tenmien.com/index.php nhu vậy khac phuc làm sao mong dc huong dẫn…

    [Reply]

  11. Ngô Tử Anh says:

    Hay quá, cảm ơn bạn.

    [Reply]

  12. xuanlocshop says:

    Chào bạn sau khi mình đổi tên miền trong General setting như http://localhost…thanh http://tên minh.com thì bị lỗi như sau
    Google: không có trang này
    Trong localhost thì không vào trang quản trị được.
    Xin giúp mình vài ý kiến
    Mình muốn hỏi thêm trong general setting mình đã lở bấm save như vậy mình có cách nào phục hồi lại không??
    Rất cám ơn
    Mong hồi âm sớm

    [Reply]

  13. ServerAdmin forum.abc.com.vn
    DocumentRoot “D:/mayvesinhcongnghiep/htdocs/forum”
    ServerName forum.abc.com.vn
    ServerAlias forum.abc.com.vn *.abc.com.vn
    ErrorLog “logs/ forum.abc.com.vn -error.log”
    CustomLog “logs/ forum.abc.com.vn -access.log” combined

    Minh đã cấu hình trong Vhost vậy nhưng không chạy được.

    Pác nào giúp em với.

    [Reply]

Gởi bình luận