Cách cài đặt Linux, Nginx, MySQL, PHP ( LEMP) trên Debian 9
Phần mềm LEMP là một group phần mềm được dùng để phục vụ các trang web động và ứng dụng web. Đây là từ viết tắt mô tả hệ điều hành Linux, với web server Nginx. Dữ liệu backend được lưu trữ trong database MySQL và xử lý bởi PHP.Trong hướng dẫn này, bạn sẽ cài đặt LEMP trên server Debian bằng các gói do hệ điều hành cung cấp.
Yêu cầu
Để hoàn thành hướng dẫn này, bạn cần một server Debian 9 với user không phải root có quyền sudo
. Bạn có thể cài đặt user có các quyền này trong hướng dẫn Cài đặt Server Ban đầu với Debian 9 của ta .
Bước 1 - Cài đặt Server Web Nginx
Để hiển thị các trang web cho khách truy cập trang web của ta , ta sẽ sử dụng Nginx, một web server hiện đại, hiệu quả.
Tất cả phần mềm ta sẽ sử dụng cho quy trình này sẽ đến trực tiếp từ repository mặc định của Debian. Điều này nghĩa là ta có thể sử dụng trình quản lý gói apt
để hoàn tất cài đặt.
Vì đây là lần đầu tiên ta sử dụng apt
cho phiên này, ta nên bắt đầu bằng cách cập nhật index gói local của bạn . Sau đó, ta có thể cài đặt server :
- sudo apt update
- sudo apt install nginx
Trên Debian 9, Nginx được cấu hình để bắt đầu chạy khi cài đặt.
Nếu bạn đang chạy firewall ufw
, bạn cần cho phép kết nối với Nginx. Bạn nên kích hoạt cấu hình chặn tối đa mà vẫn cho phép lưu lượng truy cập bạn muốn. Vì ta chưa cấu hình SSL cho server của bạn nên trong hướng dẫn này, ta chỉ cần cho phép lưu lượng truy cập trên cổng 80
.
Bạn có thể kích hoạt tính năng này bằng lệnh :
- sudo ufw allow 'Nginx HTTP'
Bạn có thể kiểm tra thay đổi bằng lệnh :
- sudo ufw status
Bạn sẽ thấy truy cập HTTP được phép trong kết quả được hiển thị:
OutputStatus: active To Action From -- ------ ---- OpenSSH ALLOW Anywhere Nginx HTTP ALLOW Anywhere OpenSSH (v6) ALLOW Anywhere (v6) Nginx HTTP (v6) ALLOW Anywhere (v6)
Bây giờ, hãy kiểm tra xem server có hoạt động hay không bằng cách truy cập vào domain hoặc địa chỉ IP công khai của server trong trình duyệt web . Nếu bạn không có domain được trỏ đến server của bạn và bạn không biết địa chỉ IP công khai của server , bạn có thể tìm thấy nó bằng lệnh một trong những thông tin sau vào terminal của bạn:
- ip addr show eth0 | grep inet | awk '{ print $2; }' | sed 's/\/.*$//'
Thao tác này sẽ in ra một vài địa chỉ IP. Bạn có thể thử lần lượt từng cái trong trình duyệt web của bạn .
Nhập một trong các địa chỉ mà bạn nhận được trong trình duyệt web của bạn . Nó sẽ đưa bạn đến trang đích mặc định của Nginx:
http://your_domain_or_IP
Nếu bạn nhìn thấy trang trên, bạn đã cài đặt thành công Nginx.
Bước 2 - Cài đặt MySQL để quản lý dữ liệu trang web
Bây giờ ta đã có web server , ta cần cài đặt MySQL, một hệ quản trị database , để lưu trữ và quản lý dữ liệu cho trang web của ta .
Bạn có thể cài đặt cái này dễ dàng bằng lệnh :
- sudo apt install mysql-server
Lưu ý: Trong Debian 9, một nhánh cộng đồng của dự án MySQL - MariaDB - được đóng gói dưới dạng biến thể MySQL mặc định. Mặc dù, MariaDB hoạt động tốt trong hầu hết các trường hợp, nếu bạn cần các tính năng chỉ có trong MySQL của Oracle, bạn có thể cài đặt và sử dụng các gói từ repository do các nhà phát triển MySQL duy trì. Để cài đặt server MySQL chính thức, hãy sử dụng hướng dẫn Cách cài đặt MySQL mới nhất trên Debian 9 của ta .
Phần mềm database MySQL hiện đã được cài đặt, nhưng cấu hình của nó chưa hoàn chỉnh.
Để bảo mật cài đặt, ta có thể chạy một tập lệnh bảo mật sẽ hỏi liệu ta có muốn sửa đổi một số mặc định không an toàn hay không. Bắt đầu tập lệnh bằng lệnh :
- sudo mysql_secure_installation
Bạn cần nhập password cho account gốc MySQL. Ta chưa cài đặt điều này, vì vậy chỉ cần nhấn ENTER
. Sau đó, bạn sẽ được hỏi bạn có muốn đặt password đó không. Bạn nên nhập y
rồi đặt password gốc .
Đối với các câu hỏi còn lại mà kịch bản yêu cầu, bạn nên nhấn y
, sau đó nhấn ENTER
tại mỗi dấu nhắc . Thao tác này sẽ xóa một số user ẩn danh và database thử nghiệm, vô hiệu hóa đăng nhập root từ xa và tải các luật mới này để MySQL áp dụng ngay những thay đổi bạn đã thực hiện.
Đến đây, hệ thống database của bạn đã được cài đặt và bảo mật. Hãy cài đặt PHP.
Bước 3 - Cài đặt PHP để xử lý
Bây giờ ta đã cài đặt Nginx để phục vụ các trang của ta và MySQL được cài đặt để lưu trữ và quản lý dữ liệu của ta . Tuy nhiên, ta vẫn chưa có bất kỳ thứ gì có thể tạo ra nội dung động. Đó là nơi PHP xuất hiện.
Vì Nginx không chứa PHP processor root như một số web server khác, ta cần cài đặt fpm
, viết tắt của “fastCGI process manager”. Ta sẽ yêu cầu Nginx chuyển các yêu cầu PHP đến phần mềm này để xử lý. Ta cũng sẽ cài đặt một gói trợ giúp bổ sung cho phép PHP giao tiếp với backend database MySQL của ta . Quá trình cài đặt sẽ kéo các file lõi PHP cần thiết để làm cho việc đó hoạt động.
Sau đó cài đặt các gói php-fpm
và php-mysql
:
- sudo apt install php-fpm php-mysql
Bây giờ ta đã cài đặt các thành phần PHP của bạn . Tiếp theo, ta sẽ cấu hình Nginx để sử dụng chúng.
Bước 4 - Cấu hình Nginx để sử dụng PHP processor
Bây giờ ta đã cài đặt tất cả các thành phần cần thiết. Thay đổi cấu hình duy nhất mà ta vẫn cần là yêu cầu Nginx sử dụng PHP processor của ta cho nội dung động.
Ta thực hiện việc này ở cấp độ khối server (các khối server tương tự như các server ảo của Apache). Ta sẽ để nguyên cấu hình Nginx mặc định và thay vào đó tạo một file cấu hình mới và folder root web mới để chứa các file PHP của ta . Ta sẽ đặt tên cho file cấu hình và folder sau domain hoặc tên server mà server sẽ phản hồi.
Đầu tiên, tạo một folder mới trong /var/www
để chứa trang web PHP:
- sudo mkdir /var/www/your_domain
Sau đó, mở một file cấu hình mới trong folder sites-available
của Nginx:
- sudo nano /etc/nginx/sites-available/your_domain
Thao tác này sẽ tạo một file trống mới. Dán vào cấu hình cơ bản sau:
server { listen 80; listen [::]:80; root /var/www/your_domain; index index.php index.html index.htm; server_name your_domain; location / { try_files $uri $uri/ =404; } location ~ \.php$ { include snippets/fastcgi-php.conf; fastcgi_pass unix:/var/run/php/php7.0-fpm.sock; } }
Đây là cấu hình rất cơ bản lắng nghe trên cổng 80 và phục vụ các file từ root web mà ta vừa tạo. Nó sẽ chỉ phản hồi các yêu cầu đối với tên được cung cấp sau server_name
và mọi file kết thúc bằng .php
sẽ được xử lý bởi quy trình php-fpm
trước khi Nginx gửi kết quả cho user .
Lưu file khi bạn đã tùy chỉnh xong.
Kích hoạt cấu hình của bạn bằng cách liên kết đến file cấu hình từ folder sites-enabled
của Nginx:
- sudo ln -s /etc/nginx/sites-available/your_domain.conf /etc/nginx/sites-enabled/
Điều này sẽ thông báo cho Nginx sử dụng cấu hình trong lần reload tiếp theo. Trước tiên, hãy kiểm tra cấu hình của bạn để tìm lỗi cú pháp bằng lệnh :
- sudo nginx -t
Nếu có lỗi , hãy quay lại và kiểm tra lại file của bạn trước khi tiếp tục.
Khi đã sẵn sàng , hãy reload Nginx để áp dụng các thay đổi :
- sudo systemctl reload nginx
Tiếp theo, ta sẽ tạo một file trong folder root web mới của ta để kiểm tra quá trình PHP processor .
Bước 5 - Tạo file PHP để kiểm tra cấu hình
LEMP của bạn bây giờ sẽ được cài đặt hoàn chỉnh. Ta có thể kiểm tra nó để xác nhận Nginx có thể xử lý chính xác các file .php
cho PHP processor của ta .
Ta có thể làm điều này bằng cách tạo một file PHP thử nghiệm trong root tài liệu của ta . Mở một file mới có tên là info.php
trong root tài liệu của bạn trong editor của bạn:
- sudo nano /var/www/your_domain/info.php
Nhập hoặc dán các dòng sau vào file mới. Đây là mã PHP hợp lệ sẽ trả về thông tin về server của ta :
<?php phpinfo(); ?>
Khi bạn hoàn tất, hãy lưu file .
Bây giờ, bạn có thể truy cập trang này trong trình duyệt web của bạn bằng cách truy cập vào domain của server hoặc địa chỉ IP công cộng, theo sau là /info.php
:
http://your_domain/info.php
Bạn sẽ thấy một trang web được tạo bởi PHP với thông tin về server của bạn:
Nếu bạn thấy một trang giống như thế này, bạn đã cài đặt PHP processor với Nginx thành công.
Sau khi xác minh Nginx hiển thị trang chính xác, tốt nhất là xóa file bạn đã tạo vì nó có thể cung cấp cho user lạ một số gợi ý về cấu hình của bạn có thể giúp họ xâm nhập trái phép.
Hiện tại, hãy xóa file bằng lệnh :
- sudo rm /var/www/html/info.php
Bạn luôn có thể tạo lại file này nếu sau này bạn cần.
Kết luận
Đến đây bạn sẽ có một LEMP được cấu hình trên server Debian của bạn . Điều này mang lại cho bạn một nền tảng rất linh hoạt để cung cấp nội dung web cho khách truy cập của bạn.
Các tin liên quan
Cách cài đặt, chạy và kết nối với Jupyter Notebook trên server từ xa2018-09-12
Cách cài đặt và cấu hình Postfix làm server SMTP chỉ gửi trên Debian 9
2018-09-07
Cách cấu hình BIND làm server DNS Mạng Riêng trên Debian 9
2018-09-06
Thiết lập server ban đầu với Debian 9
2018-09-04
Cách cài đặt Linux, Apache, MariaDB, PHP (LAMP) trên Debian 9
2018-09-04
Cách phát triển ứng dụng Node.js TCP Server bằng PM2 và Nginx trên Ubuntu 16.04
2018-07-23
Cách thiết lập server VPN IKEv2 với StrongSwan trên Ubuntu 18.04
2018-07-16
Cách cấu hình BIND làm server DNS Mạng riêng trên Ubuntu 18.04
2018-07-06
Sử dụng Bộ định tuyến React 4 với Kết xuất phía server
2018-06-04
Cách cài đặt Linux, Nginx, MySQL, PHP ( LEMP) trên Ubuntu 18.04
2018-05-23