Thứ sáu, 27/04/2018 | 00:00 GMT+7

Cài đặt Apache Web Server trên Ubuntu 18.04

Server Apache HTTP là web server được sử dụng rộng rãi nhất trên thế giới. Nó cung cấp nhiều tính năng mạnh mẽ bao gồm các module có thể tải động, hỗ trợ phương tiện truyền thông mạnh mẽ và tích hợp rộng rãi với các phần mềm phổ biến khác. Trong hướng dẫn này, ta sẽ cài đặt web server Apache trên server Ubuntu 18.04.

Yêu cầu

Trước khi bắt đầu hướng dẫn này, bạn nên có một regular user (user-thường), không phải root có các quyền sudo được cấu hình trên server. Ngoài ra, bạn cần kích hoạt firewall 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 account regular user (user-thường) và cài đặt firewall cho server theo hướng dẫn cài đặt server ban đầu cho Ubuntu 18.04 .

Đăng nhập với quyền user không phải root của bạn để bắt đầu.

Bước 1 - Cài đặt Apache

Apache có sẵn trong repository mặc định của Ubuntu, giúp bạn có thể cài đặt nó bằng các công cụ quản lý gói thông thường.

Hãy bắt đầu bằng cách cập nhật index gói local để cập nhật thay đổi mới nhất:

  • sudo apt update

Sau đó, cài đặt gói apache2 :

  • sudo apt install apache2

Sau khi xác nhận cài đặt, apt sẽ cài đặt Apache và tất cả các phụ thuộc.

Bước 2 - Điều chỉnh firewall

Trước khi thử nghiệm Apache, cần phải sửa đổi cài đặt firewall để cho phép bên ngoài truy cập vào các cổng web mặc định. Giả sử rằng bạn đã làm theo các hướng dẫn trong yêu cầu, bạn nên cấu hình firewall UFW để hạn chế quyền truy cập vào server.

Trong khi cài đặt, Apache tự đăng ký với UFW để cung cấp một số cấu hình ứng dụng được dùng để bật hoặc tắt quyền truy cập vào Apache thông qua firewall.

Liệt kê các cấu hình ứng dụng ufw bằng lệnh:

  • sudo ufw app list

Bạn sẽ thấy danh sách các profile ứng dụng:

Output
Available applications:   Apache   Apache Full   Apache Secure   OpenSSH 

Như bạn thấy, có ba cấu hình có sẵn cho Apache:

  • Apache : Cấu hình này chỉ mở cổng 80 (truy cập web bình thường, không được mã hóa)
  • Apache Full : Cấu hình này mở cả cổng 80 (truy cập web bình thường, không được mã hóa) và cổng 443 (truy cập được mã hóa TLS / SSL)
  • Apache Secure : Cấu hình này chỉ mở cổng 443 (truy cập được mã hóa TLS / SSL)

Bạn nên bật cấu hình chặn tối đa mà vẫn cho phép lưu lượng bạn đã cấu hình. Vì ta chưa cấu hình SSL cho server trong hướng dẫn này, ta sẽ chỉ cần cho phép truy cập trên cổng 80:

  • sudo ufw allow 'Apache'

Bạn có thể xác minh thay đổi bằng lệnh:

  • sudo ufw status

Bạn sẽ thấy truy cập HTTP được phép trong kết quả được hiển thị:

Output
Status: active  To                         Action      From --                         ------      ---- OpenSSH                    ALLOW       Anywhere                   Apache                     ALLOW       Anywhere                   OpenSSH (v6)               ALLOW       Anywhere (v6)              Apache (v6)                ALLOW       Anywhere (v6) 

Như bạn thấy, cấu hình đã được kích hoạt để cho phép truy cập vào web server. 

Bước 3 - Kiểm tra Server Web của bạn

Khi kết thúc quá trình cài đặt, Ubuntu 18.04 khởi động Apache. Web server đã được cài đặt và đang chạy.

Kiểm tra với systemd init đảm bảo dịch vụ đang chạy bằng lệnh:

  • sudo systemctl status apache2
Output
● apache2.service - The Apache HTTP Server    Loaded: loaded (/lib/systemd/system/apache2.service; enabled; vendor preset: enabled)   Drop-In: /lib/systemd/system/apache2.service.d            └─apache2-systemd.conf    Active: active (running) since Tue 2018-04-24 20:14:39 UTC; 9min ago  Main PID: 2583 (apache2)     Tasks: 55 (limit: 1153)    CGroup: /system.slice/apache2.service            ├─2583 /usr/sbin/apache2 -k start            ├─2585 /usr/sbin/apache2 -k start            └─2586 /usr/sbin/apache2 -k start 

Như bạn thấy từ kết quả này, dịch vụ có vẻ chạy thành công. Tuy nhiên, cách tốt nhất để kiểm tra điều này là truy cập một trang từ Apache.

Bạn có thể truy cập trang đích Apache mặc định để xác nhận phần mềm đang chạy đúng thông qua địa chỉ IP của bạn. Nếu bạn không biết địa chỉ IP của server, bạn có thể lấy nó theo một vài cách khác nhau từ dòng lệnh.

Hãy thử nhập vào dấu nhắc lệnh của server:

  • hostname -I

Bạn sẽ nhận lại một vài địa chỉ được phân tách bằng dấu cách. Bạn có thể thử từng cái trong trình duyệt web để xem chúng có hoạt động không.

Một cách thay thế là nhập mã này, địa chỉ này sẽ cung cấp cho bạn địa chỉ IP công cộng của bạn :

  • curl -4 icanhazip.com

Khi bạn có địa chỉ IP của server, hãy nhập địa chỉ đó vào thanh địa chỉ của trình duyệt:

http://your_server_ip 

Bạn sẽ thấy trang web Ubuntu 18.04 Apache mặc định:

Trang mặc định của Apache

Trang này cho biết Apache đang hoạt động chính xác. Nó cũng bao gồm một số thông tin cơ bản về các file Apache quan trọng và vị trí folder.

Bước 4 - Quản lý quy trình Apache

Đến đây bạn đã cài đặt và chạy web server, hãy xem qua một số lệnh quản lý cơ bản.

Để dừng web server, hãy nhập:

  • sudo systemctl stop apache2

Để khởi động web server khi nó bị dừng, hãy nhập:

  • sudo systemctl start apache2

Để dừng và sau đó bắt đầu lại dịch vụ, hãy nhập:

  • sudo systemctl restart apache2

Nếu bạn chỉ đơn giản là thay đổi cấu hình, Apache thường có thể tải lại mà không làm mất kết nối. Để thực hiện việc này, hãy sử dụng lệnh sau:

  • sudo systemctl reload apache2

Theo mặc định, Apache được cấu hình để khởi động tự động khi server khởi động. Nếu bạn không muốn vậy, hãy chạy lệnh:

  • sudo systemctl disable apache2

Để bật lại dịch vụ khởi động khi khởi động, hãy nhập:

  • sudo systemctl enable apache2

Apache bây giờ sẽ tự động khởi động khi server khởi động lại.

Khi sử dụng web server Apache, bạn có thể sử dụng VirtualHost (tương tự như server block trong Nginx) để đóng gói chi tiết cấu hình và lưu trữ nhiều hơn một domain từ một server. Ta sẽ cài đặt domain có tên your_domain , bạn nên thay thế domain này bằng domain của riêng bạn.

Apache trên Ubuntu 18.04 có một server block được bật theo mặc định được cấu hình để cung cấp tài liệu từ folder /var/www/html . 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 đang lưu trữ nhiều trang web. Thay vì sửa đổi /var/www/html , hãy tạo cấu trúc folder bên trong /var/www cho trang your_domain , giữ nguyên /var/www/html làm folder mặc định để đáp ứng các truy cập mặc định.

Tạo folder cho your_domain như sau:

  • sudo mkdir /var/www/your_domain

Tiếp theo, chỉ định quyền sở hữu folder với biến môi trường $USER :

  • sudo chown -R $USER:$USER /var/www/your_domain

Các quyền root web nên được chính xác bằng lệnh:

  • sudo chmod -R 755 /var/www/your_domain

Tiếp theo, tạo một trang index.html mẫu bằng nano hoặc editor bạn quen dùng:

  • nano /var/www/your_domain/index.html

Bên trong, thêm HTML mẫu sau:

/var/www/your_domain/index.html
<html>     <head>         <title>Welcome to Your_domain!</title>     </head>     <body>         <h1>Success!  The your_domain virtual host is working!</h1>     </body> </html> 

Lưu 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 /etc/apache2/sites-available/000-default.conf , hãy tạo một file mới tại /etc/apache2/sites-available/ your_domain .conf :

  • sudo nano /etc/apache2/sites-available/your_domain.conf

Paste 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 folder và domain mới :

/etc/apache2/sites-available/your_domain.conf
<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 ý ta đã cập nhật DocumentRoot vào folder mới và ServerAdmin thành một email mà quản trị viên your_domain site có thể truy cập. Ta cũng đã thêm hai chỉ thị: ServerName , cài đặt domain cơ sở phù hợp với định nghĩa VirtualHost này và ServerAlias

Lưu file khi bạn hoàn tất.

Hãy kích hoạt file bằng công cụ a2ensite :

  • sudo a2ensite your_domain.conf

Tắt trang web mặc định được xác định 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ẽ thấy kết quả sau:

Output
Syntax OK 

Khởi động lại Apache để áp dụng các thay đổi:

  • sudo systemctl restart apache2

Apache bây giờ sẽ cho truy cập domain của bạn. Bạn có thể kiểm tra bằng cách chuyển đến http:// your_domain , nơi bạn sẽ thấy thông tin như sau:

Ví dụ về VirtualHost Apache

Bước 6 - Làm quen với các file và folder Apache quan trọng

Đến đây bạn đã biết cách quản lý dịch vụ Apache, bạn nên dành vài phút để tự làm quen với một số folder và file quan trọng.

Nội dung

  • /var/www/html : Nội dung web, theo mặc định chỉ bao gồm trang Apache mặc định (như bạn đã thấy ở trên).

Cấu hình server

  • /etc/apache2 : Folder cấu hình Apache. Tất cả các file cấu hình Apache đều nằm ở đây.
  • /etc/apache2/apache2.conf : File cấu hình Apache chính. Điều này có thể được sửa đổi để thay đổi cấu hình chung của Apache. File này chịu trách nhiệm tải nhiều file khác trong folder cấu hình.
  • /etc/apache2/ports.conf : File này chỉ định các cổng mà Apache sẽ lắng nghe. Theo mặc định, Apache lắng nghe trên cổng 80 và cũng lắng nghe trên cổng 443 khi một module  SSL được bật.
  • /etc/apache2/sites-available/ : Folder chứa các VirtualHost trên mỗi trang web. Apache sẽ không sử dụng các file cấu hình được tìm thấy trong folder này trừ khi chúng được liên kết với folder sites-enabled . Thông thường, tất cả cấu hình server block được thực hiện trong folder này, và sau đó được kích hoạt bằng cách liên kết đến folder khác bằng lệnh a2ensite .
  • /etc/apache2/sites-enabled/ : Folder lưu trữ các VirtualHost cho mỗi trang web. Thông thường, chúng được tạo bằng cách liên kết đến các file cấu hình được tìm thấy trong folder sites-available của sites-available với a2ensite . Apache đọc các file cấu hình và liên kết được tìm thấy trong folder này khi nó khởi động hoặc tải lại để biên dịch một cấu hình hoàn chỉnh.
  • /etc/apache2/conf-available/ , /etc/apache2/conf-enabled/ : Các folder này có cùng mối quan hệ với các folder sites-enabledsites-available , nhưng được sử dụng để lưu trữ các phân đoạn cấu hình không thuộc về VirtualHost. Các file trong folder conf-available thể được bật bằng lệnh a2enconf và vô hiệu hóa bằng lệnh a2disconf .
  • /etc/apache2/mods-available/ , /etc/apache2/mods-enabled/ : Các folder này chứa các module có sẵn và được kích hoạt tương ứng. Các file có .load chứa các phần để tải các module cụ thể, trong khi các file kết thúc bằng .conf chứa cấu hình cho các module đó. Các module có thể được bật và tắt bằng cách sử dụng lệnh a2enmoda2dismod .

Log server

  • /var/log/apache2/access.log : Theo mặc định, mọi yêu cầu đến web server đều được ghi lại trong file log này.
  • /var/log/apache2/error.log : Theo mặc định, tất cả các lỗi được ghi lại trong file này. Chỉ thị LogLevel trong cấu hình Apache chỉ định mức độ chi tiết mà các lỗi sẽ chứa.

Kết luận

Đến đây bạn đã cài đặt web server, bạn có nhiều tùy chọn cho nội dung web và các công nghệ có thể sử dụng để tạo ra trải nghiệm phong phú hơn.

Nếu bạn muốn xây dựng một ứng dụng hoàn chỉnh hơn, bạn có thể xem bài viết này về cách cấu hình LAMP trên Ubuntu 18.04 .


Tags:

Các tin trước

Cài đặt xác thực đăng nhập SSH Keys, không cần password trên Ubuntu 18.04 2018-04-27
Bảo mật cơ bản Ubuntu 18.04 2018-04-27
Cài đặt Linux Apache MySQL PHP (LAMP) trên Ubuntu 18 04 2018-04-27
Cài đặt SSH Keys trên Ubuntu 16.04 2018-04-12
Cài đặt Node.js trên Ubuntu 16.04 2018-03-07
Cài đặt Anaconda Python trên Ubuntu 16 04 2017-12-27
Cài đặt MySQL trên CentOS 7 2016-12-01
Cài đặt MySQL trên Ubuntu 16.04 2016-11-23
Cài đặt Node.js Application for Production trên Ubuntu 16.04 2016-11-01
Cài đặt Nginx Server Blocks (Virtual Hosts) trên Ubuntu 16.04 2016-05-19