Hướng dẫn cài đặt LEMP Amazon Linux 2023

Võ Lành

Trong bài viết này, chúng tôi sẽ cung cấp cho bạn một hướng dẫn chi tiết và toàn diện về cách cài đặt LEMP stack trên hệ điều hành Amazon Linux 2023. Bạn sẽ khám phá các bước cụ thể và lệnh command, giúp bạn triển khai môi trường web mạnh mẽ với Nginx, MySQL và PHP một cách dễ dàng và nhanh chóng. Đừng để việc cài đặt LEMP trở thành vấn đề khó khăn, hãy bắt đầu ngay để tận hưởng sự hiệu quả và linh hoạt của cụm công cụ này trên Amazon Linux 2023.

NỘI DUNG CÀI ĐẶT TRONG BÀI VIẾT NÀY

  • php8.2 & php-fpm & php package
  • Nginx web server
  • Mysql server 8.0

cài đặt LEMP Amazon linux 2023

1. Cập nhật server:

Để đảm bảo rằng tất cả các gói phần mềm của bạn đều được cập nhật, hãy thực hiện cập nhật phần mềm nhanh trên phiên bản của bạn. Quá trình này có thể mất vài phút, nhưng điều quan trọng là phải đảm bảo rằng bạn có các bản sửa lỗi và cập nhật bảo mật mới nhất.

sudo dnf update -y

Option -y để đồng ý cài đặt các package kèm theo mà bạn không cần phải nhập y để xác nhận.

Sau khi bạn chạy câu lệnh trên, Amazon linux sẽ yêu cầu bạn chạy 1 câu lệnh cập nhật được hiện bên trong terminal

 dụ: sudo dnf upgrade --releasever=2023.1.20230725

Tiếp theo để hệ thống cập nhật các file mới nhất thì ta reboot server.

sudo systemctl reboot

Đợi 1 lát thì ssh vào lại và cài đặt php.

2. Cài đặt php, Nginx và các package cần thiết

sudo dnf install -y nginx wget php-fpm php-mysqli php-json php php-devel

Tiếp theo bật nginx và php-fpm.

sudo systemctl start nginx
sudo systemctl start php-fpm

Lệnh này sẽ bắt đầu chạy dịch vụ PHP-FPM ngay lập tức. Nếu dịch vụ đã được cài đặt và cấu hình chính xác, nó sẽ bắt đầu chạy và sẵn sàng xử lý các yêu cầu PHP

Thiết lập để dịch vụ nginx tự động khởi động cùng với hệ thống khi máy chủ được khởi động lại.

sudo systemctl enable nginx

Kiểm tra trạng thái nginx

sudo service nginx status

Kiểm tra php version:

php -v
PHP 8.2.7 (cli) (built: Jun 6 2023 21:28:56) (NTS gcc x86_64)
Copyright (c) The PHP Group
Zend Engine v4.2.7, Copyright (c) Zend Technologies
with Zend OPcache v8.2.7, Copyright (c), by Zend Technologies
3. Thêm ec2-user vào group của nginx
sudo usermod -a -G nginx ec2-user
  • Thay đổi chủ sở hữu cho group chứa source
sudo chown -R nginx: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 {} \;

Bây giờ người dùng ec2-user của web service đã có thể ghi, sửa xóa các dữ liệu bên trong thư mục /var/www

3. Cấu hình cho PHP FPM service

Theo mặc định, nó được đặt để sử dụng người dùng và nhóm apache và chúng ta sẽ cần cập nhật lên Nginx, nếu bạn không thay đổi người dùng apache thì web vẫn hoạt động bình thường, tuy nhiên trong một số trường hợp ví dụ như các ứng dụng sinh ra file log hàng ngày như Laravel sẽ có owner file logs là apache. Để đồng bộ người dùng là Nginx thì chúng ta thực hiện các bước sau:

sudo vi /etc/php-fpm.d/www.conf

Tìm đến dòng user và group như bên dưới thay đổi apache thành Nginx.

Lưu ý để tìm kiếm trên vim bạn có thể gõ \kí tự cần tìm, nhấn esc để tắt chế độ tìm kiếm

user = nginx
group = nginx

Kiểm tra xem có đang lắng nghe thông qua www.sock không tại dòng

listen = /run/php-fpm/www.sock

set permissions cho unix socket

listen.acl_users = apache,nginx
sudo systemctl enable php-fpm
sudo systemctl restart php-fpm

Kiểm tra trạng thái của php-fpm:

sudo systemctl status php-fpm

4. Cấu hình Nginx web server

sudo vim /etc/nginx/conf.d/mysite.conf

Thêm thông tin cấu hình cho file nginx:

server {
	listen 80;

	charset UTF-8;
	root /var/www/html/;
	index index.php index.html;

	location / {
		try_files $uri $uri/ /index.php?$args;
	}

	location ~* /\. {
		deny all;
	}

	location ~ [^/]\.php(/|$) {
		fastcgi_split_path_info ^(.+?\.php)(/.*)$;
		if (!-f $document_root$fastcgi_script_name) {
			return 404;
		}
		
		fastcgi_pass unix:/var/run/php-fpm/www.sock;
		fastcgi_index index.php;
		fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
		include fastcgi_params;
		fastcgi_buffers 256 128k;
		fastcgi_buffer_size 128k;
		fastcgi_intercept_errors on;
		fastcgi_read_timeout 120s;
	}
}

Tiếp theo chúng ta sẽ thực hiện tạo 1 file phpinfo.php để test thông tin hoạt động của server nên sẽ trỏ đến mục html này.

Kiểm tra cấu hình nginx đã đúng cú pháp chưa

sudo nginx -t

Khởi động lại nginx để server load cấu hình mới

sudo systemctl restart nginx

Trường hợp bạn gặp lỗi như bên dưới thì có thể tạm tắt selilinux để khởi động lại nginx nhé.

sestatus
Job for nginx.service failed because the control process exited with error code.
See "systemctl status nginx.service" and "journalctl -xeu nginx.service" for details.
SELinux status: enabled
SELinuxfs mount: /sys/fs/selinux
SELinux root directory: /etc/selinux
Loaded policy name: targeted
Current mode: permissive
Mode from config file: permissive
Policy MLS status: enabled
Policy deny_unknown status: allowed
Memory protection checking: actual (secure)
Max kernel policy version: 33
sudo setenforce 0
sudo systemctl restart nginx

Bật lại selilinux sau khi restart thành công

sudo setenforce 1

Tạo file phpinfo

Đầu tiên bạn cần đảm bảo rằng web có quyền truy cập vào thư mục /var/www/html.

sudo ls -la /var/www/html

Nếu hiện tại đang là root như bên trên thì chúng ta chưa thể tạo file phpinfo.php để test. Tiến hành set quyền cho thư mục.

sudo chmod -R 755 /var/www/html

Tiếp theo tạo file phpinfo.php để xem thông tin của server.

echo "<?php phpinfo(); ?>" > /var/www/html/phpinfo.php

Cuối cùng truy cập vào server của bạn để xem thông tin máy chủ.

http://your-ec2-instance-public-dns/phpinfo.php

Lưu ý: để biết public-dns ec2 của bạn thì có thể gõ command

curl http://checkip.amazonaws.com

Hoặc

 hostname -I

Giả sử ip của bạn là : 172.34.36.144

Thì sẽ truy cập vào địa chỉ: http://172.34.36.144/phpinfo.php

Để kiểm tra các gói đã cài đặt trên server có thể dùng lệnh

sudo dnf list installed {tên gói nếu cần}

Xóa file phpinfo.php sau khi đã kiểm tra thông tin server.

rm /var/www/html/phpinfo.php

Cài đặt Mysql 8 trên Amazon Linux 2023

Bài viết khá dài nên mình tách phần cài đặt Mysql 8 trên Amazon Linux 2023 thành phần 2:

Cài đặt Mysql 8 trên Amazon linux 2023

reference:

https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ec2-lamp-amazon-linux-2023.html

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