Cài đặt Apache, PHP, MySQL và SSL Let’s Encrypt là bước quan trọng để xây dựng một máy chủ web an toàn và hiệu quả. Trong bài viết này, chúng tôi sẽ hướng dẫn chi tiết từng bước từ việc thiết lập môi trường LAMP, cài đặt các module PHP cần thiết, đến việc bảo mật website bằng chứng chỉ SSL miễn phí từ Let’s Encrypt. Hãy làm theo hướng dẫn để triển khai hệ thống máy chủ mạnh mẽ và đảm bảo an toàn cho website của bạn.

Để xây dựng một máy chủ web hoàn chỉnh với Apache, PHP, MySQL và SSL Let’s Encrypt, dưới đây là hướng dẫn từng bước từ việc cài đặt các thành phần cơ bản cho đến bảo mật SSL.

1. Cài Đặt Apache

Apache là một trong những phần mềm máy chủ web phổ biến nhất và dễ sử dụng.

Bước 1: Cập nhật hệ thống

Trước tiên, hãy cập nhật các gói trên máy chủ để đảm bảo rằng bạn có các bản vá lỗi mới nhất.

sudo apt update
sudo apt upgrade

Bước 2: Cài đặt Apache

Bạn có thể cài đặt Apache bằng lệnh sau:

sudo apt install apache2

Bước 3: Kiểm tra trạng thái Apache

Sau khi cài đặt, bạn có thể kiểm tra trạng thái của Apache để đảm bảo rằng nó đã chạy:

sudo systemctl status apache2

Bạn sẽ thấy một thông báo rằng Apache đang chạy. Để đảm bảo Apache tự động khởi động cùng hệ thống, bạn có thể chạy:

sudo systemctl enable apache2

Bước 4: Cấu hình Firewall

Nếu bạn đang sử dụng UFW, hãy mở cổng cho Apache:

sudo ufw allow 'Apache Full'

2. Cài Đặt PHP Với Các Module Và Extension

PHP là ngôn ngữ kịch bản phổ biến được sử dụng để phát triển các ứng dụng web động.

Bước 1: Cài đặt PHP

Để cài đặt PHP, chạy lệnh sau:

sudo apt install php libapache2-mod-php

Bước 2: Cài đặt các module PHP phổ biến

Bạn có thể cài đặt các module phổ biến bằng lệnh:

sudo apt install php-cli php-mysql php-gd php-xml php-mbstring php-curl php-zip

Một số module thường dùng khác:

  • php-intl: Xử lý các vấn đề liên quan đến đa ngôn ngữ.
  • php-json: Làm việc với dữ liệu JSON.
  • php-bcmath: Làm việc với số học dấu chấm động.
sudo apt install php-intl php-json php-bcmath

Bước 3: Kiểm tra phiên bản PHP và cài đặt module

Sau khi cài đặt, bạn có thể kiểm tra phiên bản PHP:

php -v

Để kiểm tra các module đã được cài đặt:

php -m

Bước 4: Cấu hình PHP

File cấu hình PHP nằm tại /etc/php/7.X/apache2/php.ini. Bạn có thể chỉnh sửa file này để tùy chỉnh các thông số như upload_max_filesize, memory_limit, v.v.

sudo nano /etc/php/7.X/apache2/php.ini

Cài Đặt Tất Cả Các Module PHP

Sử dụng lệnh sau để cài đặt tất cả các module PHP phổ biến cùng với các phần mở rộng khác:

sudo apt install php-all-dev php-cli php-common php-curl php-json php-mbstring php-xml php-zip php-gd php-imagick php-intl php-bcmath php-bz2 php-dba php-enchant php-fpm php-imap php-ldap php-mysql php-odbc php-opcache php-pspell php-readline php-snmp php-soap php-sqlite3 php-tidy php-xdebug php-xmlrpc php-yaml php-xsl

Một số mô tả về các module:

  • php-cli: Cung cấp giao diện dòng lệnh PHP.
  • php-curl: Cho phép gửi yêu cầu HTTP từ PHP.
  • php-json: Làm việc với dữ liệu JSON.
  • php-mbstring: Hỗ trợ xử lý chuỗi đa byte.
  • php-xml: Hỗ trợ xử lý tài liệu XML.
  • php-zip: Cho phép PHP làm việc với tệp ZIP.
  • php-gd: Hỗ trợ xử lý hình ảnh.
  • php-intl: Xử lý quốc tế hóa và đa ngôn ngữ.
  • php-bcmath: Xử lý các phép toán với số lớn.
  • php-opcache: Cải thiện hiệu suất PHP bằng cách lưu trữ bytecode trong bộ nhớ.
  • php-xdebug: Hỗ trợ gỡ lỗi và phân tích mã.

Xác Minh Cài Đặt PHP Và Các Module

Để kiểm tra xem tất cả các module đã được cài đặt thành công hay chưa, bạn có thể tạo một file PHP mới trong thư mục gốc của máy chủ web (ví dụ /var/www/html/) với tên info.php và nội dung sau:

<?php
phpinfo();
?>

Sau đó, truy cập vào file này qua trình duyệt web bằng cách nhập địa chỉ http://your_domain_or_ip/info.php. Bạn sẽ thấy trang thông tin PHP chi tiết, bao gồm các module và phần mở rộng đã được cài đặt.

3. Cài Đặt MySQL

MySQL là hệ quản trị cơ sở dữ liệu phổ biến.

Bước 1: Cài đặt MySQL

sudo apt install mysql-server

Bước 2: Cấu hình bảo mật MySQL

Sau khi cài đặt, hãy chạy lệnh sau để bảo mật MySQL:

sudo mysql_secure_installation

Bạn sẽ được hỏi các câu hỏi như tạo mật khẩu root, loại bỏ user ẩn danh, tắt đăng nhập root từ xa, v.v. Nên chọn “Yes” cho tất cả để bảo mật tốt hơn.

Bước 3: Đăng nhập vào MySQL

Để đăng nhập vào MySQL với quyền root:

sudo mysql -u root -p

Bước 4: Tạo cơ sở dữ liệu

Để tạo cơ sở dữ liệu mới:

CREATE DATABASE ten_database;

Để tạo user và cấp quyền cho user đó:

CREATE USER 'ten_user'@'localhost' IDENTIFIED BY 'mat_khau';
GRANT ALL PRIVILEGES ON ten_database.* TO 'ten_user'@'localhost';
FLUSH PRIVILEGES;

4. Tạo File .conf Để Cấu Hình Tên Miền Với Apache

Để cấu hình Apache cho tên miền (Virtual Host), bạn cần tạo một file .conf tương ứng cho mỗi tên miền. Dưới đây là các bước chi tiết để tạo file cấu hình .conf cho tên miền.

Tạo Thư Mục Cho Website

Trước tiên, bạn cần tạo thư mục chứa tệp website của bạn trong thư mục /var/www/.

sudo mkdir -p /var/www/example.com/public_html

Thay example.com bằng tên miền của bạn.

Sau đó, thay đổi quyền sở hữu thư mục để phù hợp với quyền của Apache:

sudo chown -R $USER:$USER /var/www/example.com/public_html

Thay đổi quyền truy cập thư mục:

sudo chmod -R 755 /var/www/example.com
  1. Tạo File .conf Cho Tên Miền
    Tiếp theo, bạn cần tạo file cấu hình tên miền tại thư mục /etc/apache2/sites-available/. File này sẽ chứa cấu hình cho tên miền của bạn.

Tạo file example.com.conf:

sudo nano /etc/apache2/sites-available/example.com.conf

Nội dung của file này như sau:

<VirtualHost *:80>
    ServerAdmin [email protected]
    ServerName example.com
    ServerAlias www.example.com
    DocumentRoot /var/www/example.com/public_html
    ErrorLog ${APACHE_LOG_DIR}/error.log
    CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>

Giải thích các dòng cấu hình:

  • ServerAdmin: Email của quản trị viên website.
  • ServerName: Tên miền chính mà bạn muốn cấu hình.
  • ServerAlias: Các biến thể khác của tên miền, ví dụ www.example.com.
  • DocumentRoot: Thư mục gốc chứa các file của trang web.
  • ErrorLogCustomLog: Đường dẫn để ghi lại các lỗi và truy cập.

Lưu và thoát khỏi nano (nhấn Ctrl + O để lưu, sau đó Ctrl + X để thoát).

Kích Hoạt Virtual Host

Sau khi tạo file cấu hình tên miền, bạn cần kích hoạt nó bằng lệnh sau:

sudo a2ensite example.com.conf

Sau đó, tắt cấu hình mặc định (nếu không cần thiết):

sudo a2dissite 000-default.conf

Kiểm Tra Cấu Hình Apache

Sau khi cấu hình và kích hoạt tên miền, hãy kiểm tra cấu hình Apache để đảm bảo không có lỗi nào:

sudo apache2ctl configtest

Nếu mọi thứ ổn, bạn sẽ thấy thông báo:

Syntax OK

Khởi Động Lại Apache

Cuối cùng, khởi động lại Apache để áp dụng các thay đổi:

sudo systemctl restart apache2

4. Cài Đặt SSL Let’s Encrypt

SSL giúp bảo mật giao tiếp giữa máy chủ và người dùng.

Bước 1: Cài đặt Certbot

Certbot là công cụ giúp tự động cấu hình Let’s Encrypt SSL.

sudo apt install certbot python3-certbot-apache

Bước 2: Cài đặt SSL

Sau khi cài đặt Certbot, bạn có thể chạy lệnh sau để tự động cấu hình SSL cho tên miền của bạn:

sudo certbot --apache -d example.com -d www.example.com

Thay example.com bằng tên miền của bạn.

Bước 3: Gia hạn SSL tự động

Let’s Encrypt SSL có thời hạn 90 ngày, nhưng Certbot có thể tự động gia hạn cho bạn. Để kiểm tra quá trình gia hạn tự động, bạn có thể chạy:

sudo certbot renew --dry-run

Nếu mọi thứ ổn, Certbot sẽ tự động gia hạn SSL trước khi hết hạn.

5. Kiểm Tra Và Khởi Động Lại Apache

Sau khi hoàn tất cấu hình SSL và các phần khác, bạn nên khởi động lại Apache để áp dụng mọi thay đổi:

sudo systemctl restart apache2

Bằng cách làm theo các bước trên, bạn đã có thể cài đặt một máy chủ web hoàn chỉnh với Apache, PHP với các module mở rộng, MySQL, và bảo mật bằng SSL Let’s Encrypt. Máy chủ của bạn giờ đây đã sẵn sàng để chạy các ứng dụng web một cách an toàn và hiệu quả.