Close

Розгортання, налаштування і оптимізація OpenLiteSpeed на VPS

Все частіше  OpenLiteSpeed зустрічається в конфігурації сайтів в інтернеті. Все більше адміністраторів і веб-девелоперів віддають перевагу саме цьому веб-серверу. А відтак є потреба зосередити свою увагу на правильному встановленні та налаштуванні OpenLiteSpeed. У цьому мануалі ми розберемо покрокову інструкцію як це зробити.

Зміст статті

Веб-сервер OpenLiteSpeed: особливості і переваги

OpenLiteSpeed – це безкоштовне програмне забезпечення з відкритим кодом OpenSource для керування VPS-сервером, створене компанією LiteSpeed Technologies на базі пропрієтарної технології LiteSpeed Web Server (LSWS). OpenLiteSpeed є покращеним варіантом Apache та підтримує усі його функції, а також новітні протоколи і стандарти, такі як: HTTP/2, HTTP/3, SPDY, QUIC. Станом на вересень 2024 року займає 4 сходинку у світі за популярністю серед веб-серверів. Існує також комерційна версія LiteSpeed Enterprise з повною підтримкою синтаксису Apache. Веб-сервер сумісний з багатьма хостинг-панелями (cPanel, DirectAdmin, CyberPanel, Plesk), має численні інтеграції на хмарних платформах (AWS, GCP, Azure, DigiralOcean, Alibaba etc.).

Завдяки ефективній технології кешування LiteSpeed Cache, веб-сервер витримує високі навантаження та досягає продуктивності при мінімальному споживанні системних ресурсів:

Інші переваги OpenLiteSpeed:

  • Гнучкість, компактість, мінімальне споживання ресурсів (справляється на найслабкіших серверах з 1CPU та 1Гб ОЗП), регулярна оновлюваність, чудова масштабованість;
  • Висока стійкість до високих навантажень і атак (зокрема DOS/DDoS), вбудовані компоненти безпеки (reCaptcha, modSecurity) та ін.;
  • Підтримка усіх основних серверних компонентів і додатків, сумісність з усіма версіями PHP;
  • Низький поріг входу, легко розгорнути, адаптуватися і призвичаїтися в керуванні;
  • Зручний, компактний та функціональний веб-інтерфейс (панель керування WebAdmin Console);
  • Миттєве, непомітне для відвідувачів, перезавантаження веб-сервера (Graceful Restart);
  • Повна сумісність і підтримка WordPress, наявність спеціального плагіну кешування LSCache;
  • Наявність публічних інтернет-форумів підтримки OLS та LiteSpeed.

Недоліки:

  • Часткова підтримка синтаксиса Apache;
  • Є деякі дрібні незадокументовані фічі.

Загалом, проєкт OpenLiteSpeed знаходиться в процесі постійного розвитку та становлення, і в перспективі буде ще не раз оновлюватися, дороблятися і покращуватися.

Встановлення OpenLiteSpeed на VPS

Встановлювати будемо на чистому VPS-сервері під управлінням ОС Ubuntu (20.04/22.04).

Найперше необхідно оновитись:

sudo apt-get update && apt-get upgrade -y

Тепер перезавантажитись:

reboot

Також я б порадив відключити режим безпеки SELinux, незважаючи на те, що він є дуже потужним інструментом безпеки. Однак, він може на певному рівні конфліктувати з OpenLiteSpeed, блокуючи певні операції. Це може створити додаткові незручності і буде вимагати додаткового налаштування. Якщо сервер використовується для розміщення веб-сайтів, то можна не хвилюватися – функції SELinux візьме на себе OpenLiteSpeed. Перевірити статус SELinux можна командою:

sudo sestatus

Щоб відключити, треба додати SELINUX=disabled в файл nano /etc/selinux/config.

Переходимо до встановлення OLS:

sudo wget -O - http://rpms.litespeedtech.com/debian/enable_lst_debian_repo.sh | sudo bash
apt-get install openlitespeed

Перевіряємо статус OpenLiteSpeed:

systemctl status openlitespeed
netstat -plntu
netstat -pl | grep lsphp

Встановлюємо PHP і усі необхідні модулі:

apt-get install lsphp74 lsphp74-common lsphp74-curl lsphp74-imagick lsphp74-memcached lsphp74-imap lsphp74-json lsphp74-intl lsphp74-mysql lsphp74-opcache lsphp74-opcache lsphp74-redis
ln -sf /home/lsphp74/bin/lsphp /home/fcgi-bin/lsphp5

Тепер встановлюємо систему управління базами даних MySQL — MariaDB:

sudo apt install mariadb-client mariadb-server -y
systemctl start mariadb
systemctl enable mariadb
systemctl status mariadb

Проводимо інсталяцію параметрів безпеки MySQL:

mysql_secure_installation
Set a root password? [Y/n] Y
Remove anonymous users? [Y/n] Y
Disallow root login remotely? [Y/n] Y
Remove test database and access to it? [Y/n] Y
Reload privilege tables now? [Y/n] Y

Встановлюємо доступ root до бази даних тільки за паролем:

mysql -u root -p
select User, Password, Host from mysql.user;
exit

mysql -u root mysql
SET PASSWORD FOR root@localhost=PASSWORD('ваш_пароль');
FLUSH PRIVILEGES;
exit

Тепер необхідно встановити логін і пароль для входу в панель управління OpenLiteSpeed сервером:

cd /home/admin/misc/
sh admpass.sh

Можна заходити в адмінку: https://ip_address:7080

Налаштування і конфігурація OpenLiteSpeed

Обмеження публічного доступу до WebAdmin Console

WebAdmin Console – це панель керування веб-сервером LiteSpeed. Дуже зручна і компактна в адмініструванні. Містить усі конфігурації електронних ресурсів, які працюють на сервері. З точки зору безпеки перше, що потрібно зробити – це захистити і обмежити публічний доступ до неї.

Для цього необхідно авторизуватися і перейти в WebAdmin Settings -> General -> Access Control. В поле Allowed List необхідно додати список дозволених IP-адрес або IP-діапазон, а в поле Denied List вказати символ *:

Заміна стандартного порту

Також, якщо ви хочете перевести адмін-панель на захищений HTTPS-протокол і прив’язати домен (підключений до проксі Cloudflare), треба змінити стандартний порт панелі OpenLiteSpeed.

Для цього необхідно:

  1. Додати новий TCP-порт в фаєрвол;
  2. Замінити стандартний порт OpenLiteSpeed в файлі конфігурації: /home/admin/conf/admin_config.conf
  3. Перезапустити Litespeed-сервер: systemctl restart lsws

Встановлення фаєрволу

Наступний крок — встановити CSF Firewall:

wget http://download.configserver.com/csf.tgz
tar -xvzf csf.tgz
cd csf
bash install.sh
perl /usr/local/csf/bin/csftest.pl

Готово. Тепер треба вилучити зайві мережеві порти та внести бажані в конфігурацію CSF і перезапустити фаєрвол, щоби правила вступили в силу:

nano /etc/csf/csf.conf
csf -r

Якщо ви хочете зробити доступним той чи інший порт лише для конкретних IP, необхідно внести в файл дозволів CSF /etc/csf/csf.allow наступний рядок, до прикладу: tcp|in|d=8090|s=XXX.XXX.XXX.0/24

Щоб внести IP-адресу до чорного списку (бан на рівні серверного firewall), необхідно відкрити файл /etc/csf/csf.deny та просто її туди додати. Після чого обов’язково оновити правила: csf -r.

Інші корисні команди:

  • sudo csf -x – повністю вимикає CSF Firewall;
  • sudo csf -e – вмикає CSF Firewall.

Налаштування 80 і 443 портів

По-замовчуванню, в панелі WebAdmin для веб-сайтів працює порт 8088. Так бути не повинно. Треба додати 80 (HTTP) і 443 (HTTPS) порти. Переходимо в меню Listeners, тиснемо Add й додаємо обох почергово, Default можна видалити:

Додавання віртуального хоста

Час додати перший віртуальний хост, тобто веб-сайт. Домен повинен бути попередньо направлений на сервер. Для цього необхідно перейти в панелі реєстратора домена в DNS-зону і додати A записи для @ та www й направити їх на IP-адресу сервера.

Тепер треба створити домашню директорію сайту на сервері, де будуть зберігатися усі файли та папки сайту:

cd /home
mkdir example.com
cd example.com
mkdir {public_html,logs}

Повертаємося в OLS-панель і переходимо в меню VirtualHost, де клацаємо Add й додаємо новий сайт:

  • Virtuаl Host Name – вказуємо домен веб-сайту, наприклад example.com (якщо ви будете використовувати основну версію з www, тоді вказуйте www.example.com);
  • Virtual Host Root – вказуємо повний шлях до розташування кореневого каталогу веб-сайту, наприклад /home/example.com;
  • Config file – розташування файлу конфігурації для сайту, наприклад $SERVER_ROOT/conf/vhosts/example.com/vhost.conf;
  • Follow Symbolic Link – Yes;
  • Enable Scripts/ExtApps – Yes;
  • Restrained – Yes;
  • Max Keep Alive Requests – кількість максимальних одночасних запитів до сайту, можна вказати 500;
  • External App Set UID Mode – тут необхідно залишити все по замовчуванню, або вказати тип ідентифікатора користувача і групи, які будуть використовуватися для керування віртуальним хостом. Доступні три параметри: Server UID, CGI File UID, DocRoot UID. З точки зору безпеки, рекомендується ізолювати власника сайту від інших сайтів на сервері. Найкращим із запропонованих варіантів буде DocRoot UID, тобто для керування сайтом необхідно створити і призначити окремого користувача (див. нижче);
  • suEXEC User – залишаємо без змін, або вказуємо назву користувача відповідно до External App Set UID Mode;
  • suEXEC Group – залишаємо без змін, або вказуємо групу користувача, або вказуємо назву користувача відповідно до External App Set UID Mode.

Решту налаштувань можна залишити без змін. Натисніть на іконку “Save” для збереження налаштувань. Якщо з’явиться попередження, що файлу vhost.conf не існує – натисніть на напис, який з’явиться “CLICK TO CREATE” та знову збережіть.

Як створити користувача для режиму DocRoot UID? Необхідно виконати послідовно наступні дії:

sudo useradd -r -d /home/example.com -s /usr/sbin/nologin username
grep username /etc/group
sudo usermod -aG username nobody
groups nobody
sudo chown -R username:username /home/example.com
ls -ld /home/example.com
sudo chmod -R 750 /home/example.com
sudo find /home/example.com/public_html -type d -exec chmod 755 {} \;
sudo find /home/example.com/public_html -type f -exec chmod 644 {} \;
systemctl restart lsws

Створені користувача та групу треба вписати в поля suEXEC User і suEXEC Group (див. вище).

Тепер переходимо до VirtualHost -> General, де треба заповнити конфігураційні дані віртуального хоста:

  • Document Root – вказати розташування файлів і папок сайту, наприклад $VH_ROOT/public_html;
  • Domain Name – вказати ім’я домену, наприклад $VH_DOMAIN;
  • Administrator Emal – вказати електронну адресу пошти адміністратора сайту;
  • Domain Aliases – можна вказати альтернативні імена домену, наприклад www.$VH_DOMAIN;

Решта налаштувань залишити без змін або встановити за потребою.

Нижче, в блоці Index Files вказати файли індексу – index.php, index.html:

Ще нижче, у блоці Custom Error Pages можна вказати власні сторінки для кодів відповіді сервера, наприклад 404, 403 і т.д. Просто вказуємо розташування html файлів цих сторінок. З точки зору кібербезпеки це добре, тому що на стандартних сторінках помилок розкривається повна назва сервера.

Далі необхідно знову перейти в меню Listeners -> Listener Default, а потім Listeners -> Listener SSL і в блоці Virtual Host Mappings додати домен сайту з www і без, відділивши комою:

Тепер переходимо в налаштування Virtual Host -> Rewrite, де необхідно увімкнути правила перезапису Rewrite і автоматичне підвантаження правил з .htaccess сайту. Опцію Log Level можна залишити без змін, вона відповідає за деталізованість логів і вступає в дію тільки тоді, коли в Error Logs встановлений рівень INFO:

Ще одним обов’язковим пунктом є вкладка Virtual Host -> Context. З її допомогою можна керувати доменом, встановити правила для домену, наприклад редиректи, обмеження доступу до файлів і директорій, HTTP Security Headers тощо. Необхідно натиснути Add і додати конфігурацію Static:

Приклад використання правил Context для захисту файлів WordPress:

Налаштування SSL Cloudflare для OpenLiteSpeed

Щоб веб-сайт запрацював на захищеному HTTPS-протоколі необхідно встановити SSL-сертифікат. Якщо домен обслуговується в DNS CloudFlare, можна згенерувати “вічні” сертифікати CloudFlare SSL для Origin Server, перенести їх на VPS-сервер і вказати їх розташування в OpenLiteSpeed.

Для цього необхідно авторизуватися в панелі керування Cloudflare, перейти в розділ сайту і відкрити меню SSL/TLS -> Origin Server -> Create Certificate. Далі відкриється вікно Origin Server, де необхідно задати налаштування генерації сертифікату. Все залишаємо без змін, але в полі Hostnames вказуємо домен сайту для якого потрібен SSL, наприклад example.com, www.example.com:

Отримані PEM-сертифікати копіюємо і зберігаємо на сервері в файлах:

/usr/local/lsws/conf/cert/example.com/privkey.pem
/usr/local/lsws/conf/cert/example.com/cert.pem

Права власності на директорію з сертифікатами повинні належати службовій групі lsadm:nobody з доступом 0750:

sudo chmod -R 0750 /usr/local/lsws/conf/cert/example.com/privkey.pem
sudo chown -R lsadm:nobody /usr/local/lsws/conf/cert/example.com/cert.pem

Тепер заходимо в OLS WebAdmin панель, в Virtual Host -> SSL й вказуємо розташування цих сертифікатів для Private Key File і Certificate File відповідно:

Підказка: Рекомендується зробити резервні копії сертифікатів і зберегти на локальному комп’ютері в зашифрованій папці. У разі чого, ви зможете швидко їх перевстановити.

На вкладці Listener HTTPS > SSL необхідно додатково виставити деякі налаштування SSL:

Як згенерувати SSL LetsEncrypt з допомогою Certbot?

Альтернативний варіант отримання SSL — з допомогою серверної утиліти Certbot від LetsEncrypt.

Необхідно попередньо створити додаткову папку в кореневій директорії сайту /.well-known/acme-challenge (з правами власності користувача:групи 0755), створити новий Static у вкладці Context й вказати повний шлях до неї, наприклад /home/example.com/public_html/.well-known/acme-challenge:

Після цього перевірити чи доступна ця директорія у браузері, наприклад додавши в неї тестовий файл test.txt. Якщо файл відкривається, значить все налаштовано правильно і Certbot зможе згенерувати сертифікат.

Тепер перейдемо до безпосередньої генерації. У командному рядку на сервері виконуємо:

sudo certbot certonly --webroot -w /path/to/your/webroot -d example.com --rsa-key-size 4096 -n --agree-tos -m email@webmaster.com

Сертифікат повинен успішно згенеруватися. Ви отримаєте 2 файли: privkey.pem та fullchain.pem. Аналогічно потрібно вказати шляхи до їх розташування в панелі OLS.

Цей спосіб генерації SSL від LetsEncrypt можна використовувати і для поштових доменів.

Якщо усі вищеперелічені дії виконано коректно, на головному екрані панелі WebAdmin, на лістингу доменів, статус вашого сайту буде в статусі Running:

Налаштування логів сайту

Щоб контролювати роботу сайту і виявляти помилки, необхідно включити системні журнали (логи) сайту. Переходимо на наступну вкладку Log.

В блоці Virtual Host Log (логи помилок) вказуємо наступні дані:

  • Use Server’s Log – No, будемо використовувати власні логи для окремого домену;
  • File Name – вказуємо розташування файлу логу помилок, наприклад $VH_ROOT/logs/error.log;
  • Log Level – рівень системних повідомлень. Найнижчим рівнем є рівень INFO, найвищим – ERROR. Ці рівні впливають на кількість повідомлень у файлі. Щоб файл швидко не наповнювався і водночас містив усі необхідні для обслуговування повідомлення, рекоменжуємо встановити рівень NOTICE або WARNING;
  • Rolling Size – максимальна вага файлу. Коли лог досягне відповідного значення, система створить новий файл, щоб не створювати перезаповнення. Оптимальне значення 10-20 Мб;
  • Keep Days – кількість днів зберігання логів. Оптимально 7-14 днів, в залежності від потреб та кількості вільного місця на диску;
  • Compress Archive – стискання файлу, рекомендується вказати Yes.

Тепер переходимо нижче до блоку Access Log (логи відвідувань), тиснемо + і аналогічно заповнюємо усі поля:

  • Log Control – Own Log File;
  • File Name – вказуємо розташування файлу $VH_ROOT/logs/access.log;
  • Log Format – можна задати формат генерації данхи, наприклад "%h %l %u %t \"%r\" %>s %b";
  • Log Headers – ставимо галочку, які дані слід реєструвати в логах: обираємо Referrer, UserAgent, Host;
  • Rolling Size – 20;
  • Keep Days – 14;
  • Compress Archive – Yes;
  • Bytes Log – тут можна за бажанням вказати місцерозташування логу, який зберігатиме кількість трафіку відвідування сайту. Наприклад: $VH_ROOT/logs/bytes.log

Обмеження доступу через HTTP Authorization

OpenLiteSpeed підтримує функцію веб-сервера Apache – htpasswd, що дозволяє обмежити доступ до будь-яких файлів та папок веб-сайту через HTTP-авторизацію. Це дуже важлива опція в контексті захисту від зламу і несанкціонованого доступу.

Отже, для того щоб застосувати htpasswd необхідно перейти в меню Virtual Host -> Security і в блоці Realm List натиснути + та додати нову конфігурацію Password File Realm Definition:

  • Realm Name – вказати будь-яку назву, наприклад “HTTP_Authorization”;
  • Notes – залишити порожнім. або додати будь-які свої замітки;
  • User DB Location$SERVER_ROOT/conf/vhosts/$VH_NAME/htpasswd;
  • User DB Max Cache Size – 200;
  • User DB Cache Timeout (secs) – 60;
  • Group DB Location$SERVER_ROOT/conf/vhosts/$VH_NAME/htgroup;
  • Group DB Max Cache Size – 200;
  • Group DB Cache Timeout (secs) – 60.

Натисніть Save. Система запропонує вам створити неіснуючі файли, натисніть CLICK TO CREATE.

Тепер в блоці Realm з’явиться нова конфігурація:

Треба перейти в неї клікнувши по назві і далі в блоці “Password File Realm Definition” клікнути по $SERVER_ROOT/conf/vhosts/$VH_NAME/htpasswd та додати дані авторизації для доступу через httpasswd:

  • User Name – вводимо логін;
  • New Password – вводимо пароль;
  • Retype Password – повторно вводимо парлоь для перевірки.

Зберігаємо.

Тепер необхідно перейти в Context, відкрити Static прикріплений до кореневої директорії сайту / і заповнити такі поля:

  • Realm – обрати назву своєї HTTP Авторизації;
  • Authentication Name – вказати будь-яку назву;
  • Access Allowed – вказати *.

Зберегти і перезвантажити OpenLiteSpeed натиснувши в панелі на кнопку в правому верхньому куті екрану “Graceful Restart” або виконавши у командному рядку systemctl restart lsws.

Резервний варіант як налаштувати htpasswd. У деяких випадках автоматично налаштувати HTTP-авторизацію через веб-інтерфейс OpenLiteSpeed не вдається – при введенні даних форма не спрацьовує, тоді необхідно зробити це на сервері вручну:

#Генеруємо httpasswd, система попросить задати пароль для вказаного користувача
sudo htpasswd -c /usr/local/lsws/conf/vhosts/example.com/.htpasswd userlogin

#Налаштовуємо необхідні права доступу
chmod -R 0750 /usr/local/lsws/conf/vhosts/example.com
chown -R lsadm:nobody /usr/local/lsws/conf/vhosts/example.com

Тепер переходимо знову в панель керування OpenLiteSpeed, в Virtual Host -> Security і додаємо новий Realm – вказуємо розташування файлу httpasswd в полі User DB Location, решта полів залишаємо пустими і зберігаємо. Додатково створювати користувача не треба (ви вже його створили).

Тепер аналогічно перейти в Virtual Host -> Context і повторити операцію як в інструкції вище. Авторизація має запрацювати.

Оновлення OpenLiteSpeed

Розробники регулярно випускають нові релізи веб-сервера OpenLiteSpeed з додаванням нових функцій та виправленням старих. Слідкувати за ними можна на офіційному сайті в розділі OpenSpeed Release Log.

Поточна версія веб-сервера виводиться в панелі адміністрування WebAdmin Console в верхньому лівому куті поруч з логотипом:

Для того щоб оновити OpenLiteSpeed до останньої версії, необхідно у командному рядку на сервері з облікового запису root виконати:

wget https://raw.githubusercontent.com/litespeedtech/openlitespeed/master/dist/admin/misc/lsup.sh
chmod +x lsup.sh
./lsup.sh

Оновлення автоматичне і не має вплинути жодним чином на поточну конфігурацію сервера. Детальніше в офіційні документації OpenLiteSpeed>>

Додаткові посилання і джерела

  1. LiteSpeed Official Website
  2. LiteSpeed Documentation
  3. LiteSpeed Docs: AntiDDoS Protection
  4. LiteSpeed Blog
  5. LiteSpeed Forum
  6. OpenLiteSpeed Official Website
  7. OpenLiteSpeed Documentation
  8. OpenLiteSpeed Docs: Security
  9. OpenLiteSpeed Docs: Access Control
  10. OpenLiteSpeed Docs: Authentification Through Realms
  11. OpenLiteSpeed Forum
  12. Cloudflare Community
  13. CyberPanel Community

ПОДІЛИТИСЬ У СОЦМЕРЕЖАХ:

Отримати комерційну пропозицію
Оформити заявку
Замовити консультацію
Замовити дзвінок

Вкажіть, будь ласка, контактний номер телефону. Наш менеджер миттєво зв’яжеться з Вами!