Thứ ba, 04/09/2018 | 00:00 GMT+7

Cách cài đặt Linux, Apache, MariaDB, PHP (LAMP) trên Debian 9

LAMP là một group phần mềm nguồn mở thường được cài đặt cùng nhau để cho phép server lưu trữ các trang web động và ứng dụng web. Thuật ngữ này thực sự là một từ viết tắt đại diện cho hệ điều hành L inux, với web server A pache. Dữ liệu trang web được lưu trữ trong database M ariaDB và nội dung động được xử lý bởi P HP.

Trong hướng dẫn này, ta sẽ cài đặt LAMP trên server Debian 9.

Yêu cầu

Để hoàn thành hướng dẫn này, bạn cần có server Debian 9 với account user không phải root sudo hoạt và firewall cơ bản. Điều này có thể được cấu hình bằng cách sử dụng hướng dẫn cài đặt server ban đầu của ta cho Debian 9 .

Bước 1 - Cài đặt Apache và Cập nhật Tường lửa

Web server Apache là một trong những web server phổ biến nhất trên thế giới. Nó được ghi chép đầy đủ và đã được sử dụng rộng rãi trong phần lớn lịch sử của web, điều này khiến nó trở thành lựa chọn mặc định tuyệt vời để lưu trữ một trang web.

Cài đặt Apache bằng trình quản lý gói của Debian, apt :

  • sudo apt update
  • sudo apt install apache2

Vì đây là sudo nên các thao tác này được thực hiện với các quyền của root. Nó sẽ yêu cầu bạn nhập password của regular user để xác minh ý định của bạn.

Khi bạn đã nhập password của bạn , apt sẽ cho bạn biết gói nào mà nó dự định cài đặt và chúng sẽ chiếm thêm bao nhiêu dung lượng đĩa. Nhấn Y và nhấn ENTER để tiếp tục và quá trình cài đặt sẽ tiếp tục.

Tiếp theo, giả sử rằng bạn đã làm theo hướng dẫn cài đặt server ban đầu bằng cách cài đặt và bật firewall UFW, hãy đảm bảo firewall của bạn cho phép truy cập HTTP và HTTPS.

Khi được cài đặt trên Debian 9, UFW được tải với các cấu hình ứng dụng mà bạn có thể sử dụng để chỉnh sửa cài đặt firewall của bạn . Xem danh sách đầy đủ các cấu hình ứng dụng bằng lệnh:

  • sudo ufw app list

Các cấu hình WWW được sử dụng để quản lý các cổng được sử dụng bởi web server :

Output
Available applications: . . . WWW WWW Cache WWW Full WWW Secure . . .

Nếu bạn kiểm tra profile WWW Full , nó cho thấy rằng nó cho phép lưu lượng truy cập đến các cổng 80443 :

  • sudo ufw app info "WWW Full"
Output
Profile: WWW Full Title: Web Server (HTTP,HTTPS) Description: Web Server (HTTP,HTTPS) Ports: 80,443/tcp

Cho phép truy cập HTTP và HTTPS đến cho cấu hình này:

  • sudo ufw allow in "WWW Full"

Bạn có thể kiểm tra tại chỗ ngay lập tức để xác minh mọi thứ đã diễn ra theo kế hoạch bằng cách truy cập địa chỉ IP công cộng của server trong trình duyệt web :

http://your_server_ip 

Bạn sẽ thấy trang web Debian 9 Apache mặc định, trang này dành cho mục đích kiểm tra và thông tin. Nó trông giống như sau :

Debian 9 Apache mặc định

Nếu bạn thấy trang này, thì web server của bạn hiện đã được cài đặt chính xác và có thể truy cập thông qua firewall của bạn.

Nếu bạn không biết địa chỉ IP công cộng của server của bạn là gì, có một số cách bạn có thể tìm thấy nó. Thông thường, đây là địa chỉ bạn sử dụng để kết nối với server của bạn thông qua SSH.

Có một số cách khác nhau để thực hiện việc này từ dòng lệnh. Trước tiên, bạn có thể sử dụng các công cụ iproute2 để lấy địa chỉ IP của bạn bằng lệnh :

  • ip addr show eth0 | grep inet | awk '{ print $2; }' | sed 's/\/.*$//'

Điều này sẽ cung cấp cho bạn hai hoặc ba dòng trở lại. Chúng đều là địa chỉ chính xác, nhưng máy tính của bạn chỉ có thể sử dụng một trong số chúng, vì vậy hãy thử từng địa chỉ.

Một phương pháp thay thế là sử dụng trình curl để liên hệ với bên ngoài để cho bạn biết cách họ nhìn thấy server của bạn. Điều này được thực hiện bằng cách hỏi một server cụ thể địa chỉ IP của bạn là gì:

  • sudo apt install curl
  • curl http://icanhazip.com

Dù phương pháp nào bạn sử dụng để lấy địa chỉ IP, hãy nhập địa chỉ đó vào thanh địa chỉ của trình duyệt web để xem trang Apache mặc định.

Bước 2 - Cài đặt MariaDB

Đến đây bạn đã cài đặt và chạy web server của bạn , đã đến lúc cài đặt MariaDB. MariaDB là một hệ quản trị database . Về cơ bản, nó sẽ tổ chức và cung cấp quyền truy cập vào database nơi trang web có thể lưu trữ thông tin.

MariaDB là một fork do cộng đồng xây dựng của MySQL. Trong Debian 9, server MySQL mặc định là MariaDB 10.1 và gói mysql-server , thường được sử dụng để cài đặt MySQL, là một gói chuyển tiếp sẽ thực sự cài đặt MariaDB. Tuy nhiên, bạn nên cài đặt MariaDB bằng gói thực tế của chương trình, mariadb-server .

, hãy sử dụng apt để cài đặt phần mềm này:

  • sudo apt install mariadb-server

Lưu ý : Trong trường hợp này, bạn không phải chạy sudo apt update trước lệnh. Điều này là do gần đây bạn đã chạy nó trong các lệnh ở trên để cài đặt Apache và index gói trên máy tính của bạn đã được cập nhật.

Lệnh này cũng sẽ hiển thị cho bạn danh sách các gói sẽ được cài đặt, cùng với dung lượng ổ đĩa mà chúng sẽ chiếm. Nhập Y để tiếp tục.

Khi quá trình cài đặt hoàn tất, hãy chạy một tập lệnh bảo mật đơn giản được cài đặt sẵn với MariaDB, tập lệnh này sẽ loại bỏ một số cài đặt mặc định không an toàn và khóa quyền truy cập vào hệ thống database của bạn. Bắt đầu tập lệnh tương tác bằng lệnh:

  • sudo mysql_secure_installation

Điều này sẽ đưa bạn qua một loạt dấu nhắc mà bạn có thể thực hiện một số thay đổi đối với các tùy chọn bảo mật của cài đặt MariaDB của bạn . Dấu nhắc đầu tiên sẽ yêu cầu bạn nhập password gốc của database hiện tại. Đây là account quản trị trong MariaDB được tăng quyền . Hãy coi nó tương tự như account gốc cho chính server (mặc dù account bạn đang cấu hình bây giờ là account dành riêng cho MariaDB). Vì bạn vừa cài đặt MariaDB và chưa thực hiện bất kỳ thay đổi cấu hình nào nên password này sẽ trống, vì vậy chỉ cần nhấn ENTER tại dấu nhắc .

Dấu nhắc tiếp theo hỏi bạn có muốn cài đặt password gốc database hay không. Gõ N và sau đó nhấn ENTER . Trong Debian, account gốc cho MariaDB được gắn chặt với bảo trì hệ thống tự động, vì vậy ta không nên thay đổi phương thức xác thực đã cấu hình cho account đó. Làm như vậy sẽ làm cho bản cập nhật gói có thể phá vỡ hệ thống database bằng cách xóa quyền truy cập vào account quản trị. Sau đó, ta sẽ trình bày cách tùy chọn cài đặt account quản trị bổ sung để truy cập password nếu xác thực socket không phù hợp với trường hợp sử dụng của bạn.

Từ đó, bạn có thể nhấn Y rồi ENTER để chấp nhận giá trị mặc định cho tất cả các câu hỏi tiếp theo. 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 gốc từ xa và tải các luật mới này để MariaDB áp dụng ngay những thay đổi bạn đã thực hiện.

Trong các bản cài đặt mới trên hệ thống Debian, user MariaDB gốc được đặt để xác thực bằng plugin unix_socket theo mặc định chứ không phải bằng password . Điều này cho phép một số bảo mật và hữu dụng trong nhiều trường hợp, nhưng nó cũng có thể làm phức tạp thêm khi bạn cần cho phép một chương trình bên ngoài (ví dụ: phpMyAdmin) quyền quản trị.

Vì server sử dụng account gốc cho các việc như xoay vòng log và khởi động và dừng server , tốt nhất là không thay đổi chi tiết xác thực của account gốc . Thay đổi thông tin đăng nhập account trong /etc/mysql/debian.cnf có thể hoạt động ban đầu, nhưng các bản cập nhật gói có thể có khả năng overrides những thay đổi đó. Thay vì sửa đổi account gốc , những người bảo trì gói khuyến nghị tạo một account quản trị riêng nếu bạn cần cài đặt quyền truy cập dựa trên password .

Để làm như vậy, ta sẽ tạo một account mới có tên là admin với các khả năng tương tự như account gốc , nhưng được cấu hình để xác thực password . Để thực hiện việc này, hãy mở dấu nhắc MariaDB từ terminal của bạn:

  • sudo mariadb

Bây giờ, ta có thể tạo một user mới với quyền root và quyền truy cập dựa trên password . Thay đổi tên user và password để phù hợp với sở thích của bạn:

  • GRANT ALL ON *.* TO 'admin'@'localhost' IDENTIFIED BY 'password' WITH GRANT OPTION;

Xóa các quyền đảm bảo rằng chúng được lưu và khả dụng trong phiên hiện tại:

  • FLUSH PRIVILEGES;

Sau đó, thoát khỏi vỏ MariaDB:

  • exit

Bây giờ, bất kỳ lúc nào bạn muốn truy cập database của bạn với quyền là admin-user mới, bạn cần phải xác thực với quyền là user đó bằng password bạn vừa đặt bằng lệnh sau:

  • mariadb -u admin -p

Đến đây, hệ thống database của bạn đã được cài đặt và bạn có thể chuyển sang cài đặt PHP, thành phần cuối cùng của LAMP .

Bước 3 - Cài đặt PHP

PHP là thành phần cài đặt của bạn sẽ xử lý mã để hiển thị nội dung động. Nó có thể chạy các tập lệnh, kết nối với database MariaDB của bạn để lấy thông tin và chuyển giao nội dung đã xử lý cho web server của bạn để hiển thị.

, hãy tận dụng hệ thống apt để cài đặt PHP. Ngoài ra, bao gồm một số gói trợ giúp lần này để mã PHP có thể chạy trong server Apache và nói chuyện với database MariaDB của bạn:

  • sudo apt install php libapache2-mod-php php-mysql

Điều này sẽ cài đặt PHP mà không gặp bất kỳ vấn đề gì. Ta sẽ kiểm tra điều này trong giây lát.

Trong hầu hết các trường hợp, bạn cần sửa đổi cách Apache phân phát file khi một folder được yêu cầu. Hiện tại, nếu user yêu cầu một folder từ server , Apache trước tiên sẽ tìm kiếm một file có tên là index.html . Ta muốn nói với web server thích các file PHP hơn những file khác, vì vậy hãy tạo Apache tìm kiếm index.php trước.

Để thực hiện việc này, hãy nhập lệnh này để mở file dir.conf trong editor với quyền root:

  • sudo nano /etc/apache2/mods-enabled/dir.conf

Nó sẽ trông giống thế này:

/etc/apache2/mods-enabled/dir.conf
<IfModule mod_dir.c>     DirectoryIndex index.html index.cgi index.pl index.php index.xhtml index.htm </IfModule> 

Di chuyển file index PHP (được đánh dấu ở trên) đến vị trí đầu tiên sau đặc tả DirectoryIndex , như sau:

/etc/apache2/mods-enabled/dir.conf
<IfModule mod_dir.c>     DirectoryIndex index.php index.html index.cgi index.pl index.xhtml index.htm </IfModule> 

Khi bạn hoàn tất, hãy lưu file bằng cách nhấn CTRL+X Xác nhận lưu bằng lệnh Y , sau đó nhấn ENTER để xác minh vị trí lưu file .

Sau đó, khởi động lại web server Apache để các thay đổi được công nhận. Làm điều này bằng lệnh vào:

  • sudo systemctl restart apache2

Bạn cũng có thể kiểm tra trạng thái của dịch vụ apache2 bằng systemctl :

  • sudo systemctl status apache2
Sample Output
● apache2.service - The Apache HTTP Server Loaded: loaded (/lib/systemd/system/apache2.service; enabled; vendor preset: enabled) Active: active (running) since Tue 2018-09-04 18:23:03 UTC; 9s ago Process: 22209 ExecStop=/usr/sbin/apachectl stop (code=exited, status=0/SUCCESS) Process: 22216 ExecStart=/usr/sbin/apachectl start (code=exited, status=0/SUCCESS) Main PID: 22221 (apache2) Tasks: 6 (limit: 4915) CGroup: /system.slice/apache2.service ├─22221 /usr/sbin/apache2 -k start ├─22222 /usr/sbin/apache2 -k start ├─22223 /usr/sbin/apache2 -k start ├─22224 /usr/sbin/apache2 -k start ├─22225 /usr/sbin/apache2 -k start └─22226 /usr/sbin/apache2 -k start

Để nâng cao chức năng của PHP, bạn có tùy chọn cài đặt một số module bổ sung. Để xem các tùy chọn có sẵn cho các module và thư viện PHP, hãy chuyển kết quả của apt search thành less , một máy nhắn tin cho phép bạn cuộn qua kết quả của các lệnh khác:

  • apt search php- | less

Sử dụng các phím mũi tên để cuộn lên và xuống, và nhấn Q để thoát.

Kết quả là tất cả các thành phần tùy chọn mà bạn có thể cài đặt. Nó sẽ cung cấp cho bạn một mô tả ngắn cho mỗi:

Output
Sorting... Full Text Search... bandwidthd-pgsql/stable 2.0.1+cvs20090917-10 amd64 Tracks usage of TCP/IP and builds html files with graphs bluefish/stable 2.2.9-1+b1 amd64 advanced Gtk+ text editor for web and software development cacti/stable 0.8.8h+ds1-10 all web interface for graphing of monitoring systems cakephp-scripts/stable 2.8.5-1 all rapid application development framework for PHP (scripts) ganglia-webfrontend/stable 3.6.1-3 all cluster monitoring toolkit - web front-end haserl/stable 0.9.35-2+b1 amd64 CGI scripting program for embedded environments kdevelop-php-docs/stable 5.0.3-1 all transitional package for kdevelop-php kdevelop-php-docs-l10n/stable 5.0.3-1 all transitional package for kdevelop-php-l10n … :

Để tìm hiểu thêm về chức năng của mỗi module , bạn có thể tìm kiếm trên internet để biết thêm thông tin về chúng. Ngoài ra, hãy xem mô tả dài của gói bằng lệnh :

  • apt show package_name

Sẽ có rất nhiều kết quả , với một trường được gọi là Description sẽ có phần giải thích dài hơn về chức năng mà module cung cấp.

Ví dụ, để tìm hiểu những gì module php-cli làm, bạn có thể nhập sau:

  • apt show php-cli

Cùng với một lượng lớn thông tin khác, bạn sẽ tìm thấy thứ gì đó giống như sau:

Output
… Description: command-line interpreter for the PHP scripting language (default) This package provides the /usr/bin/php command interpreter, useful for testing PHP scripts from a shell or performing general shell scripting tasks. . PHP (recursive acronym for PHP: Hypertext Preprocessor) is a widely-used open source general-purpose scripting language that is especially suited for web development and can be embedded into HTML. . This package is a dependency package, which depends on Debian's default PHP version (currently 7.0). …

Nếu sau khi nghiên cứu, bạn cần cài đặt một gói phần mềm nào đó, bạn có thể thực hiện bằng cách sử dụng apt install giống như cách bạn đã làm cho phần mềm khác.

Nếu bạn quyết định rằng php-cli là thứ bạn cần, có thể chạy lệnh:

  • sudo apt install php-cli

Nếu bạn muốn cài đặt nhiều hơn một module , bạn có thể thực hiện bằng cách liệt kê từng module , được phân tách bằng dấu cách, sau apt install , như sau:

  • sudo apt install package1 package2 ...

Đến đây, LAMP của bạn đã được cài đặt và cấu hình. Tuy nhiên, trước khi thực hiện thêm bất kỳ thay đổi hoặc triển khai ứng dụng nào, sẽ rất hữu ích nếu bạn chủ động kiểm tra cấu hình PHP của bạn trong trường hợp có bất kỳ vấn đề nào cần được giải quyết.

Bước 4 - Kiểm tra PHP processor trên Server Web của bạn

Để kiểm tra xem hệ thống của bạn có được cấu hình đúng cho PHP hay không, hãy tạo một tập lệnh PHP rất cơ bản có tên là info.php . Để Apache có thể tìm thấy file này và phân phát nó một cách chính xác, nó phải được lưu vào một folder rất cụ thể có tên là web root .

Trong Debian 9, folder này nằm tại /var/www/html/ . Tạo file tại vị trí đó bằng lệnh:

  • sudo nano /var/www/html/info.php

Thao tác này sẽ mở một file trống. Thêm văn bản sau, là mã PHP hợp lệ, bên trong file :

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

Khi bạn hoàn tất, hãy lưu file .

Đến đây bạn có thể kiểm tra xem web server của bạn có thể hiển thị chính xác nội dung được tạo bởi tập lệnh PHP này hay không. Để dùng thử, hãy truy cập trang này trong trình duyệt web . Bạn cần lại địa chỉ IP công cộng của server .

Địa chỉ bạn cần đến thăm là:

http://your_server_ip/info.php 

Trang mà bạn đến sẽ trông giống như sau:

Thông tin PHP mặc định của Debian 9

Trang này cung cấp một số thông tin cơ bản về server của bạn . Nó rất hữu ích để gỡ lỗi và đảm bảo cài đặt của bạn đang được áp dụng chính xác.

Nếu bạn có thể thấy trang này trong trình duyệt của bạn , thì PHP của bạn đang hoạt động như mong đợi.

Bạn có thể cần xóa file này sau khi kiểm tra này vì nó có thể cung cấp thông tin về server của bạn cho user lạ . Để thực hiện việc này, hãy chạy lệnh sau:

  • sudo rm /var/www/html/info.php

Bạn luôn có thể tạo lại trang này nếu sau này cần truy cập lại thông tin.

Kết luận

Đến đây bạn đã cài đặt LAMP , bạn có nhiều lựa chọn để làm gì tiếp theo. Về cơ bản, bạn đã cài đặt một nền tảng cho phép bạn cài đặt hầu hết các loại trang web và phần mềm web trên server của bạn .


Tags:

Các tin liên quan

Thiết lập server ban đầu với 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
server Express cơ bản trong Node.js
2018-05-04
Thiết lập server ban đầu với Ubuntu 18.04
2018-04-27
Tự động thiết lập server ban đầu với Ubuntu 18.04
2018-04-27
Bắt đầu với kết xuất phía server bằng Nuxt.js
2018-04-16