Cài đặt Apache trên Ubuntu 20.04 - Install Apache on Ubuntu 20.04
Yêu cầu đầu tiên
Trước khi bạn bắt đầu hướng dẫn này, bạn cần phải có một người dùng thông thường, không phải là người dùng root, với quyền sudo đã được cấu hình trên máy chủ. Ngoài ra, bạn cần phải bật tường lửa cơ bản để chặn các cổng không cần thiết. Bạn có thể tìm hiểu cách cấu hình một tài khoản người dùng thông thường và thiết lập tường lửa cho máy chủ.
Khi bạn đã sở hữu một tài khoản sẵn có, hãy đăng nhập bằng tài khoản người dùng thông thường để bắt đầu.
Cách install Apache Ubuntu 20.04
Bước 1: Install Apache Ubuntu 20.04
Apache có sẵn trong kho lưu trữ phần mềm mặc định của Ubuntu, cho phép cài đặt nó bằng các công cụ quản lý gói truyền thống.
Trước khi install Apache Ubuntu 20.04 hãy bắt đầu bằng việc cập nhật chỉ mục gói cục bộ để phản ánh các thay đổi mới nhất từ nguồn gốc:
$ sudo apt update
Tiếp theo, cài đặt gói apache2:
$ sudo apt install apache2
Sau khi xác nhận cài đặt, apt sẽ install Apache Ubuntu 20.04 và tất cả các phụ thuộc cần thiết.
Bước 2: Điều chỉnh tường lửa
Trước khi kiểm tra Apache, cần phải điều chỉnh cài đặt tường lửa để cho phép truy cập từ bên ngoài vào các cổng web mặc định. Giả sử bạn đã tuân theo hướng dẫn trong các yêu cầu tiên quyết, bạn nên thực hiện sẵn cấu hình một tường lửa UFW để hạn chế truy cập vào máy chủ.
Trong quá trình cài đặt, Apache sẽ đăng ký chính nó với UFW để cung cấp một số hồ sơ ứng dụng có thể được sử dụng để bật hoặc tắt truy cập vào Apache qua tường lửa.
Liệt kê các hồ sơ ứng dụng ufw bằng cách gõ:
$ sudo ufw app list
Bạn sẽ nhận được danh sách các hồ sơ ứng dụng:
Output
Available applications:
Apache
Apache Full
Apache Secure
OpenSSH
Như đã thấy trong đầu ra, có ba hồ sơ khả dụng cho Apache:
- Apache: Hồ sơ này mở cổng 80 (lưu lượng web bình thường, không mã hóa).
- Apache Full: Hồ sơ này mở cả cổng 80 (lưu lượng web bình thường, không mã hóa) và cổng 443 (lưu lượng mã hóa TLS/SSL).
- Apache Secure: Hồ sơ này chỉ mở cổng 443 (lưu lượng mã hóa TLS/SSL).
Thế nên lời khuyên cho bạn là kích hoạt cấu hình hạn chế nhất mà vẫn cho phép lưu lượng truy cập bạn đã cấu hình. Vì trong hướng dẫn này chưa cấu hình SSL cho máy chủ nên chúng ta chỉ cần cho phép lưu lượng trên cổng 80:
$ sudo ufw allow 'Apache'
Bạn có thể xác minh sự thay đổi bằng cách gõ:
$ sudo ufw status
Đầu ra sẽ cung cấp một danh sách các lưu lượng HTTP được phép:
Output
Status: active
To Action From
-- ------ ----
OpenSSH ALLOW Anywhere
Apache ALLOW Anywhere
OpenSSH (v6) ALLOW Anywhere (v6)
Apache (v6) ALLOW Anywhere (v6)
Như đã thấy trong đầu ra, hồ sơ được kích hoạt để cho phép truy cập vào máy chủ web Apache.
Bước 3: Kiểm tra Web Server của bạn
Ở cuối quá trình cài đặt, Ubuntu 20.04 sẽ khởi động Apache. Máy chủ web đã được khởi động và đang hoạt động.
Kiểm tra với hệ thống init systemd để đảm bảo dịch vụ đang chạy bằng cách nhập:
$ sudo systemctl status apache2
Output
● apache2.service - The Apache HTTP Server
Loaded: loaded (/lib/systemd/system/apache2.service; enabled; vendor preset: enabled)
Active: active (running) since Thu 2020-04-23 22:36:30 UTC; 20h ago
Docs: https://httpd.apache.org/docs/2.4/
Main PID: 29435 (apache2)
Tasks: 55 (limit: 1137)
Memory: 8.0M
CGroup: /system.slice/apache2.service
├─29435 /usr/sbin/apache2 -k start
├─29437 /usr/sbin/apache2 -k start
└─29438 /usr/sbin/apache2 -k start
Như được xác nhận qua đầu ra này, dịch vụ đã khởi động thành công. Tuy nhiên, cách tốt nhất để kiểm tra điều này là yêu cầu một trang từ Apache.
Bạn có thể truy cập trang chủ mặc định của Apache để xác nhận rằng phần mềm đang hoạt động bình thường thông qua địa chỉ IP máy chủ của bạn. Nếu bạn không biết địa chỉ IP máy chủ của mình, bạn có thể lấy nó bằng một số cách khác nhau từ dòng lệnh.
Hãy thử gõ lệnh sau tại dòng lệnh máy chủ của bạn:
$ hostname -I
Bạn sẽ nhận được một vài địa chỉ được phân tách bằng dấu cách. Bạn có thể thử mở mỗi địa chỉ này trong trình duyệt web của bạn để xác định xem chúng hoạt động hay không.
Một tùy chọn khác là sử dụng công cụ Icanhazip, công cụ này sẽ cung cấp cho bạn địa chỉ IP công cộng của bạn dựa trên thông tin được đọc từ một vị trí khác trên internet:
$ curl -4 icanhazip.com
Khi bạn có địa chỉ IP của máy chủ, nhập nó vào thanh địa chỉ của trình duyệt của bạn:
http://your_server_ip
Bạn sẽ thấy trang web mặc định của Ubuntu 20.04 Apache:
Trang này cho biết rằng Apache đang hoạt động đúng cách. Nó cũng bao gồm một số thông tin cơ bản về các tệp và thư mục quan trọng của Apache.
Bước 4: Quản lý quá trình Apache
Bây giờ bạn đã có máy chủ web hoạt động, hãy đi qua một số lệnh quản lý cơ bản bằng cách sử dụng systemctl.
Để tắt máy chủ web của bạn, gõ:
$ sudo systemctl stop apache2
Để khởi động máy chủ web khi nó đã dừng, gõ:
$ sudo systemctl start apache2
Để dừng và sau đó khởi động lại dịch vụ, gõ:
$ sudo systemctl restart apache2
Nếu bạn chỉ đang thay đổi cấu hình mà không muốn ngắt kết nối, Apache thường có thể tải lại mà không cần ngắt kết nối. Để làm điều này, sử dụng lệnh sau:
$ sudo systemctl reload apache2
Theo mặc định, Apache được cấu hình để tự khởi động khi máy chủ chạy. Nếu điều này không phải là điều bạn muốn, hãy tắt tính năng này bằng cách gõ:
$ sudo systemctl disable apache2
Để kích hoạt lại dịch vụ khởi động cùng với máy chủ khi nó khởi động, gõ:
$ sudo systemctl enable apache2
Bây giờ, Apache sẽ tự khởi động khi máy chủ chạy lại.
Bước 5: Cài đặt Virtual Hosts (khuyến nghị)
Khi sử dụng máy chủ web Apache, bạn có thể sử dụng Virtual Hosts (tương tự server blocks trong Nginx) để bao gồm các chi tiết cấu hình và chứa nhiều tên miền từ một máy chủ duy nhất. Chúng ta sẽ thiết lập một tên miền gọi là your_domain, nhưng bạn nên thay thế nó bằng tên miền của riêng bạn.
Apache trên Ubuntu 20.04 có một khối máy chủ được kích hoạt theo mặc định, được cấu hình để phục vụ tài liệu từ thư mục /var/www/html. Mặc dù điều này hoạt động tốt cho một trang web duy nhất nhưng nếu bạn đang lưu trữ nhiều trang web, điều này có thể trở nên khó quản lý.
Thay vì sửa đổi /var/www/html, hãy tạo cấu trúc thư mục trong /var/www cho một trang web your_domain, để lại /var/www/html ở đó như một thư mục mặc định và sẽ được phục vụ nếu yêu cầu của khách hàng không khớp với bất kỳ trang web nào khác.
Tạo thư mục cho your_domain như sau:
$ sudo mkdir /var/www/your_domain
Tiếp theo, gán sở hữu của thư mục bằng biến môi trường $USER:
$ sudo chown -R $USER:$USER /var/www/your_domain
Các quyền thư mục gốc của bạn nên chính xác nếu bạn chưa sửa đổi giá trị umask của mình. Giá trị này đặt quyền mặc định cho các tệp. Để đảm bảo quyền của bạn là đúng và cho phép chủ sở hữu đọc, ghi và thực thi tệp trong khi chỉ cấp quyền đọc và thực thi cho các nhóm hoặc người khác, bạn có thể nhập lệnh sau:
$ sudo chmod -R 755 /var/www/your_domain
Tiếp theo, hãy tạo một trang index.html mẫu bằng cách sử dụng nano hoặc trình soạn thảo mà bạn ưa thích:
$ sudo nano /var/www/your_domain/index.html
Bên trong, thêm mã HTML mẫu sau:
<html>
<head>
<title>Welcome to Your_domain!</title>
</head>
<body>
<h1>Success! The your_domain virtual host is working!</h1>
</body>
</html>
Lưu và đóng tệp khi bạn đã hoàn thành.
Để cho Apache phục vụ nội dung này, cần tạo một tệp máy chủ ảo với các chỉ thị đúng. Thay vì sửa đổi tệp cấu hình mặc định tại /etc/apache2/sites-available/000-default.conf trực tiếp, hãy tạo một tệp mới tại /etc/apache2/sites-available/your_domain.conf:
$ sudo nano /etc/apache2/sites-available/your_domain.conf
Dán vào khối cấu hình sau đây, tương tự như mặc định nhưng đã được cập nhật cho thư mục và tên miền mới của chúng ta:
<VirtualHost *:80>
ServerAdmin webmaster@localhost
ServerName your_domain
ServerAlias www.your_domain
DocumentRoot /var/www/your_domain
ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>
Lưu ý rằng DocumentRoot được cập nhật thành thư mục mới và ServerAdmin thành một địa chỉ email mà người quản trị trang web your_domain có thể truy cập. Hai chỉ thị cũng đã được thêm vào: ServerName, thiết lập tên miền cơ sở phải khớp với định nghĩa máy chủ ảo này và ServerAlias, định nghĩa các tên khác nên khớp như thể chúng đã là tên cơ sở.
Lưu và đóng tệp khi bạn hoàn thành.
Hãy kích hoạt tệp cấu hình này bằng công cụ a2ensite:
$ sudo a2ensite your_domain.conf
Tắt trang web mặc định được định nghĩa trong 000-default.conf:
$ sudo a2dissite 000-default.conf
Tiếp theo, hãy kiểm tra lỗi cấu hình:
$ sudo apache2ctl configtest
Bạn sẽ nhận được đầu ra sau đây:
Output
Syntax OK
Khởi động lại Apache để áp dụng các thay đổi của bạn:
$ sudo systemctl restart apache2
Apache hiện đã đang phục vụ tên miền của bạn. Bạn có thể kiểm tra điều này bằng cách truy cập vào http://your_domain, nơi bạn nên thấy một cái gì đó giống như sau:
Bước 6: Làm quen với các tệp và thư mục quan trọng của Apache
Bây giờ bạn đã biết cách quản lý dịch vụ Apache của chính mình, bạn nên dành một vài phút để làm quen với một số thư mục và tệp quan trọng.
Nội dung:
- /var/www/html: Nội dung web thực tế, mà theo mặc định chỉ bao gồm trang web Apache mặc định bạn đã thấy trước đó, được phục vụ từ thư mục /var/www/html. Điều này có thể thay đổi bằng cách sửa đổi các tệp cấu hình của Apache.
Cấu hình Máy chủ:
- /etc/apache2: Thư mục cấu hình Apache. Tất cả các tệp cấu hình Apache đều nằm ở đây.
- /etc/apache2/apache2.conf: Tệp cấu hình chính của Apache. Điều này có thể được sửa đổi để thay cấu hình toàn cục của Apache. Tệp này chịu trách nhiệm tải nhiều tệp khác trong thư mục cấu hình.
- /etc/apache2/ports.conf: Tệp này xác định các cổng mà Apache sẽ lắng nghe. Theo mặc định, Apache lắng nghe cổng 80 và thêm lắng nghe cổng 443 khi một module cung cấp khả năng SSL được kích hoạt.
- /etc/apache2/sites-available/: Thư mục nơi bạn có thể lưu trữ máy chủ ảo từng trang web. Apache sẽ không sử dụng các tệp cấu hình được tìm thấy trong thư mục này trừ khi chúng được liên kết đến thư mục sites-enabled. Thông thường, tất cả cấu hình khối máy chủ được thực hiện trong thư mục này và sau đó được kích hoạt bằng cách liên kết với thư mục khác từ lệnh a2ensite.
- /etc/apache2/sites-enabled/: Thư mục nơi các máy chủ ảo trên mỗi trang có thể được lưu trữ. Thông thường, chúng được tạo ra bằng cách liên kết tới các tệp cấu hình được tìm thấy trong thư mục sites-available bằng lệnh a2ensite. Apache đọc các tệp cấu hình và liên kết được tìm thấy trong thư mục này khi nó khởi động hoặc tải lại để biên dịch cấu hình hoàn chỉnh.
- /etc/apache2/conf-available/, /etc/apache2/conf-enabled/: Những thư mục này có quan hệ tương tự như thư mục sites-available và sites-enabled nhưng được sử dụng để lưu trữ các đoạn cấu hình không thuộc về máy chủ ảo. Các tệp trong thư mục conf-available có thể được kích hoạt bằng lệnh a2enconf và tắt bằng lệnh a2disconf.
- /etc/apache2/mods-available/, /etc/apache2/mods-enabled/: Những thư mục này chứa các module có sẵn và đã được kích hoạt, tương ứng. Các tệp kết thúc bằng .load chứa đoạn mã để tải các module cụ thể, trong khi các tệp kết thúc bằng .conf chứa cấu hình cho các module đó. Các module có thể được kích hoạt và tắt bằng cách sử dụng lệnh a2enmod và a2dismod.
Nhật ký máy chủ:
- /var/log/apache2/access.log: Theo mặc định, mọi yêu cầu đến máy chủ web của bạn được ghi lại trong tệp nhật ký này trừ khi Apache được cấu hình khác.
- /var/log/apache2/error.log: Theo mặc định, tất cả các lỗi được ghi lại trong tệp này. Chỉ thị LogLevel trong cấu hình Apache xác định mức độ chi tiết mà các nhật ký lỗi sẽ chứa.
Bây giờ bạn đã install Apache Ubuntu 20.04, bạn có nhiều tùy chọn cho loại nội dung bạn có thể phục vụ và các công nghệ bạn có thể sử dụng để tạo trải nghiệm phong phú hơn.
Mọi người cũng tìm kiếm: cài apache trên ubuntu, install apache2 ubuntu 20.04, apache ubuntu, install apache ubuntu 20.04, install apache
Mọi người cùng tìm kiếm: cài apache trên ubuntu, apache ubuntu, apache server ubuntu, apache2 doc, apache2 ubuntu 20.04, config apache2 ubuntu 20.04