Cách cài đặt và cấu hình vhost NGINX trên Ubuntu 16.04 với PHP, MySQL

cau-hinh-vitual-host-nginx

Để cài đặt và cấu hình vhost NGINX trên Ubuntu 16.04 với PHP, MySQL thì điều kiện là chúng ta đã cài và cấu hình thành công PHP, MySQL, NGINX rồi. Nếu bạn nào còn chưa biết cách cài thì chúng ta tham khảo bài: Cách cài đặt, cấu hình PHP, MySQL, phpMyAdmin, NGINX (cài đặt gói LEMP stack) trên server Ubuntu 16.04

Virtual Hosts được gọi  Server Blocks trên nginx, vậy cấu hình vhost là cách làm có thể chạy được nhiều website trên cùng một web server.

Ở bài này chúng ta sẽ ví dụ cấu hình 2 tên miền là abc.com và tên miền  xyz.net

1. Tạo các thư mục root cho 2 website

Tạo thư mục root  cho tên miền abc.com (để upload mã nguồn vào)    bằng lệnh

sudo mkdir -p /var/www/abc.com/html

Cấp quyền cho user bằng lệnh

sudo chown -R $USER:$USER /var/www/abc.com/html

Tạo thư mục root  cho tên miền xyz.net (để upload mã nguồn vào)    bằng lệnh

sudo mkdir -p /var/www/xyz.net/html

Cấp quyền cho user bằng lệnh

sudo chown -R $USER:$USER /var/www/xyz.net/html

Cấp quyền cho thu mục:

sudo chmod -R 755 /var/www

2. Tạo các file để test 2 tên miền

Tạo file index.html  để kiểm tra việc cài đặt cho tên miền  abc.com bằng lệnh

nano /var/www/abc.com/html/index.html

với nội dung :

<html><head><title>Welcome to abc.com!</title></head>

<body><h1>Success!  The abc.com server block is working!</h1></body>

</html>

Tạo tệp tin test.php trong thư mục root của tên miền abc.com để kiểm tra với mã PHP: /var/www/abc.com/html/ với nội dung: <?php phpinfo(); Bằng lệnh:

sudo nano /var/www/abc.com/html/test.php

Tương tự , tạo file index.html  để kiểm tra việc cài đặt cho tên miền xyz.net bằng lệnh

nano /var/www/xyz.net/html/index.html

với nội dung :

<html><head><title>Welcome to xyz.net!</title></head>

<body><h1>Success!  The xyz.net server block is working!</h1></body></html>

Tạo tệp tin test.php trong thư mục root của tên miền xyz.net để kiểm tra với mã PHP: /var/www/xyz.net/html/ với nội dung: <?php phpinfo(); Bằng lệnh:

sudo nano /var/www/xyz.net/html/test.php

Ok, làm đến bước này là chúng ta đã tạo được môi trường để test.

3. Cấu hình vhost cho 2 tên miền

Sau đây chúng ta sẽ cấu hình vhost cho tên miền abc.com, tạo file cấu hình có tên abc.com.conf với lệnh:

sudo nano /etc/nginx/sites-available/abc.com.conf

Nội dung file cấu hình với chữ bôi đỏ có thể thay bằng tên miền của  bạn:

server {

listen 80;

listen [::]:80;

server_name abc.com www.abc.com;

root   /var/www/abc.com/html;

index index.php;

location ~ \.php$ {

include snippets/fastcgi-php.conf;

include fastcgi_params;

fastcgi_pass unix:/run/php/php7.0-fpm.sock;

fastcgi_param SCRIPT_FILENAME /var/www/abc.com/html$fastcgi_script_name;

}

}

Cho phép file cấu hình tên miền abc.com hoạt động cùng NGINX bằng lệnh:

sudo ln -s /etc/nginx/sites-available/abc.com.conf /etc/nginx/sites-enabled/

Làm tương tự chúng ta sẽ cấu hình vhost cho tên miền xyz.net, tạo file cấu hình có tên xyz.net.conf với lệnh:

sudo nano /etc/nginx/sites-available/xyz.net.conf

Nội dung file cấu hình với chữ bôi đỏ có thể thay bằng tên miền của  bạn:

server {

listen 80;

listen [::]:80;

server_name xyz.net www.xyz.net;

root   /var/www/xyz.net/html;

index index.php;

location ~ \.php$ {

include snippets/fastcgi-php.conf;

include fastcgi_params;

fastcgi_pass unix:/run/php/php7.0-fpm.sock;

fastcgi_param SCRIPT_FILENAME /var/www/xyz.net/html$fastcgi_script_name;

}

}

Cho phép file cấu hình tên miền xyz.net hoạt động cùng NGINX bằng lệnh:

sudo ln -s /etc/nginx/sites-available/xyz.net.conf /etc/nginx/sites-enabled/

Lưu lại, và kiểm tra file cấu hình. Nếu ok thì restart lại NGINX bằng lệnh:

sudo systemctl restart nginx

Sau đó test lại với tên miền, mở trình duyệt và gõ:

abc.com

abc.com/test.php

xyz.net

xyz.net/test.php

Nếu kết quả hiển thị  như ảnh bên dưới là chúng ta đã cài đặt thành công VHOST.

VHOST với NGINX
VHOST với NGINX

Bạn cũng có th tham khảo cách thêm mt website vào vhost tại đây

Nếu bạn gặp lỗi hay khó khăn trong quá trình cài đặt thì hãy comment để mình biết nhé.

Bài liên quan

Trả lời

Email của bạn sẽ không được hiển thị công khai. Các trường bắt buộc được đánh dấu *