Trước tiên, mình xin giới thiệu một chút về Tengine cho một số bạn có thể chưa biết:
Tengine là một máy chủ web được khởi tạo bởi Taobao (alibaba) , trang web thương mại điện tử lớn nhất ở Châu Á. Nó dựa trên máy chủ Nginx HTTP và có nhiều tính năng nâng cao.
Tengine đã được chứng minh là hoạt động rất ổn định và hiệu quả trên một số trang web trong số 100 trang web hàng đầu trên thế giới, bao gồm taobao.com và tmall.com . Và trong đó có cả hệ sinh thái của binance đều sử dụng Tengine.
Đây là máy chủ phổ biến được sử dụng của các công ty trung quốc.
Tengine là một dự án máy chủ web do Taobao.com khởi xướng. Trên nền tảng của Nginx, nó bổ sung nhiều chức năng và tính năng nâng cao cho nhu cầu của các trang web có lưu lượng truy cập cao. Mục tiêu là tạo ra một nền tảng Web hiệu quả, ổn định, an toàn và dễ sử dụng.
Sở hữu tính năng cơ bản của máy chủ HTTP
- Xử lý tệp tĩnh, tệp chỉ mục và lập chỉ mục tự động, mở bộ nhớ cache của bộ mô tả tệp.
- Sử dụng bộ nhớ cache để tăng tốc reserve proxy, cân bằng tải đơn giản và khả năng chịu lỗi cao.
- Hỗ trợ tăng tốc bộ nhớ cache cho các dịch vụ FastCGI, uwsgi, SCGI và memcached từ xa.
- Kiến trúc mô-đun.Trong bộ lọc SSI, một trang chứa nhiều SSI, nếu được xử lý qua FastCGI hoặc reserve proxy, có thể được xử lý song song.
- Hỗ trợ SSL, TLS SNI…
Các tính năng đặc biệt của máy chủ Tengine
- Kế thừa tất cả các tính năng của Nginx , tương thích 100% với cấu hình Nginx. Nếu bạn đã dùng Nginx rồi thì chuyển sang Tengine cở bản là không khách biệt nhiều
- Hỗ trợ tải mô-đun động – Dynamic Module Loading Support (DSO). Việc thêm một mô-đun không còn yêu cầu biên dịch lại toàn bộ Tengine.
- Hỗ trợ giao thức SPDY v3, tự động phát hiện yêu cầu SPDY và yêu cầu HTTP của cùng một cổng.
- Luồng tải lên máy chủ phụ trợ HTTP hoặc máy chủ FastCGI, điều này làm giảm đáng kể áp lực I / O của máy.
- Khả năng cân bằng tải mạnh mẽ hơn, bao gồm mô-đun consistent hashing và session retention modules , cũng có thể thực hiện kiểm tra tình trạng hoạt động trên các máy chủ back-end và tự động chuyển sang trực tuyến và ngoại tuyến theo trạng thái máy chủ.
- Hỗ trợ cơ chế lọc đầu vào. Sẽ thuận tiện hơn khi viết tường lửa ứng dụng Web bằng cách sử dụng cơ chế này.
- Hỗ trợ cài đặt số lần thử lại proxy, memcached, fastcgi, scgi, uwsgi khi backend bị lỗi.
- Hỗ trợ ngôn ngữ kịch bản động Lua. Chức năng mở rộng rất hiệu quả và đơn giản.
- Hỗ trợ nhật ký ở dạng pipe line và nhật ký hệ thống (local và remote) và lấy mẫu nhật ký.
- Hỗ trợ thu thập trạng thái đang chạy của Tengine theo các từ khóa được chỉ định (tên miền, url, v.v.).
- Kết hợp các yêu cầu truy cập của nhiều tệp CSS và JavaScript vào một yêu cầu.
- Tự động xóa các ký tự khoảng trắng và nhận xét để giảm kích thước trang.
- Tự động thiết lập số lượng tiến trình và ràng buộc mối quan hệ CPU theo số lượng CPU.
- Giám sát tải và chiếm dụng tài nguyên của hệ thống để bảo vệ hệ thống.
- Hiển thị thông tin lỗi thân thiện hơn cho nhân viên vận hành và bảo trì, thuận tiện cho việc xác định vị trí máy bị lỗi.
- Mô-đun powerful anti-attack (giới hạn tốc độ truy cập – access speed limit) mạnh mẽ hơn.
- Các tham số dòng lệnh thuận tiện hơn, chẳng hạn như liệt kê danh sách mô-đun đã biên dịch, hướng dẫn được hỗ trợ, v.v.;
Và còn rất nhiều tính năng khác và bạn có thể đọc trong tài liệu của họ tại đây.

Cách cài đặt Tengine trên Ubuntu 18.04 và 20.04
Trước tiên hãy chuẩn bị những package yêu cầu bắt buộc:
- OpenSSL library
- Zlib library
- PCRE library
- GCC Compiler
sudo apt-get install gcc build-essential
sudo apt-get install libpcre3 libpcre3-dev
sudo apt-get install zlib1g-dev
sudo apt-get install openssl libssl-dev
Bước 1: Tải Tengine phiên bản mới nhất
Bạn truy cập vào tengine.tabao.org để tải phiên bản mong muốn tại đây mình sử dụng phiên bản mới nhất ở thời điểm mình viết bài.
wget http://tengine.taobao.org/download/tengine-2.3.3.tar.gz
Bước 2: Giải nén và cài đặt từ source code
tar -zxvf tengine-2.3.3.tar.gz
cd tengine-2.3.3
sudo ./configure
sudo make
sudo make install
Bước 3: Khởi động tengine
Mặc định, Tengine được cài đặt tại thư mục /usr/local/nginx.
sudo /usr/local/nginx/sbin/nginx
Kiểm tra phiên bản tengine và cấu hình nginx
sudo /usr/local/nginx/sbin/nginx -v
sudo /usr/local/nginx/sbin/nginx -t
Bước 4: Thiết lập Virtualhost
Về mặt cấu trúc, các thiết lập virtualhost trong Tengine giống với Nginx.
Để dễ hình dung, chúng ta tạo 2 folders sites-available và sites-enabled
sudo mkdir /usr/local/nginx/sites-available
sudo mkdir /usr/local/nginx/sites-enabled
Các file virtualhost cứng sẽ được lưu trữ trong thư mục sites-available, các link mềm sẽ nằm trong thư mục sites-enabled.
Thay thế file nginx.conf bởi file mẫu nginx.conf.default trong thư mục conf
sudo cp nginx.conf.default nginx.conf
Thêm dòng sau vào file nginx.conf (thêm trong tag http {} )
include /usr/local/nginx/sites-enabled/*;
Sau đó bạn có thể cấu hình website như dùng Nginx
Bước 5: Chạy tengine dưới dạng dịch vụ hệ thống
sudo touch /etc/systemd/system/nginx.service
sudo chmod 655 /etc/systemd/system/nginx.service
Sao chép-dán nội dung sau vào /etc/systemd/system/nginx.service tệp:
[Unit] Description=tengine - A high performance web server and a reverse proxy server. Fork of nginx. After=network.target [Service] Type=forking PIDFile=/usr/local/nginx/logs/nginx.pid ExecStartPre=/usr/local/nginx/sbin/nginx -t -q -g 'daemon on; master_process on;' ExecStart=/usr/local/nginx/sbin/nginx -g 'daemon on; master_process on;' ExecReload=/usr/local/nginx/sbin/nginx -g 'daemon on; master_process on;' -s reload ExecStop=-/sbin/start-stop-daemon --quiet --stop --retry QUIT/5 --pidfile /run/nginx.pid TimeoutStopSec=5 KillMode=mixed [Install] WantedBy=multi-user.target
Vui lòng kiểm tra kỹ dòng in đậm ở trên về PIDFile. Bây giờ, hãy chỉnh sửa cấu hình tengine:
sudo nano /usr/local/nginx/conf/nginx.conf
Tìm mục sau:
#pid log / nginx.pid;
Bỏ comment:
pid log / nginx.pid;
Sau khi thay đổi ngine.conf , hãy chạy lệnh sau để reload lại daemon system
sudo systemctl daemon-reload
sudo systemctl status nginx
Bạn có thể test thử Tengine:
curl -I 127.0.0.1
HTTP/1.1 200 OK
Server: Tengine/2.3.3
Date: Fri, 17 Feb 2022 20:12:50 GMT
Content-Type: text/html
Content-Length: 555
Last-Modified: Fri, 17 Feb 2022 17:25:45 GMT
Connection: keep-alive
ETag: "5b770519-22b"
Accept-Ranges: bytes
Setup Tengine khởi động khi hệ thống reboot
sudo systemctl is-enabled nginx.service
Sau khi khởi động lại, hãy kiểm tra từ trình duyệt. Bạn sẽ có thể thấy màn hình sau:

Phần kết luận
Cài đặt Tengine từ mã nguồn tương đối dễ dàng.
Các bước Chung là:
- Tải xuống phiên bản mới nhất của mã nguồn Tengine (hoặc chỉ sao chép từ repo của họ)
- Cấu hình
- Thực hiện cài đặt
- Thiết lập như dịch vụ hệ thống