Site logo
Authors
  • avatar Nguyễn Đức Xinh
    Name
    Nguyễn Đức Xinh
    Twitter
Published on
Published on

Hướng Dẫn Cài đặt Linux, Nginx, MySQL, PHP (LEMP Stack) trên AWS Amazon Linux 2023

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:

  1. Một AWS EC2 instance chạy Amazon Linux 2023 .
  2. 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. Kết quả 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 usergroup 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 Lemp stack Result

Bước 8: Bảo mật LEMP Stack

  1. Cấu hình Firewall : Sử dụng AWS Security Groups.
  2. Kích hoạt HTTPS : Cài đặt chứng chỉ SSL miễn phí bằng Certbot .
  3. 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.