“LAMP” là một nhóm phần mềm nguồn mở thường được cài đặt cho phép server chạy các trang web và ứng dụng web động. Thuật ngữ này viết tắt từ Linux, với web server Apache. Dữ liệu trang web được lưu trữ trong database MySQL và nội dung xử lý bởi PHP. Trong hướng dẫn này, ta sẽ cài đặt LAMP trên server Ubuntu 18.04.
Chuẩn bị
Để hoàn thành hướng dẫn này, ta cần server Ubuntu 18.04 với tài khoản user kích hoạt 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
2 không phải root và firewall cơ bản. Điều này có thể được định cấu hình bằng cách sử dụng hướng dẫn thiết lập server ban đầu của ta cho Ubuntu 18.04 .
Bước 1 - Cài Apache và cập nhật firewall
Web server Apache là một trong những web server phổ biến nhất trên thế giới. Nó được đượ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 Ubuntu, 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
3 : undefined
- sudo apt update
- sudo apt install apache2
undefined
Vì đây là 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
2 , các thao tác này được thực hiện với đặc quyền root. Nó sẽ yêu cầu bạn nhập mật khẩu của regular user.
Sau khi bạn nhập mật khẩu , 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
3 sẽ cho bạn biết gói nào dự định cài đặt và dung lượng ổ đĩa bổ sung mà chúng sẽ chiếm. Nhấn 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
6 và nhấn 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
7 để tiếp tục và quá trình cài đặt sẽ tiếp tục.
Điều chỉnh firewall để 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 server ban đầu và bật firewall UFW, hãy đảm bảo rằng firewall cho phép lưu lượng HTTP và HTTPS. Bạn có thể kiểm tra xem UFW có profile ứng dụng cho Apache như sau không: undefined
- sudo ufw app list
undefined undefined
Output Available applications: Apache Apache Full Apache Secure OpenSSH
Nếu bạn nhìn vào profile 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
8 , sẽ cho thấy rằng nó cho phép lưu lượng truy cập đến các cổng 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
9 và undefined
00 : undefined
- sudo ufw app info "Apache Full"
undefined undefined
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 HTTP và HTTPS đến cho cấu hình này: undefined
- sudo ufw allow in "Apache Full"
undefined
Kiểm tra kết quả, truy cập địa chỉ IP server trên trình duyệt web: undefined
2
Bạn sẽ thấy trang web Ubuntu 18.04 Apache mặc định, giống như sau:
Nếu bạn thấy trang này, thì web server hiện đã được cài đặt chính xác và có thể truy cập thông qua firewall .
Cách Tìm Địa chỉ IP của server
Nếu bạn không biết địa chỉ IP của server là gì, có một số cách tìm. Thông thường, đây là địa chỉ bạn sử dụng để kết nối với server 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ụ undefined
01 để lấy địa chỉ IP bằng cách nhập: undefined
- ip addr show eth0 | grep inet | awk '{ print $2; }' | sed 's/\/.*$//'
undefined
Kết quả có vài dòng. Tất cả đều là địa chỉ chính xác, nhưng chỉ sử dụng được một trong số chúng, nên hãy thử từng địa chỉ.
Một phương pháp nữa là sử dụng tiện ích undefined
02 để liên hệ với bên ngoài để cho bạn biết cách họ nhìn thấy server . Điều này được thực hiện bằng cách: undefined
- sudo apt install curl
- curl //icanhazip.com
undefined
Sau khi có IP, 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 MySQL
Bây giờ bạn đã thiết lập và chạy web server , đã đến lúc cài đặt MySQL. MySQL 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.
Một lần nữa, hãy sử dụng 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
3 để mua và cài đặt phần mềm này: undefined
- sudo apt install mysql-server
undefined
Lưu ý : Trong trường hợp này, bạn không phải chạy undefined
04 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. Chỉ mục gói trên máy tính phải đượ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 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
6 để 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 MySQL để 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 database . Bắt đầu tập lệnh tương tác bằng cách chạy: undefined
- sudo mysql_secure_installation
undefined
Điều này sẽ hỏi bạn có muốn định cấu hình undefined
06 .
Lưu ý: Việc kích hoạt tính năng này chỉ mang tính chất 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 cấu hình thông tin đăng nhập user MySQL, chẳng hạn như gói Ubuntu cho phpMyAdmin. Có thể an toàn để tắt tính năng xác thực, 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 database.
Trả lời 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
6 có hoặc bất kỳ điều gì khác để tiếp tục mà không cần bật. undefined
1
Nếu bạn trả lời “có”, 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 undefined
08 cho 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. undefined
2
Bất kể bạn đã chọn thiết lập undefined
06 , server sẽ yêu cầu bạn chọn và xác nhận mật khẩu cho user root MySQL. Đây là tài khoản quản trị trong MySQL. Đảm bảo rằng đây là mật khẩu mạnh, không giống mật khẩu nào (duy nhất) và không để trống.
Nếu đã 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 root mà bạn vừa nhập và server sẽ hỏi bạn có muốn thay đổi mật khẩu đó hay không. Nếu bạn hài lòng với mật khẩu hiện tại , hãy nhập undefined
10 cho “không” ở lời nhắc: undefined
3
Đối với các câu hỏi còn lại, nhấn 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
6 + Enter để tiếp tục. 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 root 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 bạn đã thực hiện.
Lưu ý rằng trong các hệ thống Ubuntu chạy MySQL 5.7 (và các phiên bản mới hơn), user MySQL root được đặt để xác thực bằng cách sử dụng plugin undefined
12 theo mặc định chứ không phải bằng mật khẩu. Điều này cho phép một số bảo mật và khả năng sử dụng cao hơn trong nhiều trường hợp, nó cũng có thể làm phức tạp mọi thứ khi bạn cần cho phép một chương trình bên ngoài (ví dụ: phpMyAdmin) truy cập vào user.
Nếu bạn thích sử dụng mật khẩu khi kết nối với MySQL dưới dạng root , bạn sẽ cần chuyển phương thức xác thực từ undefined
12 sang undefined
14 . Để thực hiện, hãy mở MySQL từ dòng lệnh : undefined
- sudo mysql
undefined
Tiếp theo, hãy kiểm tra phương thức xác thực mà mỗi tài khoản user MySQL sử dụng bằng lệnh sau: undefined
- SELECT user,authentication_string,plugin,host FROM mysql.user;
undefined undefined
Output undefined
9
Trong ví dụ này, bạn có thể thấy rằng user root trên thực tế xác thực bằng cách sử dụng plugin undefined
12 . Để định cấu hình tài khoản root để xác thực bằng mật khẩu, hãy chạy undefined
16 sau. Đảm bảo thay đổi undefined
17 thành một mật khẩu mạnh mà bạn chọn: undefined
- ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'password';
undefined
Sau đó, chạy undefined
18 để yêu cầu server tải lại các bảng và đặt các thay đổi mới có hiệu lực: undefined
- FLUSH PRIVILEGES;
undefined
Kiểm tra lại các phương pháp xác thực được sử dụng bởi từng user để xác nhận rằng root không còn xác thực bằng plugin undefined
12 : undefined
- SELECT user,authentication_string,plugin,host FROM mysql.user;
undefined undefined
Output undefined
7
Bạn có thể thấy đầu ra ví dụ trên user MySQL root hiện xác thực bằng mật khẩu. Khi bạn xác nhận điều này trên server, bạn có thể thoát MySQL shell: undefined
- exit
undefined
Như vậy, database đã được cấu hình và ta 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 thiết lập 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 MySQL để lấy thông tin và chuyển nội dung đã xử lý cho web server để hiển thị.
Cài đặt: undefined
- sudo apt install php libapache2-mod-php php-mysql
undefined
Ta sẽ kiểm tra kết quả trong giây lát.
Hiện tại, nếu user yêu cầu một thư mục từ server, Apache trước tiên sẽ tìm kiếm một file có tên là undefined
20 . Nhưng ta sẽ cấu hình để Apache dùng undefined
21 trước.
Để thực hiện việc này, soạn thảo file undefined
22 với quyền root: undefined
- sudo nano /etc/apache2/mods-enabled/dir.conf
undefined
Nội dung tương tự:
/etc/apache2/mods-enabled/dir.conf undefined
4
Di chuyển file index.php (được đánh dấu ở trên) đến vị trí đầu tiên sau đặc tả undefined
23 , như sau:
/etc/apache2/mods-enabled/dir.conf undefined
5
Khi bạn hoàn tất, hãy lưu bằng cách nhấn undefined
24 Xác nhận lưu bằng cách gõ 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
6 , sau đó nhấn 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
7 để xác minh vị trí lưu file.
Rồi khởi động lại web server Apache để tải các thay đổi: undefined
- sudo systemctl restart apache2
undefined
Kiểm tra trạng thái của undefined
27 bằng undefined
28 : undefined
- sudo systemctl status apache2
undefined undefined
Sample Output Available applications: Apache Apache Full Apache Secure OpenSSH
1
Nhấn undefined
29 để thoát khỏi đầu ra trạng thái này.
Để 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 undefined
30 thành undefined
31: undefined
- apt search php- | less
undefined
Sử dụng các phím mũi tên để cuộn lên và xuống, và nhấn undefined
29 để thoát.
Kết quả là các lựa chọn cài đặt: Available applications: Apache Apache Full Apache Secure OpenSSH
4
Để biết chức năng của mỗi module, bạn có thể tìm kiếm trên internet. Ngoài ra, có thể xem mô tả dài của gói bằng cách nhập: undefined
- apt show package_name
undefined
Trường được gọi là undefined
33 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 undefined
34 làm: undefined
- apt show php-cli
undefined
Bạn sẽ tìm thấy giống như sau: undefined
Output undefined
0
Ví dụ cài undefined
34: undefined
- sudo apt install php-cli
undefined
Nếu bạn muốn cài đặt nhiều hơn một module, 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 undefined
36 , như sau: undefined
- sudo apt install package1 package2 ...
undefined
Vậy, LAMP đã được cài đặt và cấu hình. Trước khi làm bất kỳ điều gì khác, bạn nên thiết lập VirtualHost Apache, nơi lưu trữ chi tiết cấu hình server .
Bước 4 - Thiết lập VirtualHost (Khuyến nghị)
Khi sử dụng web server Apache, bạn có thể sử dụng VirtualHost (tương tự như block server trong Nginx) để đóng gói chi tiết cấu hình và lưu trữ nhiều hơn một domain trên server. Ta sẽ thiết lập domain có tên your_domain , bạn nên thay thế domain này bằng tên domain của riêng bạn.
Apache trên Ubuntu 18.04 có một config server mặc định cấu hình để cung cấp document từ thư mục undefined
37 . Mặc dù điều này hoạt động tốt cho một trang web nhưng nó có thể trở nên khó sử dụng nếu bạn cần lưu trữ nhiều trang web. Thay vì sửa đổi undefined
37 , hãy tạo cấu trúc thư mục trong undefined
39 cho trang web your_domain, để undefined
37 ở vị trí làm thư mục mặc định.
Tạo thư mục cho your_domain như sau: undefined
5
Chỉ định quyền sở hữu thư mục với biến môi trường undefined
41 : undefined
- sudo chown -R $USER:$USER /var/www/your_domain
undefined
Các điều khoản của gốc web nên chính xác nếu bạn chưa sửa đổi undefined
42 giá trị, nhưng bạn có thể chắc chắn rằng bằng cách gõ: undefined
- sudo chmod -R 755 /var/www/your_domain
undefined
Tiếp theo, tạo một trang undefined
20: undefined
- nano /var/www/your_domain/index.html
undefined
Bên trong, thêm HTML mẫu sau:
/var/www/your_domain/index.html undefined
2
Lưu và đóng file khi bạn hoàn tất.
Để Apache phân phát nội dung này, bạn cần tạo một file VirtualHost với các lệnh chính xác. Thay vì sửa đổi trực tiếp file cấu hình mặc định nằm tại undefined
44 , hãy tạo một file mới tại undefined
45 : undefined
- sudo nano /etc/apache2/sites-available/your_domain.conf
undefined
Dán vào khối cấu hình sau, khối này tương tự như khối mặc định, nhưng được cập nhật cho thư mục và tên domain mới:
/etc/apache2/sites-available/your_domain.conf undefined
5
Lưu ý rằng ta đã cho undefined
46 mục mới và undefined
47. Ta cũng đã thêm hai chỉ thị: undefined
48 , thiết lập domain cơ sở phù hợp với định nghĩa VirtualHost này và undefined
49. Ghi lại file.
Hãy kích hoạt file bằng undefined
50 : undefined
- sudo a2ensite your_domain.conf
undefined
Tắt trang web mặc định được xác định trong undefined
51 : undefined
- sudo a2dissite 000-default.conf
undefined
Tiếp theo, hãy kiểm tra lỗi cấu hình: undefined
- sudo apache2ctl configtest
undefined
Kết quả sau là thành công: undefined
Output undefined
3
Khởi động lại Apache để triển khai các thay đổi: undefined
- sudo systemctl restart apache2
undefined
Bạn có thể kiểm tra bằng cách vào địa chỉ web: undefined
52, bạn sẽ thấy giống như sau:
Vậy VirtualHost đã được thiết lập đầy đủ. 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 trong trường hợp có bất kỳ vấn đề nào cần được giải quyết.
Bước 5 - Kiểm tra Xử lý PHP trên web server
Để kiểm tra xem hệ thống 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à undefined
53 .
Tạo file ở root web: undefined
- sudo nano /var/www/your_domain/info.php
undefined
Tạo nội dung file:
info.php undefined
8
Bây giờ bạn xem web server 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. Truy cập trang này trong trình duyệt web undefined
9
Kết quả giống như sau:
Trang này cung cấp một số thông tin cơ bản về server. Nó cần để đảm bảo rằng cài đặt đ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, thì PHP đang hoạt động như mong đợi.
Bạn có thể xóa file này sau khi kiểm tra vì nó có thể cung cấp thông tin về server cho user trái phép, hacker. Xóa bằng cách: undefined
- sudo rm /var/www/your_domain/info.php
undefined
Bạn có thể tạo lại trang này nếu sau cần truy cập lại thông tin.
Kết luận
Như vậy ta đã cài đặt LAMP, một nền tảng cho phép ta cài đặt hầu hết các loại trang web và phần mềm web trên server.
Bước tiếp theo, bạn nên đảm bảo rằng các kết nối đến web server qua HTTPS. Tùy chọn dễ nhất ở đây là sử dụng Let's Encrypt để bảo mật trang web bằng chứng chỉ TLS / SSL miễn phí.