Hướng dẫn này sẽ chỉ cho bạn cách cài đặt LEMP stack [Nginx, MariaDB và PHP8. 1] trên Ubuntu 22. 04. Ngăn xếp phần mềm là một tập hợp các công cụ phần mềm đi kèm với nhau. LEMP là viết tắt của Linux, Nginx [Engine-X], MariaDB/MySQL và PHP, tất cả đều là mã nguồn mở và miễn phí sử dụng
Đây là ngăn xếp phần mềm phổ biến nhất cung cấp năng lượng cho các trang web và ứng dụng web động
- Linux là hệ điều hành
- Nginx là máy chủ web
- MariaDB/MySQL là máy chủ cơ sở dữ liệu
- PHP là ngôn ngữ kịch bản phía máy chủ chịu trách nhiệm tạo các trang web động
Yêu cầu
Để làm theo hướng dẫn này, bạn cần có Ubuntu 22. 04 Hệ điều hành chạy trên máy tính cục bộ của bạn hoặc trên máy chủ từ xa
Nếu bạn đang tìm kiếm một máy chủ riêng ảo [VPS], tôi khuyên dùng Kamatera VPS, có tính năng
- 30 ngày dùng thử miễn phí
- Bắt đầu từ $4/tháng [RAM 1GB]
- VPS dựa trên KVM hiệu suất cao
- 9 trung tâm dữ liệu trên khắp thế giới, bao gồm Hoa Kỳ, Canada, Vương quốc Anh, Đức, Hà Lan, Hồng Kông và Isreal
Thực hiện theo hướng dẫn được liên kết bên dưới để tạo máy chủ VPS Linux của bạn tại Kamatera
- Cách tạo máy chủ VPS Linux trên Kamatera
Khi bạn có VPS chạy Ubuntu 22. 04, làm theo hướng dẫn bên dưới
Và nếu bạn cần thiết lập ngăn xếp LEMP với một tên miền, tôi khuyên bạn nên mua tên miền từ NameCheap vì giá rẻ và họ bảo vệ quyền riêng tư của whois miễn phí trọn đời
Bước 1. Cập nhật gói phần mềm
Trước khi cài đặt ngăn xếp LEMP, bạn nên cập nhật kho lưu trữ và các gói phần mềm bằng cách chạy các lệnh sau trên Ubuntu 22 của mình. 04 HĐH
sudo apt update sudo apt upgrade -y
Bước 2. Cài đặt máy chủ web Nginx
Nginx là một máy chủ web hiệu suất cao và rất phổ biến hiện nay. Nó cũng có thể được sử dụng như một máy chủ lưu trữ và proxy ngược. Nhập lệnh sau để cài đặt máy chủ Web Nginx
sudo apt install nginx
Sau khi được cài đặt, chúng ta có thể kích hoạt Nginx tự động khởi động khi khởi động bằng cách chạy lệnh sau
sudo systemctl enable nginx
Sau đó khởi động Nginx bằng lệnh này
sudo systemctl start nginx
Bây giờ hãy kiểm tra trạng thái của nó
sudo systemctl status nginx
đầu ra
● nginx.service - A high performance web server and a reverse proxy server Loaded: loaded [/lib/systemd/system/nginx.service; enabled; vendor preset: enabled] Active: active [running] since Fri 2022-04-10 14:11:43 UTC; 3s ago Docs: man:nginx[8] Process: 8533 ExecStartPre=/usr/sbin/nginx -t -q -g daemon on; master_process on; [code=exited, status=0/SUCCESS] Process: 8545 ExecStart=/usr/sbin/nginx -g daemon on; master_process on; [code=exited, status=0/SUCCESS] Main PID: 8549 [nginx] Tasks: 3 [limit: 9451] Memory: 3.9M CGroup: /system.slice/nginx.service ├─8549 nginx: master process /usr/sbin/nginx -g daemon on; master_process on; ├─8550 nginx: worker process └─8551 nginx: worker process
“Đã bật” cho biết tính năng tự động khởi động khi khởi động được bật và chúng ta có thể thấy Nginx đang chạy. Bạn cũng có thể xem lượng RAM Nginx đang sử dụng từ đầu ra. Nếu lệnh trên không thoát ngay sau khi chạy. Bạn cần nhấn “q” để thoát
Kiểm tra phiên bản Nginx
nginx -v
đầu ra
nginx version: nginx/1.18.0 [Ubuntu]
Bây giờ hãy nhập địa chỉ IP công khai của Ubuntu 22 của bạn. 04 máy chủ trên thanh địa chỉ trình duyệt. Bạn sẽ thấy trang Web “Welcome to Nginx”, có nghĩa là máy chủ Web Nginx đang chạy bình thường. Nếu bạn đang cài đặt LEMP trên Ubuntu 22 cục bộ của mình. 04 máy tính, sau đó gõ
sudo systemctl status nginx9 hoặc
● nginx.service - A high performance web server and a reverse proxy server Loaded: loaded [/lib/systemd/system/nginx.service; enabled; vendor preset: enabled] Active: active [running] since Fri 2022-04-10 14:11:43 UTC; 3s ago Docs: man:nginx[8] Process: 8533 ExecStartPre=/usr/sbin/nginx -t -q -g daemon on; master_process on; [code=exited, status=0/SUCCESS] Process: 8545 ExecStart=/usr/sbin/nginx -g daemon on; master_process on; [code=exited, status=0/SUCCESS] Main PID: 8549 [nginx] Tasks: 3 [limit: 9451] Memory: 3.9M CGroup: /system.slice/nginx.service ├─8549 nginx: master process /usr/sbin/nginx -g daemon on; master_process on; ├─8550 nginx: worker process └─8551 nginx: worker process0 vào thanh địa chỉ của trình duyệt
Nếu kết nối bị từ chối hoặc không hoàn tất, có thể có tường lửa ngăn các yêu cầu gửi đến cổng TCP 80. Nếu bạn đang sử dụng tường lửa iptables, thì bạn cần chạy lệnh sau để mở cổng TCP 80
sudo apt install nginx0
Nếu bạn đang sử dụng tường lửa UFW, hãy chạy lệnh này để mở cổng TCP 80
sudo apt install nginx1
Cuối cùng, chúng ta cần đặt
● nginx.service - A high performance web server and a reverse proxy server Loaded: loaded [/lib/systemd/system/nginx.service; enabled; vendor preset: enabled] Active: active [running] since Fri 2022-04-10 14:11:43 UTC; 3s ago Docs: man:nginx[8] Process: 8533 ExecStartPre=/usr/sbin/nginx -t -q -g daemon on; master_process on; [code=exited, status=0/SUCCESS] Process: 8545 ExecStart=/usr/sbin/nginx -g daemon on; master_process on; [code=exited, status=0/SUCCESS] Main PID: 8549 [nginx] Tasks: 3 [limit: 9451] Memory: 3.9M CGroup: /system.slice/nginx.service ├─8549 nginx: master process /usr/sbin/nginx -g daemon on; master_process on; ├─8550 nginx: worker process └─8551 nginx: worker process1 [người dùng Nginx] làm chủ sở hữu của thư mục web. Theo mặc định, nó thuộc sở hữu của người dùng root
sudo apt install nginx0
Bước 3. Cài đặt máy chủ cơ sở dữ liệu MariaDB
MariaDB là một sự thay thế drop-in cho MySQL. Nó được phát triển bởi các thành viên cũ của nhóm MySQL, những người lo ngại rằng Oracle có thể biến MySQL thành một sản phẩm nguồn đóng. Nhập lệnh sau để cài đặt MariaDB trên Ubuntu 22. 04
sudo apt install nginx1
Sau khi được cài đặt, máy chủ MariaDB sẽ tự động khởi động. Sử dụng systemctl để kiểm tra trạng thái của nó
sudo apt install nginx2
đầu ra
sudo apt install nginx3
Gợi ý. Nếu lệnh trên không thoát ngay sau khi chạy. Bạn cần nhấn “q” để thoát
Nếu nó không chạy, hãy khởi động nó bằng lệnh này
sudo apt install nginx4
Để cho phép MariaDB tự động bắt đầu khi khởi động, hãy chạy
sudo apt install nginx5
Bây giờ hãy chạy tập lệnh bảo mật sau khi cài đặt
sudo apt install nginx6
- Khi nó yêu cầu bạn nhập mật khẩu gốc MariaDB, hãy nhấn phím ________ 52 vì mật khẩu gốc chưa được đặt
- Không chuyển sang xác thực unix_socket vì MariaDB đã sử dụng xác thực unix_socket
- Không thay đổi mật khẩu root, vì bạn không cần đặt mật khẩu root khi sử dụng xác thực unix_socket
Tiếp theo, bạn có thể nhấn
● nginx.service - A high performance web server and a reverse proxy server Loaded: loaded [/lib/systemd/system/nginx.service; enabled; vendor preset: enabled] Active: active [running] since Fri 2022-04-10 14:11:43 UTC; 3s ago Docs: man:nginx[8] Process: 8533 ExecStartPre=/usr/sbin/nginx -t -q -g daemon on; master_process on; [code=exited, status=0/SUCCESS] Process: 8545 ExecStart=/usr/sbin/nginx -g daemon on; master_process on; [code=exited, status=0/SUCCESS] Main PID: 8549 [nginx] Tasks: 3 [limit: 9451] Memory: 3.9M CGroup: /system.slice/nginx.service ├─8549 nginx: master process /usr/sbin/nginx -g daemon on; master_process on; ├─8550 nginx: worker process └─8551 nginx: worker process2 để trả lời tất cả các câu hỏi còn lại, thao tác này sẽ xóa người dùng ẩn danh, tắt đăng nhập gốc từ xa và xóa cơ sở dữ liệu kiểm tra. Bước này là yêu cầu cơ bản để bảo mật cơ sở dữ liệu MariaDB. [Lưu ý rằng
● nginx.service - A high performance web server and a reverse proxy server Loaded: loaded [/lib/systemd/system/nginx.service; enabled; vendor preset: enabled] Active: active [running] since Fri 2022-04-10 14:11:43 UTC; 3s ago Docs: man:nginx[8] Process: 8533 ExecStartPre=/usr/sbin/nginx -t -q -g daemon on; master_process on; [code=exited, status=0/SUCCESS] Process: 8545 ExecStart=/usr/sbin/nginx -g daemon on; master_process on; [code=exited, status=0/SUCCESS] Main PID: 8549 [nginx] Tasks: 3 [limit: 9451] Memory: 3.9M CGroup: /system.slice/nginx.service ├─8549 nginx: master process /usr/sbin/nginx -g daemon on; master_process on; ├─8550 nginx: worker process └─8551 nginx: worker process4 được viết hoa, có nghĩa là đây là câu trả lời mặc định. ]
Theo mặc định, gói MaraiDB trên Ubuntu sử dụng
● nginx.service - A high performance web server and a reverse proxy server Loaded: loaded [/lib/systemd/system/nginx.service; enabled; vendor preset: enabled] Active: active [running] since Fri 2022-04-10 14:11:43 UTC; 3s ago Docs: man:nginx[8] Process: 8533 ExecStartPre=/usr/sbin/nginx -t -q -g daemon on; master_process on; [code=exited, status=0/SUCCESS] Process: 8545 ExecStart=/usr/sbin/nginx -g daemon on; master_process on; [code=exited, status=0/SUCCESS] Main PID: 8549 [nginx] Tasks: 3 [limit: 9451] Memory: 3.9M CGroup: /system.slice/nginx.service ├─8549 nginx: master process /usr/sbin/nginx -g daemon on; master_process on; ├─8550 nginx: worker process └─8551 nginx: worker process5 để xác thực thông tin đăng nhập của người dùng, về cơ bản có nghĩa là bạn có thể sử dụng tên người dùng và mật khẩu của HĐH để đăng nhập vào bảng điều khiển MariaDB. Vì vậy, bạn có thể chạy lệnh sau để đăng nhập mà không cần cung cấp mật khẩu gốc MariaDB
sudo apt install nginx7
Để thoát, hãy chạy
sudo apt install nginx8
Kiểm tra thông tin phiên bản máy chủ MariaDB
sudo apt install nginx9
Như bạn có thể thấy, chúng tôi đã cài đặt MariaDB 10. 6. 7
sudo systemctl enable nginx0
Bước 4. Cài đặt PHP8. 1
PHP8. 1 được bao gồm trong Ubuntu 22. 04 và có một cải tiến hiệu suất nhỏ so với PHP8. 0. Nhập lệnh sau để cài đặt PHP8. 1 và một số tiện ích mở rộng phổ biến
sudo systemctl enable nginx1
Phần mở rộng PHP thường cần thiết cho các hệ thống quản lý nội dung [CMS] như WordPress. Ví dụ: nếu cài đặt của bạn thiếu
● nginx.service - A high performance web server and a reverse proxy server Loaded: loaded [/lib/systemd/system/nginx.service; enabled; vendor preset: enabled] Active: active [running] since Fri 2022-04-10 14:11:43 UTC; 3s ago Docs: man:nginx[8] Process: 8533 ExecStartPre=/usr/sbin/nginx -t -q -g daemon on; master_process on; [code=exited, status=0/SUCCESS] Process: 8545 ExecStart=/usr/sbin/nginx -g daemon on; master_process on; [code=exited, status=0/SUCCESS] Main PID: 8549 [nginx] Tasks: 3 [limit: 9451] Memory: 3.9M CGroup: /system.slice/nginx.service ├─8549 nginx: master process /usr/sbin/nginx -g daemon on; master_process on; ├─8550 nginx: worker process └─8551 nginx: worker process6, thì một số trang trên trang web WordPress của bạn có thể trống và bạn có thể tìm thấy lỗi trong nhật ký lỗi Nginx như
sudo systemctl enable nginx2
Cài đặt các phần mở rộng PHP này đảm bảo rằng CMS của bạn chạy trơn tru. Bây giờ bắt đầu php8. 1 khung hình/phút
sudo systemctl enable nginx3
Kích hoạt tính năng tự khởi động khi khởi động
sudo systemctl enable nginx4
Kiểm tra trạng thái
sudo systemctl enable nginx5
đầu ra mẫu
sudo systemctl enable nginx6
Nếu lệnh trên không thoát ngay sau khi chạy. Bạn cần nhấn “q” để thoát
Bước 5. Tạo khối máy chủ Nginx
Một khối máy chủ Nginx giống như một máy chủ ảo trong Apache. Chúng tôi sẽ không sử dụng khối máy chủ mặc định vì nó không đủ để chạy mã PHP và nếu chúng tôi sửa đổi nó, nó sẽ trở thành một mớ hỗn độn. Vì vậy, hãy xóa liên kết tượng trưng
● nginx.service - A high performance web server and a reverse proxy server Loaded: loaded [/lib/systemd/system/nginx.service; enabled; vendor preset: enabled] Active: active [running] since Fri 2022-04-10 14:11:43 UTC; 3s ago Docs: man:nginx[8] Process: 8533 ExecStartPre=/usr/sbin/nginx -t -q -g daemon on; master_process on; [code=exited, status=0/SUCCESS] Process: 8545 ExecStart=/usr/sbin/nginx -g daemon on; master_process on; [code=exited, status=0/SUCCESS] Main PID: 8549 [nginx] Tasks: 3 [limit: 9451] Memory: 3.9M CGroup: /system.slice/nginx.service ├─8549 nginx: master process /usr/sbin/nginx -g daemon on; master_process on; ├─8550 nginx: worker process └─8551 nginx: worker process7 trong thư mục
● nginx.service - A high performance web server and a reverse proxy server Loaded: loaded [/lib/systemd/system/nginx.service; enabled; vendor preset: enabled] Active: active [running] since Fri 2022-04-10 14:11:43 UTC; 3s ago Docs: man:nginx[8] Process: 8533 ExecStartPre=/usr/sbin/nginx -t -q -g daemon on; master_process on; [code=exited, status=0/SUCCESS] Process: 8545 ExecStart=/usr/sbin/nginx -g daemon on; master_process on; [code=exited, status=0/SUCCESS] Main PID: 8549 [nginx] Tasks: 3 [limit: 9451] Memory: 3.9M CGroup: /system.slice/nginx.service ├─8549 nginx: master process /usr/sbin/nginx -g daemon on; master_process on; ├─8550 nginx: worker process └─8551 nginx: worker process8 bằng cách chạy lệnh sau. [Nó vẫn có sẵn dưới dạng
● nginx.service - A high performance web server and a reverse proxy server Loaded: loaded [/lib/systemd/system/nginx.service; enabled; vendor preset: enabled] Active: active [running] since Fri 2022-04-10 14:11:43 UTC; 3s ago Docs: man:nginx[8] Process: 8533 ExecStartPre=/usr/sbin/nginx -t -q -g daemon on; master_process on; [code=exited, status=0/SUCCESS] Process: 8545 ExecStart=/usr/sbin/nginx -g daemon on; master_process on; [code=exited, status=0/SUCCESS] Main PID: 8549 [nginx] Tasks: 3 [limit: 9451] Memory: 3.9M CGroup: /system.slice/nginx.service ├─8549 nginx: master process /usr/sbin/nginx -g daemon on; master_process on; ├─8550 nginx: worker process └─8551 nginx: worker process9. ]
sudo systemctl enable nginx7
Sau đó, sử dụng trình soạn thảo văn bản dòng lệnh như Nano để tạo tệp khối máy chủ mới trong /etc/nginx/conf. thư mục d/
sudo systemctl enable nginx8
Dán văn bản sau vào tệp. Đoạn mã sau sẽ khiến Nginx lắng nghe trên cổng IPv4 80 và cổng IPv6 80 với tên máy chủ bắt tất cả
sudo systemctl enable nginx9
lưu và đóng tập tin. [Để lưu tệp trong trình soạn thảo văn bản Nano, nhấn
nginx -v0, sau đó nhấn
● nginx.service - A high performance web server and a reverse proxy server Loaded: loaded [/lib/systemd/system/nginx.service; enabled; vendor preset: enabled] Active: active [running] since Fri 2022-04-10 14:11:43 UTC; 3s ago Docs: man:nginx[8] Process: 8533 ExecStartPre=/usr/sbin/nginx -t -q -g daemon on; master_process on; [code=exited, status=0/SUCCESS] Process: 8545 ExecStart=/usr/sbin/nginx -g daemon on; master_process on; [code=exited, status=0/SUCCESS] Main PID: 8549 [nginx] Tasks: 3 [limit: 9451] Memory: 3.9M CGroup: /system.slice/nginx.service ├─8549 nginx: master process /usr/sbin/nginx -g daemon on; master_process on; ├─8550 nginx: worker process └─8551 nginx: worker process2 để xác nhận. Để thoát, nhấn
nginx -v2. ]
Sau đó kiểm tra cấu hình Nginx
sudo systemctl start nginx0
Nếu kiểm tra thành công, hãy tải lại Nginx
sudo systemctl start nginx1
Bước 6. Kiểm tra PHP
Để kiểm tra PHP-FPM với máy chủ Web Nginx, chúng ta cần tạo một tệp
nginx -v3 trong thư mục webroot
sudo systemctl start nginx2
Dán mã PHP sau vào tệp
sudo systemctl start nginx3
lưu và đóng tập tin. Bây giờ trên thanh địa chỉ của trình duyệt, hãy nhập
nginx -v4. Thay thế
nginx -v5 bằng IP thực của bạn. Nếu bạn làm theo hướng dẫn này trên máy tính cục bộ của mình, hãy nhập
nginx -v6 hoặc
nginx -v7
Bạn sẽ thấy thông tin PHP của máy chủ của bạn. Điều này có nghĩa là các tập lệnh PHP có thể chạy đúng với máy chủ web Nginx
Bước 7. Cải thiện hiệu suất PHP
Các cấu hình PHP mặc định [
nginx -v8] được tạo cho các máy chủ có rất ít tài nguyên [chẳng hạn như máy chủ RAM 256 MB]. Để cải thiện hiệu suất ứng dụng web, bạn nên thay đổi một số trong số chúng
Chúng ta có thể chỉnh sửa tệp cấu hình PHP [
nginx -v9], nhưng cách tốt nhất là tạo tệp cấu hình PHP tùy chỉnh, vì vậy khi bạn nâng cấp lên phiên bản PHP8 mới. 1, cấu hình tùy chỉnh của bạn sẽ được giữ nguyên
sudo systemctl start nginx4
Trong tệp này, thêm các dòng sau
sudo systemctl start nginx5
lưu và đóng tập tin. Sau đó tải lại PHP8. 1-FPM để các thay đổi có hiệu lực
sudo systemctl start nginx6
OPcache cải thiện hiệu suất của các ứng dụng PHP bằng cách lưu vào bộ đệm mã byte được biên dịch trước. Bạn có thể xem số liệu thống kê OPcache qua trang
nginx -v3. Dưới đây là so sánh trước và sau trên một trong các máy chủ của tôi
Trước
Sau đó
Như bạn có thể thấy, trước khi áp dụng cấu hình PHP tùy chỉnh, RAM được phân bổ cho OPcache gần như đã được sử dụng hết. Sau khi áp dụng các cấu hình PHP tùy chỉnh, OPcache có thể sử dụng nhiều RAM hơn để lưu mã byte được biên dịch trước vào bộ đệm
chúc mừng. Bạn đã cài đặt thành công Nginx, MariaDB và PHP8. 1 trên Ubuntu 22. 04. Để bảo mật cho máy chủ của bạn, bạn nên xóa tệp
nginx -v3 ngay bây giờ để ngăn chặn tin tặc nhìn thấy nó
sudo systemctl start nginx7
Mẹo khắc phục sự cố
Nếu bạn gặp lỗi, bạn có thể kiểm tra nhật ký lỗi Nginx [
nginx version: nginx/1.18.0 [Ubuntu]2] để tìm ra lỗi
Tự động khởi động lại Nginx
Nếu vì bất kỳ lý do gì, quy trình Nginx của bạn bị tắt, bạn cần chạy lệnh sau để khởi động lại nó
sudo systemctl start nginx8
Thay vì gõ lệnh này theo cách thủ công, chúng ta có thể khiến Nginx tự động khởi động lại bằng cách chỉnh sửa đơn vị dịch vụ systemd
nginx version: nginx/1.18.0 [Ubuntu]3. Để ghi đè cấu hình dịch vụ systemd mặc định, chúng tôi tạo một thư mục riêng
sudo systemctl start nginx9
Sau đó tạo một tệp trong thư mục này
sudo systemctl status nginx0
Thêm các dòng sau vào tệp, điều này sẽ khiến Nginx tự động khởi động lại sau 5 giây sau khi phát hiện lỗi. Giá trị mặc định của
nginx version: nginx/1.18.0 [Ubuntu]4 là 100ms, quá nhỏ. Nginx có thể phàn nàn rằng “bắt đầu yêu cầu lặp lại quá nhanh” nếu
nginx version: nginx/1.18.0 [Ubuntu]5 không đủ lớn
sudo systemctl status nginx1
lưu và đóng tập tin. Sau đó tải lại systemd để thay đổi có hiệu lực
sudo systemctl status nginx2
Để kiểm tra xem điều này có hoạt động hay không, hãy tắt Nginx bằng
sudo systemctl status nginx3
Sau đó kiểm tra trạng thái Nginx. Bạn sẽ thấy Nginx tự động khởi động lại
sudo systemctl status nginx4
Khởi động tự động MariaDB
Theo mặc định, MariaDB được cấu hình để tự động khởi động lại
nginx version: nginx/1.18.0 [Ubuntu]6 [
nginx version: nginx/1.18.0 [Ubuntu]7]. Tuy nhiên, nếu máy chủ của bạn hết bộ nhớ [oom] và MariaDB bị giết bởi oom killer, nó sẽ không tự động khởi động lại. Chúng tôi có thể cấu hình nó để khởi động lại bất kể điều gì xảy ra
Tạo một thư mục để lưu trữ các cấu hình tùy chỉnh
sudo systemctl status nginx5
Tạo một tập tin cấu hình tùy chỉnh
sudo systemctl status nginx6
Thêm các dòng sau vào tệp
sudo systemctl status nginx1
lưu và đóng tập tin. Sau đó tải lại systemd để thay đổi có hiệu lực
sudo systemctl status nginx2
Bước tiếp theo
Như mọi khi, nếu bạn thấy bài đăng này hữu ích, hãy đăng ký nhận bản tin miễn phí của chúng tôi để nhận thêm mẹo và thủ thuật. Bạn cũng có thể cài đặt WordPress trên LEMP stack để tạo trang web hoặc blog của riêng mình
- Cài đặt WordPress trên Ubuntu 22. 04 với Nginx, MariaDB, PHP8. 1 [LEMP]
Hướng dẫn Nginx liên quan
- Cách khắc phục các lỗi máy chủ web Nginx phổ biến
Sao lưu rất quan trọng trong trường hợp bị hack, thảm họa trung tâm dữ liệu, v.v. Bạn nên có một chiến lược sao lưu cho máy chủ của mình