Cách cài đặt LOMP Stack (OpenLiteSpeed, MySQL và PHP) trên Debian 12

theanh

Administrator
Nhân viên
OpenLiteSpeed là phiên bản nhẹ và mã nguồn mở của LiteSpeed Server do LiteSpeed Technologies phát triển. Nó hỗ trợ các quy tắc Apache Rewrite, HTTP/2 và HTTP/3 cùng với các giao thức TLS v1.3 và QUIC. Nó đi kèm với bảng điều khiển Quản trị dựa trên WebGUI khiến nó khác biệt so với các máy chủ khác và dễ quản lý hơn.

LOMP Stack là từ viết tắt của Linux, OpenLiteSpeed, MySQL/MariaDB và PHP. Máy chủ Litespeed được biết đến với tốc độ của chúng, đặc biệt là với PHP tích hợp bằng Giao diện lập trình ứng dụng máy chủ LiteSpeed (LSAPI). Trình thông dịch LiteSpeed PHP (LSPHP) phục vụ các trang PHP động thông qua LSAPI.

Trong hướng dẫn này, chúng ta sẽ tìm hiểu cách cài đặt Máy chủ OpenLiteSpeed trên máy Debian 12.

Điều kiện tiên quyết​


  • Máy chủ chạy Debian 12.

  • Người dùng không phải root có quyền sudo.

  • Tên miền đủ điều kiện (FQDN) như example.com trỏ đến máy chủ.

  • SELinux không cần phải bị vô hiệu hóa hoặc cấu hình để hoạt động với OpenLiteSpeed.

  • Đảm bảo mọi thứ đều được cập nhật.
Mã:
$ sudo apt update
$ sudo apt upgrade
[*]
Một số gói mà hệ thống của bạn cần.
Mã:
$ sudo apt install wget curl nano ufw software-properties-common dirmngr apt-transport-https gnupg2 ca-certificates lsb-release debian-archive-keyring unzip -y
Một số gói này có thể đã được cài đặt trên hệ thống của bạn.

Bước 1 - Cấu hình Tường lửa​

Bước đầu tiên là cấu hình tường lửa. Debian đi kèm với ufw (Uncomplicated Firewall) theo mặc định.

Kiểm tra xem tường lửa có đang chạy không.
Mã:
$ sudo ufw status
Bạn sẽ nhận được kết quả sau.
Mã:
Status: inactive
Cho phép cổng SSH để tường lửa không làm gián đoạn kết nối hiện tại khi bật nó.
Mã:
$ sudo ufw allow OpenSSH
Cho phép cả cổng HTTP và HTTPS.
Mã:
$ sudo ufw allow http
$ sudo ufw allow https
Mở các cổng liên quan đến Openlitespeed.
Mã:
$ sudo ufw allow 7080/tcp
Bật Tường lửa
Mã:
$ sudo ufw enable
Command may disrupt existing ssh connections. Proceed with operation (y|n)? y
Firewall is active and enabled on system startup
Kiểm tra trạng thái của tường lửa một lần nữa.
Mã:
$ sudo ufw status
Bạn sẽ thấy kết quả tương tự.
Mã:
Status: active
To Action From
-- ------ ----
OpenSSH ALLOW Anywhere
80/tcp ALLOW Anywhere
443 ALLOW Anywhere
7080/tcp ALLOW Anywhere
OpenSSH (v6) ALLOW Anywhere (v6)
80/tcp (v6) ALLOW Anywhere (v6)
443 (v6) ALLOW Anywhere (v6)
7080/tcp (v6) ALLOW Anywhere (v6)

Bước 2 - Cài đặt OpenLiteSpeed​

OpenLiteSpeed không cung cấp gói cho Debian 12. Do đó, chúng tôi sẽ xây dựng bản sao của mình từ mã nguồn.

Tải xuống tệp mã nguồn OpenLiteSpeed. Bạn có thể lấy liên kết đến tệp mã nguồn mới nhất từ trang tải xuống chính thức của OpenLiteSpeed.
Mã:
$ wget https://openlitespeed.org/packages/openlitespeed-1.7.18.src.tgz
Giải nén tệp.
Mã:
$ tar -zxf openlitespeed-*.tgz
Chuyển sang tệp đã giải nén thư mục.
Mã:
$ cd openlitespeed-1.7.18
Xây dựng gói máy chủ.
Mã:
$ sudo ./build.sh
Bạn có thể phải đợi khoảng 5-10 phút để quá trình hoàn tất. Bỏ qua mọi cảnh báo bạn nhận được trong quá trình này. Bạn sẽ nhận được kết quả đầu ra sau khi hoàn tất.
Mã:
[100%] Linking CXX shared library modpagespeed.so
/usr/bin/ld: warning: 140.x25519-asm-x86_64.o.o: missing .note.GNU-stack section implies executable stack
/usr/bin/ld: NOTE: This behaviour is deprecated and will be removed in a future version of the linker
[100%] Built target modpagespeed
Start to pack files.
-e Building finished, please run ./install.sh for installation.
-e You may want to update the ols.conf to change the settings before installation.
-e Enjoy.
Sau khi quá trình hoàn tất, hãy mở tệp ols.conf để chỉnh sửa.
Mã:
$ sudo nano ols.conf
Chỉnh sửa tệp như hiển thị bên dưới.
Mã:
#If you want to change the default values, please update this file.
#
SERVERROOT=/usr/local/lsws
OPENLSWS_USER=nobody
OPENLSWS_GROUP=nobody
OPENLSWS_ADMIN=navjot
[emailprotected]
OPENLSWS_ADMINSSL=yes
OPENLSWS_ADMINPORT=7080
USE_LSPHP7=yes
DEFAULT_TMP_DIR=/tmp/lshttpd
PID_FILE=/tmp/lshttpd/lshttpd.pid
OPENLSWS_EXAMPLEPORT=8088
#You can set password here
#OPENLSWS_PASSWORD=
Đừng thêm mật khẩu của bạn ở đây. Chúng tôi sẽ thiết lập mật khẩu sau bằng dòng lệnh. Sau khi hoàn tất, hãy lưu tệp bằng cách nhấn Ctrl + X và nhập Y khi được nhắc.

Bây giờ OpenLiteSpeed đã được xây dựng, hãy cài đặt nó.
Mã:
$ sudo ./install.sh
Tập lệnh cài đặt sẽ cài đặt và kích hoạt dịch vụ lsws cho máy chủ. Bạn sẽ nhận được kết quả sau khi hoàn tất.
Mã:
Updating webcache manager, please waiting ...
Downloading latest shared code tar file...
Checking tar file md5...
Removing existing shared code directory...
Extracting downloaded shared code...
Removing local shared code tar file...
Updating lscmctl script...
Done!
-e Installation finished, Enjoy!
-e Your webAdmin password is kXjWTl5j, written to file /usr/local/lsws/adminpasswd.
Khởi động máy chủ OpenLiteSpeed.
Mã:
$ sudo systemctl start lsws
Kiểm tra trạng thái của dịch vụ.
Mã:
$ sudo systemctl status lsws
? lsws.service - LSB: lshttpd Loaded: loaded (/etc/init.d/lsws; generated) Active: active (running) since Wed 2023-09-27 15:55:13 UTC; 4h 18min ago Docs: man:systemd-sysv-generator(8) Tasks: 4 (limit: 4652) Memory: 79.2M CPU: 37.823s CGroup: /system.slice/lsws.service ??64164 "openlitespeed (lshttpd - main)" ??64171 "openlitespeed (lscgid)" ??64184 "openlitespeed (lshttpd - #01)" ??64185 "openlitespeed (lshttpd - #02)"
Sep 27 15:55:11 lomp systemd[1]: Starting lsws.service - LSB: lshttpd...
Sep 27 15:55:13 lomp systemd[1]: Started lsws.service - LSB: lshttpd.
Kiểm tra phiên bản máy chủ đã cài đặt.
Mã:
$ /usr/local/lsws/bin/lshttpd -v
LiteSpeed/1.7.18 Open (BUILD built: Tue Aug 29 12:59:39 UTC 2023) module versions: lsquic 3.2.0 modgzip 1.1 cache 1.64 mod_security 1.4 (with libmodsecurity v3.0.9)

Tạo mật khẩu quản trị viên​

Bạn có thể sử dụng mật khẩu quản trị viên được cung cấp trong quá trình cài đặt. Tuy nhiên, bạn nên tạo mật khẩu của riêng mình bằng cách đặt lại mật khẩu. Chạy tập lệnh đặt lại mật khẩu.
Mã:
$ sudo /usr/local/lsws/admin/misc/admpass.sh
Bạn sẽ nhận được kết quả sau. Chọn tên người dùng và đặt mật khẩu mạnh.
Mã:
Please specify the user name of administrator.
This is the user name required to login the administration Web interface.
User name [admin]: navjot
Please specify the administrator's password.
This is the password required to login the administration Web interface.
Password:
Retype password:
Administrator's username/password is updated successfully!
Bây giờ bạn có thể sử dụng mật khẩu quản trị viên mới.

Mở http://:7080 để truy cập bảng quản trị của OpenLiteSpeed. Khi đăng nhập lần đầu, trình duyệt của bạn sẽ cảnh báo rằng kết nối của bạn không phải là kết nối riêng tư. Nhấp vào Nâng cao và nhấp vào "Chấp nhận rủi ro và Tiếp tục" (trong trường hợp Firefox) hoặc "Tiến hành đến (unsafe)" (trong trường hợp trình duyệt dựa trên Chromium). Bạn sẽ không thấy cảnh báo nữa.

Bạn sẽ thấy trang đăng nhập.


data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22450%22%20height=%22544%22%3E%3C/svg%3E


Nhập thông tin xác thực bạn đã đặt trước đó và nhấn nút Đăng nhập để tiếp tục.

Bạn sẽ thấy màn hình sau.


data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22750%22%20height=%22459%22%3E%3C/svg%3E

Bước 3 - Cài đặt MariaDB​

Debian không còn đi kèm với máy chủ MySQL nữa. Do đó, chúng tôi sẽ sử dụng MariaDB, một giải pháp thay thế MySQL. Nhưng trước khi tiếp tục, chúng tôi cần cập nhật kho lưu trữ LiteSpeed. Kho lưu trữ Litespeed được thêm qua trình cài đặt không hoạt động bình thường.

Mở tệp /etc/apt/sources.list.d/lst_debian_repo.list để chỉnh sửa.
Mã:
$ sudo nano /etc/apt/sources.list.d/lst_debian_repo.list
Thay đổi nội dung tệp bằng cách thêm Debian 11 (bullseye) vào đó. Chúng tôi không thể sử dụng Debian 12 (bookworm) cho nó vì kho lưu trữ chưa được cập nhật cho nó.
Mã:
deb http://rpms.litespeedtech.com/debian/ bullseye main
Sau khi hoàn tất, hãy lưu tệp bằng cách nhấn Ctrl + X và nhập Y khi được nhắc.

Cài đặt máy chủ MariaDB.
Mã:
$ sudo apt install mariadb-server
Dịch vụ MariaDB được tự động khởi động và chạy sau khi cài đặt.

Kiểm tra trạng thái của dịch vụ.
Mã:
$ sudo systemctl status mariadb
Bạn sẽ nhận được thông báo sau đầu ra.
Mã:
? mariadb.service - MariaDB 10.11.3 database server Loaded: loaded (/lib/systemd/system/mariadb.service; enabled; preset: enabled) Active: active (running) since Fri 2023-09-29 01:21:09 UTC; 1min 26s ago Docs: man:mariadbd(8) https://mariadb.com/kb/en/library/systemd/ Main PID: 361450 (mariadbd) Status: "Taking your SQL requests now..." Tasks: 10 (limit: 4652) Memory: 190.8M CPU: 411ms CGroup: /system.slice/mariadb.service ??361450 /usr/sbin/mariadbd
Chạy tập lệnh bảo mật MariaDB.
Mã:
$ sudo mariadb-secure-installation
Bạn sẽ được yêu cầu nhập mật khẩu gốc. Nhấn Enter vì chúng tôi chưa đặt bất kỳ mật khẩu nào cho nó.
Mã:
NOTE: RUNNING ALL PARTS OF THIS SCRIPT IS RECOMMENDED FOR ALL MariaDB SERVERS IN PRODUCTION USE! PLEASE READ EACH STEP CAREFULLY!
In order to log into MariaDB to secure it, we'll need the current
password for the root user. If you've just installed MariaDB, and
haven't set the root password yet, you should just press enter here.
Enter current password for root (enter for none):
Tiếp theo, bạn sẽ được hỏi xem bạn có muốn chuyển sang phương pháp xác thực socket Unix không. Plugin unix_socket cho phép bạn sử dụng thông tin xác thực hệ điều hành của mình để kết nối với máy chủ MariaDB. Vì bạn đã có tài khoản root được bảo vệ, hãy nhập n để tiếp tục.
Mã:
OK, successfully used password, moving on...
Setting the root password or using the unix_socket ensures that nobody
can log into the MariaDB root user without the proper authorisation.
You already have your root account protected, so you can safely answer 'n'.
Switch to unix_socket authentication [Y/n] n
Tiếp theo, bạn sẽ được hỏi xem bạn có muốn thay đổi mật khẩu root của mình không. Trên Debian 12, mật khẩu root gắn chặt với việc bảo trì hệ thống tự động, vì vậy bạn nên để nguyên. Nhập n để tiếp tục.
Mã:
... skipping.
You already have your root account protected, so you can safely answer 'n'.
Change the root password? [Y/n] n
Tiếp theo, bạn sẽ được hỏi một số câu hỏi nhất định để cải thiện tính bảo mật của MariaDB. Nhập Y để xóa người dùng ẩn danh, không cho phép đăng nhập root từ xa, xóa cơ sở dữ liệu thử nghiệm và tải lại các bảng đặc quyền.
Mã:
... skipping.
By default, a MariaDB installation has an anonymous user, allowing anyone
to log into MariaDB without having to have a user account created for
them. This is intended only for testing, and to make the installation
go a bit smoother. You should remove them before moving into a
production environment.
Remove anonymous users? [Y/n] y ... Success!
Normally, root should only be allowed to connect from 'localhost'. This
ensures that someone cannot guess at the root password from the network.
Disallow root login remotely? [Y/n] y ... Success!
By default, MariaDB comes with a database named 'test' that anyone can
access. This is also intended only for testing, and should be removed
before moving into a production environment.
Remove test database and access to it? [Y/n] y - Dropping test database... ... Success! - Removing privileges on test database... ... Success!
Reloading the privilege tables will ensure that all changes made so far
will take effect immediately.
Reload privilege tables now? [Y/n] y ... Success!
Cleaning up...
All done! If you've completed all of the above steps, your MariaDB
installation should now be secure.
Thanks for using MariaDB!
Bạn có thể vào shell MariaDB bằng cách nhập sudo mysql hoặc sudo mariadb trên dòng lệnh.

Bước 4 - Cài đặt PHP​

Vì chúng tôi đã xây dựng gói từ nguồn nên nó sẽ biên dịch và xây dựng phiên bản PHP cũ không được khuyến khích sử dụng. Bạn có thể kiểm tra thông qua lệnh sau.
Mã:
$ /usr/local/lsws/fcgi-bin/lsphp -v
PHP 5.6.40 (litespeed) (built: May 10 2023 23:03:31)
Copyright (c) 1997-2016 The PHP Group
Zend Engine v2.6.0, Copyright (c) 1998-2016 Zend Technologies
Do đó, chúng ta cần phải xây dựng và cài đặt phiên bản PHP mới nhất. Nhưng trước khi tiến hành, chúng ta cần phải cài đặt các công cụ xây dựng.
Mã:
$ sudo apt install build-essential autoconf libtool bison re2c pkg-config
Bước tiếp theo là cài đặt các gói mà quy trình xây dựng PHP yêu cầu.
Mã:
$ sudo apt install libssl-dev libsqlite3-dev zlib1g-dev libcurl4-openssl-dev libonig-dev libzip-dev libmemcached-dev libreadline-dev libgmp-dev libpng-dev libjpeg-dev libwebp-dev libxpm-dev libicu-dev libfreetype6-dev libxslt-dev libldb-dev libtidy-dev libvips-dev libsodium-dev libavif-dev libldap2-dev libxml2-dev libkrb5-dev libc-client2007e-dev libpq-dev libargon2-0 libargon2-dev libbz2-dev libffi-dev libc-client-dev libpspell-dev flex libgmp3-dev libmcrypt-dev libmhash-dev freetds-dev libmariadb-dev libmariadb-dev-compat libncurses5-dev libpcre3-dev libaspell-dev librecode-dev libsnmp-dev
Tiếp theo, tải xuống mã nguồn PHP. Chúng tôi sẽ tải xuống phiên bản PHP 8.2.10, đây là phiên bản mới nhất có tại thời điểm viết bài.
Mã:
$ cd ~
$ wget https://www.php.net/distributions/php-8.2.11.tar.gz
Giải nén các tệp.
Mã:
$ tar -xzf php-8.2.11.tar.gz
Chuyển sang phiên bản đã tải xuống thư mục.
Mã:
$ cd php-8.2.11
Tiếp theo, chạy tập lệnh cấu hình với các tùy chọn sau. Tùy chọn --enable-litespeed là cần thiết.
Mã:
$ sudo ./configure --prefix=/usr/local/lsws/lsphp82 --enable-bcmath --enable-calendar --enable-exif --enable-ftp --enable-gd --enable-intl --enable-mbregex --enable-mbstring --enable-mysqlnd --enable-opcache --enable-shmop --enable-soap --enable-sockets --enable-sysvsem --enable-sysvshm --with-avif --with-curl --with-ffi --with-freetype --with-gettext --with-gmp --with-imap --with-imap-ssl --with-jpeg --with-kerberos --with-libxml --with-ldap --with-mysqli --with-mysql-sock=/run/mysqld/mysqld.sock --with-openssl --with-password-argon2 --with-pdo-mysql=mysqlnd --with-pdo-pgsql=/usr/bin/pg_config --with-pear --with-pspell --with-readline --with-sodium --with-tidy --with-webp --with-xpm --with-xsl --with-zip --with-zlib --enable-litespeed
Bạn sẽ nhận được kết quả sau khi tập lệnh được thực hiện hoàn thành.
Mã:
+--------------------------------------------------------------------+
| License: |
| This software is subject to the PHP License, available in this |
| distribution in the file LICENSE. By continuing this installation |
| process, you are bound by the terms of this license agreement. |
| If you do not agree with the terms of this license, you must abort |
| the installation process at this point. |
+--------------------------------------------------------------------+
Thank you for using PHP.
Biên dịch nguồn.
Mã:
$ sudo make -j $(nproc)
Bạn sẽ nhận được kết quả tương tự sau khi hoàn tất.
Mã:
/bin/bash /home/navjot/php-8.2.11/libtool --silent --preserve-dup-deps --tag CC --mode=link cc -shared -I/home/navjot/php-8.2.11/include -I/home/navjot/php-8.2.11/main -I/home/navjot/php-8.2.11 -I/home/navjot/php-8.2.11/ext/date/lib -I/usr/include/libxml2 -I/usr/include/x86_64-linux-gnu -I/usr/include/libpng16 -I/usr/include/freetype2 -I/usr/include/c-client -I/home/navjot/php-8.2.11/ext/mbstring/libmbfl -I/home/navjot/php-8.2.11/ext/mbstring/libmbfl/mbfl -I/usr/include/postgresql -I/usr/include/pspell -I/usr/include/tidy -I/home/navjot/php-8.2.11/TSRM -I/home/navjot/php-8.2.11/Zend -D_GNU_SOURCE -I/usr/include/c-client -fno-common -Wstrict-prototypes -Wformat-truncation -Wlogical-op -Wduplicated-cond -Wno-clobbered -Wall -Wextra -Wno-strict-aliasing -Wno-unused-parameter -Wno-sign-compare -g -O2 -fvisibility=hidden -Wimplicit-fallthrough=1 -DZEND_SIGNALS -o ext/opcache/opcache.la -export-dynamic -avoid-version -prefer-pic -module -rpath /home/navjot/php-8.2.11/modules -L/usr/lib/x86_64-linux-gnu/mit-krb5 -L/usr/lib/x86_64-linux-gnu ext/opcache/ZendAccelerator.lo ext/opcache/zend_accelerator_blacklist.lo ext/opcache/zend_accelerator_debug.lo ext/opcache/zend_accelerator_hash.lo ext/opcache/zend_accelerator_module.lo ext/opcache/zend_persist.lo ext/opcache/zend_persist_calc.lo ext/opcache/zend_file_cache.lo ext/opcache/zend_shared_alloc.lo ext/opcache/zend_accelerator_util_funcs.lo ext/opcache/shared_alloc_shm.lo ext/opcache/shared_alloc_mmap.lo ext/opcache/shared_alloc_posix.lo ext/opcache/jit/zend_jit.lo ext/opcache/jit/zend_jit_gdb.lo ext/opcache/jit/zend_jit_vm_helpers.lo -lrt
/bin/bash /home/navjot/php-8.2.11/libtool --silent --preserve-dup-deps --tag CC --mode=install cp ext/opcache/opcache.la /home/navjot/php-8.2.11/modules
Build complete.
Don't forget to run 'make test'.
Sau khi hoàn tất, hãy chạy lệnh sau để thử và kiểm tra phiên bản.
Mã:
$ ./sapi/litespeed/php -v
PHP 8.2.11 (litespeed) (built: Sep 28 2023 18:40:08)
Copyright (c) The PHP Group
Zend Engine v4.2.11, Copyright (c) Zend Technologies
Cài đặt PHP.
Mã:
$ sudo make install
Bạn sẽ nhận được kết quả sau.
Mã:
Installing shared extensions: /usr/local/lsws/lsphp82/lib/php/extensions/no-debug-non-zts-20220829/
Installing PHP CLI binary: /usr/local/lsws/lsphp82/bin/
Installing PHP CLI man page: /usr/local/lsws/lsphp82/php/man/man1/
Installing PHP LiteSpeed binary: /usr/local/lsws/lsphp82/bin/
Installing phpdbg binary: /usr/local/lsws/lsphp82/bin/
Installing phpdbg man page: /usr/local/lsws/lsphp82/php/man/man1/
Installing PHP CGI binary: /usr/local/lsws/lsphp82/bin/
Installing PHP CGI man page: /usr/local/lsws/lsphp82/php/man/man1/
Installing build environment: /usr/local/lsws/lsphp82/lib/php/build/
Installing header files: /usr/local/lsws/lsphp82/include/php/
Installing helper programs: /usr/local/lsws/lsphp82/bin/ program: phpize program: php-config
Installing man pages: /usr/local/lsws/lsphp82/php/man/man1/ page: phpize.1 page: php-config.1
Installing PEAR environment: /usr/local/lsws/lsphp82/lib/php/
[PEAR] Archive_Tar - installed: 1.4.14
[PEAR] Console_Getopt - installed: 1.4.3
[PEAR] Structures_Graph- installed: 1.1.1
[PEAR] XML_Util - installed: 1.4.5
warning: pear/PEAR dependency package "pear/Archive_Tar" installed version 1.4.14 is not the recommended version 1.4.4
[PEAR] PEAR - installed: 1.10.13
Wrote PEAR system config file at: /usr/local/lsws/lsphp82/etc/pear.conf
You may want to add: /usr/local/lsws/lsphp82/lib/php to your php.ini include_path
Installing PDO headers: /usr/local/lsws/lsphp82/include/php/ext/pdo/
Xác minh cài đặt PHP. Có hai tệp nhị phân PHP có sẵn trong thư mục /usr/local/lsws/lsphp82/bin. Một là phiên bản bình thường php là phiên bản dòng lệnh và phiên bản còn lại là phiên bản Litespeed lsphp. Cái thứ hai là cái chúng ta sẽ sử dụng.
Mã:
$ /usr/local/lsws/lsphp82/bin/lsphp -v
PHP 8.2.11 (litespeed) (built: Sep 28 2023 18:40:08)
Copyright (c) The PHP Group
Zend Engine v4.2.11, Copyright (c) Zend Technologies
Bạn có thể kiểm tra danh sách các mô-đun PHP đã bật.
Mã:
$ /usr/local/lsws/lsphp82/bin/php --modules
[PHP Modules]
bcmath
calendar
Core
ctype
curl
date
dom
exif
FFI
fileinfo
filter
ftp
gd
gettext
gmp
hash
iconv
imap
intl
json
ldap
libxml
mbstring
mysqli
mysqlnd
openssl
pcre
PDO
pdo_mysql
pdo_pgsql
pdo_sqlite
Phar
posix
pspell
random
readline
Reflection
session
shmop
SimpleXML
soap
sockets
sodium
SPL
sqlite3
standard
sysvsem
sysvshm
tidy
tokenizer
xml
xmlreader
xmlwriter
xsl
zip
zlib
[Zend Modules]
Sao chép php.ini-production từ thư mục cài đặt đến /usr/local/lsws/lsphp82/lib thư mục.
Mã:
$ sudo cp php.ini-production /usr/local/lsws/lsphp82/lib/php.ini
Chúng tôi sẽ cấu hình OpenLiteSpeed để hoạt động với PHP sau.

Mở php.ini cho chỉnh sửa.
Mã:
$ sudo nano /usr/local/lsws/lsphp82/lib/php.ini
Tìm biến include_path và thay đổi giá trị của nó như được hiển thị bên dưới.
Mã:
$ ;;;;;;;;;;;;;;;;;;;;;;;;;
; Paths and Directories ;
;;;;;;;;;;;;;;;;;;;;;;;;;
; UNIX: "/path1:/path2"
include_path = /usr/local/lsws/lsphp82/lib/php
Sau khi hoàn tất, hãy lưu tệp bằng cách nhấn Ctrl + X và nhập Y khi được nhắc.

Bước 5 - Cấu hình MariaDB​

Đăng nhập vào MariaDB shell.
Mã:
$ sudo mysql
Tạo cơ sở dữ liệu thử nghiệm. Thay thế testdb bằng tên cơ sở dữ liệu phù hợp mà bạn chọn.
Mã:
mysql> CREATE DATABASE testdb;
Tạo người dùng thử nghiệm. Thay thế testuser bằng tên người dùng phù hợp. Thay thế Your_Password123 bằng mật khẩu mạnh.
Mã:
mysql> CREATE USER 'testuser'@'localhost' IDENTIFIED BY 'Your_Password123';
Cấp tất cả các quyền trên cơ sở dữ liệu cho người dùng.
Mã:
mysql> GRANT ALL PRIVILEGES ON testdb.* TO 'testuser'@'localhost';
Vì chúng ta không sửa đổi người dùng gốc, bạn nên tạo một người dùng SQL khác để thực hiện các tác vụ quản trị sử dụng xác thực mật khẩu. Chọn một mật khẩu mạnh cho mục này.
Mã:
MariaDB> GRANT ALL ON *.* TO 'navjot'@'localhost' IDENTIFIED BY 'Yourpassword32!' WITH GRANT OPTION;
Xóa quyền của người dùng.
Mã:
mysql> FLUSH PRIVILEGES;
Thoát khỏi MySQL shell.
Mã:
mysql> exit

Bước 6 - Cấu hình OpenLiteSpeed​

Chuyển cổng HTTP trở lại 80​

Chúng ta hãy thay đổi cổng HTTP mặc định thành 80. Đăng nhập vào bảng quản trị của bạn tại http://:7080 bằng thông tin đăng nhập bạn vừa tạo.

Truy cập phần Listeners từ bên trái. Bạn sẽ thấy các listeners mặc định có cổng 8080.


data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22750%22%20height=%22213%22%3E%3C/svg%3E


Nhấp vào nút View để xem cấu hình chi tiết. Trên trang tiếp theo trong Trang Listener Default > General, hãy nhấp vào Biểu tượng Chỉnh sửa và thay đổi cổng từ 8080 thành 80.


data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22750%22%20height=%22300%22%3E%3C/svg%3E



data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22750%22%20height=%22460%22%3E%3C/svg%3E


Nhấp vào Lưu rồi khởi động lại máy chủ bằng cách nhấp vào nút khởi động lại Graceful.


data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22281%22%20height=%2280%22%3E%3C/svg%3E

Bước 7 - Cấu hình PHP​

Trong bước này, chúng ta cần liên kết bản sao PHP 8.2 của mình với máy chủ.

Nhấp vào phần Cấu hình máy chủ ở bên trái rồi nhấp vào tab Ứng dụng bên ngoài. Bạn sẽ thấy Ứng dụng LiteSpeed hiện có cho PHP. Chúng tôi sẽ thực hiện một số chỉnh sửa cho nó.


data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22750%22%20height=%22220%22%3E%3C/svg%3E


Nhấp vào nút Chỉnh sửa để chỉnh sửa ứng dụng PHP.

Tiếp theo, khớp cấu hình như hiển thị bên dưới. Để trống tất cả các trường khác.
Mã:
Name: lsphp
Address: uds://tmp/lshttpd/lsphp.sock
Max Connections: 35
Environment: PHP_LSAPI_MAX_REQUESTS=500 PHP_LSAPI_CHILDREN=35 LSAPI_AVOID_FORK=200M
Initial Request Timeout (secs): 60
Retry Timeout : 0
Persistent Connection: Yes
Response Buffering: no
Start By Server: Yes(Through CGI Daemon)
Command: lsphp82/bin/lsphp
Back Log: 100
Instances: 1
Priority: 0
Memory Soft Limit (bytes): 2047M
Memory Hard Limit (bytes): 2047M
Process Soft Limit: 1400
Process Hard Limit: 1500
Nhấp vào Lưu khi hoàn tất.


data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22750%22%20height=%22242%22%3E%3C/svg%3E


Bây giờ chúng ta đã tạo ứng dụng PHP 8.2 của riêng mình, chúng ta cần yêu cầu máy chủ bắt đầu sử dụng ứng dụng đó. Vì chúng ta đã chỉnh sửa danh sách mặc định nên danh sách đó đã được định cấu hình. Khởi động lại máy chủ bằng cách nhấp vào nút Khởi động lại một cách bình thường.

Để kiểm tra xem PHP của bạn đã được chuyển đổi đúng chưa, hãy truy cập http:///phpinfo.php trong trình duyệt của bạn.


data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22750%22%20height=%22695%22%3E%3C/svg%3E

Khởi động lại PHP​

Trên OpenLiteSpeed, nếu bạn chỉnh sửa php.ini hoặc cài đặt một mô-đun PHP mới, việc khởi động lại máy chủ sẽ không hiển thị các thay đổi. Bạn sẽ cần phải khởi động lại quy trình PHP cho việc đó. Trước tiên, bạn sẽ cần phải xác định vị trí ID quy trình cho quy trình lsphp.
Mã:
$ ps aux | grep lsphp
nobody 500747 0.9 0.8 121104 34928 ? S 05:58 0:00 lsphp
nobody 500748 0.0 0.4 121104 16760 ? Ss 05:58 0:00 lsphp
navjot 500751 0.0 0.0 3876 1908 pts/0 S+ 05:58 0:00 grep lsphp
Hủy thủ công lsphp các quy trình.
Mã:
$ sudo kill -9 500747
$ sudo kill -9 500748
Khởi động lại Máy chủ.
Mã:
$ sudo systemctl restart lsws

Bước 8 - Tạo VirtualHost​

Đầu tiên, chúng ta cần tạo các thư mục cho máy chủ ảo của mình.
Mã:
$ sudo mkdir /usr/local/lsws/example.com/{html,logs} -p
Thư mục html sẽ chứa các tệp công khai và thư mục logs sẽ chứa nhật ký máy chủ.

Tiếp theo, mở Bảng điều khiển quản trị, truy cập phần Máy chủ ảo ở bên trái và nhấp vào nút Thêm.


data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22750%22%20height=%22242%22%3E%3C/svg%3E


Điền các giá trị theo chỉ định
Mã:
Virtual Host Name: example.com
Virtual Host Root: $SERVER_ROOT/example.com/
Config File: $SERVER_ROOT/conf/vhosts/$VH_NAME/vhconf.conf
Follow Symbolic Link: Yes
Enable Scripts/ExtApps: Yes
Restrained: Yes
External App Set UID Mode: Server UID

data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22750%22%20height=%22430%22%3E%3C/svg%3E


Nhấp vào nút Lưu khi hoàn tất. Bạn sẽ nhận được lỗi sau vì tệp cấu hình hiện không tồn tại. Nhấp vào liên kết để tạo tệp cấu hình.


data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22750%22%20height=%22346%22%3E%3C/svg%3E


Nhấp vào nút Lưu một lần nữa để hoàn tất việc tạo Máy chủ ảo.

Sau khi máy chủ ảo được tạo, hãy vào Máy chủ ảo -> Chọn Máy chủ ảo (example.com) -> Chung và sửa đổi cấu hình như đã cho.
Mã:
Document Root: $VH_ROOT/html/
Domain Name: example.com
Enable GZIP Compression: Yes
Enable Brotli Compression: Yes

data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22750%22%20height=%22465%22%3E%3C/svg%3E


Nhấp vào nút Lưu khi hoàn tất. Tiếp theo, chúng ta cần thiết lập các tệp chỉ mục. Nhấp vào nút chỉnh sửa đối với Tệp chỉ mục bên dưới Phần Chung. Thiết lập các tùy chọn sau.
Mã:
Use Server Index Files: No
Index files: index.php, index.html, index.htm
Auto Index: No

data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22750%22%20height=%22388%22%3E%3C/svg%3E


Nhấp vào Lưu khi hoàn tất. Tiếp theo, chúng ta cần chọn Tệp nhật ký. Đi đến phần Nhật ký, nhấp vào Chỉnh sửa đối với Nhật ký máy chủ ảo và điền vào các giá trị sau. Giữ nguyên các thiết lập khác.
Mã:
Use Server’s Log: Yes
File Name: $VH_ROOT/logs/error.log
Log Level: ERROR
Rolling Size (bytes): 10M
Keep Days: 30
Compress Archive: Not Set

data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22750%22%20height=%22291%22%3E%3C/svg%3E


Bạn có thể chọn Mức nhật kýDEBUG nếu bạn đang sử dụng máy phát triển.

Nhấp vào Lưu rồi nhấp vào dấu cộng trong phần Nhật ký truy cập để thêm mục mới. Điền các giá trị sau.
Mã:
Log Control: Own Log File
File Name: $VH_ROOT/logs/access.log
Piped Logger: Not Set
Log Format: Not Set
Log Headers: Not Set
Rolling Size (bytes): 10M
Keep Days: 30
Compress Archive: Not Set
Bytes log: Not Set

data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22750%22%20height=%22402%22%3E%3C/svg%3E


Nhấp vào Lưu khi hoàn tất. Tiếp theo, chúng ta cần cấu hình Kiểm soát truy cập trong phần Bảo mật. Đặt các giá trị sau.
Mã:
Allowed List: *
Denied List: Not set

data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22750%22%20height=%22245%22%3E%3C/svg%3E


Nhấp vào Lưu khi hoàn tất. Tiếp theo, chúng ta cần đặt Định nghĩa trình xử lý tập lệnh. Nhấp vào dấu cộng (+) để thêm định nghĩa mới. Đặt các giá trị sau.
Mã:
Suffixes: php
Handler Type: LiteSpeed SAPI
Handler Name: [Server Level]: lsphp

data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22750%22%20height=%22250%22%3E%3C/svg%3E


Nhấp vào Lưu khi hoàn tất. Tiếp theo, chúng ta cần đặt Điều khiển ghi lại trong phần Ghi lại. Đặt các giá trị sau.
Mã:
Enable Rewrite: Yes
Auto Load from .htaccess: Yes
Log Level: Not Set

data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22750%22%20height=%22214%22%3E%3C/svg%3E


Nhấp Lưu khi hoàn tất. Và cuối cùng, chúng ta cần thiết lập Listener. Đi tới phần Người nghe và nhấp vào nút Xem đối với Người nghe mặc định. Sau đó, nhấp vào nút Thêm đối với Ánh xạ máy chủ ảo để thêm ánh xạ mới và đặt các giá trị sau.
Mã:
Virtual Host: example.com
Domains: example.com

data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22750%22%20height=%22124%22%3E%3C/svg%3E


Nhấp vào Lưu khi hoàn tất. Bây giờ, hãy nhấp vào nút Graceful restart để áp dụng tất cả các thay đổi ở trên và khởi động lại máy chủ.

Bước 9 - Cài đặt SSL​

Để thiết lập SSL trong OpenLiteSpeed, chúng ta cần thiết lập hai chứng chỉ. Chứng chỉ tự ký cho toàn bộ máy chủ và máy chủ Let's Encrypt dành riêng cho trang web.

Bảng quản trị đã đi kèm với chứng chỉ tự ký được cài đặt sẵn có trong thư mục /usr/local/lsws/admin/conf.

Trước tiên, chúng ta hãy tạo Chứng chỉ tự ký cho toàn bộ máy chủ.
Mã:
$ cd ~
$ openssl req -x509 -days 365 -newkey rsa:4096 -keyout key.pem -out cert.pem -nodes
Bạn sẽ nhận được một đầu ra.
Mã:
-----
You are about to be asked to enter information that will be incorporated
into your certificate request.
What you are about to enter is what is called a Distinguished Name or a DN.
There are quite a few fields but you can leave some blank
For some fields there will be a default value,
If you enter '.', the field will be left blank.
-----
Country Name (2 letter code) [XX]:
State or Province Name (full name) []:
Locality Name (eg, city) [Default City]:
Organization Name (eg, company) [Default Company Ltd]:
Organizational Unit Name (eg, section) []:
Common Name (eg, your name or your server's hostname) []:example.com
Email Address []:[emailprotected]
Bạn có thể nhấn enter để nhập tất cả các trường và để trống. Điền tên miền của bạn vào mục Tên chung và địa chỉ email của bạn.

Tạo thư mục cho các chứng chỉ tự ký.
Mã:
$ sudo mkdir /usr/local/lsws/certs
Sao chép chứng chỉ vào /usr/local/lsws/certs thư mục.
Mã:
$ sudo mv *.pem /usr/local/lsws/certs
Chúng ta cần cài đặt Certbot để tạo chứng chỉ SSL miễn phí do Let's Encrypt cung cấp.

Bạn có thể cài đặt Certbot bằng kho lưu trữ của Debian hoặc tải phiên bản mới nhất bằng công cụ Snapd. Chúng ta sẽ sử dụng phiên bản Snapd. Debian 12 không đi kèm Snapd được cài đặt.

Cài đặt gói Snapd.
Mã:
$ sudo apt install -y snapd
Chạy các lệnh sau để đảm bảo phiên bản Snapd của bạn được cập nhật.
Mã:
$ sudo snap install core
$ sudo snap refresh core
Phát hành lệnh sau để cài đặt Certbot.
Mã:
$ sudo snap install --classic certbot
Sử dụng lệnh sau để đảm bảo lệnh Certbot có thể chạy được bằng cách tạo liên kết tượng trưng đến /usr/bin thư mục.
Mã:
$ sudo ln -s /snap/bin/certbot /usr/bin/certbot
Xác minh cài đặt.
Mã:
$ certbot --version
certbot 2.6.0
Chạy lệnh sau để tạo Chứng chỉ SSL.

Lấy chứng chỉ SSL. Thư mục webroot được đặt thành thư mục HTML công khai được cấu hình trước đó.
Mã:
$ sudo certbot certonly --webroot -w /usr/local/lsws/example.com/html/ --agree-tos --no-eff-email --staple-ocsp --preferred-challenges http -m [emailprotected] -d example.com
Tạo chứng chỉ nhóm Diffie-Hellman.
Mã:
$ sudo openssl dhparam -dsaparam -out /etc/ssl/certs/dhparam.pem 4096
Kiểm tra trình lập lịch gia hạn Certbot dịch vụ.
Mã:
$ sudo systemctl list-timers
Bạn sẽ thấy snap.certbot.renew.service là một trong những dịch vụ được lên lịch chạy.
Mã:
NEXT LEFT LAST PASSED UNIT ACTIVATES
.....
Sat 2023-09-30 18:12:21 UTC 2h 59min left Sat 2023-09-30 14:22:18 UTC 50min ago apt-daily.timer apt-daily.service
Sat 2023-09-30 18:54:00 UTC 3h 41min left - - snap.certbot.renew.timer snap.certbot.renew.service
Sun 2023-10-01 00:00:00 UTC 8h left - - dpkg-db-backup.timer dpkg-db-backup.service
Để kiểm tra xem quá trình gia hạn SSL có hoạt động tốt không, hãy chạy thử quy trình.
Mã:
$ sudo certbot renew --dry-run
Nếu không thấy lỗi nào, bạn đã hoàn tất. Chứng chỉ của bạn sẽ tự động gia hạn.

Bây giờ hãy mở Bảng điều khiển quản trị, đi tới Người nghe >> Thêm New Listener và thêm các giá trị sau.
Mã:
Listener Name: SSL
IP Address: ANY IPv4
Port: 443
Secure: Yes

data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22750%22%20height=%22556%22%3E%3C/svg%3E


Nhấp vào Lưu khi hoàn tất. Tiếp theo, hãy đi đến phần Virtual Host Mappings bên dưới SSL Listener bằng cách nhấp vào SSL, nhấp vào nút Add và điền vào các giá trị sau.
Mã:
Virtual Host: example.com
Domains: example.com

data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22750%22%20height=%22124%22%3E%3C/svg%3E


Nhấp vào Save khi hoàn tất. Tiếp theo, hãy đi đến Listeners >> SSL Listener >> Tab SSL >>Khóa riêng tư SSL & Chứng chỉ (nút Chỉnh sửa) và điền các giá trị sau cho chứng chỉ tự ký mà chúng ta đã tạo trước đó.
Mã:
Private Key File: /home/user/key.pem
Certificate File: /home/user/cert.pem
Chained Certificate: Yes

data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22750%22%20height=%22352%22%3E%3C/svg%3E


Nhấp vào Lưu khi hoàn tất. Tiếp theo, hãy đi đến Người nghe >> Trình lắng nghe SSL >> Tab SSL >> Giao thức SSL (nút Chỉnh sửa) và điền các giá trị sau cho giao thức SSL và thông tin chi tiết về mã hóa.
Mã:
Protocol Version: TLS v1.2 TLS v1.3
Ciphers: ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384:DHE-RSA-CHACHA20-POLY1305
Enable ECDH Key Exchange: Yes
Enable DH Key Exchange: Yes
DH Parameter: /etc/ssl/certs/dhparam.pem

data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22750%22%20height=%22296%22%3E%3C/svg%3E


Nhấp vào Lưu khi hoàn tất. Tiếp theo, hãy vào Máy chủ ảo >> example.com >> Tab SSL >> Khóa riêng tư SSL & Chứng chỉ (nút Chỉnh sửa) và điền các giá trị sau bằng Chứng chỉ Let's Encrypt.
Mã:
Private Key File: /etc/letsencrypt/live/example.com/privkey.pem
Certificate File: /etc/letsencrypt/live/example.com/fullchain.pem
Chained Certificate: Yes

data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22750%22%20height=%22282%22%3E%3C/svg%3E


Nhấp vào Lưu khi hoàn tất. Tiếp theo, hãy đi tới Máy chủ ảo >> example.com >> Tab SSL >> OCSP Stapling (nút Chỉnh sửa) và điền các giá trị sau để bật OCSP Stapling.
Mã:
Enable OCSP Stapling: Yes
OCSP Response Max Age(Secs): 300
OCSP Responder: http://r3.o.lencr.org

data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22750%22%20height=%22252%22%3E%3C/svg%3E


Nhấp vào Lưu khi hoàn tất. Tiếp theo, hãy đi tới Máy chủ ảo >> example.com >> Tab SSL >> Bảo mật (nút Chỉnh sửa) và điền vào các giá trị sau để bật giao thức HTTP3/QUIC.
Mã:
Enable HTTP3/QUIC: Yes
Chúng ta không cần bật các tùy chọn khác vì chúng được bật theo mặc định.


data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22750%22%20height=%22328%22%3E%3C/svg%3E


Nhấp Lưu khi hoàn tất.

Khởi động lại máy chủ bằng cách nhấp vào nút khởi động lại Graceful.

Bước 10 - Trang web thử nghiệm​

Tạo tệp Kiểm tra trong thư mục html của bạn.
Mã:
$ sudo nano /usr/local/lsws/example.com/html/index.php
Dán mã sau vào Nano biên tập viên.
Mã:
 [HEADING=2]OpenLiteSpeed Server Install Test[/HEADING]
Lưu tệp bằng cách nhấn Ctrl + X và nhập Y khi được nhắc. Mở URL https://example.com trong trình duyệt và bạn sẽ thấy trang sau.


data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22420%22%20height=%22184%22%3E%3C/svg%3E


Trang web thử nghiệm hoạt động đầy đủ. Bạn có thể bắt đầu sử dụng máy chủ để phục vụ các trang web và ứng dụng PHP động.

Kết luận​

Bài hướng dẫn về cài đặt LOMP Stack (OpenLiteSpeed, MySQL và PHP) trên máy chủ Debian 12 của chúng tôi đã kết thúc. Nếu bạn có bất kỳ câu hỏi nào, hãy đăng chúng trong phần bình luận bên dưới.
 
Back
Bên trên