Cách cài đặt ngăn xếp Linux, Apache, MySQL, PHP (LAMP) trên Ubuntu 16.04

Bài viết này sử dụng Ubuntu 16.04

Bản phân phối này đã hết hạn sử dụng (EOL) vào tháng 4 năm 2021.

Giới thiệu

Ngăn xếp “LAMP” là một nhóm phần mềm nguồn mở thường được cài đặt cùng nhau để cho phép máy chủ 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 Lhệ điều hành inux, với MỘTmáy chủ web pache. Dữ liệu trang web được lưu trữ trong một NScơ sở dữ liệu ySQL và nội dung động được xử lý bởi PHP.

Trong hướng dẫn này, chúng tôi sẽ cài đặt ngăn xếp LAMP trên Ubuntu 16.04 Droplet. Ubuntu sẽ đáp ứng yêu cầu đầu tiên của chúng tôi: một hệ điều hành Linux.

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

Trước khi bắt đầu với hướng dẫn này, bạn nên có một tài khoản người dùng riêng, không phải root với sudo đặc quyền được thiết lập trên máy chủ của bạn. Bạn có thể tìm hiểu cách thực hiện việc này bằng cách hoàn thành các bước 1-4 trong thiết lập máy chủ ban đầu cho Ubuntu 16.04.

Bước 1: Cài đặt Apache và Cho phép trong Tường lửa

Máy chủ web Apache là một trong những máy chủ web 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 làm cho nó trở thành một lựa chọn mặc định tuyệt vời để lưu trữ một trang web.

Chúng tôi có thể cài đặt Apache dễ dàng bằng trình quản lý gói của Ubuntu, apt. Trình quản lý gói cho phép chúng tôi cài đặt hầu hết phần mềm một cách dễ dàng từ kho lưu trữ được duy trì bởi Ubuntu. Bạn có thể tìm hiểu thêm về cách sử dụng apt ở đây.

Đối với mục đích của chúng tôi, chúng tôi có thể bắt đầu bằng cách nhập các lệnh sau:

  • sudo apt-get update
  • sudo apt-get install apache2

Vì chúng tôi đang sử dụng sudo lệnh, các hoạt động này được thực thi với đặc quyền root. Nó sẽ yêu cầu bạn nhập mật khẩu của người dùng thông thường để xác minh ý định của bạn.

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

Đặt Global ServerName để ngăn chặn cảnh báo cú pháp

Tiếp theo, chúng tôi sẽ thêm một dòng vào /etc/apache2/apache2.conf để ngăn chặn một thông báo cảnh báo. Trong khi vô hại, nếu bạn không đặt ServerName trên toàn cầu, bạn sẽ nhận được cảnh báo sau khi kiểm tra cấu hình Apache để tìm lỗi cú pháp:

  • sudo apache2ctl configtest

Output

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

Mở tệp cấu hình chính bằng cách chỉnh sửa văn bản của bạn:

  • sudo nano /etc/apache2/apache2.conf

Bên trong, ở cuối tệp, thêm một ServerName chỉ thị, trỏ đến tên miền chính của bạn. Nếu bạn không có tên miền được liên kết với máy chủ của mình, bạn có thể sử dụng địa chỉ IP công cộng của máy chủ:

Ghi chú

Nếu bạn không biết địa chỉ IP của máy chủ của mình, hãy bỏ qua phần hướng dẫn cách tìm địa chỉ IP công cộng của máy chủ để tìm.

/etc/apache2/apache2.conf

. . .
ServerName server_domain_or_IP

Lưu và đóng tệp khi bạn hoàn tất.

Tiếp theo, kiểm tra lỗi cú pháp bằng cách gõ:

  • sudo apache2ctl configtest

Kể từ khi chúng tôi thêm toàn cầu ServerName chỉ thị, tất cả những gì bạn nên thấy là:

Output

Syntax OK

Khởi động lại Apache để triển khai các thay đổi của bạn:

  • sudo systemctl restart apache2

Bây giờ bạn có thể bắt đầu điều chỉnh tường lửa.

Điều chỉnh Tường lửa để Cho phép Lưu lượng truy cập Web

Tiếp theo, giả sử rằng bạn đã làm theo hướng dẫn thiết lập máy chủ ban đầu để bật tường lửa UFW, hãy đảm bảo rằng tường lửa của bạn cho phép lưu lượng HTTP và HTTPS. Bạn có thể đảm bảo rằng UFW có hồ sơ ứng dụng cho Apache như sau:

Output

Available applications: Apache Apache Full Apache Secure OpenSSH

Nếu bạn nhìn vào Apache Full hồ sơ, nó sẽ 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 "Apache Full"

Output

Profile: Apache Full Title: Web Server (HTTP,HTTPS) Description: Apache v2 is the next generation of the omnipresent Apache web server. Ports: 80,443/tcp

Cho phép lưu lượng truy cập đến cho hồ sơ này:

  • sudo ufw allow in "Apache Full"

Bạn có thể kiểm tra tại chỗ ngay lập tức để xác minh rằng 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 máy chủ trong trình duyệt web của bạn (xem ghi chú dưới tiêu đề tiếp theo để tìm hiểu địa chỉ IP công cộng của bạn là gì nếu bạn không có thông tin này đã sẵn sàng):

http://your_server_IP_address

Bạn sẽ thấy trang web Ubuntu 16.04 Apache mặc định, trang này dành cho mục đích thông tin và thử nghiệm. Nó sẽ trông giống như thế này:

Xem tiếp:   Hướng dẫn cài Mysql 5.6 trên Ubuntu 20.04

Ubuntu 16.04 Apache mặc định

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

Cách Tìm Địa chỉ IP Công cộng của Máy chủ của bạn

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

Từ dòng lệnh, bạn có thể tìm thấy điều này theo một vài cách. Đầu tiên, bạn có thể sử dụng iproute2 để lấy địa chỉ của bạn bằng cách nhập sau:

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

Điều này sẽ trả lại cho bạn hai hoặc ba dòng. 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 curl tiện ích để liên hệ với một bên bên ngoài để cho bạn biết cách thấy máy chủ của bạn. Bạn có thể thực hiện việc này bằng cách hỏi một máy chủ cụ thể xem địa chỉ IP của bạn là gì:

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

Bất kể phương pháp bạn sử dụng để lấy địa chỉ IP của mình, bạn có thể nhập nó vào thanh địa chỉ của trình duyệt web để truy cập máy chủ của bạn.

Bước 2: Cài đặt MySQL

Bây giờ chúng ta đã thiết lập và chạy máy chủ web, đã đến lúc cài đặt MySQL. MySQL là một hệ quản trị cơ sở dữ liệu. Về cơ bản, nó sẽ tổ chức và cung cấp quyền truy cập vào cơ sở dữ liệu nơi trang web của chúng tôi có thể lưu trữ thông tin.

Một lần nữa, chúng ta có thể sử dụng apt để mua và cài đặt phần mềm của chúng tôi. Lần này, chúng tôi cũng sẽ cài đặt một số gói “trợ giúp” khác sẽ hỗ trợ chúng tôi trong việc giúp các thành phần của chúng tôi giao tiếp với nhau:

  • sudo apt-get install mysql-server

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

Một lần nữa, bạn sẽ được hiển thị 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. Vào Y để tiếp tục.

Trong quá trình cài đặt, máy chủ của bạn sẽ yêu cầu bạn chọn và xác nhận mật khẩu cho người dùng MySQL "root". Đây là tài khoản quản trị trong MySQL được tăng đặc quyền. Hãy coi nó giống như tài khoản gốc cho chính máy chủ (tuy nhiên, tài khoản bạn đang định cấu hình bây giờ là tài khoản dành riêng cho MySQL). Đảm bảo rằng đây là một mật khẩu mạnh, duy nhất và không để trống.

Khi quá trình cài đặt hoàn tất, chúng tôi muốn chạy một tập lệnh bảo mật đơn giản để loại bỏ một số mặc định nguy hiểm và khóa quyền truy cập vào hệ thống cơ sở dữ liệu của chúng tôi một chút. Bắt đầu tập lệnh tương tác bằng cách chạy:

  • mysql_secure_installation

Bạn sẽ được yêu cầu nhập mật khẩu bạn đã đặt cho tài khoản gốc MySQL. Tiếp theo, bạn sẽ được hỏi nếu bạn muốn định cấu hình VALIDATE PASSWORD PLUGIN.

Cảnh báo: Kích hoạt tính năng này là một cái gì đó của một cuộc gọi phán xét. Nếu được bật, mật khẩu không phù hợp với tiêu chí đã chỉ định sẽ bị MySQL từ chối với lỗi. Điều này sẽ gây ra sự cố nếu bạn sử dụng mật khẩu yếu kết hợp với phần mềm tự động định cấu hình thông tin đăng nhập người dùng MySQL, chẳng hạn như gói Ubuntu cho phpMyAdmin. Việc tắt tính năng xác thực là an toàn, nhưng bạn phải luôn sử dụng mật khẩu mạnh, duy nhất cho thông tin xác thực cơ sở dữ liệu.

Bài giải y cho có, hoặc bất cứ điều gì khác để tiếp tục mà không cần bật.

VALIDATE PASSWORD PLUGIN can be used to test passwords
and improve security. It checks the strength of password
and allows the users to set only those passwords which are
secure enough. Would you like to setup VALIDATE PASSWORD plugin?

Press y|Y for Yes, any other key for No:

Bạn sẽ được yêu cầu chọn cấp độ xác thực mật khẩu. Hãy nhớ rằng nếu bạn nhập 2, đối với cấp độ mạnh nhất, bạn sẽ nhận được lỗi khi cố gắng đặt bất kỳ mật khẩu nào không chứa số, chữ hoa và chữ thường, và các ký tự đặc biệt hoặc dựa trên các từ thông dụng trong từ điển.

There are three levels of password validation policy:

LOW    Length >= 8
MEDIUM Length >= 8, numeric, mixed case, and special characters
STRONG Length >= 8, numeric, mixed case, special characters and dictionary                  file

Please enter 0 = LOW, 1 = MEDIUM and 2 = STRONG: 1

Nếu bạn đã bật xác thực mật khẩu, bạn sẽ được hiển thị độ mạnh mật khẩu cho mật khẩu gốc hiện có và hỏi bạn có muốn thay đổi mật khẩu đó không. Nếu bạn hài lòng với mật khẩu hiện tại của mình, hãy nhập n cho "không" ở lời nhắc:

Using existing password for root.

Estimated strength of the password: 100
Change the password for root ? ((Press y|Y for Yes, any other key for No) : n

Đối với các câu hỏi còn lại, bạn nên nhấn Y và đánh Vào phím ở mỗi lời nhắc. Thao tác này sẽ xóa một số người dùng ẩn danh và cơ sở dữ liệu thử nghiệm, vô hiệu hóa đăng nhập gốc từ xa và tải các quy tắc mới này để MySQL ngay lập tức tôn trọng những thay đổi mà chúng tôi đã thực hiện.

Xem tiếp:   tải nhạc youtube sang mp3 trên điện thoại nhanh đơn giản

Tại thời điểm này, hệ thống cơ sở dữ liệu của bạn đã được thiết lập xong và chúng ta có thể tiếp tục.

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

PHP là thành phần thiết lập của chúng tôi 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 cơ sở dữ liệu MySQL của chúng tôi để lấy thông tin và chuyển nội dung đã xử lý cho máy chủ web của chúng tôi để hiển thị.

Chúng tôi một lần nữa có thể tận dụng apt hệ thống để cài đặt các thành phần của chúng tôi. Chúng tôi cũng sẽ bao gồm một số gói trợ giúp để mã PHP có thể chạy trong máy chủ Apache và nói chuyện với cơ sở dữ liệu MySQL của chúng tôi:

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

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

Trong hầu hết các trường hợp, chúng tôi sẽ muốn sửa đổi cách Apache phân phát tệp khi một thư mục được yêu cầu. Hiện tại, nếu người dùng yêu cầu một thư mục từ máy chủ, Apache trước tiên sẽ tìm kiếm một tệp có tên là index.html. Chúng tôi muốn nói với máy chủ web của mình thích các tệp PHP hơn, vì vậy chúng tôi sẽ làm cho Apache tìm kiếm một index.php nộp hồ sơ trước.

Để thực hiện việc này, hãy nhập lệnh này để mở dir.conf tệp trong trình soạn thảo văn bản với đặc 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

index.php

Chúng tôi muốn di chuyển tệp chỉ mục PHP được đánh dấu ở trên đến vị trí đầu tiên sau DirectoryIndex đặc điểm kỹ thuật, như thế này:

/etc/apache2/mods-enabled/dir.conf

index.php

Khi bạn hoàn tất, hãy lưu và đóng tệp bằng cách nhấn Ctrl-X. Bạn sẽ phải xác nhận việc lưu bằng cách nhập Y và sau đó đánh Vào để xác nhận vị trí lưu tệp.

Sau đó, chúng tôi cần khởi động lại máy chủ web Apache để các thay đổi của chúng tôi được công nhận. Bạn có thể thực hiện việc này bằng cách nhập:

  • sudo systemctl restart apache2

Chúng tôi cũng có thể kiểm tra trạng thái của apache2 dịch vụ sử dụng systemctl:

  • sudo systemctl status apache2

Sample Output

● apache2.service - LSB: Apache2 web server Loaded: loaded (/etc/init.d/apache2; bad; vendor preset: enabled) Drop-In: /lib/systemd/system/apache2.service.d └─apache2-systemd.conf Active: active (running) since Wed 2016-04-13 14:28:43 EDT; 45s ago Docs: man:systemd-sysv-generator(8) Process: 13581 ExecStop=/etc/init.d/apache2 stop (code=exited, status=0/SUCCESS) Process: 13605 ExecStart=/etc/init.d/apache2 start (code=exited, status=0/SUCCESS) Tasks: 6 (limit: 512) CGroup: /system.slice/apache2.service ├─13623 /usr/sbin/apache2 -k start ├─13626 /usr/sbin/apache2 -k start ├─13627 /usr/sbin/apache2 -k start ├─13628 /usr/sbin/apache2 -k start ├─13629 /usr/sbin/apache2 -k start └─13630 /usr/sbin/apache2 -k start Apr 13 14:28:42 ubuntu-16-lamp systemd[1]: Stopped LSB: Apache2 web server. Apr 13 14:28:42 ubuntu-16-lamp systemd[1]: Starting LSB: Apache2 web server... Apr 13 14:28:42 ubuntu-16-lamp apache2[13605]: * Starting Apache web server apache2 Apr 13 14:28:42 ubuntu-16-lamp apache2[13605]: AH00558: apache2: Could not reliably determine the server's fully qualified domain name, using 127.0.1.1. Set the 'ServerNam Apr 13 14:28:43 ubuntu-16-lamp apache2[13605]: * Apr 13 14:28:43 ubuntu-16-lamp systemd[1]: Started LSB: Apache2 web server.

Cài đặt mô-đun PHP

Để nâng cao chức năng của PHP, chúng ta có thể tùy chọn cài đặt thêm một số module.

Để xem các tùy chọn có sẵn cho các mô-đun và thư viện PHP, bạn có thể xem kết quả của apt-cache search vào trong less, một máy nhắn tin cho phép bạn cuộn qua đầu ra của các lệnh khác:

  • apt-cache search php- | less

Sử dụng các phím mũi tên để cuộn lên và xuống, và NS bỏ thuốc lá.

Xem tiếp:   Hướng dẫn cài đặt LEMP stack trên Ubuntu 20.04

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:

libnet-libidn-perl - Perl bindings for GNU Libidn
php-all-dev - package depending on all supported PHP development packages
php-cgi - server-side, HTML-embedded scripting language (CGI binary) (default)
php-cli - command-line interpreter for the PHP scripting language (default)
php-common - Common files for PHP packages
php-curl - CURL module for PHP [default]
php-dev - Files for PHP module development (default)
php-gd - GD module for PHP [default]
php-gmp - GMP module for PHP [default]
…
:

Để biết thêm thông tin về chức năng của mỗi mô-đun, bạn có thể tìm kiếm trên internet hoặc bạn có thể xem mô tả dài của gói bằng cách nhập:

  • apt-cache show package_name

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

Ví dụ, để tìm hiểu những gì php-cli mô-đun không, chúng tôi có thể nhập thế này:

Along with a large amount of other information, you'll find something that looks like this:

Output

… Description-en: 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 quyết định muốn cài đặt một gói, bạn có thể làm như vậy bằng cách sử dụng apt-get install lệnh như chúng tôi đã làm cho phần mềm khác của chúng tôi.

Nếu chúng tôi quyết định rằng php-cli là thứ chúng ta cần, chúng ta có thể nhập:

  • sudo apt-get install php-cli

Nếu bạn muốn cài đặt nhiều mô-đun, bạn có thể thực hiện điều đó bằng cách liệt kê từng mô-đun, cách nhau bằng dấu cách, sau apt-get install lệnh, như thế này:

  • sudo apt-get install package1 package2 ...

Tại thời điểm này, ngăn xếp LAMP của bạn đã được cài đặt và cấu hình. Tuy nhiên, chúng tôi vẫn nên thử nghiệm PHP của mình.

Bước 4: Kiểm tra xử lý PHP trên Máy chủ web của bạn

Để kiểm tra xem hệ thống của chúng tôi có được định cấu hình đúng cho PHP hay không, chúng tôi có thể tạo một tập lệnh PHP rất cơ bản.

Chúng tôi sẽ gọi đây là tập lệnh info.php. Để Apache có thể tìm thấy tệp và phân phát tệp một cách chính xác, nó phải được lưu vào một thư mục rất cụ thể, được gọi là “web root”.

Trong Ubuntu 16.04, thư mục này được đặt tại /var/www/html/. Chúng tôi có thể tạo tệp tại vị trí đó bằng cách nhập:

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

Thao tác này sẽ mở một tệp trống. Chúng tôi muốn đặt văn bản sau, là mã PHP hợp lệ, bên trong tệp:

info.php

<?php
phpinfo();
?>

Khi bạn hoàn tất, hãy lưu và đóng tệp.

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

Địa chỉ bạn muốn đến thăm sẽ là:

http://your_server_IP_address/info.php

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

Thông tin PHP mặc định của Ubuntu 16.04

Về cơ bản, trang này cung cấp cho bạn thông tin về máy chủ của bạn theo quan điểm của PHP. Nó rất hữu ích để gỡ lỗi và đảm bảo rằng cài đặt của bạn đang được áp dụng chính xác.

Nếu điều này thành công, thì PHP của bạn đang hoạt động như mong đợi.

Bạn có thể muốn xóa tệp này sau khi kiểm tra này vì nó thực sự có thể cung cấp thông tin về máy chủ của bạn cho người dùng trái phép. Để làm điều này, bạn có thể nhập sau:

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

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

Phần kết luận

Bây giờ bạn đã cài đặt ngăn xếp 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 máy chủ của mình.

Bước tiếp theo ngay lập tức, bạn nên đảm bảo rằng các kết nối đến máy chủ web của bạn được bảo mật bằng cách cung cấp chúng qua HTTPS. Tùy chọn dễ nhất ở đây là sử dụng để bảo mật trang web của bạn bằng chứng chỉ TLS / SSL miễn phí.

Một số tùy chọn phổ biến khác là:

Ghi chú: Chúng tôi sẽ cập nhật các liên kết ở trên vào tài liệu 16.04 của chúng tôi khi nó được viết.

.

Check Also

Cách cung cấp các ứng dụng Flask với Gunicorn và Nginx trên Ubuntu

Giới thiệu Trong hướng dẫn này, bạn sẽ xây dựng một ứng dụng Python bằng …