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 Amáy chủ web pache. Dữ liệu trang web được lưu trữ trong một Mcơ 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 ta sẽ có một LAMP stack được cài đặt trên Ubuntu 16.04 Droplet. Ubuntu sẽ thực hiện 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ạn 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ác đặ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 tất 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 trang web, điều này làm cho nó trở thành 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 cách sử dụ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 các phần mềm không đau đớn từ kho lưu trữ được bảo trì bởi Ubuntu. Bạn có thể tìm hiểu thêm về cách sử dụng apt đây.

Vì 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ác đặc quyền root. Nó sẽ yêu cầu bạn cho mật khẩu người dùng thường xuyên của bạn để xác minh ý định của bạn.

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

Đặt Global ServerName để loại bỏ 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 điệp 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 của bạn đối với các 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 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 ServerName chỉ thị, trỏ đến tên miền chính của bạn. Nếu bạn không có một tên miền liên kết với máy chủ của bạn, bạn có thể sử dụng địa chỉ IP công cộng của máy chủ của bạn:

Note

Nếu bạn không biết địa chỉ IP của máy chủ, hãy bỏ qua phần trên cách tìm địa chỉ IP công cộng của máy chủ của bạn để tìm thấy nó.

/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

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

OutputSyntax OK

Khởi động lại Apache để thực hiện 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 Firewall để cho phép lưu lượng 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 để kích hoạ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ó một hồ sơ ứng dụng cho Apache như vậy:

sudo ufw app list

OutputAvailable 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"

OutputProfile: 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 tiểu sử này:

sudo ufw allow in "Apache Full"

Bạn có thể thực hiện kiểm tra ngay lập tức để xác minh mọi thứ đã được lên 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ú trong 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 đã):

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ẽ giống như thế này:

Ubuntu 16.04 Apache default

Nếu bạn thấy trang này, thì máy chủ web của bạn hiện đã được cài đặt và truy cập chính xác 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 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 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 một vài cách. Đầu tiên, bạn có thể sử dụng iproute2 các công cụ để lấy địa chỉ của bạn bằng cách nhập:

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. Họ là tất cả các đị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ố họ, vì vậy hãy thử mỗi địa chỉ.

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

sudo apt-get install curl

curl http://icanhazip.com

Bất kể phương thức 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 vào máy chủ của mình.

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

Bây giờ chúng ta có máy chủ web của chúng tôi và chạy, đã đến lúc cài đặt MySQL. MySQL là một hệ thống quản lý 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 để có được 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 đưa các thành phần của chúng tôi giao tiếp với nhau:

sudo apt-get install mysql-server

chú thích: Trong trường hợp này, bạn không phải chạy sudo apt-get update trước lệnh. Điều này là do 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ị một danh sách các gói sẽ được cài đặt, cùng với số lượng không gian đĩa họ sẽ mất. Đi vào Y để tiếp tục.

Trong khi 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 "root" MySQL. Đây là một tài khoản quản trị trong MySQL đã tăng các đặc quyền. Hãy nghĩ về nó giống như tài khoản gốc cho chính máy chủ (cái mà bạn đang cấu hình bây giờ là một tài khoản MySQL cụ thể, tuy nhiên). Đảm bảo đây là 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 sẽ loại bỏ một số cài đặt mặc định nguy hiểm và khóa 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 xem bạn có muốn định cấu hình VALIDATE PASSWORD PLUGIN.

Cảnh báo: Bậ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 khớp với tiêu chí được chỉ định sẽ bị MySQL từ chối do lỗi. Điều này sẽ gây ra vấn đề nếu bạn sử dụng một mật khẩu yếu cùng với phần mềm tự động cấu hình các thông tin người dùng MySQL, chẳng hạn như các gói Ubuntu cho phpMyAdmin. Việc tắt xác thực bị vô hiệu hóa 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 đăng nhập cơ sở dữ liệu.

Câu trả lời y cho có, hoặc bất cứ điều gì khác để tiếp tục mà không cho phép.

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 mức độ 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ữ thường và chữ thường và các ký tự đặc biệt hoặc dựa trên các từ điển thông dụng.

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ị cường độ 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 "no" tại dấu 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ấn Đi vào tại mỗi dấu nhắc. Điều này sẽ loại bỏ 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.

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

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

PHP là thành phần của 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 kịch bản 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à đưa nội dung đã xử lý đến máy chủ web của chúng tôi để hiển thị.

Chúng ta 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 dưới 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 có bất kỳ vấn đề gì. 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ẽ thay đổi cách Apache phân phát tệp khi 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ủ, trước tiên Apache sẽ tìm một tệp có tên index.html. Chúng tôi muốn nói với máy chủ web của chúng tôi để thích các tệp PHP, vì vậy chúng tôi sẽ làm cho Apache tìm kiếm một index.php tập tin đầu tiên.

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

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

<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, lưu và đóng tệp bằng cách nhấn Ctrl-X. Bạn sẽ phải xác nhận lưu bằng cách nhập Y và sau đó nhấn Đi vào để xác nhận vị trí lưu tệp.

Sau đó, chúng ta cần khởi động lại máy chủ web Apache để các thay đổi của chúng ta được nhận diện. Bạn có thể làm điều này bằng cách gõ:

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 httpd 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

Để tăng cường chức năng của PHP, chúng tôi có thể tùy ý cài đặt một số mô-đun bổ sung.

Để xem các tùy chọn có sẵn cho các mô-đun và thư viện PHP, bạn có thể kết quả của apt-cache search vào 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à q bỏ thuốc lá.

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ề từng mô-đun, bạn có thể tìm kiếm trên internet hoặc 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 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 xem php-cli module, chúng ta có thể gõ:

apt-cache 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ông tin như sau:

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 bạn 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 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ể gõ:

sudo apt-get install php-cli

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

sudo apt-get install package1 package2 ...

Tại thời điểm này, LAMP stack của bạn đã được cài đặt và cấu hình. Chúng tôi vẫn nên kiểm tra PHP của chúng tôi mặc dù.

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

Để kiểm tra rằng hệ thống của chúng ta được cấu hình đúng cho PHP, chúng ta có thể tạo một kịch bản lệnh PHP cơ bản.

Chúng tôi sẽ gọi kịch bản này info.php. Để Apache tìm tập tin và phục vụ nó 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à "root web".

Trong Ubuntu 16.04, thư mục này nằm ở /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, đây là mã PHP hợp lệ, bên trong tệp:

info.php

<?php
phpinfo();
?>

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

Bây giờ chúng ta 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 một 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 địa chỉ IP công cộng của máy chủ của bạn một lần nữa.

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

http://your_server_IP_address/info.php

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

Ubuntu 16.04 default PHP info

Trang này về cơ bản cung cấp cho bạn thông tin về máy chủ của bạn từ quan điểm của PHP. Nó rất hữu ích để gỡ lỗi và đảm bảo rằng các 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 sẽ hoạt động như mong đợi.

Bạn có thể muốn xóa tệp này sau khi thử nghiệm 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. Để thực hiện việc này, bạn có thể nhập điều này:

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 LAMP stack, bạn có nhiều lựa chọn cho việc cần làm 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.

Như một 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 phục vụ chúng thông qua HTTPS. Tùy chọn dễ nhất ở đây là sử dụng Let's Encrypt để bảo mật trang web của bạn với chứng chỉ TLS / SSL miễn phí.

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

  • Cài đặt Wordpress hệ thống quản lý nội dung phổ biến nhất trên internet.
  • Thiết lập PHPMyAdmin để giúp quản lý cơ sở dữ liệu MySQL của bạn từ trình duyệt web.
  • Tìm hiểu thêm về MySQL để quản lý cơ sở dữ liệu của bạn.
  • Tìm hiểu cách sử dụng SFTP để chuyển các tệp đến và từ máy chủ của bạn.

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