Cài đặt LEMP stack (Linux, Nginx, MySQL/MariaDB, PHP) trên AWS Amazon Linux 2023 cho phép bạn lưu trữ các ứng dụng web hiệu suất cao trên một hạ tầng đáng tin cậy và có thể mở rộng. Hướng dẫn này sẽ chỉ cho bạn cách cài đặt LEMP stack trên máy chủ AWS Amazon Linux 2023.
LEMP Stack là gì?
LEMP stack là một bộ phần mềm mã nguồn mở được sử dụng để lưu trữ các trang web động và ứng dụng web. Bộ phần mềm này bao gồm:
- Linux : Hệ điều hành vận hành máy chủ.
- Nginx : Máy chủ web hiệu suất cao và proxy ngược.
- MySQL/MariaDB : Hệ thống cơ sở dữ liệu để lưu trữ dữ liệu ứng dụng.
- PHP : Ngôn ngữ kịch bản phía máy chủ dùng để xây dựng các trang web động.
Yêu cầu trước khi cài đặt LEMP Stack trên AWS
Trước khi bắt đầu, hãy đảm bảo bạn đã có các điều kiện sau:
- Một AWS EC2 instance chạy Amazon Linux 2023 .
- Một ứng dụng SSH để truy cập máy chủ của bạn.
Bước 1: Khởi tạo một AWS EC2 Instance
Nếu bạn chưa có một EC2 instance, hãy tham khảo hướng dẫn này để tạo: Hướng dẫn cách tạo AWS EC2 .
Bước 2: Cập nhật hệ thống Amazon Linux
Sau khi kết nối vào instance qua SSH, hãy cập nhật trình quản lý gói để đảm bảo bạn có phiên bản phần mềm mới nhất:
sudo dnf update -y
sudo dnf upgrade -y
Bước 3: Cài đặt Nginx
Cài đặt Nginx
Chạy lệnh sau để cài đặt Nginx:
sudo dnf install nginx -y
Khởi động và kích hoạt Nginx
Khởi động dịch vụ Nginx và cấu hình để dịch vụ tự động khởi động khi máy chủ bật(boot):
sudo systemctl start nginx
sudo systemctl enable nginx
Kiểm tra cài đặt Nginx
Truy cập địa chỉ Public IP của máy chủ trong trình duyệt. Bạn sẽ thấy trang mặc định của Nginx.
Bước 4: Cài đặt và cấu hình MySQL
Cài đặt MySQL
MySQL là một hệ thống cơ sở dữ liệu phổ biến. Làm theo các bước sau để cài đặt MySQL:
## Tải xuống tệp RPM
sudo wget https://dev.mysql.com/get/mysql80-community-release-el9-1.noarch.rpm
## Cài đặt tệp RPM
sudo dnf install mysql80-community-release-el9-1.noarch.rpm -y
## Thêm khóa công khai của MySQL
sudo rpm --import https://repo.mysql.com/RPM-GPG-KEY-mysql-2023
# Cài đặt MySQL Client
sudo dnf install mysql-community-client -y
# Cài đặt MySQL Server
sudo dnf install mysql-community-server -y
Khởi động và kích hoạt MySQL
Khởi động dịch vụ MySQL và cấu hình để nó chạy khi máy chủ bật(boot):
sudo systemctl start mysqld
sudo systemctl enable mysqld
Kiểm tra MySQL
Kiểm tra phiên bản MySQL bằng lệnh:
mysql -V
# mysql Ver 8.0.40 for Linux on x86_64 (MySQL Community Server - GPL)
Bảo mật MySQL
Khi cài đặt MySQL, mật khẩu root tạm thời sẽ được in ra ở đường dẫn /var/log/mysqld.log
. Dùng lệnh sau để tìm mật khẩu.
sudo grep 'temporary password' /var/log/mysqld.log
# 2024-12-05T10:40:36.341933Z 6 [Note] [MY-010454] [Server] A temporary password is generated for root@localhost: fsCWX&F6TfCd
Như vậy bạn biết được mật khẩu root là fsCWX&F6TfCd
Chạy trình hướng dẫn bảo mật:
sudo mysql_secure_installation
Làm theo lời nhắc để:
- Đặt mật khẩu root.
- Xóa người dùng ẩn danh.
- Vô hiệu hóa đăng nhập root từ xa (tùy chọn).
- Xóa database test.
Enter password for user root: fsCWX&F6TfCd
New password: Secret123!@#
Re-enter new password: Secret123!@#
Change the password for root ? ((Press y|Y for Yes, any other key for No) : y
Do you wish to continue with the password provided?(Press y|Y for Yes, any other key for No) : y
Remove anonymous users? (Press y|Y for Yes, any other key for No) : y
Disallow root login remotely? (Press y|Y for Yes, any other key for No) : No
Remove test database and access to it? (Press y|Y for Yes, any other key for No) : y
Reload privilege tables now? (Press y|Y for Yes, any other key for No) : y
Sau khi chạy lệnh trên mật khẩu mới sẽ thay đổi thành: Secret123!@#
Kết nối MySQL
mysql -u"root" -p
-- Nhập mật khẩu root: Secret123!@#
Bước 5: Cài đặt PHP
Cài đặt PHP và các extension
Cài đặt PHP 8.3 và các extension cần thiết:
sudo dnf install php8.3 php8.3-cli php8.3-fpm php8.3-mbstring php8.3-xml php8.3-gd php8.3-zip php8.3-pdo php8.3-mysqlnd -y
Cấu hình PHP-FPM
Sửa cấu hình PHP-FPM để đặt user
và group
thành nginx
:
sudo vi /etc/php-fpm.d/www.conf
Cập nhật các dòng sau:
user = nginx
group = nginx
Khởi động và kích hoạt PHP-FPM khởi động cùng hệ thống:
sudo systemctl start php-fpm
sudo systemctl enable php-fpm
Bước 6: Cấu hình Nginx để chạy PHP
Chỉnh sửa file cấu hình Nginx:
sudo vi /etc/nginx/conf.d/site1.conf
Thêm cấu hình:
server {
listen 80;
server_name your-domain.com;
root /usr/share/nginx/html;
index index.php index.html;
location / {
try_files $uri $uri/ =404;
}
location ~ \.php$ {
include fastcgi_params;
fastcgi_pass unix:/var/run/php-fpm/www.sock;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
}
location ~ /\.ht {
deny all;
}
}
Khởi động lại Nginx:
sudo systemctl restart nginx
Bước 7: Kiểm tra LEMP Stack
Tạo file PHP info:
echo "<?php phpinfo(); ?>" | sudo tee /usr/share/nginx/html/info.php
Truy cập http://your-server-ip/info.php
.
Nếu IP public của server bạn là 13.112.242.48
thì truy cập http://13.112.242.48/info.php
Nếu bạn thấy hiển thị thông tin PHP thì LEMP stack đã được cài đặt thành công
Bước 8: Bảo mật LEMP Stack
- Cấu hình Firewall : Sử dụng AWS Security Groups.
- Kích hoạt HTTPS : Cài đặt chứng chỉ SSL miễn phí bằng Certbot .
- Củng cố MySQL : Hạn chế đăng nhập root từ xa.
Tổng kết
Chúc mừng! Bạn đã cài đặt thành công LEMP stack trên AWS Amazon Linux 2023.