Các Bước Cấu Hình LEMP VirtualHosts Trên CentOS 7 Chi Tiết

Bài viết ngày hôm nay của LANIT sẽ cùng bạn tìm hiểu cách cấu hình LEMP VirtualHost trên CentOS 7 chi tiết và đơn giản. Cùng theo dõi ngay sau đây nhé!

Tìm hiểu LEMP và VirtualHosts

Khi triển khai và quản lý các ứng dụng web, việc hiểu và sử dụng các công nghệ phù hợp là rất quan trọng để đảm bảo hiệu suất và tính linh hoạt. Một trong những giải pháp phổ biến là sử dụng LEMP Stack kết hợp với VirtualHosts.

LEMP là một bộ công nghệ bao gồm Linux, Nginx, MariaDB/MySQL và PHP. Tạo ra một hệ thống máy chủ mạnh mẽ để chạy các ứng dụng web động. Điểm khác biệt chính giữa LEMP và LAMP là LEMP sử dụng Nginx thay vì Apache, giúp cải thiện tốc độ và khả năng xử lý nhiều kết nối. Đồng thời nhờ vào kiến trúc bất đồng bộ của Nginx. Đây là lựa chọn lý tưởng cho các website cần xử lý lưu lượng truy cập cao mà vẫn đảm bảo hiệu suất ổn định.

VirtualHosts (Server Blocks) trong Nginx cho phép chạy nhiều website trên cùng một server. Mỗi site có cấu hình riêng, giúp tách biệt và dễ quản lý. Giải pháp này lý tưởng để tiết kiệm chi phí và tối ưu tài nguyên khi host nhiều dự án trên một VPS.

LEMP là một bộ công nghệ bao gồm Linux, Nginx, MariaDB/MySQL và PHP
LEMP là một bộ công nghệ bao gồm Linux, Nginx, MariaDB/MySQL và PHP

Cần chuẩn bị gì trước khi cấu hình LEMP VirtualHost

Trước khi bắt đầu cấu hình VirtualHosts trên CentOS 7, bạn cần đảm bảo hệ thống đáp ứng các yêu cầu cơ bản để tránh lỗi phát sinh trong quá trình triển khai. Dưới đây là các điều kiện cần thiết:

  • Máy chủ CentOS 7 đã cài đặt LEMP Stack: Đảm bảo đã cài đặt đầy đủ Linux, Nginx, MariaDB/MySQL và PHP để chạy ứng dụng web.
  • Quyền truy cập root hoặc tài khoản có quyền sudo: Cần quyền quản trị để thực hiện các thay đổi cấu hình và cài đặt gói phần mềm.
  • Tên miền đã đăng ký và trỏ về VPS: Đảm bảo tên miền đã được cấu hình với bản ghi DNS trỏ về địa chỉ IP của máy chủ để truy cập website qua domain.
  • Mở cổng tường lửa cho Nginx: Kiểm tra và mở các cổng cần thiết (thường là 80 và 443) để Nginx có thể nhận và xử lý yêu cầu HTTP/HTTPS.
Chuẩn bị trước khi cấu hình LEMP VirtualHost
Chuẩn bị trước khi cấu hình LEMP VirtualHost

Kiểm tra LEMP đã cài đặt chưa bằng lệnh:

nginx -v
mysql --version
php -v

Nếu bất kỳ thành phần nào chưa được cài đặt, bạn cần hoàn tất cài đặt chúng trước khi tiến hành cấu hình VirtualHosts.

Các bước cấu hình LEMP VirtualHost trên CentOS 7

Quy trình hơi dài nên bạn hãy chú ý nhé! Để bắt đầu bạn cần tắt Selinux bằng lệnh:

vi /etc/sysconfig/selinux  :  selilux=disabled

Các bước cấu hình LEMP VirtualHost trên CentOS 7

Cài đặt NGINX

Cập nhật và thêm kho lưu trữ. CentOS không hỗ trợ Nginx mặc định, nên bạn cần thêm kho EPEL bằng lệnh sau:

yum update -y && yum install epel-release -y

Các bước cấu hình LEMP VirtualHost trên CentOS 7

Cài đặt NGINX bằng lệnh:

yum install nginx -y

Các bước cấu hình LEMP VirtualHost trên CentOS 7

Sau đó hãy khởi động lại để kiểm tra trạng thái dịch vụ. Sử dụng lệnh sau:

systemctl start nginx
systemctl enable nginx
systemctl status nginx

Các bước cấu hình LEMP VirtualHost trên CentOS 7

Mở hai cổng trong tường lửa firewalld cho vùng public bằng lệnh:

firewall-cmd --zone=public --permanent --add-port=80/tcp
firewall-cmd --zone=public --permanent --add-port=443/tcp
firewall-cmd --reload

Các bước cấu hình LEMP VirtualHost trên CentOS 7

Dùng lệnh sau để kiểm tra Nginx có trên cổng 80 không:

netstat -pnltu | grep nginx

Các bước cấu hình LEMP VirtualHost trên CentOS 7

Cài đặt Mariadb

Sau đó thiết lập Mariadb bằng lệnh:

yum install mariadb-server mariadb -y

Các bước cấu hình LEMP VirtualHost trên CentOS 7

Sử dụng lệnh sau để kiểm tra trạng thái của maria

systemctl start mariadb
systemctl enable mariadb
systemctl status mariadb

Các bước cấu hình LEMP VirtualHost trên CentOS 7

Thiết lập tài khoản root và tăng cường bảo mật cho MariaDB bằng lệnh:

mysql_secure_installation

Sau đó, bạn có thể đặt mật khẩu cho tài khoản root. Nhấn Enter để xác nhận hoặc nhập no nếu không muốn thiết lập ngay.

Các bước cấu hình LEMP VirtualHost trên CentOS 7

Thêm và cài đặt kho lưu trữ Remi

Việc thêm kho lưu trữ Remi để cập nhật và sử dụng các phiên bản PHP mới nhất. Bạn cài đặt kho Remi bằng lệnh:

mkdir /data && cd /data
yum install yum-utils -y
wget http://rpms.remirepo.net/enterprise/remi-release-7.rpm
rpm -Uvh remi-release-7.rpm

Các bước cấu hình LEMP VirtualHost trên CentOS 7

Sau khi hoàn tất cài đặt kho lưu trữ Remi, bạn cần chọn và kích hoạt gói tương ứng với phiên bản PHP mong muốn trước khi tiến hành cài đặt.

yum-config-manager –enable remi-php83

Các bước cấu hình LEMP VirtualHost trên CentOS 7

Cài đặt các module cần thiết cho PHP 8.3 và xác minh phiên bản đã cài đặt.

yum install -y php php-cli php-fpm php-mysqlnd php-common

Các bước cấu hình LEMP VirtualHost trên CentOS 7

php --version

Các bước cấu hình LEMP VirtualHost trên CentOS 7

PHP giúp xử lý nội dung động bằng cách chạy tập lệnh, kết nối MySQL và gửi dữ liệu đã xử lý cho máy chủ web hiển thị. Với Nginx, cần dùng PHP-FPM làm trung gian để xử lý yêu cầu PHP, giúp cải thiện hiệu suất đáng kể.

PHP-FPM (FastCGI Process Manager) quản lý các yêu cầu thông qua worker (tiến trình). Mỗi worker chỉ xử lý một yêu cầu tại một thời điểm, và nhiều worker tạo thành một pool. Việc chia thành nhiều pool riêng biệt cho từng website giúp tăng cường bảo mật và tối ưu hiệu suất, tránh tình trạng một trang web bị tấn công ảnh hưởng đến toàn bộ hệ thống.

Tạo user riêng cho từng website, hạn chế quyền truy cập và không cấp thông tin liên kết khác:

useradd -s /sbin/nologin lanit

Thêm user “lanit” vào nhóm nginx để cho phép web server và người dùng giao tiếp với nhau.

usermod -a -G lanit nginx

Tạo foder public_html trong /home/lanit

mkdir /home/lanit/public_html

Chuyển chủ sở hữu cá nhân và nhóm của folder public html cho cá nhân và nhóm lanit

chmod 750 /home/lanit
chown -R lanit. /home/lanit/public_html

Cài đặt này sẽ làm các user khác không thể xem hay can thiệp được vào dữ liệu user của lanit.

Các bước cấu hình LEMP VirtualHost trên CentOS 7

Tạo php-fpm pool mới cho từng site bằng cách copy file cấu hình mặc định:

cp /etc/php-fpm.d/www.conf /etc/php-fpm.d/fpm-lanit.conf

Xóa bỏ pool mặc định:

rm -rf /etc/php-fpm.d/www.conf

Bạn có thể dùng lệnh ls để kiểm tra: ls /etc/php-fpm.d

Các bước cấu hình LEMP VirtualHost trên CentOS 7

Cấu hình pool lanit:

vi /etc/php-fpm.d/fpm-lanit.conf

Các bước cấu hình LEMP VirtualHost trên CentOS 7

Các giá trị cần điều chỉnh:

  • [www] → [lanit] (Dòng 4)
  • user = nginx (Dòng 24)
  • group = nginx (Dòng 26)
  • listen = /var/run/lanit-fpm.sock (Dòng 38)
  • Gỡ bỏ dấu # ở đầu dòng:
    • listen.owner = nginx (Dòng 49)
    • listen.group = nginx (Dòng 50)

Ý nghĩa của các thay đổi:

  • Phân quyền truy cập: Cho phép user lanit làm việc với các thư mục web.
  • Thay đổi phương thức lắng nghe: PHP-FPM chuyển từ TCP cổng 9000 sang socket file /var/run/lanit-fpm.sock.
  • Quyền sở hữu socket: Gán ownergroup của file socket là nginx, giúp máy chủ web giao tiếp trực tiếp với PHP-FPM.

Khởi động và enable php-fpm:

systemctl enable --now php-fpm

Các bước cấu hình LEMP VirtualHost trên CentOS 7

systemctl status php-fpm

Các bước cấu hình LEMP VirtualHost trên CentOS 7

Ngoài file cấu hình chính tại /etc/nginx/nginx.conf, Nginx còn hỗ trợ thư mục /etc/nginx/conf.d để quản lý cấu hình riêng cho từng website (tương tự như virtual host trong Apache). Để thiết lập trang web của bạn, hãy tạo một file cấu hình mới trong thư mục này.

vi /etc/nginx/conf.d/lanit.conf

Dán vào:

server {
listen 80;
server_name lanit.com.vn;
access_log /var/log/nginx/lanit.com.vn-access.log;
error_log /var/log/nginx/lanit.com.vn-error.log;
root /home/lanit/public_html;
index index.php index.html;
location / {
try_files $uri $uri/ =404;
}
location ~ .php$ {
try_files $uri =404;
fastcgi_pass unix:/var/run/lanit-fpm.sock;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
}
}

Các bước cấu hình LEMP VirtualHost trên CentOS 7

Giải thích:

  • listen: Xác định cổng mà website sẽ tiếp nhận kết nối. Nếu site sử dụng cổng 80, cấu hình này sẽ ưu tiên thay thế cấu hình mặc định của Nginx.
  • server_name: Chỉ định tên miền hoặc subdomain của trang web.
  • root: Đường dẫn tới thư mục chứa mã nguồn của website.
  • fastcgi_pass: Xác định đường dẫn tới tệp socket của PHP-FPM để xử lý các yêu cầu PHP.

Kiểm tra lỗi bằng lệnh sau:

nginx -t

Khởi động lại Nginx để thay đổi:

systemctl restart nginx

Các bước cấu hình LEMP VirtualHost trên CentOS 7

Bắt đầu phân quyền cho php-fpm.sock bằng lệnh:

chmod 666 /var/run/lanit-fpm.sock
chown nginx:nginx /var/run/lanit-fpm.sock

Cài đặt WordPress

Bây giờ bạn cần tạo database name và cả user database để dùng cho wordpress. Trước hết hãy đăng nhập mySQL:

mysql -u root -p

Tại đây nhập password bạn đã tạo cho tài khoản MariaDB trước đó. Sau đó tạo cơ sở dữ liệu:

CREATE DATABASE lanit;

Sau khi tạo xong cơ sở dữ liệu bạn cần tạo người dùng cho cơ sở dữ liệu đó bằng lệnh:

CREATE USER 'lanit'@'localhost' IDENTIFIED BY 'Mn58YESi@1aGHmzZo';

Hiện tại, bạn đã tạo xong người dùng MySQL, nhưng vẫn cần cấp quyền truy cập cơ sở dữ liệu. Dùng lệnh sau để thực hiện:

GRANT ALL PRIVILEGES ON lanit.* TO 'lanit'@'localhost' IDENTIFIED BY 'Mn58YESi@1aGHmzZo';

Người dùng đã được cấp quyền truy cập, giờ hãy làm mới đặc quyền để MySQL cập nhật thay đổi.

FLUSH PRIVILEGES;

Lệnh thoát:

QUIT;

Các bước cấu hình LEMP VirtualHost trên CentOS 7

Sau khi tải wordpress bạn hãy copy vào /home/user public_html bằng lệnh:

yum install wget
cd /data
wget http://wordpress.org/latest.tar.gz

Các bước cấu hình LEMP VirtualHost trên CentOS 7

Nhập lệnh giải nén:

tar -xzvf latest.tar.gz

Các bước cấu hình LEMP VirtualHost trên CentOS 7

Chuyển wordpress qua public_html của user lanit bằng lệnh:

cp -a /data/wordpress/. /home/lanit/public_html/

Bây giờ khai báo kết nối database của wordpress mới tải:

cd /home/lanit/public_html

Sao chép tệp mẫu wp-config-sample.php thành wp-config.php để tạo file cấu hình WordPress.

cp wp-config-sample.php wp-config.php

Các bước cấu hình LEMP VirtualHost trên CentOS 7

Cập nhật tệp wp-config.php với thông tin cơ sở dữ liệu đã tạo trước đó.

vi wp-config.php

Bây giờ bạn cần thay đổi các giá trị DB_USER, DB_NAME, DB_PASSWORD thành các giá trị thiết lập bên trên:

Các bước cấu hình LEMP VirtualHost trên CentOS 7

Truy cập trang quản trị WordPress tại http://lanit.com.vn/wp-admin/ để tạo tài khoản admin và cập nhật thông tin website.

Các bước cấu hình LEMP VirtualHost trên CentOS 7
Các bước cấu hình LEMP VirtualHost trên CentOS 7

Lời kết

Trên đây là bài viết hướng dẫn cách cấu hình LEMP VirtualHosts trên CentOS 7. Hy vọng bạn thực hiện các bước thành công. Nếu còn điều gì thắc mắc hãy để lại bình luận hoặc liên hệ để LANIT hỗ trợ bạn nhanh nhất nhé! Cảm ơn bạn vì đã theo dõi!

Tham khảo thêm các bài viết cùng chủ đề dưới đây:

Nguyễn Đức Hòa

Xin chào, mình là Nguyễn Đức Hoà, hiện đang đảm nhận vị trí Trưởng phòng kỹ thuật tại LANIT. Với 8 năm kinh nghiệm trong mảng System, Network, Security, mình luôn hướng đến việc tìm kiếm và áp dụng các giải pháp kỹ thuật tiên tiến nhất cho mọi dự án. Công việc của mình không chỉ dừng lại ở việc quản lý mà còn mang đến cho khách hàng những giải pháp lưu trữ dữ liệu tốt nhất hiện nay. Rất hy vọng những kinh nghiệm và chia sẻ của mình sẽ mang lại nhiều giá trị hữu ích cho các bạn.

Chat với chúng tôi qua Zalo!
Chat với chúng tôi qua Zalo!