Cách tạo Máy chủ ảo trong WampServer
WAMPServer 3 đã làm cho quá trình này dễ dàng hơn nhiều!
Bạn có thể làm hầu hết mọi thứ từ một tiện ích được cung cấp như một phần của WAMPServer.
Tạo một thư mục bên trong để chứa project.site của bạn. Điều này có thể nằm trong C:\wamp\www\
thư mục hoặc trong một thư mục hoàn toàn riêng biệt như C:\websites
.
Tạo một thư mục bên trong vị trí bạn đã chọn EG C:\websites\project1\www
hoặc bên dướic:\wamp\www\project1\www
Bây giờ, hãy mở localhost wampmanager->localhost
và nhấp vào liên kết Add a Virtual Host
dưới phần CÔNG CỤ trên trang chủ.
Bạn sẽ thấy một trang như thế này:
Điền vào các trường như được chỉ định bởi hướng dẫn ở trên mỗi trường
Cấu hình Máy chủ ảo sẽ được tạo cho bạn.
Bây giờ bạn phải khởi động lại DNS Cache. Bạn có thể làm điều này từ các menu wampmanager như thế này right click wampmanager->Tools->Restart DNS
. DNS Cache sẽ được khởi động lại và sau đó Apache cũng sẽ bị dừng và khởi động lại. Khi biểu tượng wampmanager chuyển sang màu xanh lục trở lại, tất cả đã hoàn thành.
Bây giờ bạn phải tạo một index.php
tệp đơn giản hoặc cài đặt trang web của bạn vào thư mục bạn đã tạo ở trên.
Giả sử VH của bạn được gọi là project.dev
Bạn sẽ thấy tên đó trong Phần Máy chủ ảo của Bạn trên trang chủ WAMPServer.
Bạn có thể khởi chạy trang web từ menu này hoặc chỉ cần sử dụng Tên miền mới trong thanh địa chỉ EG project1.dev
và khởi chạy trang web.
Cơ chế WAMPServer 2.5 cũ hoặc nếu bạn muốn làm tất cả theo cách thủ công
Đã có sự thay đổi khái niệm trong WampServer 2.5 trở lên và có một lý do chính đáng cho sự thay đổi này!
Trong WampServer hiện nay chúng tôi khuyến khích MẠNH MẼ tạo Máy chủ ảo cho mỗi dự án của bạn, ngay cả khi bạn giữ chúng trong một \wamp\www\subfolder
cấu trúc.
Tài liệu về Máy chủ ảo
Ví dụ về Máy chủ ảo
Trang chủ WampServer ( \wamp\www\index.php
) bây giờ hy vọng bạn đã tạo Máy chủ ảo cho tất cả các dự án của mình và do đó sẽ chỉ hoạt động bình thường nếu bạn làm như vậy.
Lịch sử
Để giúp người mới bắt đầu sử dụng WampServer học PHP Apache và MySQL dễ dàng hơn, chúng tôi khuyên bạn nên tạo các thư mục con trong \wamp\www\
thư mục.
wamp
|
|
|
|
Các thư mục con này sau đó sẽ hiển thị dưới dạng các liên kết trong Trang chủ WampServer trong menu có tên 'Dự án của bạn' và các liên kết này sẽ chứa một liên kết đến localhost/subfoldername
.
Chỉ được chấp nhận cho các hướng dẫn đơn giản
Điều này làm cho cuộc sống trở nên dễ dàng đối với những người mới bắt đầu hoàn toàn và hoàn toàn có thể chấp nhận được, chẳng hạn như những hướng dẫn sau đây để học viết mã PHP. Tuy nhiên, nó không bao giờ được dự định sử dụng khi phát triển một trang web thực mà sau này bạn muốn sao chép vào máy chủ lưu trữ trực tiếp của mình. Trên thực tế, nếu bạn sử dụng cơ chế này, nó thường gây ra sự cố vì cấu hình trang web trực tiếp sẽ không khớp với cấu hình phát triển của bạn.
Vấn đề để phát triển trang web thực.
Tất nhiên, lý do cho điều này là cài đặt DocumentRoot mặc định cho wamp là
DocumentRoot "c:/wamp/www/"
bất kể thư mục con của bạn được gọi là gì. Điều này đề cập đến việc thường sử dụng mã PHP để truy vấn cấu trúc hoặc trang web của bạn nhận được thông tin khác nhau khi chạy trên WampServer phát triển của bạn đến những gì nó sẽ nhận được khi chạy trên máy chủ được lưu trữ trực tiếp, nơi cấu hình DocumentRoot trỏ đến thư mục ở đầu trang web phân cấp tệp. Loại mã này tồn tại trong nhiều khuôn khổ và CMS, ví dụ như WordPress và Joomla, v.v.
Ví dụ
Giả sử chúng tôi có một dự án được gọi là project1 được tổ chức wamp\www\project1
và chạy không chính xác nhưlocalhost/project1/index.php
Đây là những gì sẽ được báo cáo bởi một số lệnh PHP được đề cập:
$_SERVER['HTTP_HOST'] = localhost
$_SERVER['SERVER_NAME'] = localhost
$_SERVER['DOCUMENT_ROOT'] = c:/wamp/www
Bây giờ nếu chúng tôi đã xác định chính xác trang web đó bằng cách sử dụng định nghĩa Máy chủ ảo và chạy nó vì http://project1
kết quả trên trang web phát triển WAMPServer sẽ khớp với kết quả nhận được khi ở trên môi trường được lưu trữ trực tiếp.
$_SERVER['HTTP_HOST'] = project1
$_SERVER['SERVER_NAME'] = project1
$_SERVER['DOCUMENT_ROOT'] = c:/wamp/www/project1
Bây giờ sự khác biệt này có vẻ nhỏ lúc đầu nhưng nếu bạn đang sử dụng một khuôn khổ như WordPress hoặc một trong những CMS như Joomla chẳng hạn, điều này có thể và gây ra sự cố khi bạn di chuyển trang web của mình sang một máy chủ trực tiếp.
Cách tạo Máy chủ ảo trong WampServer
Trên thực tế, điều này về cơ bản sẽ hoạt động giống nhau đối với bất kỳ máy chủ Apache nào, chỉ khác ở chỗ bạn có thể tìm thấy các tệp cấu hình Apache.
Có 3 bước để tạo Máy chủ ảo đầu tiên của bạn trong Apache và chỉ 2 bước nếu bạn đã xác định một máy chủ.
- Tạo (các) định nghĩa Máy chủ ảo
- Thêm tên miền mới của bạn vào tệp HOSTS.
- Bỏ ghi chú dòng trong httpd.conf bao gồm tệp định nghĩa Máy chủ ảo.
Bước 1 , Tạo (các) định nghĩa Máy chủ ảo
Chỉnh sửa tệp có tên httpd-hosts.conf
dành cho WampServer nằm trong
\wamp\bin\apache\apache2.4.9\conf\extra\httpd-vhosts.conf
(Số phiên bản Apache có thể khác nhau, hãy tham gia vào não bộ trước khi tiếp tục)
Nếu đây là lần đầu tiên bạn chỉnh sửa tệp này, hãy xóa mã ví dụ mặc định, mã này không có ích lợi gì.
Tôi giả sử chúng ta muốn tạo một định nghĩa cho một trang web có tên là project1 sống ở
\wamp\www\project1
Rất quan trọng, trước tiên chúng ta phải đảm bảo rằng localhost vẫn hoạt động, đó là định nghĩa VHOST đầu tiên mà chúng ta sẽ đưa vào tệp này.
<VirtualHost *:80>
DocumentRoot "c:/wamp/www"
ServerName localhost
ServerAlias localhost
<Directory "c:/wamp/www">
Options Indexes FollowSymLinks
AllowOverride All
Require local
</Directory>
</VirtualHost>
Bây giờ chúng tôi xác định dự án của mình: và điều này tất nhiên bạn làm cho từng dự án của mình khi bạn bắt đầu một dự án mới.
<VirtualHost *:80>
DocumentRoot "c:/wamp/www/project1"
ServerName project1
<Directory "c:/wamp/www/project1">
Options Indexes FollowSymLinks
AllowOverride All
Require local
</Directory>
</VirtualHost>
LƯU Ý: Mỗi Máy chủ ảo như DocumentRoot
được xác định riêng . Ngoài ra còn có nhiều tham số khác mà bạn có thể thêm vào định nghĩa Máy chủ ảo, hãy kiểm tra tài liệu Apache.
Nhỏ sang một bên
Cách máy chủ ảo hoạt động trong Apache: Định nghĩa đầu tiên trong tệp này cũng sẽ là trang web mặc định, vì vậy nếu tên miền được sử dụng trong trình duyệt không khớp với bất kỳ miền được lưu trữ ảo nào được xác định thực sự, việc đặt localhost trở thành miền đầu tiên trong tệp do đó nó là trang web được tải nếu một nỗ lực tấn công chỉ sử dụng Địa chỉ IP của bạn. Vì vậy, nếu chúng tôi đảm bảo rằng bảo mật Apache cho miền này LUÔN ĐƯỢC ĐẶT RA
Require local
bất kỳ cuộc tấn công thông thường nào từ một địa chỉ bên ngoài sẽ nhận được lỗi và không vào được PC của bạn, nhưng nếu bạn viết sai chính tả miền, bạn sẽ được hiển thị trên trang chủ WampServer, vì bạn đang ở trên cùng một PC với WampServer và therfore local
.
Bước 2 :
Thêm tên miền mới của bạn vào tệp HOSTS. Bây giờ chúng ta cần thêm tên miền mà chúng ta đã sử dụng trong định nghĩa Máy chủ ảo vào tệp HOSTS để windows biết nơi tìm nó. Điều này tương tự như tạo bản ghi DNS A, nhưng nó chỉ hiển thị trong trường hợp này trên PC cụ thể này.
Biên tập C:\windows\system32\drivers\etc\hosts
Tệp không có phần mở rộng và nên giữ nguyên như vậy. Cẩn thận với notepad, vì nó có thể thử và thêm .txt
tiện ích mở rộng nếu bạn không có trình chỉnh sửa nào tốt hơn. Tôi khuyên bạn nên tải xuống Notepad ++, miễn phí và là một trình soạn thảo rất tốt.
Ngoài ra, đây là một tệp được bảo vệ nên bạn phải chỉnh sửa nó với các đặc quyền của quản trị viên, vì vậy hãy khởi chạy trình chỉnh sửa của bạn bằng cách sử dụng tùy chọn menu Run as Administrator .
Tệp máy chủ sẽ trông giống như thế này khi bạn đã hoàn thành các chỉnh sửa này
127.0.0.1 localhost
127.0.0.1 project1
::1 localhost
::1 project1
Lưu ý rằng bạn nên có các định nghĩa tại đây cho địa chỉ lặp lại IPV4 127.0.0.1
và cả địa chỉ lặp lại IPV6::1
vì Apache hiện đã biết IPV6 và trình duyệt sẽ sử dụng IPV4 hoặc IPV6 hoặc cả hai. Tôi không biết làm thế nào nó quyết định cái nào để sử dụng, nhưng nó có thể sử dụng nếu bạn đã bật ngăn xếp IPV6 và hầu hết các hệ điều hành window đều làm như XP SP3.
Bây giờ chúng ta phải yêu cầu các cửa sổ làm mới bộ đệm tên miền của nó, vì vậy hãy khởi chạy lại cửa sổ lệnh bằng cách sử dụng lại tùy chọn menu Run as Administrator và thực hiện như sau.
net stop dnscache
net start dnscache
Điều này buộc các cửa sổ phải xóa bộ nhớ cache tên miền của nó và tải lại nó, khi tải lại, nó sẽ đọc lại tệp HOSTS để bây giờ nó biết về miền project1
.
Bước 3 : Bỏ ghi chú dòng trong httpd.conf bao gồm tệp định nghĩa Máy chủ ảo.
Chỉnh sửa httpd.conf của bạn, sử dụng menu wampmanager.exe để đảm bảo bạn chỉnh sửa đúng tệp.
Tìm dòng này trong httpd.conf
Và chỉ cần bỏ #
ghi chú dòng đó.
Để kích hoạt thay đổi này khi bạn đang chạy Apache, bây giờ chúng ta phải dừng và khởi động lại dịch vụ Apache.
wampmanager.exe -> Apache -> Service -> Restart Service
Bây giờ nếu biểu tượng WAMP trong khay hệ thống không chuyển sang màu XANH LÁ nữa, điều đó có nghĩa là bạn có thể đã làm sai điều gì đó trong \wamp\bin\apache\apache2.4.9\conf\extra\httpd-hosts.conf
tệp.
Nếu vậy, đây là một cơ chế hữu ích để tìm ra điều gì sai. Nó sử dụng một tính năng của exe Apache (httpd.exe) để kiểm tra các tệp cấu hình của nó và báo cáo lỗi theo tên tệp và số dòng.
Khởi chạy cửa sổ lệnh.
cd \wamp\bin\apache\apache2.4.9\bin
httpd -t
Vì vậy, hãy sửa lỗi và kiểm tra lại cho đến khi bạn nhận được đầu ra
Syntax OK
Bây giờ còn một điều nữa.
Thực tế có 2 mục menu mới trên hệ thống menu wampmanager. Một cái tên là 'Dự án của tôi' được bật theo mặc định. Và một thứ hai, được gọi là 'Máy chủ ảo của tôi' , không được kích hoạt theo mặc định.
'Dự án của tôi' sẽ liệt kê bất kỳ thư mục con nào của thư mục \ wamp \ www và cung cấp một liên kết để khởi chạy trang web trong thư mục con đó. Như tôi đã nói trước đó, nó khởi chạy 'project1' chứ không phải 'localhost / project1', do đó, để làm cho liên kết hoạt động, chúng ta phải tạo định nghĩa Máy chủ ảo để làm cho liên kết này thực sự khởi chạy trang web đó trong trình duyệt của bạn, nếu không có định nghĩa Máy chủ ảo, nó có thể khởi chạy tìm kiếm trên web cho tên trang web dưới dạng từ khóa hoặc chỉ trả về tình trạng không tìm thấy trang web.
Mục menu 'Máy chủ ảo của tôi' hơi khác một chút. Nó tìm kiếm tệp được sử dụng để xác định Máy chủ ảo (chúng ta sẽ làm được điều đó sau một phút) và tạo các liên kết menu cho từng tham số ServerName mà nó tìm thấy và tạo một mục menu cho mỗi một. Điều này có vẻ hơi khó hiểu vì khi chúng ta tạo định nghĩa Máy chủ ảo cho các thư mục con của thư mục \ wamp \ www, một số mục sẽ xuất hiện trên cả menu 'Dự án của tôi' và menu 'Máy chủ ảo của tôi'.
Làm cách nào để bật menu 'Máy chủ ảo của tôi' khác này?
- Sao lưu tệp \ wamp \ wampmanager.tpl, đề phòng trường hợp bạn mắc lỗi, đây là một tệp rất quan trọng.
- Chỉnh sửa \ wamp \ wampmanager.tpl
- Tìm tham số này
;WAMPPROJECTSUBMENU
trong phần '[Menu.Left]'.
- Thêm thông số mới này vào
;WAMPVHOSTSUBMENU
trước hoặc sau ;WAMPPROJECTSUBMENU
tham số.
- Lưu các tập tin.
- Bây giờ hãy nhấp chuột phải vào biểu tượng wampmanager và chọn 'Làm mới'. Nếu điều này không thêm menu, hãy 'thoát' và khởi động lại wampmanager.
Lưu ý lớn
Menu mới sẽ chỉ xuất hiện nếu bạn đã xác định một số Máy chủ ảo! Nếu không, bạn sẽ không thấy sự khác biệt nào cho đến khi bạn xác định VHOST.
Bây giờ nếu bạn đưa điều này đến phần mở rộng hợp lý của nó
Bây giờ bạn có thể di chuyển mã trang web của mình hoàn toàn ra ngoài \wamp\
cấu trúc thư mục chỉ bằng cách thay đổi tham số DocumentRoot trong định nghĩa VHOST. Vì vậy, ví dụ, bạn có thể làm điều này:
Tạo một thư mục trên đĩa wamp hoặc bất kỳ đĩa nào khác (hãy cẩn thận với ổ đĩa mạng, chúng phức tạp hơn một chút)
D:
MD websites
CD websites
MD example.com
CD example.com
MD www
Bây giờ bạn sao chép mã trang web của mình vào hoặc bắt đầu tạo mã đó trong \websites\example.com\www
thư mục và xác định VHOST của bạn như sau:
<VirtualHost *:80>
DocumentRoot "d:/websites/example.com/www"
ServerName example.dev
ServerAlias www.example.dev
<Directory "d:/websites/example.com/www">
Options Indexes FollowSymLinks
AllowOverride All
Require all granted
</Directory>
php_flag display_errors Off
php_flag log_errors On
php_value max_upload_size 40M
php_value max_execution_time 60
php_value error_log "d:/wamp/logs/example_com_phperror.log"
</VirtualHost>
Sau đó, thêm miền phát triển mới này vào tệp HOSTS:
127.0.0.1 localhost
::1 localhost
127.0.0.1 project1
::1 project1
127.0.0.1 example.dev
::1 example.dev
LƯU Ý: Bạn không nên sử dụng ServerName hoặc ServerAlias giống với tên miền trực tiếp của bạn, vì nếu chúng tôi đã sử dụng example.com làm Tên máy chủ, điều đó có nghĩa là chúng tôi không thể truy cập trang web trực tiếp thực sự từ điều này nữa PC vì nó sẽ hướng example.com đến 127.0.0.1 tức là PC này và không kết nối với internet.
CŨNG: Thấy rằng tôi đã cho phép trang web này được truy cập từ internet từ bên trong các định nghĩa VHOST, thay đổi này sẽ chỉ áp dụng cho trang web này và không áp dụng cho trang web khác. Rất hữu ích để cho phép khách hàng xem các thay đổi của bạn trong một giờ hoặc lâu hơn mà không cần phải sao chép chúng vào máy chủ trực tiếp. Điều này có nghĩa là chúng tôi phải chỉnh sửa tệp này theo cách thủ công để bật và tắt quyền truy cập này thay vì sử dụng mục menu Đặt Trực tuyến / Ngoại tuyến trên wampmanager.
Ngoài ra, tôi đã thêm một số sửa đổi vào cấu hình PHP, một lần nữa điều đó sẽ chỉ áp dụng cho một trang web này. Rất hữu ích khi duy trì một trang web có yêu cầu cụ thể không giống như tất cả các trang web khác mà bạn duy trì. Tôi đoán chúng ta có thể giả định từ các tham số được sử dụng rằng nó có một trang chạy dài ở đâu đó và nó được viết rất tệ và sẽ không chạy với lỗi hiển thị trên trình duyệt mà không làm cho trang bị lộn xộn kinh khủng. Hãy tin tôi rằng các trang web như thế này tồn tại và mọi người vẫn muốn chúng được duy trì không tốt . Nhưng điều này có nghĩa là chúng tôi chỉ phải thay đổi các thông số này cho trang web cụ thể này và không phải trên toàn cầu cho tất cả các trang web Ảo chạy trên WampServer.