[LAMP – I] Cài đặt Apache cấu hình Virtual hosts trên CentOS 7

LAMP là một Web Server viết tắt của các thành phần Linux, Apache, MySQL/MariaDB, PHP. Bài viết này mình sẽ hướng dẫn các bạn làm thế nào để cài đặt LAMP trên CentOS 7, phiên bản mới nhất hiện nay. Đây là bài viết đầu tiên trong Series LAMP Server mình sẽ giới thiệu trong thời gian tới.

Toàn bộ lệnh trong bài viết được thực thi với quyền root. Hệ điều hành VPS đã được update.

 

1. Cài đặt Apache 2.4 trên CentOS 7

Kiểm tra hostname bằng lệnh hostname lệnh này sẽ cho kết quả đầy đủ nhất dạng FQDN hoặc hostname -f hiện thị hostname dạng ngắn gọn.

Tham khảo thêm bài viết cách thay đổi hostnamehướng dẫn disable SElinux trên CentOS.

Lệnh cài Apache Web Serrver

yum install httpd

Việc cài đặt diễn ra nhanh chóng, trước khi cấu hình chi tiết Apache(httpd) các bạn nên backup file config để phòng trường hợp sai sót còn có cái phục hồi lại.

cp /etc/httpd/conf/httpd.conf ~/httpd.conf.bak

Câu lệnh sẽ tạo một file dự phòng có tên httpd.conf.bak trong profile của root. Trong linux file backup mình có thói quen thêm phần mở rộng là .bak muốn khôi phục cấu hình về mặc định chỉ cần sửa lại tên file là được.

Tối ứu Apache

Để Web Server đạt hiệu suất cao nhất bạn dùng vi editor mở file httpd.conf chỉnh sửa một chút.

vi /etc/httpd/conf/httpd.conf

Thêm vào các thông số bên dưới.

KeepAlive Off

<IfModule prefork.c>
StartServers 2
MinSpareServers 4
MaxSpareServers 10
MaxClients 80
MaxRequestsPerChild 3000
</IfModule>

Cấu hình trên áp dụng cho Cloud VPS Linode có cấu hình thấp 1GB RAM.

  • KeepAlive: chức năng duy trì connection và đóng sau khoảng thời gian timeout được chỉ định, khi không được cấu hình đúng cách nó làm tăng lượng memory không giải phóng được tài nguyên.
  • <IfModule prefork.c></IfModule>: khai báo dùng module MPM prefork để mỗi process xử lý một request.
  • StartServers: thông số này quy định số process sinh ra khi khởi động Apache.
  • MinSpareServers, MaxSpareServers: quy định số process con nhàn rỗi nhỏ nhất và lớn nhất được sinh ra để chờ xử lý request từ client.
  • MaxClients: số requests được xử lý đồng thời.
  • MaxRequestsPerChild: giới hạn số requests tối đa đến web server, giá trị 0 có nghĩa là không giới hạn, nếu giá trị này quá thấp sẽ làm giảm hiệu suất vì các requests mới sẽ phải đợi để được xử lý.

Không có setup chung cho các thông số này căn cứ vào lượng truy cập thực tế trên mỗi trang web mới có thông số cụ thể.

Bạn tham khảo thêm các bài viết về cách tối ưu Web Server để biết thêm chi tiết.

Khởi động lại Apache

Trên CentOS 7 chạy lệnh.

systemctl restart httpd.service

Bạn vẫn có thể dùng câu lệnh service httpd restart như trên CentOS 5/6 bình thường.

Kiểm tra cài đặt Apache & Module mpm prefork

Xem dịch vụ httpd (apache) và mpm prefork đã start hay chưa dùng lệnh sau.

cat /etc/httpd/logs/error_log | grep prefork

Check MPM Prefork

netstat -tulpn

Kiểm tra httpd status

Kết quả như trên là đã start thành công rồi, Module pmp prefork, apache đã chạy với pid 20149, Web server đang lắng nghe trên port 80.

Làm đến đâu mình thường check kết quả đến đó nếu ok mới cấu hình tiếp. Một số bạn thường copy paste lệnh đây là một thói quen cấu hình linux không tốt dẫn đến nhiều bug rất khó kiểm soát.

Để xem từ ngoài internet đã truy cập được website hay chưa bạn mở trình duyệt ra rồi nhập địa chỉ IP Public của máy chủ ảo trên thanh địa chỉ  http://IP_Public nếu hiện ra trang Apache 2 Test Page là bạn đã thành công rồi.

 

2. Cấu hình Virtual Hosts trên Apache

Bây giờ Apache đã được tối ưu, nếu muốn chạy nhiều website trên một VPS bạn phải tạo Virtual Hosts cho Apache. Nói chung thì, kể cả có chạy một website duy nhất thì cũng nên tạo Virtual Hosts sau này muốn cài cắm thêm cũng dễ.

Tạo thư mục cần thiết và phân quyền

mkdir -p /var/www/thuysys.com/public_html
mkdir -p /var/www/thuysys.com/logs
mkdir -p /var/www/thuysys.com/backup

Khi triển khai bất kỳ một trang web nào mình sẽ tạo một thư mục có tên là domain của trang web, trong đó sẽ có 3 folder:

  • public_html: bạn sẽ để sourcecode của trang web vào đây.
  • logs: để chứa log của trang web.
  • backup: chứa các file backup định kỳ hoặc các file cấu hình.

Tiếp theo cần phân quyền lại cho thư mục vừa tạo vì chúng đang thuộc quyền sở hữu của root, bạn phải chuyển quyền sở hữu sang cho user apache là user quản trị webserver.

chown -R apache:apache /var/www/thuysys.com

Tham số -R này sẽ chuyển toàn bộ thư mục bao gồm cả files và subfolder từ root sang cho apache.

Với mã nguồn WordPress bạn cần để ý việc phân quyền cho thư mục để tránh lỗi trắng trang và lỗi bắt nhập tài khoản FTP khi cài hoặc xóa plugin,theme.

 

Tham khảo:

Tạo Virtual Hosts

Trong thư mục conf.d tạo file vhosts.conf đây là file chứa cấu hình Virtual hosts. Bên dưới là mẫu cho web thuysys.com, bạn thay đổi các giá trị cho phù hợp với domain của bạn.

Trước hết, mở lại file vi /etc/httpd/conf/httpd.conf thêm vào dòng bên dưới.

NameVirtualHost *:80

Rồi mở file vi /etc/httpd/conf.d/vhost.conf thêm vào config bên dưới.

<VirtualHost *:80>
ServerAdmin admin@thuysys.com
ServerName thuysys.com
ServerAlias www.thuysys.com
DocumentRoot /var/www/thuysys.com/public_html/
ErrorLog /var/www/thuysys.com/logs/error.log
CustomLog /var/www/thuysys.com/logs/access.log combined

Trong đó:

  • VirtualHost *:80: port dùng cho trang web có domain được mô tả trong ServerAlias.
  • DocumentRoot: đường dẫn đến thư mục chứa sourcecode.
  • ServerAdmin: đơn giản chỉ là mail quản trị viện.
  • ServerName: root domain của virtual host được người dùng gõ trên trình duyệt.
  • ServerAlias: tên gọi khác của root domain, còn được dùng để cấu hình www và non www .
  • ErrorLog: ghi lại log các lỗi phát sinh.
  • CustomLog: ghi lại log các truy cập.

Bạn nên cấu hình ghi lại log cho web server để debug và theo dõi truy cập đây cũng nguồn dữ liệu quan trọng tạo cơ sở để cấu hình web server và thiết lập tường lửa, nếu cần tối ưu tốc độ bạn có thể tạm thời vô hiệu hóa đi cũng được.

Nói chung không có gì phức tạp cả, từ giờ khi muốn thêm trang web khác bạn chỉ việc thêm tiếp một cái <VirtualHost></VirtualHost> là xong.
Hoặc bạn tách mỗi cặp thẻ Virtual Host ra một file, đặt đuôi mở rộng là .conf đấy cũng là cách hay để quản lý nhiều domain.

Tạo index.html test Web Server

Muốn biết  Virtual Hosts hoạt động thế nào thì tạo một file index.html đơn giản vi /var/www/thuysys.com/public_html/index.html

Với nội dung sau:

<html>
 <head>
 <title>Welcome</title>
 </head>
 <body>
 <h1>Cau hinh LAMP VirtualHost thanh cong</h1>
 </body>
</html>

Cấu hình cho Apache khởi động cùng máy chủ

systemctl enable httpd.service

Thế là xong từ giờ webserver sẽ tự khởi động mỗi khi start VPS.

Xong đâu đấy mở trình duyệt ra truy cập domain thuysys.com xem để kiểm tra hoặc dùng lệnh curl -I http://www.thuysys.com nếu trả vềkết quả như bên dưới là đã thành công rồi.

[root@srv1 ~]# curl -I http://www.thuysys.com
HTTP/1.1 200 OK

3. Kết bài

Đây chỉ là cấu hình khá cơ bản còn nhiều thông số khác cần phải quan tâm khi cấu hình Webserver, hiện tại máy chủ của bạn mới chỉ xử lý được các file html đơn giản.

Muốn thực thi được mã nguồn PHP như WordPress cần cài cắm và cấu hình MySQL/MariaDB & PHP thêm, mình xin dừng bài viết tại đây hẹn các bạn ở bài tới.

36 Comments

  1. Jay October 31, 2018 Reply
    • Mr Thủy October 31, 2018 Reply
  2. dat November 24, 2017 Reply
    • Mr Thủy November 24, 2017 Reply
      • dat November 24, 2017 Reply
        • Mr Thủy November 24, 2017 Reply
          • dat November 24, 2017
          • Mr Thủy November 24, 2017
  3. thành June 8, 2017 Reply
  4. Phu June 2, 2017 Reply
    • Mr Thủy June 2, 2017 Reply
      • PHU June 2, 2017 Reply
        • Mr Thủy June 2, 2017 Reply
          • PHU June 2, 2017
          • Mr Thủy June 2, 2017
  5. Hoang February 24, 2017 Reply
    • admin February 24, 2017 Reply
      • Hoang February 24, 2017 Reply
        • admin February 24, 2017 Reply
  6. A. Giang October 2, 2016 Reply
    • admin October 2, 2016 Reply
  7. Diep Nguyen September 7, 2016 Reply
    • admin September 7, 2016 Reply
      • Diep Nguyen September 7, 2016 Reply
      • Diep Nguyen September 7, 2016 Reply
        • admin September 7, 2016 Reply
          • Diep Nguyen September 7, 2016
          • admin September 7, 2016
      • Diep Nguyen September 8, 2016 Reply
        • admin September 8, 2016 Reply
          • Diep Nguyen September 8, 2016
          • admin September 8, 2016
  8. Tuấn Quách August 17, 2016 Reply
  9. Huy NP April 5, 2016 Reply

Leave a Reply