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 :
OutputAvailable 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 80 và 443 :
- sudo ufw app info "WWW Full" 
OutputProfile: 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 :
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:
<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:
<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:
OutputSorting... 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 :
<?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:
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 .
Các tin liên quan
Thiết lập server ban đầu với Debian 92018-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
Tự động thiết lập server ban đầu với Ubuntu 18.04
2018-04-27
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
 

