Ինչպես տեղադրել LOMP Stack-ը (OpenLiteSpeed, MySQL և PHP) Debian 12-ում


Այս ձեռնարկը գոյություն ունի ՕՀ-ի այս տարբերակների համար

  • Debian 12 (Գիրքորդ)
  • Debian 11 (Bullseye)
  • Debian 10 (Buster)

Այս էջում

  1. Նախադրյալներ
  2. Քայլ 1 - Կարգավորել Firewall-ը
  3. Քայլ 2 - Տեղադրեք OpenLiteSpeed-ը

    1. Ստեղծեք ադմինիստրատորի գաղտնաբառը
  4. Քայլ 3 - Տեղադրեք MariaDB
  5. Քայլ 4 - Տեղադրեք PHP
  6. Քայլ 5 - Կարգավորեք MariaDB
  7. Քայլ 6 - Կարգավորեք OpenLiteSpeed-ը

    1. Վերադարձեք HTTP պորտը 80-ի
  8. Քայլ 7 - Կարգավորեք PHP-ն

    1. Վերագործարկեք PHP-ն
  9. Քայլ 8 - Ստեղծեք VirtualHost
  10. Քայլ 9 - Տեղադրեք SSL-ը
  11. Քայլ 10 - Փորձարկման կայք
  12. Եզրակացություն

OpenLiteSpeed-ը LiteSpeed սերվերի թեթև և բաց կոդով տարբերակն է, որը մշակվել է LiteSpeed Technologies-ի կողմից: Այն աջակցում է Apache Rewrite կանոնները, HTTP/2 և HTTP/3 TLS v1.3 և QUIC արձանագրությունների հետ միասին: Այն գալիս է WebGUI-ի վրա հիմնված կառավարման վահանակով, որն այն տարբերվում է այլ սերվերներից և ավելի հեշտ է կառավարել:

LOMP Stack-ը Linux-ի, OpenLiteSpeed-ի, MySQL/MariaDB-ի և PHP-ի հապավումն է: Litespeed սերվերները հայտնի են իրենց արագությամբ, հատկապես PHP-ի հետ, որը ինտեգրվում է LiteSpeed Server Application Programming Interface-ի (LSAPI) միջոցով: LiteSpeed PHP (LSPHP) թարգմանիչը սպասարկում է դինամիկ PHP էջեր LSAPI-ի միջոցով:

Այս ձեռնարկում մենք կսովորենք, թե ինչպես տեղադրել OpenLiteSpeed սերվերը Debian 12 մեքենայի վրա:

Նախադրյալներ

    Debian 12-ով աշխատող սերվեր:

    Ոչ արմատային օգտատեր՝ sudo արտոնություններով:

    Լիովին որակավորված տիրույթի անուն (FQDN), ինչպիսին է example.com-ը, որը մատնանշում է սերվերը:

    SELinux-ը պետք չէ անջատել կամ կարգավորել OpenLiteSpeed-ի հետ աշխատելու համար:

    Համոզվեք, որ ամեն ինչ թարմացվում է:

    $ sudo apt update
    $ sudo apt upgrade
    

    Մի քանի փաթեթներ, որոնք անհրաժեշտ են ձեր համակարգին:

    $ sudo apt install wget curl nano ufw software-properties-common dirmngr apt-transport-https gnupg2 ca-certificates lsb-release debian-archive-keyring unzip -y
    

    Այս փաթեթներից որոշները կարող են արդեն տեղադրված լինել ձեր համակարգում:

Քայլ 1 - Կարգավորել Firewall-ը

Առաջին քայլը firewall-ի կազմաձևումն է: Debian-ը լռելյայն գալիս է ufw-ով (Uncomplicated Firewall):

Ստուգեք, արդյոք firewall-ը աշխատում է:

$ sudo ufw status

Դուք կստանաք հետևյալ արդյունքը.

Status: inactive

Թույլատրել SSH միացքը, որպեսզի այն միացնելուց հետո firewall-ը չխախտի ընթացիկ կապը:

$ sudo ufw allow OpenSSH

Թույլատրել նաև HTTP և HTTPS պորտերը:

$ sudo ufw allow http
$ sudo ufw allow https

Բացեք Openlitespeed-ի հետ կապված նավահանգիստները:

$ sudo ufw allow 7080/tcp

Միացնել Firewall-ը

$ sudo ufw enable
Command may disrupt existing ssh connections. Proceed with operation (y|n)? y
Firewall is active and enabled on system startup

Կրկին ստուգեք firewall-ի կարգավիճակը:

$ sudo ufw status

Դուք պետք է տեսնեք նմանատիպ արդյունք:

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)

Քայլ 2 - Տեղադրեք OpenLiteSpeed-ը

OpenLiteSpeed-ը փաթեթ չի ուղարկում Debian 12-ի համար: Հետևաբար, մենք կստեղծենք մեր պատճենը սկզբնաղբյուրից:

Ներբեռնեք OpenLiteSpeed կոդով ֆայլը: Դուք կարող եք ստանալ վերջին կոդով ֆայլի հղումը OpenLiteSpeed-ի ներբեռնումների պաշտոնական էջից:

$ wget https://openlitespeed.org/packages/openlitespeed-1.7.18.src.tgz

Արտահանեք ֆայլը:

$ tar -zxf openlitespeed-*.tgz

Անցեք արդյունահանված գրացուցակին:

$ cd openlitespeed-1.7.18

Կառուցեք սերվերի փաթեթը:

$ sudo ./build.sh

Գործընթացի ավարտին կարող է անհրաժեշտ լինել 5-10 րոպե սպասել: Անտեսեք բոլոր նախազգուշացումները, որոնք ստանում եք գործընթացի ընթացքում: Դուք կստանաք հետևյալ արդյունքը, երբ այն ավարտվի:

[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.

Գործընթացն ավարտվելուց հետո բացեք ols.conf ֆայլը խմբագրման համար:

$ sudo nano ols.conf

Խմբագրել ֆայլը, ինչպես ցույց է տրված ստորև:

#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
[email 
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=

Մի ավելացրեք ձեր գաղտնաբառը այստեղ: Մենք ավելի ուշ կսահմանենք գաղտնաբառը՝ օգտագործելով հրամանի տողը: Ավարտելուց հետո պահեք ֆայլը՝ սեղմելով Ctrl + X և մուտքագրելով Y, երբ հուշվի:

Այժմ, երբ OpenLiteSpeed-ը ստեղծվել է, եկեք տեղադրենք այն:

$ sudo ./install.sh

Տեղադրիչի սկրիպտը տեղադրում և միացնում է lsws ծառայությունը սերվերի համար: Ավարտելուց հետո դուք կստանաք հետևյալ արդյունքը.

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.

Գործարկեք OpenLiteSpeed սերվերը:

$ sudo systemctl start lsws

Ստուգեք ծառայության կարգավիճակը:

$ 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.

Ստուգեք տեղադրված սերվերի տարբերակը:

$ /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)

Ստեղծեք ադմինիստրատորի գաղտնաբառը

Դուք կարող եք օգտագործել տեղադրման ընթացքում տրված ադմինիստրատորի գաղտնաբառը: Այնուամենայնիվ, դուք պետք է ստեղծեք ձեր սեփականը, վերականգնելով այն: Գործարկեք գաղտնաբառի վերակայման սցենարը:

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

Դուք կստանաք հետևյալ արդյունքը. Ընտրեք ձեր օգտվողի անունը և սահմանեք ուժեղ գաղտնաբառ:

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!

Այժմ կարող եք օգտագործել նոր ադմինիստրատորի գաղտնաբառը:

OpenLiteSpeed-ի կառավարման վահանակ մուտք գործելու համար բացեք http://:7080: Ձեր առաջին մուտքի ժամանակ ձեր զննարկիչը կզգուշացնի, որ ձեր կապը մասնավոր չէ: Սեղմեք Ընդլայնված և սեղմեք «Ընդունել ռիսկը և շարունակել» (Firefox-ի դեպքում) կամ «Անցնել (անապահով)» (Chromium-ի վրա հիմնված բրաուզերի դեպքում): Դուք այլևս չեք տեսնի նախազգուշացումը:

Դուք պետք է տեսնեք մուտքի էջը:

Մուտքագրեք ավելի վաղ սահմանած հավատարմագրերը և սեղմեք Մուտք կոճակը՝ շարունակելու համար:

Դուք կստանաք հետևյալ էկրանը.

Քայլ 3 - Տեղադրեք MariaDB

Debian-ն այլևս չի առաքվում MySQL սերվերով: Հետևաբար, մենք կօգտագործենք MySQL բացվող փոխարինողը՝ MariaDB: Բայց նախքան առաջ անցնելը, մենք պետք է թարմացնենք LiteSpeed պահոցը: Տեղադրողի միջոցով ավելացված Litespeed պահոցը ճիշտ չի աշխատում:

Բացեք ֆայլը /etc/apt/sources.list.d/lst_debian_repo.list խմբագրման համար:

$ sudo nano /etc/apt/sources.list.d/lst_debian_repo.list

Փոխեք ֆայլի բովանդակությունը՝ դրան ավելացնելով Debian 11 (bullseye): Մենք չենք կարող օգտագործել Debian 12-ը (bookworm), քանի որ պահոցը դրա համար թարմացված չէ:

deb http://rpms.litespeedtech.com/debian/ bullseye main

Ավարտելուց հետո պահեք ֆայլը՝ սեղմելով Ctrl + X և մուտքագրելով Y, երբ հուշվի:

Տեղադրեք MariaDB սերվերը:

$ sudo apt install mariadb-server

MariaDB ծառայությունը ավտոմատ կերպով մեկնարկվում է և աշխատում է հետտեղադրումից հետո:

Ստուգեք ծառայության կարգավիճակը:

$ sudo systemctl status mariadb

Դուք կստանաք հետևյալ արդյունքը.

? 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

Գործարկեք MariaDB անվտանգության սկրիպտը:

$ sudo mariadb-secure-installation

Ձեզանից կպահանջվի root գաղտնաբառը: Սեղմեք Enter, քանի որ մենք դրա համար գաղտնաբառ չենք սահմանել:

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):

Հաջորդը, ձեզ կհարցնեն, թե արդյոք ցանկանում եք անցնել Unix վարդակից նույնականացման մեթոդին: unix_socket հավելվածը թույլ է տալիս օգտագործել ձեր օպերացիոն համակարգի հավատարմագրերը MariaDB սերվերին միանալու համար: Քանի որ դուք արդեն ունեք պաշտպանված արմատային հաշիվ, շարունակելու համար մուտքագրեք n:

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

Հաջորդը, ձեզ կհարցնեն, թե արդյոք ցանկանում եք փոխել ձեր արմատային գաղտնաբառը: Debian 12-ում արմատային գաղտնաբառը սերտորեն կապված է ավտոմատացված համակարգի սպասարկման հետ, ուստի այն պետք է հանգիստ թողնել: Շարունակելու համար մուտքագրեք n:

 ... skipping.

You already have your root account protected, so you can safely answer 'n'.

Change the root password? [Y/n] n

Հաջորդը ձեզ որոշակի հարցեր կուղղվեն MariaDB-ի անվտանգությունը բարելավելու համար: Մուտքագրեք Y՝ անանուն օգտատերերին հեռացնելու, հեռավոր արմատային մուտքերն արգելելու, փորձնական տվյալների բազան հեռացնելու և արտոնությունների աղյուսակները վերաբեռնելու համար:

 ... 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!

Դուք կարող եք մուտք գործել MariaDB վահանակ՝ հրամանի տողում մուտքագրելով sudo mysql կամ sudo mariadb:

Քայլ 4 - Տեղադրեք PHP

Քանի որ մենք ստեղծել ենք մեր փաթեթը աղբյուրից, այն կազմում և կառուցում է PHP-ի հին տարբերակը, որը խորհուրդ չի տրվում օգտագործել: Դուք կարող եք ստուգել այն հետևյալ հրամանի միջոցով.

$ /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

Հետևաբար, մենք պետք է կառուցենք և տեղադրենք PHP-ի վերջին տարբերակը: Բայց, նախքան շարունակելը, մենք պետք է տեղադրենք կառուցման գործիքները:

$ sudo apt install build-essential autoconf libtool bison re2c pkg-config

Հաջորդ քայլը PHP-ի կառուցման գործընթացով պահանջվող փաթեթների տեղադրումն է:

$ 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

Հաջորդը, ներբեռնեք PHP-ի աղբյուրի կոդը: Մենք կներբեռնենք PHP 8.2.10 տարբերակը, որը գրելու պահին հասանելի վերջին տարբերակն է:

$ cd ~
$ wget https://www.php.net/distributions/php-8.2.11.tar.gz

Արտահանեք ֆայլերը:

$ tar -xzf php-8.2.11.tar.gz

Անցեք ներբեռնված գրացուցակին:

$ cd php-8.2.11

Հաջորդը, գործարկեք կազմաձևման սցենարը հետևյալ ընտրանքներով. --enable-litespeed տարբերակը կարևոր է:

$ 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

Սցենարն ավարտվելուց հետո դուք պետք է ստանաք հետևյալ արդյունքը:

+--------------------------------------------------------------------+
| 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.

Կազմեք աղբյուրը.

$ sudo make -j $(nproc)

Ավարտելուց հետո դուք կստանաք նմանատիպ արդյունք:

/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'.

Ավարտելուց հետո գործարկեք հետևյալ հրամանը՝ տարբերակը ստուգելու համար:

$ ./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

Տեղադրեք PHP.

$ sudo make install

Դուք կստանաք հետևյալ արդյունքը.

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/

Ստուգեք PHP-ի տեղադրումը: /usr/local/lsws/lsphp82/bin գրացուցակում առկա են երկու PHP երկուականներ։ Մեկը սովորական php-ն է, որը հրամանի տողի տարբերակն է, իսկ մյուսը Litespeed տարբերակն է lsphp: Երկրորդն այն մեկն է, որը մենք կօգտագործենք:

$ /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

Դուք կարող եք ստուգել միացված PHP մոդուլների ցանկը:

$ /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]

Պատճենեք php.ini-production տեղադրման թղթապանակից /usr/local/lsws/lsphp82/lib պանակ:

$ sudo cp php.ini-production /usr/local/lsws/lsphp82/lib/php.ini

Մենք կկարգավորենք OpenLiteSpeed-ը, որպեսզի հետագայում աշխատի PHP-ի հետ:

Բացեք php.ini խմբագրման համար:

$ sudo nano /usr/local/lsws/lsphp82/lib/php.ini

Գտեք include_path փոփոխականը և փոխեք դրա արժեքը, ինչպես ցույց է տրված ստորև:

$ ;;;;;;;;;;;;;;;;;;;;;;;;;
; Paths and Directories ;
;;;;;;;;;;;;;;;;;;;;;;;;;

; UNIX: "/path1:/path2"
include_path = /usr/local/lsws/lsphp82/lib/php

Ավարտելուց հետո պահեք ֆայլը՝ սեղմելով Ctrl + X և մուտքագրելով Y, երբ հուշվի:

Քայլ 5 - Կարգավորեք MariaDB

Մուտք գործեք MariaDB կեղև:

$ sudo mysql

Ստեղծեք թեստային տվյալների բազա: Փոխարինեք testdb-ը ձեր ընտրած տվյալների բազայի համապատասխան անունով:

mysql> CREATE DATABASE testdb;

Ստեղծեք թեստային օգտվող: Փոխարինեք testuser-ը համապատասխան օգտվողի անունով: Փոխարինեք Your_Password123-ը ուժեղ գաղտնաբառով:

mysql> CREATE USER 'testuser'@'localhost' IDENTIFIED BY 'Your_Password123';

Տվյալների բազայի բոլոր արտոնությունները տրամադրեք օգտագործողին:

mysql> GRANT ALL PRIVILEGES ON testdb.* TO 'testuser'@'localhost';

Քանի որ մենք չենք փոփոխում արմատային օգտվողին, դուք պետք է ստեղծեք մեկ այլ SQL օգտվող՝ գաղտնաբառի նույնականացում կիրառող վարչական առաջադրանքներ կատարելու համար: Ընտրեք ուժեղ գաղտնաբառ այս մեկի համար:

MariaDB> GRANT ALL ON *.* TO 'navjot'@'localhost' IDENTIFIED BY 'Yourpassword32!' WITH GRANT OPTION;

Լվացեք օգտվողի արտոնությունները:

mysql> FLUSH PRIVILEGES;

Դուրս եկեք MySQL վահանակից:

mysql> exit

Քայլ 6 - Կարգավորեք OpenLiteSpeed-ը

Վերադարձեք HTTP պորտը 80-ի

Եկեք փոխենք լռելյայն HTTP պորտը 80-ի: Մուտք գործեք ձեր ադմինիստրատիվ վահանակ՝ http://:7080 հասցեով՝ հենց նոր ստեղծված հավատարմագրերով:

Այցելեք Լսողների բաժինը ձախից: Դուք կտեսնեք լռելյայն լսողներին 8080 պորտով:

Սեղմեք Դիտել կոճակը՝ մանրամասն կոնֆիգուրացիան տեսնելու համար: Հաջորդ էջում՝ Լսողի լռելյայն > Ընդհանուր էջի տակ, սեղմեք Խմբագրել պատկերակը և փոխեք նավահանգիստը 8080-ից 80: կոդը>.

Սեղմեք Պահպանել, ապա վերագործարկեք սերվերը՝ սեղմելով Graceful restart կոճակը:

Քայլ 7 - Կարգավորեք PHP-ն

Այս քայլում մենք պետք է կապենք PHP 8.2-ի մեր պատճենը սերվերի հետ:

Կտտացրեք ձախ կողմում գտնվող Սերվերի կազմաձևում բաժինը, այնուհետև ներդիրում Արտաքին հավելված: Դուք կտեսնեք գոյություն ունեցող LiteSpeed հավելված PHP-ի համար: Մենք որոշ խմբագրումներ կանենք դրանում։

Սեղմեք Խմբագրել կոճակը՝ PHP հավելվածը խմբագրելու համար:

Հաջորդը, համապատասխանեք կազմաձևին, ինչպես ցույց է տրված ստորև: Մնացած բոլոր դաշտերը դատարկ թողեք։

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

Ավարտելուց հետո սեղմեք Պահպանել:

Այժմ, երբ մենք ստեղծել ենք մեր սեփական PHP 8.2 հավելվածը, մենք պետք է ասենք սերվերին, որ սկսի օգտագործել այն: Քանի որ մենք խմբագրել ենք լռելյայն ցանկը, այն արդեն կազմաձևված է: Վերագործարկեք սերվերը` սեղմելով Գեղեցիկ վերագործարկում կոճակը:

Ստուգելու համար, թե արդյոք ձեր PHP-ը ճիշտ է փոխարկվել, այցելեք http:///phpinfo.php ձեր բրաուզերում:

Վերագործարկեք PHP-ն

OpenLiteSpeed-ում, եթե խմբագրեք php.ini-ն կամ տեղադրեք նոր PHP մոդուլ, սերվերի վերագործարկումը փոփոխությունները չի ցուցադրի: Դրա համար անհրաժեշտ կլինի վերագործարկել PHP գործընթացը: Նախ, դուք պետք է գտնեք գործընթացի ID-ները lsphp գործընթացի համար:

$ 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

Ձեռքով սպանել lsphp գործընթացները:

$ sudo kill -9 500747
$ sudo kill -9 500748

Վերագործարկեք սերվերը:

$ sudo systemctl restart lsws

Քայլ 8 - Ստեղծեք VirtualHost

Նախ, մենք պետք է դիրեկտորիաներ ստեղծենք մեր վիրտուալ հոսթի համար:

$ sudo mkdir /usr/local/lsws/example.com/{html,logs} -p

html գրացուցակը կպահի հանրային ֆայլերը, իսկ logs գրացուցակը կպարունակի սերվերի տեղեկամատյաններ:

Այնուհետև բացեք ադմինիստրատորի վահանակը, ձախից մուտք գործեք Վիրտուալ հյուրընկալողներ բաժին և սեղմեք Ավելացնել կոճակը:

Լրացրեք արժեքները, ինչպես նշված է

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

Ավարտելուց հետո սեղմեք Պահպանել կոճակը: Դուք կստանաք հետևյալ սխալը, քանի որ կազմաձևման ֆայլն այս պահին գոյություն չունի: Կտտացրեք հղմանը, կազմաձևման ֆայլը ստեղծելու համար:

Կրկին սեղմեք Պահպանել կոճակը՝ Վիրտուալ հոսթի ստեղծումն ավարտելու համար:

Վիրտուալ հոսթինգը ստեղծելուց հետո գնացեք Վիրտուալ հոսթ -> Ընտրեք Վիրտուալ հոսթ(example.com) -> Ընդհանուր և փոխեք կազմաձևը, ինչպես տրված է:

Document Root: $VH_ROOT/html/
Domain Name: example.com
Enable GZIP Compression: Yes
Enable Brotli Compression: Yes

Ավարտելուց հետո սեղմեք Պահպանել կոճակը: Հաջորդը, մենք պետք է կարգավորենք ինդեքսային ֆայլերը: Սեղմեք խմբագրել կոճակը Ինդեքսի ֆայլերի դեմ Ընդհանուր բաժնի տակ: Սահմանեք հետևյալ ընտրանքները.

Use Server Index Files: No
Index files: index.php, index.html, index.htm
Auto Index: No

Ավարտելուց հետո սեղմեք Պահպանել: Հաջորդը, մենք պետք է ընտրենք Մատյան ֆայլեր: Գնացեք Մատյան բաժին, սեղմեք Խմբագրել ընդդեմ Վիրտուալ հյուրընկալողի մատյան և լրացրեք հետևյալ արժեքները: Մնացած կարգավորումները թողեք անփոփոխ:

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

Դուք կարող եք ընտրել Գրանցման մակարդակը որպես DEBUG, եթե դուք մշակման մեքենայի վրա եք:

Սեղմեք Պահպանել, ապա սեղմեք գումարած նշանը Մուտքի մատյան բաժնում՝ նոր մուտք ավելացնելու համար: Լրացրե՛ք հետևյալ արժեքները.

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

Ավարտելուց հետո սեղմեք Պահպանել: Հաջորդը, մենք պետք է կարգավորենք Մուտքի վերահսկում Անվտանգություն բաժնում: Սահմանեք հետևյալ արժեքները.

Allowed List: *
Denied List: Not set

Ավարտելուց հետո սեղմեք Պահպանել: Հաջորդը, մենք պետք է սահմանենք Սցենարների մշակման սահմանումը: Սեղմեք գումարած (+) նշանը՝ նոր սահմանում ավելացնելու համար: Սահմանեք հետևյալ արժեքները.

Suffixes: php
Handler Type: LiteSpeed SAPI
Handler Name: [Server Level]: lsphp

Ավարտելուց հետո սեղմեք Պահպանել: Հաջորդը, մենք պետք է կարգավորենք Վերագրել կառավարում Վերագրել բաժնում: Սահմանեք հետևյալ արժեքները.

Enable Rewrite: Yes
Auto Load from .htaccess: Yes
Log Level: Not Set

Ավարտելուց հետո սեղմեք Պահպանել: Եվ վերջապես, մենք պետք է սահմանենք Լսողները: Գնացեք Լսողներ բաժին և սեղմեք Դիտել կոճակը` ընդդեմ Լռակյաց ունկնդիր: Այնուհետև կտտացրեք «Ավելացնել» կոճակը` ընդդեմ Վիրտուալ հյուրընկալող քարտեզագրումների՝ նոր քարտեզագրում ավելացնելու և հետևյալ արժեքները սահմանելու համար:

Virtual Host: example.com
Domains: example.com

Ավարտելուց հետո սեղմեք Պահպանել: Այժմ սեղմեք Գեղեցիկ վերագործարկում կոճակը՝ վերը նշված բոլոր փոփոխությունները կիրառելու և սերվերը վերագործարկելու համար:

Քայլ 9 - Տեղադրեք SSL-ը

OpenLiteSpeed-ում SSL-ի կարգավորումը պահանջում է, որ մենք ստեղծենք երկու վկայական: Ինքնաստորագրված վկայագիր ընդհանուր սերվերի և Let's Encrypt կայքի հատուկ սերվերի համար:

Կառավարման վահանակն արդեն ունի նախապես տեղադրված ինքնաստորագրված վկայական, որը հասանելի է /usr/local/lsws/admin/conf գրացուցակում:

Եկեք նախ ստեղծենք ինքնաստորագրված վկայական ընդհանուր սերվերի համար:

$ cd ~
$ openssl req -x509 -days 365 -newkey rsa:4096 -keyout key.pem -out cert.pem -nodes

Դուք կստանաք նմանատիպ արդյունք:

-----
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 []:[email 

Դուք կարող եք սեղմել enter բոլոր դաշտերի միջով և դրանք դատարկ թողնել: Լրացրեք ձեր տիրույթը ընդհանուր անվան համար և ձեր էլփոստի հասցեն:

Ստեղծեք տեղեկատու ինքնաստորագրված վկայականների համար:

$ sudo mkdir /usr/local/lsws/certs

Պատճենեք վկայագիրը /usr/local/lsws/certs գրացուցակում:

$ sudo mv *.pem /usr/local/lsws/certs

Մենք պետք է տեղադրենք Certbot-ը՝ Let's Encrypt-ի կողմից առաջարկվող անվճար SSL վկայագրեր ստեղծելու համար:

Կարող եք կա՛մ տեղադրել Certbot-ը՝ օգտագործելով Debian-ի պահոցը, կա՛մ գրավել վերջին տարբերակը՝ օգտագործելով Snapd գործիքը: Մենք կօգտագործենք Snapd տարբերակը: Debian 12-ը չի գալիս Snapd-ի տեղադրմամբ:

Տեղադրեք Snapd փաթեթը:

$ sudo apt install -y snapd

Գործարկեք հետևյալ հրամանները՝ համոզվելու համար, որ Snapd-ի ձեր տարբերակը արդիական է:

$ sudo snap install core
$ sudo snap refresh core

Certbot-ը տեղադրելու համար թողարկեք հետևյալ հրամանը.

$ sudo snap install --classic certbot

Օգտագործեք հետևյալ հրամանը՝ համոզվելու համար, որ Certbot հրամանը կարող է գործարկվել՝ ստեղծելով խորհրդանշական հղում դեպի /usr/bin գրացուցակը:

$ sudo ln -s /snap/bin/certbot /usr/bin/certbot

Ստուգեք տեղադրումը:

$ certbot --version
certbot 2.6.0

Գործարկեք հետևյալ հրամանը՝ SSL վկայական ստեղծելու համար:

Ստացեք SSL վկայագիր: Webroot գրացուցակը դրված է ավելի վաղ կազմաձևված հանրային HTML գրացուցակում:

$ sudo certbot certonly --webroot -w /usr/local/lsws/example.com/html/ --agree-tos --no-eff-email --staple-ocsp --preferred-challenges http -m [email  -d example.com

Ստեղծեք Diffie-Hellman խումբ վկայագիր:

$ sudo openssl dhparam -dsaparam -out /etc/ssl/certs/dhparam.pem 4096

Ստուգեք Certbot-ի նորացման ժամանակացույցի ծառայությունը:

$ sudo systemctl list-timers

Դուք կգտնեք snap.certbot.renew.service որպես սպասարկվող ծառայություններից մեկը:

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

Ստուգելու համար, թե արդյոք SSL-ի նորացումը լավ է աշխատում, կատարեք գործընթացը չոր:

$ sudo certbot renew --dry-run

Եթե սխալներ չեք տեսնում, ամեն ինչ պատրաստ է: Ձեր վկայականը ինքնաբերաբար կերկարաձգվի:

Այժմ բացեք ադմինիստրատորի վահանակը, անցեք Listeners >> Ավելացնել նոր լսող և ավելացրեք հետևյալ արժեքները:

Listener Name: SSL
IP Address: ANY IPv4
Port: 443
Secure: Yes

Ավարտելուց հետո սեղմեք Պահպանել: Հաջորդը, անցեք Վիրտուալ հյուրընկալող քարտեզագրումներ բաժինը SSL լսիչի տակ՝ սեղմելով SSL-ի վրա, սեղմելով Ավելացնել կոճակը և լրացնելով հետևյալ արժեքները:

Virtual Host: example.com
Domains: example.com

Ավարտելուց հետո սեղմեք Պահպանել: Այնուհետև անցեք Լսողներ >> SSL Լսող >> SSL ներդիր >>SSL Անձնական բանալի և Վկայական (Խմբագրել կոճակը) և լրացրեք հետևյալ արժեքները նախկինում ստեղծած ինքնաստորագրված վկայագրի համար:

Private Key File: /home/user/key.pem
Certificate File: /home/user/cert.pem
Chained Certificate: Yes

Ավարտելուց հետո սեղմեք Պահպանել: Հաջորդը, գնացեք Listeners >> SSL Lister >> SSL Tab >> SSL Protocol (Խմբագրել կոճակը) և լրացրեք հետևյալ արժեքները SSL արձանագրության և ծածկագրի մանրամասների համար:

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

Ավարտելուց հետո սեղմեք Պահպանել: Հաջորդը, գնացեք Վիրտուալ հյուրընկալողներ >> example.com >> SSL Tab >> SSL Private Key & Certificate (Խմբագրել կոճակը) և լրացրեք հետևյալ արժեքները Let's Encrypt Certificate-ով:

Private Key File: /etc/letsencrypt/live/example.com/privkey.pem
Certificate File: /etc/letsencrypt/live/example.com/fullchain.pem
Chained Certificate: Yes

Ավարտելուց հետո սեղմեք Պահել: Հաջորդը, գնացեք Վիրտուալ հոսթեր >> example.com >> SSL ներդիր >> OCSP Stapling (Խմբագրել կոճակը) և լրացրեք հետևյալ արժեքները՝ OCSP Stapling-ը միացնելու համար:

Enable OCSP Stapling: Yes
OCSP Response Max Age(Secs): 300
OCSP Responder: http://r3.o.lencr.org

Ավարտելուց հետո սեղմեք Պահել: Հաջորդը, գնացեք Վիրտուալ հոսթեր >> example.com >> SSL ներդիր >> Անվտանգություն (Խմբագրել կոճակը) և լրացրեք հետևյալ արժեքները՝ HTTP3/QUIC արձանագրությունը միացնելու համար:

Enable HTTP3/QUIC: Yes

Մեզ պետք չէ միացնել այլ տարբերակներ, քանի որ դրանք լռելյայն միացված են:

Ավարտելուց հետո սեղմեք Պահել:

Վերագործարկեք սերվերը՝ սեղմելով Graceful restart կոճակը:

Քայլ 10 - Փորձարկման կայք

Ստեղծեք թեստային ֆայլ ձեր html գրացուցակում:

$ sudo nano /usr/local/lsws/example.com/html/index.php

Տեղադրեք հետևյալ կոդը Nano խմբագրիչում.

<html>
<head>
    <h2>OpenLiteSpeed Server Install Test</h2>
</head>
    <body>
    <?php echo '<p>Hello,</p>';

    // Define PHP variables for the MySQL connection.
    $servername = "localhost";
    $username = "testuser";
    $password = "Your_Password123";

    // Create a MySQL connection.
    $conn = mysqli_connect($servername, $username, $password);

    // Report if the connection fails or is successful.
    if (!$conn) {
        exit('<p>Your connection has failed.<p>' .  mysqli_connect_error());
    }
    echo '<p>You have connected successfully.</p>';
    ?>
</body>
</html>

Պահպանեք ֆայլը՝ սեղմելով Ctrl + X և մուտքագրելով Y, երբ պահանջվում է: Բացեք https://example.com URL-ը բրաուզերում և կտեսնեք հետևյալ էջը:

Փորձարկման վայրը լիովին գործում է: Դուք կարող եք սկսել օգտագործել սերվերը դինամիկ PHP կայքերի և հավելվածների սպասարկման համար:

Եզրակացություն

Սա ավարտում է մեր ձեռնարկը LOMP Stack-ը (OpenLiteSpeed, MySQL և PHP) Debian 12 սերվերի վրա տեղադրելու վերաբերյալ: Եթե ունեք հարցեր, տեղադրեք դրանք ստորև ներկայացված մեկնաբանություններում: