Cài đặt nhiều web trên một server Amazon Linux 2023 và Nginx

Photo of author

By Admin

Cài đặt nhiều trang web trên cùng một máy chủ Amazon Linux có thể tối ưu hóa chi phí nếu bạn chạy các trang web nhỏ hoặc trung bình và không yêu cầu tài nguyên cao.

Việc cung cấp nhiều trang web trên cùng một máy chủ có thể giúp bạn tiết kiệm tiền so với việc sử dụng nhiều máy chủ riêng lẻ cho từng trang web. Điều này đặc biệt hữu ích nếu lượng lưu lượng truy cập vào mỗi trang web không lớn và các trang web không yêu cầu quá nhiều tài nguyên.

Ngoài ra giúp chúng ta không mất quá nhiều thời gian cài đặt server riêng biệt trong trường hợp các server chỉ sử dụng để test … Tuy nhiên việc cài đặt nhiều web khác nhau trên cùng 1 website không tốt cho SEO cũng như ảnh hưởng đến hiệu suất và bảo mật.

Bước 1: Tạo thư mục chứa source và file config Nginx

  1. Tạo 2 thư mục chứa source như sau:

sudo mkdir -p /var/www/website1
sudo mkdir -p /var/www/website2
[ec2-user@ip-xxx/]$ cd /var/www
[ec2-user@ip-xx www]$ ls -la
total 16
drwxrwsr-x. 5 ec2-user nginx 50 Jul 31 08:19 .
drwxr-xr-x. 20 root root 277 Jul 28 08:36 ..
drwxrwsr-x. 2 ec2-user nginx 6 Mar 16 15:20 cgi-bin
drwxrwsr-x. 2 ec2-user nginx 25 Jul 28 09:57 html
drwxrwsr-x. 9 ec2-user nginx 16384 Jul 31 10:13 website1

drwxrwsr-x. 9 ec2-user nginx 16384 Jul 31 10:13 website2

2. Set quyền và owner cho 2 thư mục

Để setting owner cho cho người dùng nginx chạy lệnh

sudo chown -R nginx:nginx /var/www/website1
sudo chown -R nginx:nginx /var/www/website2

Set quyền

sudo chmod 755 /var/www
find /var/www -type d -exec sudo chmod 755 {} \;


find /var/www -type f -exec sudo chmod 644 {} \;

Dòng đầu tiên (chmod 755 /var/www) đặt quyền cho thư mục gốc /var/www để cho phép người dùng đọc, ghi và thực thi, và cho phép nhóm và người dùng khác thực thi (truy cập vào thư mục).

Dòng thứ 2 tìm tất cả các thư mục con trong /var/www và set quyền 755

Dòng thứ 3 tìm tất các các tệp bên trong  /var/ww và set quyền 644

Hoặc theo Amazon Linux 2023 thì ta thực hiện các bước sau:

sudo usermod -a -G nginx ec2-user
  • Thay đổi chủ sở hữu cho group chứa source

sudo chown -R ec2-user:nginx /var/www

  • Set quyền cho các thư mục bên trong nó
sudo chmod 2775 /var/www && find /var/www -type d -exec sudo chmod 2775 {} \;
find /var/www -type f -exec sudo chmod 0664 {} \;

Chi tiết hơn bạn có thể tham khảo bài viết:

Hướng dẫn cài đặt LEMP stack trên Amazon Linux 2023 chi tiết

3. Tạo thư mục chứa file config của nginx

Lưu ý với Amazon Linux thì khi bạn cài đặt LEMP stack thì Nginx không có thư mục site-enabled trong mục /etc/nginx/ như một số phiên bản Nginx khác.

Đầu tiên ta thực hiện tạo 2 thư mục sites-available và sites-enabled.

cd /etc/nginx

sudo mkdir sites-available

sudo mkdir sites-enabled
thu muc ssl
Tạo mới thư mục site-available và sites-enable

Thư mục sites-available chúng ta sẽ đặt file .conf của từng website.

Thư mục sites-enabled sẽ thực hiện việc link sang available

Thư mục sites-availablesites-enabled là một cách truyền thống để quản lý các tệp cấu hình của các trang web trên Nginx. Mô hình này được sử dụng để tách biệt việc cấu hình các trang web và việc kích hoạt chúng. Điều này giúp cho việc quản lý và thay đổi cấu hình dễ dàng hơn.

  1. sites-available: Đây là nơi bạn đặt tất cả các tệp cấu hình của các trang web mà bạn muốn tạo trên Nginx. Tuy nhiên, khi bạn chỉ định cấu hình trong thư mục này, Nginx không tự động áp dụng nó. Các trang web trong thư mục này được coi như “có sẵn”, nhưng chưa được kích hoạt để chạy.
  2. sites-enabled: Đây là thư mục chứa các liên kết tới các tệp cấu hình trong thư mục sites-available. Mỗi liên kết đều trỏ tới một tệp cấu hình trong sites-available. Nginx chỉ áp dụng các cấu hình trong thư mục sites-enabled, do đó, bất kỳ tệp cấu hình nào không có liên kết tới trong thư mục này sẽ không được Nginx sử dụng.

Khi bạn muốn kích hoạt một trang web, bạn chỉ cần tạo một liên kết từ thư mục sites-enabled tới tệp cấu hình tương ứng trong sites-available. Vì việc tạo liên kết là một thao tác dễ dàng, bạn có thể dễ dàng thêm hoặc xóa các trang web từ Nginx mà không cần phải thay đổi trực tiếp trong cấu hình của Nginx.

Tổ chức cấu hình vào các thư mục riêng biệt giúp tránh việc xử lý tệp cấu hình lẫn lộn và làm cho việc quản lý nhiều trang web trên một máy chủ trở nên dễ dàng và rõ ràng hơn. Tuy nhiên, việc sử dụng sites-availablesites-enabled không bắt buộc, và bạn có thể tổ chức cấu hình của mình theo cách khác nếu muốn.

4. Tạo file config nginx

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


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

Thêm định nghĩa cấu hình vào 2 file conf, ví dụ như bên dưới.

server {
listen 80;
server_name website1.com www.website1.com;

root /var/www/website1;
index index.html;

location / {
try_files $uri $uri/ =404;
}
}

Nhấn Ctrl S để lưu, Ctrl X để thoát khỏi nano.

File conf thực tế bạn có thể tham khảo bài viết

Hướng dẫn cài đặt LEMP stack trên Amazon Linux 2023 chi tiết

Sau khi đã cấu hình file .conf vào mục site-avaiable ta tiến hành việc link các website đang hoạt động vào thư mục site-enabled. Lưu ý trường hợp với các website không cần hoạt động ta chỉ cần chạy lệnh unlink mà không cần phải sửa hoặc xóa file .conf đã thiết lập. Để link file website1.com.conf ta thực hiện câu lệnh:

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

Ngược lại trong trường hợp muốn Nginx không load cấu hình của website này chúng ta chạy lệnh unlink

sudo unlink /etc/nginx/sites-available/website1.com.conf

Bước 3: Thêm thư mục sites-enabled vào danh sách thư mục load file .conf của nginx

Trong các bản Nginx khác thì file cài đặt đã tạo sẵn file sites-enabled, tuy nhiên với Amazon Linux 2023 mình không tìm thấy thư mục này. Do vậy, tiến hành thêm thư mục này vào file conf của nginx.

sudo nano /etc/nginx/nginx.conf

Thêm dòng sau vào blog http của file

 include /etc/nginx/sites-enabled/*;
include /etc/nginx/mime.types;
default_type application/octet-stream;

# Load modular configuration files from the /etc/nginx/conf.d directory.
# See http://nginx.org/en/docs/ngx_core_module.html#include
# for more information.
include /etc/nginx/conf.d/*.conf;
include /etc/nginx/sites-enabled/*;

Bước 4: Kiểm tra và khởi động lại nginx

sudo nginx -t

Nếu không có lỗi gì thì ta thực hiện việc khởi động lại nginx để áp dụng các cài đặt.

sudo systemctl restart nginx

sudo systemctl restart nginx

Bây giờ bạn đã cấu hình thành công nhiều trang web trên một máy chủ sử dụng Nginx. Hãy chắc chắn rằng bạn đã định tuyến tên miền của mỗi trang web tới địa chỉ IP của máy chủ để có thể truy cập chúng từ trình duyệt.

Chúc bạn thành công!

Viết một bình luận