Tạo Virtual Hosts đơn giản trên Ubuntu

Thay vì phải vào các đường dẫn dài, khó nhớ như "http://localhost/laravel/public/" hay phải thiết lập các cổng mở sẵn để chạy ứng dụng như "http://localhost:8000", bài viết sẽ hướng dẫn các bạn cấu hình một virtual hosts giúp bạn chạy ứng dụng của mình với các domain như thật 😄 ("http://laravel.local/")

Điều kiện

  • Cài đặt webserver: Apache 2
  • Bạn đã cài đặt thành công ứng dụng của mình và chạy dưới dạng http://localhost/laravel/public/ (đặt thư mục laravel trong /var/www/html/) và giờ sẽ chuyển sang đường virtual host
  • Với các domain không sử dụng laravel, hãy làm tương tự (đặt trong /html) và chỉ cần thay đổi mổ vài thông số trong lúc cấu hình virtual hosts là được =))

1. Cài đặt cấu hình virtual hosts

Có rất nhiều bài viết hướng dẫn cấu hình virtual host này.

Cách 1: Tạo file cấu hình (nên dùng)

Bạn tạo một file cấu hình laravel.local.conf trong đường dẫn:

/etc/apache2/sites-available

Sau đó kích hoạt cấu hình này lên bằng câu lệnh

$ sudo a2ensite laravel.local
Để có thể enable được nó thì cần phải thêm host này vào file /etc/hosts trước đó :D

Note: Sau khi enable xong, bạn có thể kiểm tra nó trong đường dẫn /etc/apache2/sites-enabled

Cách 2: Dành cho người lười ensite

Tuy nhiên để đơn giản đỡ phải kích hoạt, bạn có thể cấu hình này trực tiếp vào file 000-default.conf (đường dẫn /etc/apache2/sites-available). Cách này không giúp bạn kiểm soát được các virtual host đang kích hoạt và dừng kích hoạt nhưng nó là đơn giản nhất để tạo virtual host mà không cần kích hoạt

OK. Thêm đoạn sau vào file 000.default.conf nhé

<VirtualHost *:80>
    ServerAdmin [email protected]
    DocumentRoot /var/www/html/laravel/public
    ServerName laravel.local
    ServerAlias www.laravel.local
	<Directory /var/www/html/laravel/public>
		AllowOverride All
		Order allow,deny
		Allow from all
	</Directory>
    ErrorLog ${APACHE_LOG_DIR}/error.log
    CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>

Các tham số trong file cấu hình có nghĩa như thế nào các bạn có thể tham khảo tại đường dẫn https://www.sitecuatui.com/virtual-host-apache-ubuntu/

2. Cấu hình file "hosts" trên local

Tại sao phải cấu hình file này. Bạn phải hiểu rằng mỗi khi bạn truy cập trang web (như https://viblo.asia trình duyệt sẽ gửi các yêu cầu đến các hệ thống phân giải tên miền (DNS) để xác định địa chỉ IP của nó sau đó từ địa chỉ IP này, các gói tin mới đến được đích là server của trang https://viblo.asia. Tuy nhiên khi bạn cấu hình 1 domain ảo, DNS không phân giải được, khi đó sẽ lỗi IP. Vì vậy bạn cần khai báo luôn IP cho tên miền của mình để đỡ phải đi phân giải :v trong file hosts Bạn cài apache2 thì sẽ thực hiện như sau:

$ sudo nano /etc/hosts

Thêm dòng sau vào file cấu hình

127.0.0.1 laravel.local

Như vậy là ok, việc cuối cùng bạn cần làm là khởi động lại apache2

$ sudo service apache2 restart

Bật trình duyệt lên và test thôi: http://laravel.local

Tài liệu tham khảo

https://www.digitalocean.com/community/tutorials/how-to-set-up-apache-virtual-hosts-on-ubuntu-16-04