Bạn là một PHP Developer chắc không lạ gì khi phải làm việc với các chương trình tạo máy chủ ảo trên máy tính cá nhân(thường gọi là localhost). Trong trường hợp bạn cần cấu hình riêng cho localhost để chạy từng domain riêng cho từng ứng dụng thì bài viết này sẽ giúp ích cho các bạn. Đối tượng phần mềm giả lập máy chủ ảo mà tôi muốn nhắc đến trong bài viết này là AppServ – một phần mềm yêu thích của tôi.
Theo cách thông thường, chúng ta sẽ tạo một thư mục chứa project mới trong thư mục www, sau đó sử dụng trình duyệt để truy cập vào thư mục này, ví dụ:
http://localhost/projectabc
Cách này có một vài điểm hạn chế như :
- Đường dẫn dài, nhiều thư mục nếu như bạn phải thực hiện nhiều dự án cho nhiều đối tượng khác nhau và phải phân thư mục riêng để tiện cho việc quản lý.
- Cấu hình web khá rắc rối và tốn thời gian, khi bạn chuyển dự án web của mình lên host và sử dụng domain chính sẽ gặp phiền hà vì phải xóa các đường dẫn thư mục đi.
- Khi demo một dự án cho khách hàng sẽ không được chuyên nghiệp và có khả năng lộ các dự án bạn đang thực hiện khác.
Lúc này bạn sẽ ước gì URL của bạn chỉ ngắn còn projectabc.com hoặc ít hơn nữa như projectabc mà thôi. Nếu bạn muốn vậy, chúng ta hãy cùng đọc tiếp cách thực hiện.
Phụ mục
Bước 1: Cập nhật lại file hosts trên máy tính
Ngoài việc sử dụng hệ thống phân giải tên miền toàn cầu (DNS) để xác định địa chỉ IP cho một domain, máy tính sử dụng hệ điều hành Window còn sử dụng file hosts để phân giải nhanh chóng một tên miền theo ý người dùng. Bằng cách thêm một dòng xác định IP tương ứng với tên miền mới, bạn có thể giúp hệ điều hành Window của mình trỏ tên miền mong muốn đến localhost (IP mặc định 127.0.0.1). Bạn thêm đoạn sau vào file hosts nằm ở C:\Windows\System32\drivers\etc
[code]127.0.0.1 projectabc.com[/code]Như vậy, khi bạn gõ http://projectabc.com trên trình duyệt, Window sẽ phân giải và trả về IP của localhost (127.0.0.1). Việc thêm dải IP này cũng giống như cách bạn thường làm để vượt tường lửa vào FaceBook vậy.
Sau khi xong bước này, bạn có thể gõ http:projectabc.com để vào máy chủ ảo tương tự như bạn gõ http://localhost vậy.
Bước 2: Bật tính năng Virtual Hosts của AppServ
Tiếp theo, bạn cần bật module Virtual Hosts của AppServ để có thể sử dụng. Bạn tìm file httpd.conf nằm trong thư mục D:\AppServ\Apache2.2\conf (ổ D là ổ tôi cài ứng dựng AppServ, tùy theo vị trí bạn cài đặt AppServ mà tìm nhé).
Tìm dòng:
[code]#Include conf/extra/httpd-vhosts.conf[/code]bỏ đi dấu # ở phía trước thành
[code]Include conf/extra/httpd-vhosts.conf[/code]Tới đây, bạn đã cho phép AppServ của mình chạy module Virtual Host.
Bước 3: Cấu hình Virtual Host cho domai mong muốn
Để AppServ hiểu được domain nào sử dụng ứng dụng web nào, bạn cần cấu hình thêm một chút nữa. Bạn mở tiếp file httpd-vhosts.conf nằm trong thư mục D:\AppServ\Apache2.2\conf\extra, thêm vào dưới cùng của nó đoạn sau:
[code]<VirtualHost *:80>ServerName projectabc.com
DocumentRoot "D:\AppServ\www\projectabc.com"
</VirtualHost>[/code]
Đến đây, chúng ta đã hoàn tất toàn bộ các bước cấu hình cần thiết để tạo một domain ảo trên localhost. Hãy cùng nhìn lại quá trình: đầu tiên, Window sẽ phân giải domain(hoặc chuỗi) mà bạn gõ trên trình duyệt và trả về IP của localhost mà bạn đã cấu hình trong file hosts, tiếp theo module Virtual Hosts sẽ khởi động và dựa vào cấu hình bạn đã thêm vào ở bước 3 để biết đối với ServerName đó sẽ cần trỏ đến thư mục nào.
Cuối cùng bạn restart lại Apache để có thể sử dụng. Bạn có thể tham khảo thêm bộ công cụ dành cho người làm web để bổ sung nếu thích.
Thạch Phạm says
Hay quá, trước giờ em muốn dùng domain ngắn thì toàn dùng chức năng redirect mà ta cấu hình trong file host nhưng cuối cùng mình vẫn phải gõ lại URL localhost gốc khi truy cập vào 1 thư mục khác hay đường dẫn khác. Cảm ơn anh về bài tut này ;):x
Nhật Trường says
Mình tìm bài viết này rất nhiều trên google nhưng cuối cùng cũng tìm được trang này, đã thành công nhưng đang vấp phải vấn đề sau mong Nguyễn Duy Nhân giúp đỡ.
bây giờ vào localhost và localhost/phpmyadmin không được nữa để backup lại website.
Mong bạn giúp đỡ >:D<
Nguyễn Duy Nhân says
Bạn đổi localhost lại thành domain hay là sử dụng một domain khác localhost vậy ?
Nhật Trường says
localhost thành nhiều domain khác bạn.
cụ thể
ServerName nhadatbinhduong.no-ip.org
DocumentRoot “D:\AppServ\www\nhadat”
ServerName vemaybaybinhduong.myvnc.com
DocumentRoot “D:\AppServ\www\diaoc”
Tên vi phạm says
cảm ơn admin, bài viết rất chi tiết ;) :P
Ranmaager says
mình cài Appserv với port 8080
– Đã mở port trên router: 8080.
– Đã sửa file hosts về: 127.0.0.1 projectabc.com
– Đã sửa Include conf/extra/httpd-vhosts.conf
và httpd-vhosts.conf:
ServerName projectabc.com
DocumentRoot “D:\AppServ\www\projectabc.com”
nhưng site chỉ chạy: http://www.projectabc.com:8080/projectabc.com/
hay là http://113.x.x.x:8080/projectabc.com/
Hướng dẫn giúp mình với
Nguyễn Duy Nhân says
Hình như vitual host có vấn đề. Phần cấu hình trên cấu hình trên của mình là do mình đặt Appserv của mình ở ổ D:\AppServ\ còn của bạn thì bạn phải đặt đường dẫn lại cho tương ứng. Bạn thử lại xem.
nha thu says
Anh ơi, em làm web Joomla với AppServ, em làm trên VMware gồm 1 máy DNS, 1 máy Web Apache và 1 máy XP để test host ảo, em làm theo hướng dẫn, nhưng khi vào địa chỉ với www thì nó cứ chuyển về “The AppServ Open Project – 2.5.10 for Windows ” (cái này là phpmyadmin mà), em thử đi thử lại rồi mà vẫn thế, Anh giúp em với, Cảm ơn anh.
hainguyen says
Chào anh ! Em có 1 vấn đề như sau: Emcó một phần mềm về giáo dục chạy trên nền tảng web được viết bằng PHP + MySql . Em sử dụng AppServ và chạy phần mềm trên localhost bằng tên miền ảo ( Vi dục tên miền ảo của mình là : phanmem.abc cái này lấy tùy ý) ,Phòng máy của em khoảng 30 máy có kết nối mạng Lan, em đặt cho máy chủ 1 IP tĩnh Ví dụ là : 192.168.1.50 sau đó em trỏ các máy con về máy chủ qua file host bằng cách thêm vào file host dòng lệnh 192.168.1.50 phanmem.abc . Phần mềm chạy rất ổn định khi mạng Lan của mình có đường truyền internet, nhưng khi ngắt kết nối internet thì phần mềm vẫn chạy nhưng rất chậm, phải đợi 2 phút mới loading xong.Anh cho em hỏi nguyên nhân và cách giải quyết ! Trân trọng cảm ơn !
Nguyễn Duy Nhân says
Bạn thử kiểm tra xem có sử dụng các file nào từ Internet không. Rất nhiều trường hợp bạn sử dụng thư viện file online (thường gặp là javascript, jquery…) nên cần download file từ internet về làm chậm tiến trình tải trang.