Como instalar o LOMP Stack (OpenLiteSpeed, MySQL e PHP) no Debian 12
OpenLiteSpeed é uma versão leve e de código aberto do LiteSpeed Server desenvolvido pela LiteSpeed Technologies. Ele suporta regras Apache Rewrite, HTTP/2 e HTTP/3 junto com protocolos TLS v1.3 e QUIC. Ele vem com um painel de administração baseado em WebGUI que o torna diferente de outros servidores e mais fácil de gerenciar.
O LOMP Stack é um acrônimo para Linux, OpenLiteSpeed, MySQL/MariaDB e PHP. Os servidores Litespeed são conhecidos por sua velocidade, especialmente com PHP que se integra usando a LiteSpeed Server Application Programming Interface (LSAPI). O interpretador LiteSpeed PHP (LSPHP) atende páginas PHP dinâmicas via LSAPI.
Neste tutorial, aprenderemos como instalar um servidor OpenLiteSpeed em uma máquina Debian 12.
Pré-requisitos
Um servidor rodando Debian 12.
Um usuário não root com privilégios sudo.
Um nome de domínio totalmente qualificado (FQDN) como example.com
apontando para o servidor.
O SELinux não precisa ser desabilitado ou configurado para funcionar com OpenLiteSpeed.
Certifique-se de que tudo esteja atualizado.
$ sudo apt update
$ sudo apt upgrade
Poucos pacotes que seu sistema precisa.
$ sudo apt install wget curl nano ufw software-properties-common dirmngr apt-transport-https gnupg2 ca-certificates lsb-release debian-archive-keyring unzip -y
Alguns desses pacotes podem já estar instalados em seu sistema.
Passo 1 - Configurar Firewall
O primeiro passo é configurar o firewall. O Debian vem com ufw (Firewall Descomplicado) por padrão.
Verifique se o firewall está em execução.
$ sudo ufw status
Você obterá a seguinte saída.
Status: inactive
Permita a porta SSH para que o firewall não interrompa a conexão atual ao ativá-la.
$ sudo ufw allow OpenSSH
Permita portas HTTP e HTTPS também.
$ sudo ufw allow http
$ sudo ufw allow https
Portas abertas relacionadas ao Openlitespeed.
$ sudo ufw allow 7080/tcp
Habilite o Firewall
$ sudo ufw enable
Command may disrupt existing ssh connections. Proceed with operation (y|n)? y
Firewall is active and enabled on system startup
Verifique o status do firewall novamente.
$ sudo ufw status
Você deverá ver uma saída semelhante.
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)
Passo 2 - Instale o OpenLiteSpeed
OpenLiteSpeed não envia um pacote para Debian 12. Portanto, construiremos nossa cópia a partir do código-fonte.
Baixe o arquivo de código-fonte do OpenLiteSpeed. Você pode obter o link para o arquivo de código-fonte mais recente na página oficial de downloads do OpenLiteSpeed.
$ wget https://openlitespeed.org/packages/openlitespeed-1.7.18.src.tgz
Extraia o arquivo.
$ tar -zxf openlitespeed-*.tgz
Mude para o diretório extraído.
$ cd openlitespeed-1.7.18
Construa o pacote do servidor.
$ sudo ./build.sh
Talvez seja necessário esperar uns bons 5 a 10 minutos para que o processo termine. Ignore quaisquer avisos que você receber durante o processo. Você receberá a seguinte saída quando terminar.
[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.
Terminado o processo, abra o arquivo ols.conf
para edição.
$ sudo nano ols.conf
Edite o arquivo conforme mostrado abaixo.
#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=
Não adicione sua senha aqui. Definiremos a senha posteriormente usando a linha de comando. Quando terminar, salve o arquivo pressionando Ctrl + X e digitando Y quando solicitado.
Agora que o OpenLiteSpeed foi construído, vamos instalá-lo.
$ sudo ./install.sh
O script do instalador instala e ativa o serviço lsws
para o servidor. Você receberá a seguinte saída quando terminar.
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.
Inicie o servidor OpenLiteSpeed.
$ sudo systemctl start lsws
Verifique o status do serviço.
$ 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.
Verifique a versão do servidor instalado.
$ /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)
Crie a senha do administrador
Você pode usar a senha de administrador fornecida durante o processo de instalação. No entanto, você deve criar o seu próprio redefinindo-o. Execute o script de redefinição de senha.
$ sudo /usr/local/lsws/admin/misc/admpass.sh
Você obterá a seguinte saída. Escolha seu nome de usuário e defina uma senha forte.
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!
Agora você pode usar a nova senha de administrador.
Abra http://
para acessar o painel de administração do OpenLiteSpeed. No seu primeiro login, seu navegador avisará que sua conexão não é privada. Clique em Avançado e clique em "Aceitar o risco e continuar" (no caso do Firefox) ou "Prosseguir para
" (no caso do navegador baseado em Chromium). Você não verá o aviso novamente.
Você deverá ver a página de login.
Insira as credenciais que você definiu anteriormente e pressione o botão Login para continuar.
Você receberá a seguinte tela.
Passo 3 - Instale o MariaDB
O Debian não vem mais com servidor MySQL. Portanto, usaremos o substituto imediato do MySQL, MariaDB. Mas antes de prosseguir, precisamos atualizar o repositório LiteSpeed. O repositório Litespeed adicionado através do instalador não funciona corretamente.
Abra o arquivo /etc/apt/sources.list.d/lst_debian_repo.list
para edição.
$ sudo nano /etc/apt/sources.list.d/lst_debian_repo.list
Altere o conteúdo do arquivo adicionando o Debian 11 (bullseye
) a ele. Não podemos usar o Debian 12 (bookworm
) porque o repositório não está atualizado para ele.
deb http://rpms.litespeedtech.com/debian/ bullseye main
Quando terminar, salve o arquivo pressionando Ctrl + X e digitando Y quando solicitado.
Instale o servidor MariaDB.
$ sudo apt install mariadb-server
O serviço MariaDB é iniciado automaticamente e executado após a instalação.
Verifique o status do serviço.
$ sudo systemctl status mariadb
Você obterá a seguinte saída.
? 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
Execute o script de segurança MariaDB.
$ sudo mariadb-secure-installation
Será solicitada a senha do root. Pressione Enter porque não definimos nenhuma senha para isso.
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):
A seguir, você será perguntado se deseja mudar para o método de autenticação de soquete Unix. O plugin unix_socket
permite que você use as credenciais do seu sistema operacional para se conectar ao servidor MariaDB. Como você já possui uma conta root protegida, digite n
para continuar.
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
Em seguida, você será perguntado se deseja alterar sua senha root. No Debian 12, a senha root está intimamente ligada à manutenção automatizada do sistema, portanto deve ser deixada como está. Digite n
para prosseguir.
... skipping.
You already have your root account protected, so you can safely answer 'n'.
Change the root password? [Y/n] n
A seguir, serão feitas algumas perguntas para melhorar a segurança do MariaDB. Digite Y para remover usuários anônimos, proibir logins root remotos, remover o banco de dados de teste e recarregar as tabelas de privilégios.
... 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!
Você pode entrar no shell MariaDB digitando sudo mysql
ou sudo mariadb
na linha de comando.
Passo 4 - Instale o PHP
Como construímos nosso pacote a partir do código-fonte, ele compila e constrói uma versão antiga do PHP cujo uso não é recomendado. Você pode verificar isso através do seguinte comando.
$ /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
Portanto, precisamos construir e instalar a versão mais recente do PHP. Mas, antes de prosseguirmos, precisamos instalar as ferramentas de construção.
$ sudo apt install build-essential autoconf libtool bison re2c pkg-config
A próxima etapa é instalar os pacotes exigidos pelo processo de construção do 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
Em seguida, baixe o código-fonte do PHP. Faremos o download da versão PHP 8.2.10, que é a versão mais recente disponível no momento da escrita.
$ cd ~
$ wget https://www.php.net/distributions/php-8.2.11.tar.gz
Extraia os arquivos.
$ tar -xzf php-8.2.11.tar.gz
Mude para o diretório baixado.
$ cd php-8.2.11
Em seguida, execute o script configure com as seguintes opções. A opção --enable-litespeed
é essencial.
$ 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
Você deverá obter a seguinte saída quando o script for concluído.
+--------------------------------------------------------------------+
| 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.
Compile a fonte.
$ sudo make -j $(nproc)
Você receberá uma saída semelhante quando terminar.
/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'.
Quando terminar, execute o seguinte comando para tentar verificar a versão.
$ ./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
Instale PHP.
$ sudo make install
Você obterá a seguinte saída.
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/
Verifique a instalação do PHP. Existem dois binários PHP disponíveis no diretório /usr/local/lsws/lsphp82/bin
. Um é o php
normal que é a versão de linha de comando e o outro é a versão Litespeed lsphp
. O segundo é o que usaremos.
$ /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
Você pode verificar a lista de módulos PHP habilitados.
$ /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]
Copie o php.ini-production
da pasta de instalação para a pasta /usr/local/lsws/lsphp82/lib
.
$ sudo cp php.ini-production /usr/local/lsws/lsphp82/lib/php.ini
Configuraremos o OpenLiteSpeed para funcionar com PHP posteriormente.
Abra o php.ini
para edição.
$ sudo nano /usr/local/lsws/lsphp82/lib/php.ini
Encontre a variável include_path
e altere seu valor conforme mostrado abaixo.
$ ;;;;;;;;;;;;;;;;;;;;;;;;;
; Paths and Directories ;
;;;;;;;;;;;;;;;;;;;;;;;;;
; UNIX: "/path1:/path2"
include_path = /usr/local/lsws/lsphp82/lib/php
Quando terminar, salve o arquivo pressionando Ctrl + X e digitando Y quando solicitado.
Passo 5 - Configurar MariaDB
Faça login no shell MariaDB.
$ sudo mysql
Crie um banco de dados de teste. Substitua testdb
pelo nome de banco de dados apropriado de sua escolha.
mysql> CREATE DATABASE testdb;
Crie um usuário de teste. Substitua testuser
por um nome de usuário apropriado. Substitua Your_Password123
por uma senha forte.
mysql> CREATE USER 'testuser'@'localhost' IDENTIFIED BY 'Your_Password123';
Conceda todos os privilégios no banco de dados ao usuário.
mysql> GRANT ALL PRIVILEGES ON testdb.* TO 'testuser'@'localhost';
Como não estamos modificando o usuário root, você deve criar outro usuário SQL para executar tarefas administrativas que utilizam autenticação por senha. Escolha uma senha forte para esta.
MariaDB> GRANT ALL ON *.* TO 'navjot'@'localhost' IDENTIFIED BY 'Yourpassword32!' WITH GRANT OPTION;
Liberar privilégios de usuário.
mysql> FLUSH PRIVILEGES;
Saia do shell do MySQL.
mysql> exit
Passo 6 - Configurar OpenLiteSpeed
Mude a porta HTTP de volta para 80
Vamos alterar a porta HTTP padrão para 80. Faça login no painel de administração em http://
com as credenciais que você acabou de criar.
Visite a seção Listeners à esquerda. Você verá os ouvintes padrão com a porta 8080
.
Clique no botão Visualizar para ver a configuração detalhada. Na próxima página, em Listener Default > General, clique no ícone Editar e altere a porta de 8080
para 80
.
Clique em Salvar e reinicie o servidor clicando no botão Reiniciar normalmente.
Passo 7 – Configurar PHP
Nesta etapa, precisamos associar nossa cópia do PHP 8.2 ao servidor.
Clique na seção Configuração do Servidor à esquerda e depois na aba Aplicativo Externo. Você verá um aplicativo LiteSpeed para PHP existente. Faremos algumas edições nele.
Clique no botão Editar para editar o aplicativo PHP.
Em seguida, combine a configuração conforme mostrado abaixo. Deixe todos os outros campos em branco.
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
Clique em Salvar quando terminar.
Agora que criamos nosso próprio aplicativo PHP 8.2, precisamos informar ao servidor para começar a usá-lo. Como editamos a listagem padrão, ela já está configurada. Reinicie o servidor clicando no botão Reinício normal.
Para testar se o seu PHP foi alterado corretamente, visite http://
no seu navegador.
Reinicie o PHP
No OpenLiteSpeed, se você editar o php.ini ou instalar um novo módulo PHP, reiniciar o servidor não mostrará as alterações. Você precisará reiniciar o processo PHP para isso. Primeiro, você precisará localizar os IDs do processo 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
Elimine manualmente os processos lsphp
.
$ sudo kill -9 500747
$ sudo kill -9 500748
Reinicie o servidor.
$ sudo systemctl restart lsws
Passo 8 - Criar VirtualHost
Primeiro, precisamos criar diretórios para nosso host virtual.
$ sudo mkdir /usr/local/lsws/example.com/{html,logs} -p
O diretório html
conterá os arquivos públicos e o diretório logs
conterá os logs do servidor.
Em seguida, abra o Admin Console, acesse a seção Hosts Virtuais à esquerda e clique no botão Adicionar.
Preencha os valores conforme especificado
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
Clique no botão Salvar quando terminar. Você receberá o seguinte erro porque o arquivo de configuração não existe no momento. Clique no link para criar o arquivo de configuração.
Clique no botão Salvar novamente para finalizar a criação do Host Virtual.
Depois que o host virtual for criado, vá para Hosts Virtuais -> Escolha Host Virtual (exemplo.com) -> Geral e modifique a configuração conforme fornecido.
Document Root: $VH_ROOT/html/
Domain Name: example.com
Enable GZIP Compression: Yes
Enable Brotli Compression: Yes
Clique no botão Salvar quando terminar. Em seguida, precisamos configurar os arquivos de índice. Clique no botão de edição em Arquivos de índice abaixo da seção Geral. Defina as seguintes opções.
Use Server Index Files: No
Index files: index.php, index.html, index.htm
Auto Index: No
Clique em Salvar quando terminar. Em seguida, precisamos escolher Arquivos de log. Vá para a seção Log, clique em Editar em Log do host virtual e preencha os seguintes valores. Deixe outras configurações inalteradas.
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
Você pode escolher o Nível de Log como DEBUG
se estiver em uma máquina de desenvolvimento.
Clique em Salvar e depois clique no sinal de mais na seção Log de acesso para adicionar uma nova entrada. Preencha os seguintes valores.
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
Clique em Salvar quando terminar. Em seguida, precisamos configurar o Controle de Acesso na seção Segurança. Defina os seguintes valores.
Allowed List: *
Denied List: Not set
Clique em Salvar quando terminar. Em seguida, precisamos definir a Definição do manipulador de script. Clique no sinal de mais (+) para adicionar uma nova definição. Defina os seguintes valores.
Suffixes: php
Handler Type: LiteSpeed SAPI
Handler Name: [Server Level]: lsphp
Clique em Salvar quando terminar. Em seguida, precisamos definir Rewrite Control na seção Rewrite. Defina os seguintes valores.
Enable Rewrite: Yes
Auto Load from .htaccess: Yes
Log Level: Not Set
Clique em Salvar quando terminar. E por fim, precisamos definir os Listeners. Vá para a seção Listeners e clique no botão Visualizar em Listener Padrão. Em seguida, clique no botão Adicionar em Mapeamentos de Host Virtual para adicionar um novo mapeamento e definir os seguintes valores.
Virtual Host: example.com
Domains: example.com
Clique em Salvar quando terminar. Agora, clique no botão Reiniciar normalmente para aplicar todas as alterações acima e reiniciar o servidor.
Passo 9 – Instalar SSL
A configuração do SSL no OpenLiteSpeed exige a configuração de dois certificados. Um certificado autoassinado para o servidor geral e um servidor Let's Encrypt específico do site.
O painel de administração já vem com um certificado autoassinado pré-instalado que está disponível no diretório /usr/local/lsws/admin/conf
.
Vamos criar primeiro o certificado autoassinado para o servidor geral.
$ cd ~
$ openssl req -x509 -days 365 -newkey rsa:4096 -keyout key.pem -out cert.pem -nodes
Você obterá uma saída semelhante.
-----
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
Você pode pressionar enter em todos os campos e deixá-los vazios. Preencha seu domínio para o nome comum e seu endereço de e-mail.
Crie o diretório para os certificados autoassinados.
$ sudo mkdir /usr/local/lsws/certs
Copie o certificado para o diretório /usr/local/lsws/certs
.
$ sudo mv *.pem /usr/local/lsws/certs
Precisamos instalar o Certbot para gerar certificados SSL gratuitos oferecidos pela Let's Encrypt.
Você pode instalar o Certbot usando o repositório Debian ou obter a versão mais recente usando a ferramenta Snapd. Estaremos usando a versão Snapd. O Debian 12 não vem com o Snapd instalado.
Instale o pacote Snapd.
$ sudo apt install -y snapd
Execute os seguintes comandos para garantir que sua versão do Snapd esteja atualizada.
$ sudo snap install core
$ sudo snap refresh core
Emita o seguinte comando para instalar o Certbot.
$ sudo snap install --classic certbot
Use o comando a seguir para garantir que o comando Certbot possa ser executado criando um link simbólico para o diretório /usr/bin
.
$ sudo ln -s /snap/bin/certbot /usr/bin/certbot
Verifique a instalação.
$ certbot --version
certbot 2.6.0
Execute o seguinte comando para gerar um certificado SSL.
Obtenha o certificado SSL. O diretório webroot é definido como o diretório HTML público configurado anteriormente.
$ 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
Gere um certificado do grupo Diffie-Hellman.
$ sudo openssl dhparam -dsaparam -out /etc/ssl/certs/dhparam.pem 4096
Verifique o serviço de agendamento de renovação do Certbot.
$ sudo systemctl list-timers
Você encontrará snap.certbot.renew.service
como um dos serviços programados para execução.
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
Para verificar se a renovação SSL está funcionando bem, faça uma simulação do processo.
$ sudo certbot renew --dry-run
Se você não encontrar erros, está tudo pronto. Seu certificado será renovado automaticamente.
Agora abra o Admin Console, acesse Listeners >> Add New Listener e adicione os seguintes valores.
Listener Name: SSL
IP Address: ANY IPv4
Port: 443
Secure: Yes
Clique em Salvar quando terminar. Em seguida, vá para a seção Mapeamentos de Host Virtual no Listener SSL clicando em SSL, clicando no botão Adicionar e preenchendo os seguintes valores.
Virtual Host: example.com
Domains: example.com
Clique em Salvar quando terminar. Em seguida, vá para Listeners >> SSL Listener >> SSL Tab >>SSL Private Key & Certificate (botão Editar) e preencha os seguintes valores para o certificado autoassinado que criamos antes.
Private Key File: /home/user/key.pem
Certificate File: /home/user/cert.pem
Chained Certificate: Yes
Clique em Salvar quando terminar. Em seguida, vá para Listeners >> SSL Listener >> Guia SSL >> Protocolo SSL (botão Editar) e preencha os seguintes valores para o protocolo SSL e detalhes de cifra.
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
Clique em Salvar quando terminar. Em seguida, vá para Virtual Hosts >> example.com >> Guia SSL >> Chave privada e certificado SSL (botão Editar) e preencha os seguintes valores com o certificado Let's Encrypt.
Private Key File: /etc/letsencrypt/live/example.com/privkey.pem
Certificate File: /etc/letsencrypt/live/example.com/fullchain.pem
Chained Certificate: Yes
Clique em Salvar quando terminar. Em seguida, vá para Hosts Virtuais >> example.com >> Guia SSL >> Grampeamento OCSP (botão Editar) e preencha os seguintes valores para ativar o Grampeamento OCSP.
Enable OCSP Stapling: Yes
OCSP Response Max Age(Secs): 300
OCSP Responder: http://r3.o.lencr.org
Clique em Salvar quando terminar. Em seguida, vá para Virtual Hosts >> example.com >> Guia SSL >> Segurança (botão Editar) e preencha os seguintes valores para ativar o protocolo HTTP3/QUIC.
Enable HTTP3/QUIC: Yes
Não precisamos ativar outras opções porque elas estão ativadas por padrão.
Clique em Salvar quando terminar.
Reinicie o servidor clicando no botão Graceful restart.
Passo 10 – Local de Teste
Crie um arquivo de teste em seu diretório html
.
$ sudo nano /usr/local/lsws/example.com/html/index.php
Cole o seguinte código no editor 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>
Salve o arquivo pressionando Ctrl + X e digitando Y quando solicitado. Abra o URL https://example.com
em um navegador e você verá a página a seguir.
O site de teste está totalmente funcional. Você pode começar a usar o servidor para servir sites e aplicativos PHP dinâmicos.
Conclusão
Isso conclui nosso tutorial sobre como instalar LOMP Stack (OpenLiteSpeed, MySQL e PHP) em um servidor Debian 12. Se você tiver alguma dúvida, poste-a nos comentários abaixo.