[HOWTO] Cài đặt Virtualhost trên Ubuntu
Để cài đặt virtualhost trên Ubuntu, nhằm dev web cho dễ, ta chỉ việc làm như sau:
1 – Cài các gói cần thiết để sử dụng apache web server, PHP và MySQL :
$> sudo apt-get install apache2 php5 mysql-server php5-mysql
Câu lệnh trên sẽ lấy toàn bộ các gói cần thiết để chạy web service trên nền PHP, MySQL và Apache.
2 – Cấu hình Apache 2:
- Trên Ubuntu và Debian, các file cấu hình apache được đặt trong thư mục /etc/apache2/ . Không giống như CentOS hoặc RHEL, cấu hình của Apache được chia nhỏ từ file httpd.conf thành nhiều file và thư mục khác nhau. Trong thư mục cấu hình trên Ubuntu, ta sẽ thấy các file và thư mục con như sau:
- apache2.conf : Đây là file cấu hình gốc, khai báo các mục tham chiếu tới file và thư mục cấu hình khác bên trong thư mục /etc/apache2.
- conf.d : Các cấu hình chung, được chia nhỏ ra. Ví dụ như thiết lập security và bộ ký tự (file charset).
- envvars : Thiết lập các biến môi trường mà apache 2 sử dụng, trong đó có tên và nhóm người dùng mà apache2 sẽ sử dụng khi hoạt động. Mặc định là www-data:www-data.
- mods-available và mods-enabled: mods-available chứa cấu hình và thiết lập khởi động các module mà ta đã cài cho apache2. Tuy nhiên, chỉ các module được symlink sang thư mục mods-enabled thì mới hoạt động cùng apache2. Vì vậy, nếu tôi muốn module rewrite hoạt động, tôi phải thực hiện lệnh sau để symlink file khởi động của nó từ mods-available sang mods-enabled:
sudo ln -s /etc/apache2/mods-{available,enabled}/rewrite.load
- site-available và site-enabled : Tương tự như mods-available và mods-enabled, nhưng đối tượng là các site. Debian và Ubuntu đã cấu hình virtualhost sẵn cho ta, với tên máy virtualhost mặc định là *:80. Vì vậy việc thực hiện Virtualhost by name khá đơn giản.
- Chép file /etc/apache2/site-available/default (nếu muốn dùng HTTP thông thường) hoặc default-ssl (nếu muốn dùng HTTPS) sang 1 tên file tùy ý, ví dụ: sudo cp /etc/apache2/site-available/{default,ippbx}
- Sửa lại nội dung file vừa chép được. Các mục cần sửa:
- Sửa DocumentRoot sang thư mục chứa nội dung của site mới.
- Sửa Directory /var/www thành Directory /path/to/your/site/
- Thêm dòng ServerName <tên domain của site mới>
Ví dụ, diff giữa 2 file config của tôi có dạng sau:
diff -ubBr sites-available/default sites-available/rspbx
--- sites-available/default 2009-06-04 09:33:39.441089908 +0700
+++ sites-available/rspbx 2009-06-04 09:33:22.661086912 +0700
@@ -1,17 +1,17 @@
<VirtualHost *:80>
- ServerAdmin webmaster@localhost
+ ServerAdmin rspbx@localhost
- DocumentRoot /var/www
- ServerName default.localhost
+ DocumentRoot /srv/www/
+ ServerName rspbx.localhost
<Directory />
Options FollowSymLinks
- AllowOverride None
+ AllowOverride All
</Directory>
- <Directory /var/www/>
+ <Directory /srv/www/>
Options Indexes FollowSymLinks MultiViews
- AllowOverride None
+ AllowOverride All
Order allow,deny
- allow from all
+ Allow from all
</Directory>
ScriptAlias /cgi-bin/ /usr/lib/cgi-bin/
4 – Sửa lại file /etc/hosts
File /etc/hosts tương đương với 1 bản ghi trên DNS server, cho phép hệ thống ánh xạ 1 domain thành 1 IP. Vì chúng ta đang chạy localhost, nên domain rspbx.localhost của tôi không phải là domain thực. Chính vì vậy tôi phải khai báo domain này trỏ về IP 127.0.0.1 tương đương localhost của mình, để chạy test. Cách làm khá đơn giản, chỉ cần sửa dòng đầu tiên của file /etc/hosts như sau:
127.0.0.1 localhost dinhtrung-laptop rspbx.localhost <domain2> <domain3> <domain4>
Giờ ta có thể mở Firefox ra, gõ vào địa chỉ http://rspbx.localhost, và thế là xong! Ta có thể xem nội dung đặt trong thư mục /srv/www/
leave a comment