Hướng dẫn cài đặt LAMP trên Ubuntu cho người mới bắt đầu

Hướng dẫn này sẽ chỉ cho bạn cách cài đặt LAMP trên Ubuntu 20.04 LTS. Đây là một tập hợp các công cụ phần mềm được kết hợp với nhau. LAMP là viết tắt của Linux, Apache, MariaDB/MySQL và PHP, tất cả đều là mã nguồn mở và có thể sử dụng miễn phí.

LAMP là software stack phổ biến nhất cho các trang web động và ứng dụng web. Linux là hệ điều hành, Apache là web server, MariaDB/MySQL là database server và PHP là ngôn ngữ kịch bản (scripting language) phía máy chủ chịu trách nhiệm tạo các trang web động.

Điều kiện tiên quyết

Để làm theo hướng dẫn này, bạn cần có hệ điều hành Ubuntu 20.04 chạy trên máy tính cục bộ hoặc trên máy chủ từ xa.

Ngoài ra, bạn có thể xem xét một VPS (Virtual Private Server - máy chủ riêng ảo) hoặc thiết lập LAMP với một tên miền.

Các bước cài đặt LAMP trên Ubuntu

Bước 1: Cập nhật gói phần mềm

Trước khi cài đặt LAMP, bạn nên cập nhật gói phần mềm và kho lưu trữ. Chạy các lệnh sau trên hệ điều hành Ubuntu 20.04:

sudo apt update 
 sudo apt upgrade

Bước 2: Cài đặt Apache Web Server

Nhập lệnh sau để cài đặt Apache Web server. Gói apache2-utils sẽ cài đặt một số tiện ích hữu ích như công cụ benchmark Apache HTTP server.

sudo apt install -y apache2 apache2-utils

Sau khi được cài đặt, Apache sẽ tự động được khởi động. Kiểm tra trạng thái của nó với systemctl.

systemctl status apache2

Đầu ra mẫu:

apache2.service - The Apache HTTP Server
      Loaded: loaded (/lib/systemd/system/apache2.service; enabled; vendor preset: enabled)
      Active: active (running) since Sat 2020-04-11 11:31:31 CST; 2s ago
        Docs: https://httpd.apache.org/docs/2.4/
     Process: 53003 ExecStart=/usr/sbin/apachectl start (code=exited, status=0/SUCCESS)
    Main PID: 53011 (apache2)
       Tasks: 55 (limit: 19072)
      Memory: 6.4M
      CGroup: /system.slice/apache2.service
              ├─53011 /usr/sbin/apache2 -k start
              ├─53012 /usr/sbin/apache2 -k start
              └─53013 /usr/sbin/apache2 -k start

Gợi ý: Nếu lệnh trên không thoát ngay lập tức, bạn có thể nhấn phím Q để giành lại quyền kiểm soát Terminal.

Nếu nó không chạy, hãy sử dụng systemctl để khởi động.

sudo systemctl start apache2

Bạn cũng nên cho phép Apache tự động khởi động tại thời điểm boot hệ thống.

sudo systemctl enable apache2

Kiểm tra phiên bản Apache:

apache2 -v

Đầu ra:

Server version: Apache/2.4.41 (Ubuntu) 
 Server built: 2020-03-05T18:51:00

Bây giờ, hãy nhập địa chỉ IP public của Ubuntu 20.04 server vào thanh địa chỉ trình duyệt. Bạn sẽ thấy trang “It works!”, có nghĩa là Apache Web server đang chạy bình thường. Nếu bạn đang cài đặt LAMP trên máy tính Ubuntu 20.04 cục bộ, hãy nhập 127.0.0.1 hoặc localhost vào thanh địa chỉ trình duyệt.

Nhập địa chỉ IP public của Ubuntu 20.04 server vào thanh địa chỉ trình duyệt
Nhập địa chỉ IP public của Ubuntu 20.04 server vào thanh địa chỉ trình duyệt

Nếu kết nối bị từ chối hoặc không thể hoàn tất, có thể có tường lửa ngăn các yêu cầu đế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 iptables -I INPUT -p tcp --dport 80 -j ACCEPT

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 ufw allow http

Bây giờ, bạn cần đặt www-data (người dùng Apache) làm chủ sở hữu của document root (hay còn gọi là web root). Theo mặc định, nó thuộc sở hữu của người dùng root.

sudo chown www-data:www-data /var/www/html/ -R

Theo mặc định, Apache sử dụng hostname hệ thống làm ServerName toàn cầu của nó. Nếu không thể phân giải tên máy chủ hệ thống trong DNS, thì bạn có thể sẽ gặp lỗi sau khi chạy lệnh sudo apache2ctl -t.

AH00558: apache2: Could not reliably determine the server's fully qualified domain name, using 127.0.0.1. Set the 'ServerName' directive globally to suppress this message

Để giải quyết vấn đề này, bạn có thể đặt ServerName toàn cầu trong Apache. Sử dụng trình soạn thảo dòng lệnh Nano để tạo file cấu hình mới.

sudo nano /etc/apache2/conf-available/servername.conf

Thêm dòng sau vào file này.

ServerName localhost

Lưu và đóng file. Để lưu file trong trình soạn thảo Nano, nhấn Ctrl + O, sau đó nhấn Enter để xác nhận. Để thoát, nhấn Ctrl + X. Sau đó kích hoạt file cấu hình này.

sudo a2enconf servername.conf

Load lại Apache để thay đổi có hiệu lực.

sudo systemctl reload apache2

Bây giờ, nếu chạy lại lệnh sudo apache2ctl -t, bạn sẽ không thấy thông báo lỗi ở trên.

Bước 3: Cài đặt MariaDB Database Server

MariaDB là phiên bản thay thế 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 mã nguồn đóng. Nhập lệnh sau để cài đặt MariaDB trên Ubuntu 20.04.

sudo apt install mariadb-server mariadb-client

Sau khi cài đặt, MariaDB server sẽ tự động được khởi động. Sử dụng systemctl để kiểm tra trạng thái của nó.

systemctl status mariadb

Đầu ra:

mariadb.service - MariaDB 10.3.22 database server
      Loaded: loaded (/lib/systemd/system/mariadb.service; enabled; vendor preset: enabled)
      Active: active (running) since Fri 2020-04-10 14:19:16 UTC; 18s ago
        Docs: man:mysqld(8)
              https://mariadb.com/kb/en/library/systemd/
    Main PID: 9161 (mysqld)
      Status: "Taking your SQL requests now..."
       Tasks: 31 (limit: 9451)
      Memory: 64.7M
      CGroup: /system.slice/mariadb.service
              └─9161 /usr/sbin/mysqld

Nếu nó không chạy, hãy khởi động bằng lệnh sau:

sudo systemctl start mariadb

Để cho phép MariaDB tự động khởi động khi boot, hãy chạy:

sudo systemctl enable mariadb

Bây giờ chạy script bảo mật sau cài đặt.

sudo mysql_secure_installation

Bạn được yêu cầu nhập mật khẩu root MariaDB, hãy nhấn phím Enter vì mật khẩu root chưa được đặt. Sau đó, nhập y để đặt mật khẩu root cho MariaDB server.

Nhập y để đặt mật khẩu root cho MariaDB server
Nhập y để đặt mật khẩu root cho MariaDB server

Tiếp theo, bạn có thể nhấn Enter để 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, vô hiệu hóa đăng nhập root từ xa và xóa cơ sở dữ liệu thử nghiệm. 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 Y được viết hoa, có nghĩa nó là câu trả lời mặc định).

Bạn có thể nhấn Enter để trả lời tất cả các câu hỏi còn lại
Bạn có thể nhấn Enter để trả lời tất cả các câu hỏi còn lại

Theo mặc định, gói MariaDB trên Ubuntu sử dụng unix_socket để xác thực đă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ệ điều hành để đă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 root MariaDB.

sudo mariadb -u root

Để thoát, hãy chạy:

exit;

Kiểm tra thông tin phiên bản máy chủ MariaDB.

mariadb --version

Như bạn thấy, MariaDB 10.3.22 đã được cài đặt.

mariadb Ver 15.1 Distrib 10.3.22-MariaDB, for debian-linux-gnu (x86_64) using readline 5.2

Bước 4: Cài đặt PHP7.4

Tại thời điểm viết bài này, PHP7.4 là phiên bản ổn định mới nhất của PHP. Nhập lệnh sau để cài đặt PHP7.4 và một số mô-đun PHP phổ biến.

sudo apt install php7.4 libapache2-mod-php7.4 php7.4-mysql php-common php7.4-cli php7.4-common php7.4-json php7.4-opcache php7.4-readline

Kích hoạt mô-đun Apache php7.4 sau đó khởi động lại Apache Web server.

sudo a2enmod php7.4 
 sudo systemctl restart apache2

Kiểm tra thông tin phiên bản PHP.

php --version

Đầu ra:

PHP 7.4.3 (cli) (built: Mar 26 2020 20:24:23) ( NTS )
 Copyright (c) The PHP Group
 Zend Engine v3.4.0, Copyright (c) Zend Technologies
     with Zend OPcache v7.4.3, Copyright (c), by Zend Technologies

Để kiểm tra các script PHP với Apache server, bạn cần tạo một file info.php trong thư mục document root.

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

Dán code PHP sau vào file.

<?php phpinfo(); ?>

Để lưu file trong trình soạn thảo văn bản Nano, nhấn Ctrl + O, sau đó nhấn Enter để xác nhận. Để thoát, nhấn Ctrl + X. Bây giờ trong thanh địa chỉ của trình duyệt, nhập server-ip-address/info.php. Thay thế server-ip-address 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ộ , hãy nhập 127.0.0.1/info.php hoặc localhost/info.php.

Bạn sẽ thấy thông tin PHP của máy chủ. Điều này có nghĩa là các script PHP có thể chạy đúng với Apache Web server.

Thông tin PHP của máy chủ
Thông tin PHP của máy chủ

Cách chạy PHP-FPM với Apache

Về cơ bản có hai cách để chạy code PHP với Apache Web server:

  • Mô-đun PHP của Apache
  • PHP-FPM

Trong các bước trên, mô-đun Apache PHP7.4 được sử dụng để xử lý code PHP, điều này thường ổn. Nhưng trong một số trường hợp, bạn cần chạy code PHP với PHP-FPM để thay thế. Đây là cách thực hiện.

Vô hiệu hóa mô-đun Apache PHP7.4.

sudo a2dismod php7.4

Cài đặt PHP-FPM.

sudo apt install php7.4-fpm

Kích hoạt mô-đun setenvifproxy_fcgi.

sudo a2enmod proxy_fcgi setenvif

Kích hoạt file cấu hình /etc/apache2/conf-available/php7.4-fpm.conf.

sudo a2enconf php7.4-fpm

Khởi động lại Apache để các thay đổi có hiệu lực.

sudo systemctl restart apache2

Bây giờ, nếu refresh trang info.php trong trình duyệt, bạn sẽ thấy rằng Server API được thay đổi từ Apache 2.0 Handler thành FPM/FastCGI, có nghĩa là Apache Web server sẽ chuyển các yêu cầu PHP đến PHP-FPM.

Server API được thay đổi từ Apache 2.0 Handler thành FPM/FastCGI
Server API được thay đổi từ Apache 2.0 Handler thành FPM/FastCGI

Chúc mừng! Bạn đã cài đặt thành công LAMP (Apache, MariaDB và PHP7.4) trên Ubuntu 20.04. Để bảo mật cho máy chủ, bạn nên xóa file info.php ngay bây giờ để tránh những con mắt tò mò.

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

Xem thêm:

Thứ Sáu, 20/11/2020 09:39