Cài đặt OpenLiteSpeed
Tác giả: Dương Nguyễn Phú Cường
Ngày đăng: 2 ngày trước
Lượt xem: 39
Cài đặt OpenLiteSpeed tại Amazon EC2
Xin chào! Hôm nay mình sẽ bắt đầu kể về quá trình di dời trang web của mình sang dịch vụ Elastic Computing Cloud (EC2) thuộc Amazon Web Services.
Mình xác định sẽ sử dụng một phần mềm server nhẹ và nhanh nhất có thể tại đó. Trước đây mình từng cài đặt Apache và NGINX, mình thấy được một số ưu điểm và nhược điểm của chúng:
Tiếp theo, mời các bạn đọc tiếp cách tạo virtual host và listener trên phần mềm OpenLiteSpeed rất thú vị này. Mọi người hãy chia sẻ bài này nhiệt tình vào, càng nhiều càng tốt, để mình có thêm động lực viết nhiều hơn nha. Cảm ơn các bạn rất nhiều!
Nguồn: https://noisystream.lq2music.com/2017/11/cai-dat-openlitespeed-tai-amazon-ec2/
- Apache: Rất linh hoạt trong việc sử dụng module, thiết lập quyền truy cập và viết lại (rewrite) đường dẫn theo từng cấp thư mục. Đối với những người đã quen với hosting chia sẻ (shared hosting), file
.htaccess
là một thứ vô cùng quen thuộc và đó là một file thiết lập của Apache áp dụng ở thư mục trong website. Tuy nhiên, Apache phục vụ nội dung tĩnh chậm. Có thể giải quyết nhược điểm này bằng cách tắt (ngừng kích hoạt) bớt module không sử dụng đến, nhưng cách đó không triệt để. - NGINX: Chỉ ở các bản mới đây (từ 1.9.11 trở đi), NGINX mới có thể kích hoạt module một cách linh hoạt giống Apache. Nó tỏ ra kém linh hoạt hơn Apache trong việc thiết lập quyền truy cập và viết lại đường dẫn, tất cả thiết lập đó đều phải được liên kết với file
nginx.conf
(cụ thể là liên kết qua dònginclude
), và chỉ được áp dụng sau khi khởi động lại NGINX. Bù lại, NGINX phục vụ nội dung tĩnh cực kì nhanh. - Cả hai đều có module đệm (cache) riêng, nhưng chưa có ai sử dụng các module đó cho việc lưu trữ tạm thời các kết quả xử lí của PHP hay các ngôn ngữ khác sử dụng trình thông dịch (Python, Ruby, JavaScript,…). May mắn là đối với PHP, người ta đã cung cấp một số gói mở rộng (extension) để ghi đệm các kết quả của nó như APC, OPcache, Memcached,… Hoặc, có một phần mềm cache độc lập tên là Varnish, cực kì tốt cho các server phục vụ nhiều nội dung thay đổi thường xuyên.
- Không hỗ trợ đầy đủ file
.htaccess
. Các file.htaccess
phải được ghi đường dẫn đầy đủ trong câu lệnhrewriteFile
ghi tại mục Contexts thuộc phần cài đặt virtual host. Chắc chắn các dòngRewriteCond
vàRewriteRule
trong các file.htaccess
là có thể đọc được và chạy được, còn những dòng khác thì chưa chắc. Hơn nữa, sau khi cập nhật file.htaccess
, người dùng phải khởi động lại OpenLiteSpeed. Điều này khá giống với NGINX. Chi tiết sẽ được đề cập trong một bài khác. - Không chứa sẵn module ModSecurity. Đó là một module tường lửa phổ biến cho Apache (và mới đây còn được phát triển cho NGINX). Bù lại OpenLiteSpeed có thể chống chịu DDoS tốt, lại xử lí rất nhanh, đặc biệt là khi bộ đệm riêng của nó được bật. Bộ đệm này hoạt động giống Varnish.
- Tạo máy chủ EC2 chạy hệ điều hành Ubuntu. Mình đã từng thử cài trên hệ điều hành Amazon Linux (vốn được phát triển từ CentOS) nhưng lỗi xuất hiện trong quá trình biên dịch. Trên trang chính thức của OpenLiteSpeed chỉ có hướng dẫn cài đặt cho CentOS và Debian/Ubuntu.
- Sử dụng PuTTY để kết nối và điều khiển instance mới qua cổng SSH.
- Cài đặt OpenLiteSpeed trên hệ điều hành Ubuntu.
- Cài đặt tài khoản dùng để đăng nhập vào trang admin của riêng OpenLiteSpeed.
- Cài đặt PHP cho OpenLiteSpeed. Lí do là OpenLiteSpeed sử dụng một bộ dịch PHP riêng, chạy nhanh hơn nhiều so với bộ dịch PHP trong các gói PHP thường và PHP-FPM.
Việc 1: Tạo máy chủ EC2 chạy hệ điều hành Ubuntu
Bạn đăng nhập vào tài khoản AWS, mở dịch vụ EC2. Sau đó bạn mở menu chọn vùng như trong hình và chọn một vùng. Bạn chọn vùng nào, instance EC2 được tạo sau đây sẽ nằm ở vùng đó. Ở danh mục bên trái, bạn ấn chọn mục nhỏ Instances. Nhìn sang bảng bên phải, có một nút Launch Instance màu xanh xuất hiện. Ấn vào nút đó để bước vào quá trình tạo instance.Bắt đầu từ đây, bạn cần để ý kĩ nhãn Free tier eligible, nghĩa là đạt điều kiện sử dụng miễn phí trong 12 tháng đầu sau khi tạo tài khoản AWS.
Màn hình sau đó sẽ được mở rộng ra, yêu cầu bạn chọn một ảnh đĩa (image) chứa sẵn hệ điều hành để áp dụng lên instance. Ở đây, bạn chọn ảnh đĩa chứa Ubuntu: Tìm dòng ghi tên Ubuntu Server, rồi ấn nút Select tại dòng đấy.
Tiếp theo là chọn một cấu hình. Bạn ấn chọn một cấu hình phù hợp, đọc kĩ số vCPU (nhân CPU ảo) và Memory (lượng bộ nhớ RAM, tính bằng gigabyte). Cột Instance Storage thì không cần quan tâm lắm, nó chỉ ghi số liệu chi tiết ở mấy cấu hình lớn, có giá chạy cao. Sau đó ấn Next: Configure Instance Details.
Đến đây, bạn chỉ cần chú ý dòng Number of instances (số lượng instance) được ghi là 1. Các mục khác không cần quan tâm lúc này. Ấn Next: Add Storage để tạo ổ đĩa.
Ở phần tạo ổ đĩa, có ba phần bạn điều chỉnh được: Size (kích thước, tính bằng gigabyte), Volume Type (loại ổ đĩa), Delete on Termination (loại bổ ổ đĩa khi instance tương ứng được xoá/terminate).
Đối với Free tier của AWS, bạn được miễn phí đến 30GB ổ đĩa SSD thường (General Purpose) hoặc ổ đĩa cứng (ổ đĩa từ tính, magnetic). Loại ổ đĩa SSD Provisioned IOPS là ổ đĩa luôn được cố định một tốc độ đọc/ghi theo đơn vị IOPS (số lần ghi/đọc trong một giây).
Sau khi điều chỉnh thông số ổ đĩa, ấn Next: Add Tags để đặt tên cho instance.
Đến đây, thực chất là bạn đi tạo thẻ (tag) cho instance để dễ tìm kiếm về sau. Bạn tiến hành gán thẻ tên (Name tag) cho instance: Ấn click to add a Name tag để tạo thẻ đó, sau đó gõ tên vào ô Value. Ấn Next: Configure Security Group để tạo security group (“nhóm an ninh”), cũng là nơi mở port (cổng) cho instance sắp tạo.
Gợi ý: Hãy đọc bài viết bổ trợ này để biết security group là gì và cách cài đặt ra sao. Phần Configure Security Group này cho phép bạn tạo các luật mở cổng inbound để bạn kết nối được đến máy ảo.
Bạn sẽ thấy, trong danh sách luật mở cổng tại bước này, đã có sẵn một luật mở cổng SSH (với số thứ tự cổng là 22) cho mọi địa chỉ IPv4 kết nối đến nó. Hãy thay đổi luật đó nếu bạn muốn giới hạn lại, chỉ cho một mình máy bạn có thể kết nối được qua cổng đó trên máy ảo.
Ấn nút Review and Launch để xem lại các thiết lập. Thấy ổn rồi thì ấn nút Launch thôi.
AWS sẽ hỏi về cặp khoá (key pair), được sử dụng khi bạn tạo kết nối SSH đến máy ảo. Trong cặp khoá này có khoá công khai (public key) và khoá cá nhân (private key), AWS sẽ lưu khoá công khai, còn bạn thì phải giữ khoá cá nhân. Tại đây, bạn chọn Create a new key pair để tạo một cặp khoá mới, đặt tên cho cặp khoá, tải (download) khoá cá nhân về. Bạn sẽ nhận được một file .pem
chứa khoá cá nhân dùng để kết nối SSH. Cuối cùng, ấn Launch Instances để AWS tạo máy ảo mới.
Việc 2: Sử dụng PuTTY để kết nối và điều khiển máy ảo qua giao diện dòng lệnh, qua cổng SSH
Chuẩn bị- Tải file
putty.zip
từ trang này vào máy. Giải nén để thấy các file thực thi. - Tạo file
.ppk
(phù hợp với PuTTY) từ file.pem
bạn tải về. Bạn mở PuTTYgen (puttygen.exe
) lên, nhìn vào mục Type of key to generate và chọn RSA hoặc SSH-2 RSA tại đó. Ấn Load, một bảng duyệt chọn file xuất hiện, bạn nhớ chọn All files (*.*) để hiển thị tất cả các file. Tìm chọn file.pem
bạn đã tải về, rồi ấn Open. Cuối cùng, ấn Save private key để lưu khoá cá nhân vào file.ppk
. Một hộp thoại xuất hiện, hỏi Bạn có lưu khoá này mà không kèm theo passphrase (mật khẩu) không? Bạn chọn Yes (có). Lưu lại file.ppk
và đóng PuTTYgen. - Ghi lại địa chỉ IPv4 của instance: Bạn mở lại dịch vụ EC2 trên trình duyệt web, chọn mục Instances. Chọn instance bạn mới tạo và cần kết nối, xem trạng thái của nó tại Instance State và Status Checks. Nếu Instance State là running (đang chạy), Status Checks là 2/2 checks passed thì instance của bạn đã sẵn sàng. Nhìn vào phần màn hình Description ở phía dưới. Địa chỉ IPv4 hiện tại của instance được ghi tại dòng IPv4 Public IP.
.ppk
chứa khoá cá nhân. Bạn hãy mở PuTTY (putty.exe
) lên. Cửa sổ PuTTY Configuration xuất hiện như hình dưới. Chú ý mục Session đang được chọn trong ô Category như hình sau. Nhìn vào phần trên của mục này.
Ở ô Host Name, bạn điền như thế này: ubuntu@IPv4
Trong đó, IPv4 bạn thay bằng địa chỉ IPv4 mà bạn ghi lại được lúc chuẩn bị.
Tại ô Port, bạn để nguyên số thứ tự là 22 (chính là cổng SSH đã được đề cập ở việc 1). Ở Connection type (loại kết nối), bạn để nguyên là SSH.
Tiếp theo, trong ô Category, mở mục SSH, chọn mục nhỏ Auth như hình sau.
Tại dòng Private key file for authentication, bạn ấn nút Browse để tìm chọn đúng file .ppk
bạn đã chuẩn bị.
Để khỏi phải làm lại các bước trên trong mỗi lần kết nối SSH, bạn quay lại mục Session, nhập tên tuỳ ý cho thiết lập đã tạo vào ô Saved Sessions rồi ấn Save. Tên thiết lập sẽ xuất hiện trong danh sách ở dưới. Lần tới kết nối SSH tới máy ảo, bạn chỉ cần chọn tên thiết lập trong danh sách đó rồi ấn nút Load.
Ấn nút Open để thực hiện kết nối đến máy ảo qua cổng SSH (22).
Việc 3: Cài đặt OpenLiteSpeed
Chú ý
Khi bạn sử dụng PuTTY để kết nối đến máy ảo qua cổng SSH, nếu bạn thấy bên trong cửa sổ hiện ra tương tự dưới đây, thì bạn đã sẵn sàng làm việc rồi đó.
- Việc này yêu cầu bạn sử dụng giao diện dòng lệnh (terminal) của Linux. Bạn cần nắm được ý nghĩa các câu lệnh được viết ở đây. Chúng đều là các lệnh sử dụng trong Ubuntu.
- Phiên bản Ubuntu Server được sử dụng ở đây là 16.04 LTS (Long Term Support, hỗ trợ dài hạn). Đối với phiên bản khác, lệnh thực hiện có thể khác.
- Để tránh lạc lối (không biết được bản thân đang ở thư mục nào trong hệ thống), hãy gõ lệnh
pwd
. Bạn sẽ nhận được đường dẫn đầy đủ (tuyệt đối) đến thư mục hiện thời. Ngoài ra, để xem danh sách thư mục và file bên trong thư mục hiện tại, bạn sử dụng lệnhls
. Thậm chí bạn có thể mở rộng lệnh đó thànhls -l
để xem user nào và group nào đang sở hữu từng thứ một, quyền được áp dụng cho từng thứ một, thậm chí là dò được đích đến của symlink (symbolic link, tương tự shortcut trong Windows).
Using username "ubuntu". Authenticating with public key "imported-openssh-key" Welcome to Ubuntu 16.04.3 LTS (GNU/Linux 4.4.0-1039-aws x86_64) * Documentation: https://help.ubuntu.com * Management: https://landscape.canonical.com * Support: https://ubuntu.com/advantage Get cloud support with Ubuntu Advantage Cloud Guest: http://www.ubuntu.com/business/services/cloudNhư một thói quen, hãy đọc hai dòng tiếng Anh sau đoạn đó. Chúng thông báo số package (gói) đã cài vào máy ảo mà có cập nhật mới.
- Đây là dòng thông báo số gói có cập nhật:
# packages can be updated.
Trong đó dấu#
là con số cụ thể. - Còn đây là dòng thông báo số cập nhật về an ninh và bảo mật:
# updates are security updates.
sudo apt-get update sudo apt-get upgradeĐôi khi có một số cập nhật áp dụng cho chính hệ điều hành Ubuntu, lệnh thứ hai không thể cập nhật được. Lúc này bạn chạy lệnh sau để cài đặt các cập nhật đó.
sudo apt-get dist-upgradeCó thể sau quá trình cập nhật, có thông báo bằng tiếng Anh về một số gói bị thừa, không sử dụng đến. Khi ấy bạn chạy lệnh sau để tự động gỡ bỏ chúng.
sudo apt-get autoremoveGiờ đến phần việc chính. Vì OpenLiteSpeed không có sẵn trong danh sách repository ban đầu của Ubuntu nên bạn cần bổ sung repository của OpenLiteSpeed vào. Và đây là đoạn lệnh để làm việc đó.
sudo su wget -O - http://rpms.litespeedtech.com/debian/enable_lst_debain_repo.sh | bash exitCụ thể ở đoạn lệnh trên:
- Lệnh đầu tiên cho phép bạn lấy tạm thời quyền của
root
để chạy câu lệnh tiếp theo, khi đó bạn sẽ thấy user hiện thời đang từubuntu
(lúc mới đăng nhập) chuyển thànhroot
. - Câu lệnh thứ hai được nối ghép từ hai lệnh sử dụng
wget
(tải file từ bên ngoài) vàbash
(thực thi file kịch bản), trong đó kết quả (nội dung file) màwget
lấy được sẽ được truyền chobash
để thực thi các lệnh bên trong. - Lệnh cuối cùng là để thoát khỏi quyền của
root
, chỉ khi bạn gõ lệnh đó lần thứ hai thì bạn mới thật sự thoát khỏi server.
sudo apt-get install openlitespeedTới đây bạn cần đợi để máy ảo cài xong OpenLiteSpeed. Đến khi bạn nhìn thấy hai dòng tương tự như sau thì bạn đã cài đặt thành công:
[OK] The startup script has been successfully installed! [OK] LiteSpeed: pid=#.Dòng thứ nhất thông báo OpenLiteSpeed đã được thiết lập chạy tự động (autorun) vào mỗi lần Ubuntu khởi động. Dòng dưới ghi mã số tiến trình (process ID) của OpenLiteSpeed. Mã số đó chính là được thay thế cho dấu
#
mà mình viết ở trên.
Tuy nhiên, bạn nên kiểm tra lại trạng thái của OpenLiteSpeed, để xem nó đang chạy chưa. Lệnh đây:
sudo /etc/init.d/lsws statusSau quá trình cài đặt ở trên thì mỗi khi được chạy, OpenLiteSpeed sẽ sử dụng hai cổng:
- Cổng 7080: Dành cho trang admin riêng, truy cập được bằng trình duyệt web và có giao diện đồ hoạ. Bạn sẽ thực hiện hầu hết các thao tác thiết lập OpenLiteSpeed tại trang đó.
- Cổng 8088: Dùng để kiểm tra khả năng phục vụ nội dung tĩnh của OpenLiteSpeed. Tại đây chứa trang mẫu cho thấy bạn đã cài đặt thành công OpenLiteSpeed, kèm theo một số thứ thú vị khác liên quan.
Việc 4: Cài đặt tài khoản đăng nhập vào trang admin của OpenLiteSpeed
Quay trở lại PuTTY, bạn chạy lệnh sau để cài đặt tài khoản.sudo sh /usr/local/lsws/admin/misc/admpass.shSau đó, bạn nhập username, rồi nhập mật khẩu mới, nhập lại mật khẩu đó lần nữa. Và thế là xong.
Lưu ý:
Bạn có thể sử dụng luôn tài khoản mới để thực hiện đăng nhập tại trang đăng nhập của OpenLiteSpeed. Khi đăng nhập thành công, bạn sẽ nhìn thấy giao diện thiết lập của OpenLiteSpeed rất chi là chuyên nghiệp như sau:
- Lúc nhập mật khẩu, bạn không thể nhìn thấy phần bạn đã nhập vào, trong cửa sổ cũng không có động tĩnh gì cho đến khi bạn ấn Enter.
- Nếu có một lí do nào đó bạn không còn đăng nhập được nữa, bạn cũng sẽ phải dùng lệnh trên để cài đặt lại tài khoản.
Việc 5: Cài đặt PHP cho OpenLiteSpeed
LiteSpeed (cũng như OpenLiteSpeed) sử dụng một bộ thông dịch PHP riêng, tên là LSPHP (LiteSpeed PHP). Nó hoàn toàn tương thích với các lệnh của PHP y như các gói PHP thường và PHP-FPM, nhưng hoạt động nhanh hơn nhiều. Sau khi cài xong OpenLiteSpeed như ở việc 3, nó đã cài sẵn LSPHP 7.0 tương ứng với PHP 7.0. Bạn chỉ cần thực hiện việc 5 này nếu bạn muốn sử dụng phiên bản PHP khác. Ví dụ, bạn cần cài đặt PHP 7.1 cùng với một số gói mở rộng liên quan. Cách thực hiện việc 5 này khá đơn giản. Bạn quay trở lại cửa sổ dòng lệnh của PuTTY, rồi chạy lệnh sau để cài đặt PHP 7.1 kèm theo một số gói mở rộng:sudo apt-get install lsphp71 lsphp71-common lsphp71-mysql lsphp71-curl lsphp71-dbgGiới thiệu các gói được cài đặt bởi lệnh trên:
lsphp71
: Phần chính của PHP 7.1.lsphp71-common
: Một số file chung được sử dụng bởi các chương trình dựa trên PHP 7.1.lsphp71-mysql
: Phần mở rộng của PHP 7.1 giao tiếp với MySQL.lsphp71-curl
: CURL dành cho PHP 7.1, gồm các hàm curl.lsphp71-dbg
: Phần mở rộng sửa lỗi cho PHP 7.1.
sudo apt-get install lsphp71-opcacheGói trên sau khi được cài xong là chạy luôn, thậm chí còn chạy tốt với phiên bản PHP tương ứng. Hiếm khi nào bạn phải tinh chỉnh lại nó.
Ở đây là bạn cài PHP 7.1, tương ứng với số
Chuyển sang trình duyệt đang mở trang admin của OpenLiteSpeed, bạn mở mục Server Configuration trong bảng bên trái. Nhìn sang bên phải, bạn tìm ấn tab External App. Sau đó ấn nút Add để bổ sung phiên bản PHP.
Sau đó, ở dòng Type, bạn chọn là LiteSpeed SAPI App. Ấn nút Next để chuyển sang phần tiếp theo.
Đây là phần bạn được chuyển đến.
Tìm các dòng này và điều chỉnh (điền) như sau:
71
trong tên các gói trên. Nếu bạn cài PHP 5.6 chẳng hạn, thì bạn đổi phần số này thành 56
. Bạn thay thế tương tự đối với các bước sau.- Name (Tên):
lsphp71
- Address (Địa chỉ socket):
uds://tmp/lshttpd/lsphp.sock
- Max Connections:
35
- Initial Request Timeout (secs):
60
- Retry Timeout (secs):
0
- Command (lệnh chạy PHP):
$SERVER_ROOT/lsphp71/bin/lsphp
Biến
Sau đó bạn ấn nút Save như được chỉ ở hình trên để lưu lại thiết lập tại tab External App.
Tiếp theo, bạn ấn vào tab Script Handler, tìm đến dòng của PHP đã có tại đấy, rồi ấn nút Edit (Sửa) trên dòng đó.
Đến đây, bạn sửa dòng Handler Name thành $SERVER_ROOT
chứa đường dẫn tuyệt đối của OpenLiteSpeed trong máy ảo. Bạn sẽ nhìn thấy nó rất nhiều trong quá trình thiết lập OpenLiteSpeed sau này. Nó nhằm hạn chế rất nhiều việc viết đi viết lại nguyên đường dẫn tuyệt đối, và cũng để phòng trường hợp OpenLiteSpeed được cài đặt lại ở một thư mục khác.lsphp71
(chính là tên đã điền ở tab External App). Ấn nút Save để lưu lại.
Xong rồi! Tuy nhiên…
Mọi thay đổi thiết lập trên trang admin của OpenLiteSpeed chưa được áp dụng ngay, cho đến khi bạn khởi động lại OpenLiteSpeed. Nút khởi động lại có màu xanh lá cây, nằm ngay bên cạnh phần LSWS PID ghi process ID hiện thời của OpenLiteSpeed. Ấn nút đó, bạn sẽ được hỏi: “Bạn có chắc chắn muốn khởi động lại LiteSpeed không?” Ấn Go để khởi động lại OpenLiteSpeed.
Sau khi khởi động lại, bạn được đưa trở lại đúng trang thiết lập hiện thời.
Xong xuôi!
Đến đây, bạn đã cài đặt hoàn thiện OpenLiteSpeed cùng với phiên bản PHP bạn muốn. Đây là các việc nên làm để bảo đảm an toàn cho máy ảo sau mỗi lần thiết lập OpenLiteSpeed:- Thoát khỏi trang admin của OpenLiteSpeed: Bạn nhìn lên góc trên bên phải trang, có một nút đăng xuất (sign out), là nút thứ hai tính từ phải sang. (Nút bên phải nhất là ẩn hiện bảng chọn bên trái.) Bạn ấn nút đăng xuất đó, rồi ấn Yes để thoát khỏi trang.
- Đóng cổng 7080. Xem cách đóng cổng tại cuối bài viết này.
exitRồi sau đó, bạn đóng nốt cổng SSH (cổng 22). Đến dịp khác bạn cần điều chỉnh lại qua SSH, thì bạn mở lại cổng 22 sau.
Tiếp theo, mời các bạn đọc tiếp cách tạo virtual host và listener trên phần mềm OpenLiteSpeed rất thú vị này. Mọi người hãy chia sẻ bài này nhiệt tình vào, càng nhiều càng tốt, để mình có thêm động lực viết nhiều hơn nha. Cảm ơn các bạn rất nhiều!