Thứ tư, 07/08/2013 | 00:00 GMT+7

Cách cấu hình web server Apache trên Ubuntu hoặc Debian VPS


Apache là gì?

Apache là web server phổ biến nhất trên internet. Nó được sử dụng để phục vụ hơn một nửa số trang web đang hoạt động.

Mặc dù có rất nhiều web server khả thi sẽ phục vụ nội dung của bạn, nhưng sẽ rất hữu ích nếu bạn hiểu cách Apache hoạt động vì tính phổ biến của nó.

Trong bài viết này, ta sẽ xem xét một số file cấu hình chung và các tùy chọn có thể được kiểm soát trong chúng. Bài viết này sẽ tuân theo cách bố trí Ubuntu / Debian của file Apache, khác với cách các bản phân phối khác xây dựng cấu hình phân cấp.

Cách cài đặt Apache trên Ubuntu và Debian

Nếu bạn chưa cài đặt Apache, bạn có thể thực hiện việc này ngay bây giờ bằng cách đưa ra các lệnh sau:

sudo apt-get update
sudo apt-get install apache2

Đây là tất cả những gì cần thiết để có một web server hoạt động. Nếu bạn truy cập địa chỉ IP của VPS trong trình duyệt web, bạn sẽ nhận được trang index Apache mặc định:

your_domain_name_or_ip_address
It works!
This is the default web page for this server.
The web server software is running but no content has been added, yet.

Cấu trúc folder-file Apache trong Ubuntu và Debian

Trên Ubuntu và Debian, Apache giữ các file cấu hình chính của nó trong folder "/ etc / apache2":

cd /etc/apache2
ls -F
apache2.conf  envvars     magic            mods-enabled/  sites-available/
conf.d/       httpd.conf  mods-available/  ports.conf     sites-enabled/

Có một số file văn bản thuần túy và một số folder con trong folder này. Đây là một số vị trí hữu ích hơn cần quen thuộc:

  • apache2.conf : Đây là file cấu hình chính cho server . Hầu hết mọi cấu hình có thể được thực hiện từ bên trong file này, mặc dù bạn nên sử dụng các file riêng biệt, được chỉ định để đơn giản hơn. Tệp này sẽ cấu hình mặc định và là điểm truy cập trung tâm để server đọc chi tiết cấu hình.
  • port.conf : Tệp này được sử dụng để chỉ định các cổng mà server ảo sẽ lắng nghe. Đảm bảo kiểm tra xem file này có đúng không nếu bạn đang cấu hình SSL.
  • conf.d / : Thư mục này được sử dụng để kiểm soát các khía cạnh cụ thể của cấu hình Apache. Ví dụ, nó thường được sử dụng để xác cấu hình SSL và các lựa chọn bảo mật mặc định.
  • sites-available / : Thư mục này chứa tất cả các file server ảo xác định các trang web khác nhau. Những điều này sẽ xác định nội dung nào được phục vụ cho những yêu cầu nào. Đây là những cấu hình có sẵn, không phải cấu hình đang hoạt động.
  • sites-enable / : Thư mục này cài đặt các định nghĩa server ảo nào đang thực sự được sử dụng. Thông thường, folder này bao gồm các softlink đến các file được xác định trong folder "trang web có sẵn".
  • mods- [được kích hoạt, khả dụng] / : Các folder này có chức năng tương tự như các folder site, nhưng chúng xác định các module có thể được tải tùy chọn.

Như bạn thấy , cấu hình Apache không diễn ra trong một file nguyên khối mà thay vào đó diễn ra thông qua thiết kế module nơi các file mới có thể được thêm vào và sửa đổi khi cần thiết.

Nhìn vào file Apache2.conf

Chi tiết cấu hình chính cho server Apache của bạn được lưu trong file "/etc/apache2/apache2.conf".

Tệp này được chia thành ba phần chính: cấu hình cho quy trình server Apache global , cấu hình cho server mặc định và cấu hình Server ảo.

Trong Ubuntu và Debian, phần lớn file dành cho các định nghĩa chung và cấu hình của server mặc định và server ảo được xử lý ở cuối, bằng cách sử dụng lệnh "Bao gồm ...".

Lệnh "Bao gồm" cho phép Apache đọc các file cấu hình khác vào file hiện tại tại vị trí mà câu lệnh xuất hiện. Kết quả là Apache tự động tạo một file cấu hình bao quát khi khởi động.

Nếu bạn cuộn xuống cuối file , sẽ có một số câu lệnh "Bao gồm" khác nhau. Các định nghĩa module tải này, tài liệu port.conf, các file cấu hình cụ thể trong folder "conf.d /" và cuối cùng là các định nghĩa Server ảo trong folder "sites-enable /".

Ta sẽ tập trung vào phần đầu tiên của file để tìm hiểu cách Apache xác định cài đặt chung của nó.

Phần cấu hình global

Phần này được sử dụng để cấu hình một số tùy chọn kiểm soát toàn bộ cách Apache hoạt động.

Có một số tùy chọn thú vị mà bạn có thể cần sửa đổi trong phần này:

Hết giờ

Theo mặc định, tham số này được đặt thành "300", nghĩa là server có tối đa 300 giây để thực hiện mỗi yêu cầu.

Đây có lẽ là quá cao đối với hầu hết các cài đặt và có thể giảm xuống một cách an toàn trong repository ảng từ 30 đến 60 giây.

Cố sống đi

Tùy chọn này, nếu được đặt thành "Bật", sẽ cho phép mỗi kết nối vẫn mở để xử lý nhiều yêu cầu từ cùng một ứng dụng client .

Nếu điều này được đặt thành "Tắt", mỗi yêu cầu sẽ phải cài đặt một kết nối mới, điều này có thể dẫn đến chi phí đáng kể tùy thuộc vào cài đặt và tình hình giao thông của bạn.

MaxKeepAliveRequests

Điều này kiểm soát số lượng yêu cầu riêng biệt mà mỗi kết nối sẽ xử lý trước khi chết. Giữ con số này cao sẽ cho phép Apache phân phối nội dung đến từng khách hàng hiệu quả hơn.

Đặt giá trị này thành 0 sẽ cho phép Apache phục vụ số lượng yêu cầu không giới hạn cho mỗi kết nối.

KeepAliveTimeout

Cài đặt này chỉ định thời gian chờ đợi yêu cầu tiếp theo sau khi hoàn thành yêu cầu cuối cùng. Nếu đạt đến ngưỡng thời gian chờ, kết nối sẽ chết.

Điều này chỉ nghĩa là lần tiếp theo nội dung được yêu cầu, server sẽ cài đặt một kết nối mới để xử lý yêu cầu đối với nội dung tạo nên trang mà khách hàng đang truy cập.

Cấu hình MPM

Phần tiếp theo chỉ cấu hình của các tùy chọn MPM (Mô-đun đa xử lý). Bạn có thể tham khảo chéo phần cài đặt Apache của bạn đã được biên dịch bằng cách thoát vào terminal và nhập:

apache2 -l
Compiled in modules:
  core.c
  mod_log_config.c
  mod_logio.c
  prefork.c
  http_core.c
  mod_so.c

Như bạn thấy , trong server này, "prefork.c" là một module đã được biên dịch và cũng nằm trong file "apache2.conf". Cài đặt của bạn có thể có nhiều để lựa chọn, nhưng chỉ có thể chọn một.

Bạn có thể điều chỉnh cấu hình của MPM làm việc trước trong phần thích hợp.

Khám phá file server ảo mặc định

Khai báo Server ảo mặc định có thể được tìm thấy trong file có tên "mặc định" trong folder "trang web có sẵn".

Ta có thể tìm hiểu về định dạng chung của file Server ảo bằng cách kiểm tra file này. Mở file bằng lệnh sau:

sudo nano /etc/apache2/sites-available/default
<VirtualHost *:80>
        ServerAdmin webmaster@localhost

        DocumentRoot /var/www
        <Directory />
                Options FollowSymLinks
                AllowOverride None
        </Directory>
        <Directory /var/www/>
                Options Indexes FollowSymLinks MultiViews
                AllowOverride None
                Order allow,deny
                allow from all
        </Directory>
. . .

Server ảo mặc định được cấu hình để xử lý bất kỳ yêu cầu nào trên cổng 80, cổng http tiêu chuẩn. Điều này được định nghĩa trong tiêu đề khai báo có ghi "*: 80", nghĩa là cổng 80 trên bất kỳ giao diện nào.

Tuy nhiên, điều này không nghĩa là nó nhất thiết phải xử lý từng yêu cầu đến server trên cổng này. Apache sử dụng định nghĩa Server ảo cụ thể nhất phù hợp với yêu cầu. Điều này nghĩa là nếu có một định nghĩa cụ thể hơn, nó có thể thay thế định nghĩa này.

Cấu hình server ảo cấp cao nhất

Các tùy chọn này được đặt trong định nghĩa Server ảo bên ngoài bất kỳ khai báo phụ cấp thấp hơn nào khác. Chúng áp dụng cho toàn bộ Server ảo.

Tùy chọn "ServerAdmin" chỉ định một email liên hệ sẽ được sử dụng khi có sự cố server .

Điều này có thể được chèn vào trang lỗi nếu bạn đặt "ServerSignature" thành "Email" trong file "/etc/apache2/conf.d/security", vì vậy hãy đảm bảo bạn sẵn sàng nhận thư nếu bạn điều chỉnh cài đặt đó .

Nếu ta đang sử dụng định nghĩa này làm mẫu cho các định nghĩa Server ảo khác, ta muốn thêm định nghĩa "Tên server " chỉ định domain hoặc địa chỉ IP mà yêu cầu này sẽ xử lý. Đây là tùy chọn sẽ thêm tính cụ thể cho Server ảo, cho phép nó vượt trội hơn định nghĩa mặc định nếu nó trùng với giá trị Tên server .

Bạn cũng có thể đặt Server ảo áp dụng cho nhiều tên bằng cách sử dụng định nghĩa "ServerAlias". Điều này cung cấp các đường dẫn thay thế để đến cùng một nội dung. Một trường hợp sử dụng tốt cho điều này là thêm cùng một domain , đứng trước "www".

Tùy chọn "DocumentRoot" chỉ định nơi chứa nội dung được yêu cầu cho Server ảo này. Server ảo mặc định được cài đặt để cung cấp nội dung ngoài folder "/ var / www" trên Ubuntu.

Định nghĩa folder

Trong định nghĩa Server ảo, có các định nghĩa về cách server xử lý các folder khác nhau trong hệ thống file . Apache sẽ áp dụng tất cả các hướng này theo thứ tự từ ngắn nhất đến dài nhất, vì vậy sẽ có cơ hội overrides các tùy chọn trước đó.

Định nghĩa folder đầu tiên áp dụng các luật cho folder "/", hoặc folder root . Điều này sẽ cung cấp cấu hình cơ sở cho Server ảo của bạn, vì nó áp dụng cho tất cả các file được cung cấp trên hệ thống file .

Theo mặc định, Ubuntu không cài đặt bất kỳ hạn chế truy cập nào vào hệ thống file . Apache khuyên bạn nên thêm một số hạn chế truy cập mặc định. Bạn có thể sửa đổi điều này như vậy:

<Directory />
	Options FollowSymLinks
	AllowOverride None
	Order Deny,Allow
	Deny from All
</Directory>

Điều này sẽ từ chối quyền truy cập vào tất cả nội dung trừ khi được chỉ định khác trong các định nghĩa folder tiếp theo.

Định nghĩa folder tiếp theo dành cho folder root , vì vậy nó chỉ định tùy chọn "cho phép từ tất cả" overrides tùy chọn "/" cho folder này.

Tùy chọn "AllowOverride" được sử dụng để quyết định xem file ".htaccess" có thể overrides cài đặt hay không nếu nó được đặt trong folder nội dung. Điều này không được phép theo mặc định, nhưng có thể hữu ích để bật trong nhiều trường hợp.

Câu lệnh Alias và ScriptAlias

Định nghĩa folder đôi khi được đặt trước câu lệnh "Bí danh" hoặc "ScriptAlias". Bí danh ánh xạ một đường dẫn url đến một đường dẫn folder .

ScriptAlias hoạt động theo cách tương tự, nhưng được sử dụng để xác định các folder sẽ có các thành phần thực thi trong đó.

Ví dụ: dòng này trong Server ảo xử lý yêu cầu đến "example.com" sẽ cho phép truy cập vào nội dung trong "/ path / to / content /" bằng cách chuyển đến "example.com/content/":

Alias /content/ /path/to/content/

Tiếp theo alias , bạn nên nhớ xác định folder với các quyền truy cập như đã thảo luận trong phần trước.

Bật các trang web và module trong Apache

Sau khi bạn có file Server ảo đáp ứng yêu cầu của bạn , bạn có thể sử dụng các công cụ đi kèm với Apache để chuyển chúng thành các trang trực tiếp.

Để tự động tạo một softlink trong folder "hỗ trợ trang web" đến file hiện có trong folder "trang web có sẵn", hãy chạy lệnh sau:

sudo a2ensite virtual_host_file_name

Sau khi kích hoạt một trang web, hãy chạy lệnh sau để yêu cầu Apache đọc lại các file cấu hình của nó, cho phép thay đổi phổ biến:

sudo service apache2 reload

Ngoài ra còn có một lệnh đồng hành để tắt Server ảo. Nó hoạt động bằng cách xóa softlink khỏi folder "hỗ trợ trang web":

sudo a2dissite virtual_host_file_name

, hãy reload cấu hình để thực hiện thay đổi:

sudo service apache2 reload

Mô-đun có thể được bật hoặc tắt bằng cách sử dụng lệnh "a2enmod" và "a2dismod" tương ứng. Chúng hoạt động theo cách giống như version "trang web" của các lệnh này.

Hãy nhớ reload các thay đổi cấu hình của bạn sau khi các module đã được bật hoặc tắt.

Kết luận

Ta đã xem qua một số file cấu hình Apache cơ bản. Apache rất linh hoạt và rất module , vì vậy nhu cầu cấu hình sẽ khác nhau tùy thuộc vào cài đặt của bạn.

Bạn nên hiểu rõ các file cấu hình chính được sử dụng để làm gì và cách chúng tương tác với nhau. Nếu bạn cần biết về các tùy chọn cấu hình cụ thể, các file được cung cấp sẽ được comment tốt và Apache cung cấp tài liệu tuyệt vời .

Hy vọng rằng các file cấu hình sẽ không còn đáng sợ như bây giờ và bạn thấy phù hợp hơn khi thử nghiệm và sửa đổi cho phù hợp với nhu cầu của bạn .

Bởi Justin Ellingwood

Tags:

Các tin liên quan

Cách thiết lập Apache với Chứng chỉ SSL đã ký miễn phí trên VPS
2013-07-17
Cách bắt đầu với mod_pagespeed với Apache trên Ubuntu và Debian Cloud Server
2013-07-09
Cách bắt đầu với mod_pagespeed với Apache trên server cloud CentOS và Fedora
2013-07-09
Cách tạo chứng chỉ SSL trên Apache trên Arch Linux
2012-11-09
Cách cài đặt LAMP (Linux, Apache, MySQL, PHP) trên Fedora
2012-11-06
Cách thiết lập server ảo Apache trên Arch Linux
2012-09-11
Cách tạo trang 404 tùy chỉnh trong Apache
2012-07-10
Cách tạo chứng chỉ SSL trên Apache cho CentOS 6
2012-06-06
Cách thiết lập server ảo Apache trên CentOS 6
2012-06-03
Cách cài đặt Rails, Apache và MySQL trên Ubuntu với Passenger
2012-06-01