SOHOA24H.NET

Linux căn bản [Phần 6] – Cài đặt Apache Webserver

sohoa24h.net – Apache là một Webserver rất phổ biến hiện nay, bạn cứ tưởng tượng là các gói Shared Host có sử dụng cPanel , DirectAdmin đa phần đều dùng Apache hết. Do nó phổ biến và dễ cấu hình hơn nên mình sẽ hướng dẫn cho bạn thực hành, chứ để tối ưu nhất thì sẽ sử dụng NGINX Webserver nhưng mình không nói tới ở các bài đầu tiên.

Mục lục nội dung

I. Webserver là gì?

II. Cách cài đặt Apache Webserver

Bật mod_rewrite

III. Cách tạo VirtualHost cho Apache

Hỏi/Đáp khi tạo VirtualHost

Tối ưu Apache để tiết kiệm CPU

Lời kết

I. Webserver là gì?

Webserver là một dịch vụ (service) hỗ trợ bạn hiển thị dữ liệu trên VPS đến người dùng thông qua cổng mặc định là 80. Một webserver có thể tạo ra nhiều VirtualHost, và mỗi VirtualHost có thể mang 1 IP và 1 domain khác nhau.

Nói dễ hiểu hơn, VirtualHost chính là cách mà bạn thêm 1 domain khác vào VPS để chạy web trên đó.

II. Cách cài đặt Apache Webserver

Trước khi cài, mình xin nhắc lại là bạn nên cài trên CentOS 6.5 nếu bạn làm theo hướng dẫn này, CentOS 7.0 đã thay đổi rất nhiều nên mình sẽ có 1 tutorial riêng cho nó.

Hãy đăng nhập vào SSH và tiến hành tắt SELinux đi bằng cách mở file /etc/sysconfig/selinux và tìm SELINUX= rồi sửa thành như dưới đây:

SELINUX=disabled

Sau đó gõ lệnh reboot để khởi động lại máy chủ.

Đăng nhập lại SSH và bắt đầu cài Apache với lệnh yum với hành động là install và cài phần mềm tên là là httpd. Đây nghĩa là phần mềm webserver Apache.
yum install httpd -y

Nếu nó hỏi như thế này thì ấn y rồi enter nhé.

Total download size: 1.1 M
Installed size: 3.4 M
Is this ok [y/N]:

Sau khi nó hiện ra chữ Complete! tức là đã cài thành công.

Tiêp theo là tiến hành khởi động service httpd mà mình vừa cài đặt.

service httpd start

nếu nó có hiện “httpd: Could not reliably determine the server’s fully qualified domain name, using 127.0.0.1 for ServerName” thì kệ nó, chẳng qua là do bạn chưa trỏ IP về hostname thôi. Ở cuối bài mình có chỉ bạn cách đổi ServerName để nó khỏi báo nữa.

Một vài nhà cung cấp có thể sẽ chặn cổng 80 ở mặc định, bạn có thể nhập thêm 3 lệnh sau để mở cổng 80 ra nếu bị khóa:

iptables -A INPUT -m state --state NEW -m tcp -p tcp --dport 80 -j ACCEPT
service iptables save
service iptables restart

Bây giờ bạn hãy thử truy cập vào website với địa chỉ là IP của VPS xem, nếu nó hiện ra trang Welcome của Apache là thành công.

cai-apache-webserver-finish-2

Nhưng có một vấn đề là các service bạn cài vào sẽ không tự động khởi động nếu bạn reboot lại VPS Linux, nên bạn sẽ cần gõ thêm lệnh này để đưa service httpd vào danh sách tự động khởi động khi reboot.

chkconfig httpd on

Mặc định các dữ liệu hiển thị ra website sẽ nằm ở thư mục /var/www. Bạn có thể truy cập vào đó để upload file bất kỳ lên rồi truy cập bằng đường dẫn là IP VPS Linux của bạn.

Bật mod_rewrite

Để sử dụng tính năng Permalink trong WordPress cũng như các chức năng rewrite đường dẫn khác, hãy mở file /etc/httpd/conf/httpd.conf và tìm:

# First, we configure the "default" to be a very restrictive set of
# features.
#
<Directory />
Options FollowSymLinks
AllowOverride None
</Directory>

Thay đoạn AllowOverride None trong đó thành AllowOverride All.

Cuối cùng là gõ service httpd restart để khởi động lại Apache.

III. Cách tạo VirtualHost cho Apache

Ở trên chỉ là bước cài Apache và mình không khuyến khích bạn sử dụng thư mục /var/www để upload website lên, mà hãy tạo ra một thư mục mới theo ý của bạn rồi thêm domain cần sử dụng cho thư mục đó, cái này chúng ta sẽ gọi là VirtualHost (Host ảo).

Để tạo VirtualHost, thì việc đầu tiên là bạn cần phải tạo một thư mục public_html (hoặc bạn cũng có thể ghi là www tùy bạn) trong một thư mục nào đó, ở đây mình khuyến khích các bạn đặt trong/home/webdata/tên-example.com. Chúng ta tiến hành tạo thư mục với lệnh sau:

mkdir -p /home/webdata/domain.local/public_html

Các bạn nhớ thay domain.local thành domain mà bạn muốn thêm vào VPS Linux, tham số -p ở đây nghĩa là bạn ép nó tự tạo ra đoạn thư mục trên nếu nó chưa có. Chẳng hạn trong thư mục /home của mình chưa có webdata/ nên chúng ta sẽ sử dụng tham số -p để ép nó tạo ra thư mục webdata/.

Bạn có thể kiểm tra xem nó đã tạo thành công chưa bằng lệnh ls -a /home.

Tiếp theo là chúng ta sẽ cho user apache và group apache sở hữu thư mục này bởi vì thư mục này đang thuộc quyền sở hữu của user mà bạn tiến hành tạo, thay vì CHMOD cho an toàn hơn.

chown -R apache:apache /home/webdata/domain.local

Nếu bạn không cấp quyền thư mục này cho user apache thì khi cài WordPress, nó không thể tự động sửa file (chẳng hạn như tự thêm nội dung vào file .htaccess khi cài plugin) và nó sẽ bắt bạn nhập tài khoản FTP khi cài Plugin/Theme.

Bạn có thể kiểm tra quyền sở hữu của thư mục này với lệnh:

ls -al /home/webdata/domain.local

Kế tiếp là hãy tạo một file index.html trong thư mục /home/webdata/domain.local/public_html để chút nữa ta sẽ kiểm tra, với nội dung như sau:

vi /home/webdata/domain.local/public_html/index.html

<html>
  <head>
    <title>Welcome</title>
  </head>
  <body>
    <h1>Ban da cai VirtualHost thanh cong!</h1>
  </body>
</html>

Kế tiếp, hãy mở file /etc/httpd/conf/httpd.conf và tìm đoạn dưới đây rồi xóa dấu # đi (bước này chỉ làm 1 lần, lần thêm domain sau khỏi cần làm).

#NameVirtualHost *:80

Đoạn này nằm gần cuối file.

Sau đó bạn vào thư mục /etc/httpd/conf.d và tạo thêm một file .conf tên bất kỳ. Ví dụ mình muốn thêm domain domain.local vào VPS Linux thì sẽ tạo file tên là domain.local.conf cho dễ phân biệt. Trong nội dung, mình chèn đoạn sau vào:

<VirtualHost *:80>
ServerAdmin admin@domain.local
DocumentRoot /home/webdata/domain.local/public_html
<Directory /home/webdata/domain.local/public_html>
AllowOverride all
Order Allow,Deny
Allow from all
</Directory>
ServerName www.domain.local
ServerAlias domain.local
ErrorLog logs/domain.local-error
CustomLog /dev/null common
</VirtualHost>

Mình xin giải thích các thông số ở đoạn trên như sau:

- VirtualHost *:80 – Nghĩa là cái domain này sẽ sử dụng port 80, bạn thiết lập giống với port của Apache nhé.

- ServerAdmin – Email của người quản trị.

- DocumentRoot – Thư mục gốc của domain này, chúng ta đã tạo ra nó ở đầu bài.

- ServerName – domain của VirtualHost.

- ServerAlias – Thêm tùy chọn để truy cập vào domain không cần www.

- ErrorLog – Đường dẫn file log báo lỗi webserver của domain này. Bạn có thể bỏ dấu # để dùng chức năng này nhằm theo dõi lỗi, và nhớ tạo 1 file riêng để nó lưu lại lỗi rồi nhập đường dẫn của file log đó vào.

- CustomLog – Đường dẫn file log báo kết nối tới webserver của domain này. Hiện tại mình cho nó vào null để giảm dung lượng ổ cứng webserver .

Trường hợp VPS Linux bạn có nhiều IP và bạn muốn VirtualHost này sử dụng 1 IP riêng thì thêm đoạnListen 123.456.789 ở ngay trên ServerAdmin.

Sau này bạn muốn thêm nhiều VirtualHost thì cứ copy cái đoạn trên rồi sửa lại thôi là được. Bây giờ chúng ta Save file và thoát ra.

Ok, hãy khởi động lại Apache để nó cập nhật thay đổi nhé.

service httpd restart
Stopping httpd: [FAILED]
Starting httpd: [OK ]

Phần stopping nó bị FAILED thì kệ nó, chẳng qua là do chúng ta restart bất chợt thôi, gõ restart lại lần nữa là hết.

Cuối cùng là hãy trỏ domain về IP của VPS Linux hoặc IP mà bạn đã thiết lập cho VirtualHost nhé, nếu truy cập vào domain đó mà nó ra file Welcome mà chúng ta đã tạo ở trên thì thành công.

web

Hỏi/Đáp khi tạo VirtualHost

Tại sao tôi thêm 2 domain vào nhưng cả 2 lại trỏ về 1 domain?

Lý do là bạn chưa tiến hành gõ lệnh chown -R apache:apache /home/webdata/example.com/ cho cả 2 hoặc chỉ gõ cho 1 domain. Tốt nhất mỗi khi thêm 1 domain vào, hãy gõ lệnhchown -R apache:apache /home/webdata.

Khi thêm domain vào, tôi trỏ domain về VPS thế nào?

Hãy trỏ bằng cách sử dụng các dịch vụ quản lý DNS trung gian như CloudFlare hoặc trình quản lý các record DNS của nhà cung cấp domain rồi trỏ record A về IP của VPS.

Tối ưu Apache để tiết kiệm CPU

Mặc định có thể bạn sẽ thấy Apache nó “ăn” hơi bị nhiều CPU do sử dụng quá nhiều process. Để thiết lập lại số lượng processes mà Apache được phép tạo ra, hãy mở file /etc/httpd/conf/httpd.conf lên và tìm đoạn:

<IfModule prefork.c>
StartServers       8
MinSpareServers    5
MaxSpareServers   20
ServerLimit      256
MaxClients       256
MaxRequestsPerChild  4000
</IfModule>

Ở đoạn trên, bạn sửa lại các phần thành những giá trị sau:

- StartServers : 5

- MinSpareServers : 5

- MaxSpareServers : 10

- MaxRequestsPerChild : 5000

Sau này nếu cần thêm VirtualHost, bạn chỉ cần copy file domain.local.conf kia, đổi tên thành domain cần thêm cũng như sửa file để thay thachpham.dev thành domain mới của bạn.

Lời kết

Trong bài này chúng ta đã tìm hiểu qua cách cài Apache Webserver và thiết lập VirtualHost cho nó. Đây là bước quan trọng mà bạn có thể cần làm đi làm lại nhiều lần cho nhuần nhuyễn để có thể chủ động hơn về sau.

Tuy nhiên hiện tại bạn chưa chạy được WordPress đâu bởi vì chúng ta còn thiếu ứng dụng PHP và MySQL, chúng ta sẽ cài ở các bài sau.

Chỉnh sửa : Ping

Nguồn : Web

Lượt xem: 656

Vài Nét Về Tác Giả "Ping"

Tôi đam mê công nghệ nhất là về mảng Network và System . Tôi thích tìm hiểu học hỏi chuyên sâu về Linux và Windows . Sau vài năm làm việc ngoài bôn ba , tôi đã cùng 2 anh chị thân lập nên web sohoa24h.net để chia sẻ kinh nghiệm kiến thức tới những ai đam mê IT .

Gửi Phản Hồi