Một máy web server sẽ được cấu hình cho một trang web riêng, nhưng sẽ ra sao nếumuốn cấu hình thêm trang web nữa trên thiết bị web server đó, sẽ khá khó khăn nhưngvới virtual host - máy
Trang 1BỘ CÔNG THƯƠNGTRƯỜNG CAO ĐẲNG CÔNG THƯƠNG TP.HCM
KHOA CÔNG NGHỆ THÔNG TIN
Trang 2MUC LUC
Trang 3LỜI CẢM ƠN
LỜI MỞ ĐẦU
CHƯƠNG 1: TỔNG QUAN VIRTUAL HOST
1 Giới thiệu mô hình virtual host:
Máy chủ HTTP Apache là máy chủ web được sử dụng rộng rãi nhất trên thế giới Nócung cấp nhiều tính năng mạnh mẽ bao gồm các mô-đun có thể tải động, hỗ trợ phươngtiện mạnh mẽ và tích hợp rộng rãi với các phần mềm phổ biến khác
Một máy web server sẽ được cấu hình cho một trang web riêng, nhưng sẽ ra sao nếumuốn cấu hình thêm trang web nữa trên thiết bị web server đó, sẽ khá khó khăn nhưngvới virtual host - máy chủ ảo, chỉ cần được cấu hình thích hợp, trên thiết bị web server sẽtồn tại nhiều hơn một trang web được hoạt động
Điều này giúp tiết kiệm được nguồn tài nguyên trên thiết bị web server, hỗ trợ mạnhcho các doanh nghiệp có nguồn vốn lưu động nhỏ
Phần mềm apache hỗ trợ các lập trình viên sẽ tạo ra các website, các đơn vị công tyyêu cầu cần nhiều hơn hai trang web để phuc vụ mục đích của công ty
2 Khái niệm Virtual Host:
Virtual host là phương thức đề cập tới việc chạy nhiều trang web trên cùng một máy duy nhất (vd: co1.example.com, co2.example.com )
Có một khái niệm khác được đề cập tới trong Nginx cũng có chức năng tương tự nhưVirtual Host được gọi là Server Block Với Nginx, chúng ta gọi đó là Server Block, cònvới người dùng Apache, chúng ta gọi đó là Virtual host Hiểu đó chính là “tên ảo” dùng
để chạy nhiều tên miền trên một địa chỉ IP của một Server hay VPS
Virtual host là một định nghĩa chỉ chức năng nhúng nhiều tên miền vào một địa chỉ IPcủa một Server Và bằng cách cài đặt riêng, Server sẽ nhận biết được tên miền nào sẽhoạt động ở một folder nào Điều này mang ý nghĩa rất lớn vì chúng ta không cần mỗi tênmiền một địa chỉ IP mà chỉ cần một server là có thể nhúng hàng trăm tên miền cùng hoạtđộng
Virtual host có 2 dạng:
Có thể dựa trên địa chỉ IP, nghĩa là có một địa chỉ IP riêng biệt cho một web site
Sử dụng những địa chỉ ip khác nhau cho từng domain gọi là ip-based virtual hosting Nhưvậy, một máy tính phải có nhiều interface, hoặc sử dụng cơ chế virtual Interface
Hoặc có thể dựa theo tên máy, nghĩa là có nhiều tên trên một địa chỉ gọi là based virtual hosing Chỉ cần cấu hình DNS sao cho nó phân giải mỗi tên máy đúng vớiđịa chỉ IP và sau đó cấu hình Apache để tổ chức web server cho những miền khác nhau
named-3 Chức năng: giúp ta duy trì nhiều hơn một web server trên một máy tính
Điều này đặc biệt hữu ích nếu bạn không muốn chi tiền cho nhiều Máy chủ riêng ảo(VPS), nhưng bạn muốn có khả năng chạy và xây dựng nhiều trang web với chi phí tốithiểu trên cùng một máy chủ Trong kịch bản thế giới thực, hầu hết các trang web đó sẽdựa trên các hệ thống quản lý nội dung phổ biến như Wordpress, Drupal, Joomla, v.v
Trang 4Ý tưởng nằm ở chỗ thay vì có một thư mục gốc cho trang web của bạn (đó
là /var/www/html/ trong ví dụ của chúng tôi), bạn có thể có nhiều thư mục nằm trong /var/www/ trong đó mỗi thư mục sẽ chứa trang web riêng
4 Nguyên lý hoạt động: Tạo môi trường cho máy chủ web chạy từ 2 trang web trởlên
Mỗi tên miền được cấu hình sẽ đưa người dùng đến một đường dẫn cụ thể lưu trữthông tin về trang web đó, mà không quan tâm đến server cũng lưu trữ nhiều trang webkhác Cấu trúc này có thể mở rộng bất chấp giới hạn về phần mềm, miễn là server có thể
xử lí lưu lượng truy cập của tất cả các website ấy
Vd Khi ta làm việc với apache ở localhost (dùng xampp, ampps,…) và đôi lúc ta có
nhiều project quá, khó nhớ, kèm như những đường link dài như:
Khá dài, bất tiện phải không các bạn
Vậy nên tạo ra 1 VirtualHost sẽ giúp chúng ta giải quyết việc này
Ví dụ: thay vì ta phải vào localhost/abc/xyz/public thì nay ta chỉ cần đơngiản xyz.com
5 Các port sử dụng: 80, 8080, …(web)
CHƯƠNG 2: CÀI ĐẶT
Một phần không thể thiếu của một máy chủ web (bao gồm cả Apache, Nginx,Lighttpd…) là chạy nhiều web trên 1 server Bạn có thể thêm domain vào máy chủ và cấuhình chúng riêng rẽ Mỗi cấu hình như vậy được gọi là một virtual host
Mỗi một virtual host sẽ quy định cho mỗi tên miền riêng biệt Bạn có thể tạo ra vô
số virtual host để thêm domain vào VPS và chạy nhiều web trên 1 server
Ví dụ có một tên miền đã được đăng ký online nghĩa là sử dụng external network bạnđặt một tên như vậy thì khi truy cập vào tên miền đó request bạn gửi đi sẽ tới serveronline kia và trả lại trang web bạn không mong muốn, nhưng khi đăng ký DNS local thìviệc sử dụng internal network khi truy cập vào tên miền của bạn nó sẽ tìm kiếm tronghost local trước
Mở file /etc/hosts
Trang 5về mặc định chỉ cần sửa lại tên file là được.
Kiểm tra hostname bằng lệnh hostname lệnh này sẽ cho kết quả đầy đủ nhất dạngFQDN hoặc hostname -f hiện thị hostname dạng ngắn gọn
KeepAlive: chức năng duy trì connection và đóng sau khoảng thời gian timeout được
chỉ định, khi không được cấu hình đúng cách nó làm tăng lượng memory không giảiphóng được tài nguyên
<IfModule prefork.c> … </IfModule>: khai báo dùng module MPM prefork để mỗi
process xử lý một request
StartServers: thông số này quy định số process sinh ra khi khởi động Apache.
MinSpareServers, MaxSpareServers: quy định số process con nhàn rỗi nhỏ nhất và
lớn nhất được sinh ra để chờ xử lý request từ client
MaxClients: số requests được xử lý đồng thời.
MaxRequestsPerChild: giới hạn số requests tối đa đến web server, giá trị 0 có nghĩa
là không giới hạn, nếu giá trị này quá thấp sẽ làm giảm hiệu suất vì các requests mới sẽphải đợi để được xử lý
KHỞI ĐỘNG LẠI APACHE trên CentOS 7 chạy lệnh
systemctl restart httpd.service
Xem dịch vụ httpd (apache) và mpm prefork đã start hay chưa dùng lệnh sau
cat /etc/httpd/logs/error_log | grep prefork
Trang 6netstat -tulpn
Kết quả như trên là đã start thành công rồi, Module pmp prefork, apache đã chạyvới pid 20149, Web server đang lắng nghe trên port 80
8 Cấu hình virtual host:
Bây giờ Apache đã được tối ưu, nếu muốn chạy nhiều website trên một VPS bạn phảitạo Virtual Hosts cho Apache Nói chung thì, kể cả có chạy một website duy nhất thìcũng nên tạo Virtual Hosts sau này muốn cài cắm thêm cũng dễ
TẠO THƯ MỤC CẦN THIẾT VÀ PHÂN QUYỀN
mkdir -p /var/www/web.com/public_html
mkdir -p /var/www/web.com /logs
mkdir -p /var/www/web.com /backup
Khi triển khai bất kỳ một trang web nào mình sẽ tạo một thư mục có tên là domaincủa trang web, trong đó sẽ có 3 folder:
public_html: bạn sẽ để sourcecode của trang web vào đây.
logs: để chứa log của trang web.
backup: chứa các file backup định kỳ hoặc các file cấu hình.
Bạn phải chuyển quyền sở hữu sang cho user apache là user quản trị webserver
chown -R apache:apache /var/www/ web.com
Tham số -R này sẽ chuyển toàn bộ thư mục bao gồm cả files và subfolder từ root sangcho apache
TẠO VIRTUAL HOSTS
Trong thư mục conf.d tạo file vhosts.conf đây là file chứa cấu hình Virtual hosts Bên
dưới là mẫu cho web web.com, bạn thay đổi các giá trị cho phù hợp với domain của
Trang 7ServerAdmin: đơn giản chỉ là mail quản trị viện.
ServerName: root domain của virtual host được người dùng gõ trên trình duyệt ServerAlias: tên gọi khác của root domain, còn được dùng để cấu hình www và nonwww
ErrorLog: ghi lại log các lỗi phát sinh.
CustomLog: ghi lại log các truy cập.
Bạn nên cấu hình ghi lại log cho web server để debug và theo dõi truy cập đây cũngnguồn dữ liệu quan trọng tạo cơ sở để cấu hình web server và thiết lập tường lửa, nếu cầntối ưu tốc độ bạn có thể tạm thời vô hiệu hóa đi cũng được
Nói chung không có gì phức tạp cả, từ giờ khi muốn thêm trang web khác bạn chỉ
việc thêm tiếp một cái <VirtualHost>…</VirtualHost> là xong.
Hoặc bạn tách mỗi cặp thẻ Virtual Host ra một file, đặt đuôi mở rộng
là conf đấy cũng là cách hay để quản lý nhiều domain
9 Tạo các web thử nghiệm:
TẠO INDEX.HTML TEST WEB SERVER
Muốn biết Virtual Hosts hoạt động thế nào thì tạo một file index.html đơngiản vi/var/www/web.com/public_html/index.html
Với nội dung sau:
10 Kiểm tra thử nghiệm:
CẤU HÌNH CHO APACHE KHỞI ĐỘNG CÙNG MÁY CHỦ
systemctl enable httpd.service
Thế là xong từ giờ webserver sẽ tự khởi động mỗi khi start VPS
Trang 8Xong đâu đấy mở trình duyệt ra truy cập domain thuysys.com xem để kiểm tra hoặcdùng lệnh curl -I http://www.web.com nếu trả vềkết quả như bên dưới là đã thành côngrồi.
[root@srv1 ~]# curl -I http://www.web.com
HTTP/1.1 200 OK
KÊT LUẬN
Các thao tác đơn giản đã tạo được một Vhost trong có vẻ khá giống với một tên miềnthật
Bạn có thể cấu hình một server cho riêng bạn
Với Apache thì không có giới hạn về số lượng domain có thể quản lý do đó ta có thểthoại mái tạo ra server để handling (xử lý)
Tương tự cũng có thể cấu hình Vhost với WAMP, APPServer, USBServer các cấuhình cũng không khác nhiều lắm Vì tất cả các phần mềm này đều dùng Apache, Mysql
và PHP Vhost là một tình năng của Apache nên đều có thể cấu hình Vhost theo cáchtương tự, điểm khác biệt chỉ là khác về nơi đặt file httpd.conf
TÀI LIỆU THAM KHẢO
Trang 9Nhiều máy chủ ảo trên CentOS 7 hoặc RHEL 7
Bước 1: Trỏ tên miền
Trỏ lưu lượng truy cập web của tên miền của bạn vào máy chủ của bạn theo yêu cầucủa nhà cung cấp tên miền của bạn Về cơ bản, điều đó có nghĩa là bạn sẽ cần tạo mộtbản ghi phân giải thành IP của máy chủ web của bạn
Bước 2: Thêm máy chủ ảo vào cấu hình của máy chủ web
Giả sử chúng tôi muốn xây dựng trang web có tên cutepuppies.com và các tệp và thưmục cấu hình có liên quan trong máy chủ của chúng tôi sẽ được đặt tên tương ứng
là cutepuppies
Tạo thư mục gốc riêng cho trang web mới của bạn:
mkdir /var/www/cutepuppies
Trao quyền sở hữu thư mục cho người dùng web Apache (đó là apache )
chown apache:apache -R /var/www/cutepuppies
Ngoài ra, nếu bạn hành động không thuộc tài khoản root, hãy thêm tên người dùngcủa bạn vào nhóm web:
usermod -aG apache YOUR_USER_NAME
Giả sử bạn có bản cài đặt Apache mới, rất có thể không biết rằng sẽ có nhiều hơn mộttrang web
Chúng tôi cần làm cho máy chủ web của bạn để tìm kiếm các tệp cấu hình cho mỗitrang web được tạo trong tương lai Tới /etc/httpd/conf/httpd.conf và thêm dòng này vàotệp:
IncludeOptional sites-enabled/*.conf
Kiểm tra thư mục cấu hình Apache / etc / httpd Bạn cần phải xóa hai thư mục nếuchúng không tồn tại: / etc / httpd / sites- Available và / etc / httpd / sites-enable Truy cập / etc / httpd / sites- Available và tạo tập tin cấuhình cutepuppies.conf trong đó Để làm cho trang web của bạn hoạt động, tệp này phảichứa ít nhất dữ liệu sau:
Trang 11Tạo Virtual Host trên Apache để chạy nhiều web trên 1 server
Sử dụng lệnh sau để cài đặt Apache:
$ sudo apt-get update
$ sudo apt-get install apache2
Trong bài viết này, mình sẽ thêm hai tên miền là vidu1.com và vidu2.com để làm ví
dụ Bạn vui lòng thay đổi thông tin thành tên miền của bạn nhé
Tạo Virtual Host trên Apache
Bước 1: Tạo thư mục cho trang web
Đầu tiên, bạn cần tạo ra hai thư mục để chứa tập tin và dữ liệu của hai trang web trên.Mặc định Apache sử dụng /var/www làm thư mục chủ Và mình sẽ tạo ra hai thư mục ở
đó để lưu trữ dữ liệu cho hai trang web Bạn có thể tạo thư mục ở bất kỳ đâu mà bạnmuốn, theo ví dụ ở đây mình sẽ có hai thư mục
là /var/www/vidu1.com và /var/www/vidu2.com
Thông thường người ta sẽ sử dụng một thư mục con để lưu trữ dữ liệu để xử lý trangweb cho người truy cập là public_html Mục đích của điều này là để phục vụ lưu trữ dữliệu một cách linh hoạt, bạn có thể lưu dữ liệu chỉ dành cho admin ở một thư mục khác.Tạo hai thư mục bằng hai lệnh sau:
$ sudo mkdir -p /var/www/vidu1.com/public_html
$ sudo mkdir -p /var/www/vidu2.com/public_html
Bước 2: Tạo tập tin cấu hình virtual host
Trên Ubuntu, các tập tin cấu hình virtual host của Apache sẽ nằm trong thưmục /etc/apache2/sites-available Bạn sẽ nhìn thấy hai virtual host mặc định là 000-default.conf và default-ssl.conf, ở đây mình sẽ dựa trên 2 virtual host này để thêm cấuhình cho domain khác
Để kiểm tra các virtual host có sẵn, sử dụng lệnh sau:
$ ls -l /etc/apache2/sites-available
Sao chép 2 virtual host mặc định cho hai tên miền mới:
$ sudo cp /etc/apache2/sites-available/000-default.conf/etc/apache2/sites-available/vidu1.com.conf
$ sudo cp /etc/apache2/sites-available/000-default.conf/etc/apache2/sites-available/vidu2.com.conf
Trang 12Mở và chỉnh sửa tập tin cấu hình/etc/apache2/sites-available/vidu1.com.conf
$ sudo nano /etc/apache2/sites-available/vidu1.com.conf
Bạn sẽ nhìn thấy nội dung như sau:
# The ServerName directive sets the request scheme, hostname and port that
# the server uses to identify itself This is used when creating
# redirection URLs In the context of virtual hosts, the ServerName
# specifies what hostname must appear in the request’s Host: header to
# match this virtual host For the default virtual host (this file) this
# value is not decisive as it is used as a last resort host regardless
# However, you must set it for any further virtual host explicitly
#ServerName www.example.com
DocumentRoot /var/www/html
# Available loglevels: trace8, …, trace1, debug, info, notice, warn,
# It is also possible to configure the loglevel for particular
#LogLevel info ssl:warn
CustomLog ${APACHE_LOG_DIR}/access.log combined
# For most configuration files from conf-available/, which are
# enabled or disabled at a global level, it is possible to
# include a line for only one particular virtual host For example the
# following line enables the CGI configuration for this host only
# after it has been globally disabled with “a2disconf”
</VirtualHost>
# vim: syntax=apache ts=4 sw=4 sts=4 sr noet
Ở trên bạn sẽ có một số thông tin cần cấu hình lại:
ServerName: ở đây cần sửa lại thành domain của bạn, như ví dụ ở trên là vidu1.com
Bỏ dấu # ở trước đi nhé
ServerAdmin: email của bạn cho domain này
DocumentRoot: đây là thư mục sẽ lưu trữ trang web mà bạn đã tạo ở trên, như ví dụ ởtrên là /var/www/vidu1.com/public_html
ServerAlias: mặc định sẽ không có mục này Tuy nhiên bạn có thể thêm nó ở phíadưới ServerName Thông số này giống như Parked domain hay CNAME vậy
Sau khi chỉnh sửa, bạn sẽ có một tập tin cấu hình virtual host với nội dung như sau:
# The ServerName directive sets the request scheme, hostname and port that
# the server uses to identify itself This is used when creating
# redirection URLs In the context of virtual hosts, the ServerName
Trang 13# specifies what hostname must appear in the request’s Host: header to
# match this virtual host For the default virtual host (this file) this
# value is not decisive as it is used as a last resort host regardless
# However, you must set it for any further virtual host explicitly.ServerName vidu1.com
ServerAlias www.vidu1.com
ServerAdmin webmaster@vidu1.com
DocumentRoot /var/www/vidu1.com/public_html
# Available loglevels: trace8, …, trace1, debug, info, notice, warn,
# It is also possible to configure the loglevel for particular
#LogLevel info ssl:warn
CustomLog ${APACHE_LOG_DIR}/access.log combined
# For most configuration files from conf-available/, which are
# enabled or disabled at a global level, it is possible to
# include a line for only one particular virtual host For example the
# following line enables the CGI configuration for this host only
# after it has been globally disabled with “a2disconf”
</VirtualHost>
# vim: syntax=apache ts=4 sw=4 sts=4 sr noet
Lưu lại và tiếp tục mở tập tin virtual host thứ 2:
$ sudo nano /etc/apache2/sites-available/vidu2.com.conf
Cũng chỉnh sửa tương tự như trước:
ServerName vidu2.com
ServerAlias www.vidu2.com
ServerAdmin webmaster@vidu2.com
DocumentRoot /var/www/vidu2.com/public_html
Đối với virtual host sử dụng SSL để chạy HTTPS, mình sẽ nói ở bài tiếp theo
Bước 3: Bật virtual host để các cấu hình hoạt động
Sử dụng lệnh sau để bật virtual host:
$ sudo a2ensite vidu1.com.conf
$ sudo a2ensite vidu2.com.conf
Khởi động lại máy chủ web Apache
$ sudo service apache2 restart
Có thể bạn sẽ gặp thông báo sau, nhưng nó không ảnh hưởng tới trang web của bạnnhé
AH00558: apache2: Could not reliably determine the server’s fully qualified domainname, using 127.0.0.1 Set the ‘ServerName’ directive globally to suppress this messageBước 4: kiểm tra xem việc tạo virtual host trên Apache đã đúng chưa
Trang 14Để kiểm tra xem việc tạo virtual host trên Apache xem đã đúng chưa, bạn cần phải tạo
2 tập tin và chạy nó trên trình duyệt
tin index.html trong /var/www/vidu1.com/public_html và /var/www/vidu2.com/
public_html
$ sudo nano /var/www/vidu1.com/public_html/index.html
$ sudo nano /var/www/vidu2.com/public_html/index.html
Với nội dung như sau, nhớ thay thế nội dung để phân biệt 2 trang web nhé:
Bạn có thể tạo virtual host trên Apache để thêm domain vào VPS và chạy nhiều webtrên 1 server với số lượng không giới hạn Miễn là server của bạn có đủ khả năng để xử
lý Chúc thành công!
Trang 15Chào các bạn hôm nay mình sẽ chia sẻ những kiến thức mình biết về việc cấu hình để tạo một tên miền ảo, chạy trên máy tính của chúng ta với những thao tác khá đơn giản với Apache web server trên hệ điều hành Ubuntu 16.04
Cài đặt Apache server
sudo apt-get update
sudo apt-get install apache2
Sau khi cài đặt thành công apache server thì thư mục làm việc với apache mặc định
là /var/www/html, giờ chúng ta cần tạo một folder chứa project demo của chúng ta ở đâymình đặt tên là myproject, sau đó tạo một file index.html trong myproject.com với nộidung đơn giản để chạy thử
Tạo Virtual host file
Việc tạo virtual host file khá đơn giản là mình sẽ copy lại một file cấu hình defaultcủa apache và sau đó custom lại nó
Trang 16sudo cp /etc/apache2/sites-available/000-default.conf/etc/apache2/sites-available/myproject.conf
Chỉnh sửa file vừa tạo, bạn có thể sử dụng Vim hoặc Nano, với mình sử dụng nano: sudo nano /etc/apache2/sites-available/myproject.conf
Các option trong file conf
<VirtualHost></VirtualHost> Đây là cặp thẻ báo hiệu mở đầu và kết thúc của mộtkhai báo về Vhost
ServerAdmin (Không bắt buộc): khai bái địa chỉ server admin
DocumentRoot: Khai báo đường dẫn tới thư mục project của bạn mà sẽ được gọi tớikhi bạn truy cập vào đường dẫn trong file cấu hình
ServerName: Tên domain mình muốn đặt
ErrorLog (Không bắt buộc): đường dẫn tới file chứa log khi có lỗi
Bạn cần chú ý ở đây là listen port 80 nhưng nếu bạn đã sửa (8080, 8000, 9000, )config mặc định của apache thì cần để đúng với port đó
Enable virtual host
Trang 17Enable virtual host
sudo a2ensite myproject.conf
Sau khi lệnh này được thực hiện file myproject.conf sẽ được copy
từ /etc/apache2/site-available/myproject.conf sang /etc/apache2/site-enable/
myproject.conf
Restart apache server
sudo service apache2 restart
và thêm vào một dòng như sau [địa chỉ ip sẽ lắng nghe các request gửi tới]
Ok giờ bạn restart server apache và truy cập vào đường dẫn theo tên miền mà bạn đãconfig ở đây mình để là myproject.dev
Kết quả
Nếu không muốn sử dụng virtualhost hay thay đổi liên quan đến file conf
Bạn chỉ cần đi tới đường dẫn chứa file conf, và sử dụng a2dissite để disable virtualhost Nên nhớ sau mỗi lần chỉnh sửa cần restart apache2 để có sự thay đổi
cd /etc/apache2/site-available
sudo a2dissite `tên miền bạn muốn thay đổi`.conf
sudo service apache2 restart
Nếu chỉ thay đổi tên miền, port listen, hay bất kỳ cấu hình nào thì khi đã hoàn thànhcần enable lại file conf và làm các bước tương tự như trên đã làm
Virtual Host
Giờ các bạn mở tệp vhosts.conf copy đoạn code bên dưới và paste vào trong file httpd-vhosts.conf
Trang 18CustomLog "logs/yourdomain.com-access.log" common
<Directory "<đường dẫn thư mục">
ServerAdmin Từ khóa khai báo địa chỉ email của admin (Không bắt buộc)
DocumentRoot Đây là từ khóa khai báo đường dẫn của thư mục sẽ được gọi khingười dùng truy cập vào domain được cấu hình Đường dẫn này có thể nằm ở bất kỳ mộtphân vùng nào
ServerName Chính là domain mà bạn muốn đặt
ErrorLog Chỉ định đường dẫn của file log khi có lỗi (không bắtbuộc) <thu_muc_cai_dat_xampp>/apache/logs là thư mục chứa file log
CustomLog Log lại tất cả các Uri mà người dùng request không bắtbuộc) <thu_muc_cai_dat_xampp>/apache/logs là thư mục chứa file log
<Directory></Directory> Đây là cặp thẻ dùng để cấp quyền truy cập cho thư mục nếuthư mục không được cấp quyền sẽ gặp lỗi 403 khi các bạn cố gắng truy cập Đường dẫnthư mục của bạn có thể là một regular expression Nếu các bạn không rõ về Regex thì cácbạn có thể dùng đường dẫn thư mục giống với khai báo trong DocumentRoot hoặc thamkhảo thêm tại: http://httpd.apache.org/docs/2.4/en/mod/core.html#directory
Options FollowSymLinks Option này cho phép bạn truy cập theo symbolic link(giống như shortcut trong windows vậy) Ngoài ra còn có nhiều các options khác, các bạn
có thể tham khảo thêm tại: http://httpd.apache.org/docs/2.4/en/mod/core.html#options
AllowOverride All cho phép bạn overwrite các config bằng file htaccess
DirectoryIndex index.php Khi các bạn truy cập vào thư mục ( không chỉ rõ cụ thể làfile nào) thì file index.php sẽ được gọi
Require all granted là cho phép tất cả các máy khác được truy cập vào thư mục đangđược cấu hình Chú ý: từ phiên bản 2.2 trở về trước thì Apache sử dụng Allow from all đểthay thế cho Require all granted
Các bạn khởi động lại Apache bằng cách là khởi động phần mềm XAMPP ControlPanel dòng nếu dòng Apache đang running thì các bạn stop và start lại, còn nếu đang ởchế độ tắt rồi thì các bạn chỉ cần start là được
Ok vậy là bạn đã cấu hình xong về phần của Apache giờ chỉ việc đăng ký DNS cho
Các bạn mở file %windir%/system32/drivers/etc/hosts bằng notepad hoặc bất kỳ trìnheditor nào Thêm vào cuối file và lưu lại Nếu bạn không lưu được file hosts thì nhớ tắttình năng readonly và thử chạy lại bằng mode Administrator nhé
Trang 19127.0.0.1 yourdomain.com
Khi các bạn gõ địa chỉ yourdomain.com thì máy sẽ ưu tiên tìm địa chỉ IP của domain
đó trong file hosts của hệ điều hành trước tiên.Nếu không có thì nó sẽ đi tìm địa chỉ IP của domain này thông qua các DNS Server trênInternet Vì bạn đã khai báo trong file hosts nên nó sẽ sử dụng địa chỉ IP được khai báotrong đó luôn Ở đây địa chỉ IP 127.0.0.1 trỏ về chính máy đang truy cập (chính là máycủa bạn - còn nếu cấu hình trên server thì đó chính là bản thân máy server luôn) Bạn cóthể sử dụng dài IP từ 127.0.0.1 -> 127.255.225.254 đây là dải IP trỏ về máy của bạn( Nguyên dải luôn chứ không phải chỉ là 127.0.0.1 nhé )
Giờ các bạn mở trình duyệt và gõ vào thanh địa chỉ thay thế dòng localhost xấu xíbằng một domain của riêng bạn http://yourdomain.com yourdomain cũng có thể làtuan.tv, doan-totnghiep.com(chấm local chấm canh, chấm mắm, hay chấm bất kì thứ gìbạn thích nhé, chỉ cần nhớ là đã khai báo trong ServerName và file host là được)
Tổng kết
Việc sử dụng Virtual Host có vài lợi ích sau
Bạn có thể truy cập vào bất kỳ thư mục code nào mà không cần phải copyvào htdocs trong XAMPP
Nếu bạn dùng folder code ở một phân vùng khác thì bạn không cần phải lo lắngbackup lại folder code mỗi lần cài lại windows
Nhìn có vẻ nguy hiểm hơn :v
Các bạn cũng có thể cấu hình Vhost với WAMP, APPServer, USBServer các cấu hìnhcũng không khác nhiều lắm Vì tất cả các phần mềm này đều dùng Apache, Mysql vàPHP Vhost là một tình năng của Apache chứ không phải của XAMPP nên phần mềmnào dùng Apache thì đều có thể cấu hình Vhost theo cách tương tự, điểm khác biệt chỉ làkhác về nơi đặt file httpd.conf Chúc các bạn thành công
Trang 20Hi các bạn,
1/ Mẫu VirtualHost cơ bản
Đây là mẫu VirtualHost mà chúng ta sẽ dùng để setup như trên:
Và các bạn cũng sửa lại cái đường dẫn mà các bạn muốn truy xuất
ở DocumentRoot, bỏ trong giữa 2 dấu ngoặc kép nhé
ServerAdmin thì kệ nó, sửa hay không tùy các bạn
2/ Thiết lập VirtualHost
Bước 1: Thiết lập Apache
Đầu tiên các bạn vào thư mục apache, mở file conf như sau:
Đối với Xampp: conf/httpd.conf
Đối với Ampps: conf/httpd.conf
Đối với VertrigoServ: conf/vertrigo.conf
Ta sẽ kéo tới đến khúc cuối cùng và copy cái VirtualHost mẫu bên trên và paste ngaycuối file
Bước 2: Thiết lập host
Các bạn mở file host tại đường dẫn này:
Bây giờ bạn hãy restart lại Ampps, Xampp,… của bạn và bắt đầu vào domain của bạn
đã set và xem kết quả (với mình mình sẽ vào xyz.com)
Khi vào thì bạn sẽ thấy trang của bạn hiện ra ngay
3/ Kết luận
Trang 21Ở bài viết trước mình có hướng dẫn các bạn cách cài wordpress trên localhost với xampp Với cách đó mình chỉ hướng dẫn các bạn truy cập theo tên miền là http://localhost/wordpress chẳng hạn Vậy làm sao có thể truy cập được dạng giống như một tên miền thực trên xampp kiểu dev.wordpress.vn chẳng hạn Để làm được domain kiểu này chạy trực tiếp trên xampp thì bạn phải tìm hiểu khái niệm Virtual Host Xampp Bài viết dưới đây sẽ giúp bạn điểu đó nào hãy cùng bắt đầu tạo virtual host trong xampp ngay bây giờ nhé.
Hướng dẫn cách tạo Virtual Host trong Xampp
Đầu tiên bạn mình nhắc qua khái niệm xampp là gì đã? Xampp là chương trình tạo máy chủ Web (Web Server) được tích hợp sẵn Apache, PHP, MySQL, FTP Server, Mail Server và các công
cụ như phpMyAdmin là phần mềm hữu ích cho những lập trình viên website như vậy bạn đã hiểu sơ lược về nó rồi chứ Hãy bắt đầu tạo virtual host trong xampp nào.
Bước 1: Trước tiên bạn cần xác định được tên miền cần chạy cho dự án của bạn ví dụ mình dev.wordpress.vn chẳng hạn Bây giờ mình sẽ vào file host máy tính mình để thiết lập 1 ip local chạy cho tên miền này bạn cũng làm tương tự nhé.
– Bạn ấn Windows+R và điền đường dẫn sau: C:\Windows\system32\drivers\etc\ để vào file host máy tính (Nếu bạn gõ đúng và Enter nó sẽ ra như hình này).
– Tiếp tục để sửa file host này bạn ấn và giữ kéo nó ra màn hình như hình mình làm nhé
Trang 22– Sau khi đã kéo ra khỏi màn hình bạn ấn chuột phải và chọn Open để mở nhé bằng notepad (nếu bạn đã xem bài này thì bạn là IT rồi lên mình không hướng dẫn cụ thể nữa) Sau đó bạn thêm dòng này 127.0.0.10 dev.wordpress.vn vào.
Giải thích: mình đang xét cho domain dev.wordpress.vn chạy với ip 127.0.0.10 bạn để ip thế nào cũng được nhé.