Aug 25, 2018
60 Views
Comments Off on Hướng dẫn cài đặt OpenLiteSpeed trên CentOS 7

Hướng dẫn cài đặt OpenLiteSpeed trên CentOS 7

Written by
Khi dùng shared host mình rất ấn tượng với các dịch vụ hosting sử dụng web server LiteSpeed như HawkHost, AZDigi.

Các website lưu trữ trên đó sử dụng plugin LiteSpeed Cache có tốc độ rất nhanh. Thậm chí nhiều độc giả của ThuThuatWP còn cho thấy LiteSpeed Cache còn tốt hơn cả plugin trả phí WP Rocket.

Do vậy khi nghiên cứu VPS, mình rất hào hứng trải nghiệm LiteSpeed Web Server. May mắn LiteSpeed đã có có bản open source cho website của mình.

Nó có tên gọi là OpenLiteSpeed. Đây là một HTTP server có hiệu suất rất tốt. Nó có thể xử lý một lượng lớn kết nối đồng thời mà tiêu tốn rất ít tài nguyên.

Nó hỗ trợ cả giao thức SPDY/3.1 và HTTP/2. Cài đặt và cấu hình chứng chỉ Lets Encrypt trong OpenLiteSpeed rất đơn giản.

Trải nghiệm OpenLiteSpeed + LiteSpeedCache sau khi cài đặt một website WordPress cho tốc độ rất bá đạo.

OpenLiteSpeed là gì?

Gọi tắt OpenLiteSpeed là OLS nhé.

Cũng giống như Apache hay Nginx, OpenLiteSpeed là một webserver mã nguồn mở, được phát triển nhờ cộng đồng dựa trên phiên bản LiteSpeed (Thương mại) của công ty LiteSpeed Tech, OLS được đi kèm với giấy phép GPL v3.

Khi nào nên sử dụng OLS ?

OLS được phát triển và xây dựng dựa trên các tiêu chí:

  • Hướng đến việc sử dụng càng ít tài nguyên (CPU, RAM)
  • Xử lý một số lượng lớn kết nối mà không gây quá tải
  • Giao diện quản trị với thống kê thời gian thật
  • Hỗ trợ mod_rewrite của Apache (Hỗ trợ .htaccess file nhưng ko phải tất cả rule)
  • Pagecache tích hợp sẵn
  • Hỗ trợ các kiểu I/O tăng hiệu năng đọc ghi tùy theo phiên bản Unix đang dùng (Linux Kernel 2.4 – 2.6/FreeBSD/OS X…)
  • Hỗ trợ plugin bên thứ 3 qua API

Ngoài ra có thể đọc thêm tại đây (tiếng anh)

Hệ điều hành hỗ trợ:

  • CentOS 5, 6 và 7
  • Ubuntu 8.04 và các phiên bản sau
  • Debian 4 và các phiên bản sau
  • Solaris(x86): Sun0S 5.8 và các phiên bản sau
  • OS X 10.3 và các phiên bản sau
  • FreeBSD 4.5 và các phiên bản sau

Cài đặt OpenLiteSpeed trên CentOS 7

Nói sơ lược về OpenLiteSpeed rồi. Bây giờ sẽ đi vào mục chính của bài viết: Cách cài đặt và cấu hình OLS trên CentOS 7

Chuẩn bị môi trường

Trước hết cài đặt một số thứ

yum -y install wget zip unzip epel-release && yum clean all && yum update

Cài đặt và cập nhật toàn bộ hệ thống lên bản mới nhất

1-Click Install

Note: chỉ hỗ trợ Centos(5-7), Debian(7-9) and Ubuntu(12,14,16)

Tải file cài đặt

# cd ~ && wget --no-check-certificate https://raw.githubusercontent.com/litespeedtech/ols1clk/master/ols1clk.sh

Script này sẽ tự động cài đặt OpenLiteSpeed bản mới nhất và module lsphp56. Nếu muốn dùng PHP 7.2 như bài viết thì hãy dùng thêm lệnh

bash ols1clk.sh --lsphp 71

Khỏi động OLS  bằng lệnh systemctl start lsws

Cập nhật admin password

sh /usr/local/lsws/admin/misc/admpass.sh

Kiểm tra hoạt động bằng cách truy cập vào http://IP:8088

Nếu không truy cập được thì hãy mở port với lệnh sau
firewall-cmd –zone=public –add-port=8088/tcp –permanent
firewall-cmd –reload

 

Cài đặt Maria DB

Chạy lệnh sau để cài đặt Maria DB:

yum install mariadb mariadb-server

Chạy Maria DB với lệnh sau:

systemctl start mariadb.service

Chạy Maria DB khi khởi động VPS với lệnh sau:

systemctl enable mariadb.service

Mặc định Maria DB chưa được bảo mật tốt lắm. Bạn chạy lệnh sau để tăng thêm tính bảo mật cho Maria DB.

/usr/bin/mysql_secure_installation

Đầu tiên nó sẽ hỏi bạn Enter current password for root. Lúc này bạn chưa có bạn password cho root nên cứ gõ Enter.

Tiếp theo nó hỏi Set Root Password? bạn gõ y rồi nhập vào một password cho tài khoản root.

Những câu hỏi sau này bạn cứ chọn y hết. ​

Cuối cùng bạn khởi động lại Maria DB:

systemctl restart mariadb.service

 

Đổi Port cho OLS

OpenLiteSpeed khi cài đặt sẽ chạy trên port 8088 chứ không phải port 80 như bình thường.

Truy cập Listeners > Nhấn vào Default hoặc nút edit bên phải

Đổi Port từ 8088 thành 80

Reload LSWS và tận hưởng.

listener port lsws

 

Thay đổi phiên bản PHP đang sử dụng ở OLS

Truy cập Admin Webpanel của OLS bằng

https://IP:7080

Mặc định sử dụng user là admin, mật khẩu như bạn đổi ở trên

openlitespeed admin login

Truy cập tiếp

Server Configuration > External App 

Nhấn vào nút Add ở góc phải

add-ext-app

Ở mục Type, chọn LiteSpeed SAPI App

Nhấn next (cũng góc phải luôn)

cài đặt php71

Bạn có thể thiết lập như hình.

Bằng chữ cho ai thích copy hơn là gõ:

Address: uds://tmp/lshttpd/lsphp.sock

Max Connections: 50

Environment: Để trống hoặc đặt theo máy chủ của bạn

PHP_LSAPI_MAX_REQUESTS=5000
PHP_LSAPI_CHILDREN=50

Initial Request Timeout (secs): 60

Retry Timeout (secs): 0

Auto Start: Chọn Yes

Command $SERVER_ROOT/lsphp71/bin/lsphp

Max Idle Time: Đặt -1 nếu dùng Opcache, hoặc điều chỉnh thời gian tự tắt của Process PHP

Memory Soft Limit (bytes): Max RAM của VPS (ở đây mình đặt 2047M)

Memory Hard Limit (bytes): Tương Tự

Process Soft Limit: Giới hạn số process, ở đây mình để 1000

Process Hard Limit: 1500

lsphp71

Lưu lại, nó sẽ hiện như vậy

Chuyển qua

Server Configuration > Script Handler

Nhấn Edit ở cái sẵn có, sửa lại Handler Name thành External Applications đã đặt ở trên – lsphp71, lưu lạilsphp71

Tương tự Apache, mỗi khi thực hiện thay đổi cài đặt cần reload lại services để nó hoạt động, nhấn vào nút reload bên cạnh LSWS PID ở cạnh phải.

Kiểm tra nó đã đổi qua PHP71 chưa bằng cách truy cập vào

http://IP:8088/phpinfo.php

phpinfo lsws71

 

MỘT SỐ CẤU HÌNH NÂNG CAO

General – Tuning

Number of Workers

Tùy chọn nhập: Số thật

Đây là số lượng tiến trình (Worker Process) mà OLS sẽ sử dụng. Mặc định là 1, giới hạn tối đa là 16. Mỗi tiến trình có thể sẽ sử dụng 100% của 1 CPU core để hoạt động. Bạn có thể thiết lập nó bằng tổng số core đang có trên VPS, nhưng mình vẫn khuyên là giữ trống 1 phần cho các tiến trình của PHP hay MySQL. Hoặc để yên 1 cũng được vì OLS rất nhẹ và nhanh khi xử lý HTTP Request.

Memory I/O Buffer

Tùy chọn nhập: Số thật

Đây là lượng bộ nhớ tối đa dùng để chứa nội dung tạm cho các truy vấn hay các nội dung động. Một khi đã sử dụng hết lượng bộ nhớ này, OLS sẽ bắt đầu sử dụng “Swapping Directory” – Chậm hơn, IOP thấp hơn > giảm hiệu năng

Use Client IP in header

Tùy chọn nhập: Chọn 1 trong các mục

Nếu đang sử dụng các loại proxy bất kì như Varnish Cache, Haproxy hay ngay cả Cloudflare hoặc các proxy Anti-DDOS thì bạn sẽ cần kích hoạt tùy chọn này để có thể lấy được IP thật của người dùng, tránh trường hợp tự block chính mình hay dải IP của Cloudflare bị block khiến mọi người không truy cập được.

Index files

Tùy chọn tên file và thứ tự của Index, như Index.html, index.php, defaults.html….

Smart Keep-Alive

Nếu Max Keep-Alive Requests có giá trị lớn hơn 1 (bật Keep-Alive) thì Smart Keep-Alive có thể kích hoạt, Giúp giữ kết nối (keep-alive) với các kết nối đến file CSS, JS, Ảnh, Video…. còn tắt keep-alive đổi với các kết nối đến trang html. Vì sẽ tốt hơn nếu giữ 1 kết nối keep-alive cho những file tĩnh (khá nhiều) và một kết nối không bật keep-alive cho các dữ liệu văn bản,html  (chỉ có 1 file) – Tránh trường hợp để kết nối chờ cho đến khi hết Keep-Alive Timeout.

I/O Event Dispatcher

Tùy hệ thống mà chọn thôi, Nếu dùng kernel trên 2.6 (dùng uname -r để biết) thì có thể chọn epoll.

Max Cached Small File Size và Total Small File Cache Size

Những file tĩnh có dung lượng nhro hơn Max Cached Small File Size sẽ được lưu trữ ở memory buffer cache. Và tổng dung lượng sẽ không vược quá Total Small File Cache Size.

Còn file lớn sẽ chứa ở NMAP.

Extarnel APP

External APP > lsphp71 > Max Idle Time

Giữ giá trị ở -1 hoặc để trống nếu sử dụng Opcache. Server có thể lấy lại lượng tài nguyên nếu cần thiết nên không phải quá quan tâm về việc nó sống lâu quá.

External APP > lsphp71 > Memory Soft & Hard Limit

Opcache sẽ sử dụng lượng bộ nhớ được cấp tối đa cho PHP để chứa dữ liệu. Nhưng nếu PHP cần lượng bộ nhớ + bộ nhớ cho Opache lớn hơn giới hạn, thì nó sẽ gây lỗi 503/out of memory.

Nhớ chỉnh thêm ở memory_limit trong file php.ini cho phù hợp nữa

External APP > lsphp71 > Process Soft & Hard Limit

Giới hạn tổng số tiến trình có thể được tạo ra khi hoạt động.

Một số giá trị tinh chỉnh mẫu

Mình đưa ra một số giá trị mẫu để tham khảo. Ở phần Worker Process, sử dụng công thức [tổng số core]/2 để tính toán sử dụng.

General

Number of Workers: 2

Memory I/O Buffer : 120M

Index Files: index.html index.php

Tuning

I/O Event Dispatcher: epoll (Linux kẻnel 2.6+)

Default SHM Directory: /dev/shm

Smart Keep-Alive: Yes

Send Buffer Size (bytes): 65535

Receive Buffer Size (bytes): 65535

Max Cached Small File Size (bytes): 16384

Total Small File Cache Size (bytes): 40M

Max MMAP File Size (bytes): 512K

Total MMAP Cache Size (bytes): 80M

External App

Max Connections: 50

Environment :

PHP_LSAPI_MAX_REQUESTS=5000
PHP_LSAPI_CHILDREN=50

Memory Soft Limit (bytes): 2047M

Memory Hard Limit (bytes): 2047M

Process Soft Limit: 1000

Process Hard Limit: 1500

Article Categories:
Code/Web
    http://linholiver.com

    https://linholiver.com/diary/about/