Como instalar LOMP Stack (OpenLiteSpeed, MySQL e PHP) no Ubuntu 24.04
Este tutorial existe para estas versões do sistema operacional
- Ubuntu 24.04 (Nobre Numbat)
- Ubuntu 22.04 (Jammy Medusa)
- Ubuntu 20.04 (FocalFossa)
- Ubuntu 18.04 (castor biônico)
Nesta página
- Pré-requisitos
- Passo 1 - Configurar Firewall
Passo 2 - Instale o OpenLiteSpeed
- Crie a senha do administrador
Passo 6 - Configurar OpenLiteSpeed
Passo 7 – Configurar PHP
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 e protocolos TLS v1.3 e QUIC. Ele vem com um painel de administração baseado em WebGUI, o que o diferencia 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.
Este tutorial mostrará como instalar um servidor OpenLiteSpeed no Ubuntu 24.04.
Pré-requisitos
Um servidor executando Ubuntu 24.04.
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.
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 ubuntu-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á-lo.
$ 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
Instalaremos o OpenLiteSpeed compilando 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. A versão 1.7.19 é a versão estável atual disponível.
$ wget https://openlitespeed.org/packages/openlitespeed-1.7.19.src.tgz
Extraia o arquivo.
$ tar -zxf openlitespeed-*.tgz
Mude para o diretório extraído.
$ cd openlitespeed-1.7.19
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
? lshttpd.service - OpenLiteSpeed HTTP Server
Loaded: loaded (/usr/lib/systemd/system/lshttpd.service; enabled; preset: enabled)
Active: active (running) since Sun 2024-06-02 12:58:44 UTC; 3s ago
Process: 52583 ExecStart=/usr/local/lsws/bin/lswsctrl start (code=exited, status=0/SUCCESS)
Main PID: 52604 (litespeed)
CGroup: /system.slice/lshttpd.service
??52604 "openlitespeed (lshttpd - main)"
??52610 "openlitespeed (lscgid)"
??52623 "openlitespeed (lshttpd - #01)"
??52624 lsphp
Jun 02 12:58:42 lompserver systemd[1]: Starting lshttpd.service - OpenLiteSpeed HTTP Server...
Jun 02 12:58:42 lompserver lswsctrl[52583]: [OK] litespeed: pid=52604.
Jun 02 12:58:44 lompserver systemd[1]: Started lshttpd.service - OpenLiteSpeed HTTP Server.
Verifique a versão do servidor instalado.
$ /usr/local/lsws/bin/lshttpd -v
LiteSpeed/1.7.19 Open (BUILD built: Tue Apr 16 15:14:26 UTC 2024)
module versions:
lsquic 3.3.2
modgzip 1.1
cache 1.66
mod_security 1.4 (with libmodsecurity v3.0.12)
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 MySQL
Antes de prosseguir com a instalação do MySQL, 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 nome da versão do Ubuntu 24.04 (noble
) ao URL do repositório.
deb http://rpms.litespeedtech.com/debian/ noble main
Quando terminar, salve o arquivo pressionando Ctrl + X e digitando Y quando solicitado.
Instale o servidor MySQL.
$ sudo apt install mysql-server
O serviço MySQL é iniciado automaticamente e executado após a instalação.
Verifique o status do serviço.
$ sudo systemctl status mysql
Você obterá a seguinte saída.
? mysql.service - MySQL Community Server
Loaded: loaded (/usr/lib/systemd/system/mysql.service; enabled; preset: enabled)
Active: active (running) since Sun 2024-06-02 13:42:12 UTC; 8min ago
Process: 57889 ExecStartPre=/usr/share/mysql/mysql-systemd-start pre (code=exited, status=0/SUCCESS)
Main PID: 57898 (mysqld)
Status: "Server is operational"
Tasks: 37 (limit: 2263)
Memory: 370.6M (peak: 386.9M)
CPU: 6.762s
CGroup: /system.slice/mysql.service
??57898 /usr/sbin/mysqld
Jun 02 13:42:11 lompserver systemd[1]: Starting mysql.service - MySQL Community Server...
Execute o script de segurança do MySQL.
$ sudo mysql_secure_installation
Você será solicitado a instalar o Componente Validar Senha
. Pressione Y
para continuar.
Securing the MySQL server deployment.
Connecting to MySQL using a blank password.
VALIDATE PASSWORD COMPONENT can be used to test passwords
and improve security. It checks the strength of password
and allows the users to set only those passwords which are
secure enough. Would you like to setup VALIDATE PASSWORD component?
Press y|Y for Yes, any other key for No: y
Em seguida, você será solicitado a escolher a força da senha. Selecione 2
para Strong e prossiga.
There are three levels of password validation policy:
LOW Length >= 8
MEDIUM Length >= 8, numeric, mixed case, and special characters
STRONG Length >= 8, numeric, mixed case, special characters and dictionary file
Please enter 0 = LOW, 1 = MEDIUM and 2 = STRONG: 2
A instalação do MySQL não solicitará que você defina uma senha root porque o tipo de autenticação padrão é auth_socket
que depende da autenticação do seu sistema Linux. No entanto, você pode alterá-lo mais tarde.
Skipping password set for root as authentication with auth_socket is used by default.
If you would like to use password authentication instead, this can be done with the "ALTER_USER" command.
See https://dev.mysql.com/doc/refman/8.0/en/alter-user.html#alter-user-password-management for more information.
A seguir, serão feitas algumas perguntas para melhorar a segurança do MySQL. 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.
By default, a MySQL installation has an anonymous user,
allowing anyone to log into MySQL 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? (Press y|Y for Yes, any other key for No) : 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? (Press y|Y for Yes, any other key for No) : y
Success.
By default, MySQL 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? (Press y|Y for Yes, any other key for No) : 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? (Press y|Y for Yes, any other key for No) : y
Success.
All done!
Você pode entrar no shell do MySQL digitando sudo mysql
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-1 libargon2-dev libbz2-dev libffi-dev libc-client-dev libpspell-dev flex libgmp3-dev libmcrypt-dev libmhash-dev freetds-dev libmysqlclient-dev 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.3.7, que é a versão mais recente disponível no momento da escrita.
$ cd ~
$ wget https://www.php.net/distributions/php-8.3.7.tar.gz
Extraia os arquivos.
$ tar -xzf php-8.3.7.tar.gz
Mude para o diretório baixado.
$ cd php-8.3.7
Em seguida, execute o script configure com as seguintes opções. A opção --enable-litespeed
é essencial.
$ sudo ./configure --prefix=/usr/local/lsws/lsphp83 --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.
Generating phar.php
Generating phar.phar
PEAR package PHP_Archive not installed: generated phar will require PHP's phar extension be enabled.
directorytreeiterator.inc
phar.inc
invertedregexiterator.inc
directorygraphiterator.inc
pharcommand.inc
clicommand.inc
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.3.7 (litespeed) (built: Jun 3 2024 05:28:43)
Copyright (c) The PHP Group
Zend Engine v4.3.7, Copyright (c) Zend Technologies
Instale PHP.
$ sudo make install
Você obterá a seguinte saída.
Installing shared extensions: /usr/local/lsws/lsphp83/lib/php/extensions/no-debug-non-zts-20230831/
Installing PHP CLI binary: /usr/local/lsws/lsphp83/bin/
Installing PHP CLI man page: /usr/local/lsws/lsphp83/php/man/man1/
Installing PHP LiteSpeed binary: /usr/local/lsws/lsphp83/bin/
Installing phpdbg binary: /usr/local/lsws/lsphp83/bin/
Installing phpdbg man page: /usr/local/lsws/lsphp83/php/man/man1/
Installing PHP CGI binary: /usr/local/lsws/lsphp83/bin/
Installing PHP CGI man page: /usr/local/lsws/lsphp83/php/man/man1/
Installing build environment: /usr/local/lsws/lsphp83/lib/php/build/
Installing header files: /usr/local/lsws/lsphp83/include/php/
Installing helper programs: /usr/local/lsws/lsphp83/bin/
program: phpize
program: php-config
Installing man pages: /usr/local/lsws/lsphp83/php/man/man1/
page: phpize.1
page: php-config.1
Installing PEAR environment: /usr/local/lsws/lsphp83/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.15
Wrote PEAR system config file at: /usr/local/lsws/lsphp83/etc/pear.conf
You may want to add: /usr/local/lsws/lsphp83/lib/php to your php.ini include_path
Installing PDO headers: /usr/local/lsws/lsphp83/include/php/ext/pdo/
Verifique a instalação do PHP. Existem dois binários PHP disponíveis no diretório /usr/local/lsws/lsphp83/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/lsphp83/bin/lsphp -v
PHP 8.3.7 (litespeed) (built: Jun 3 2024 05:28:43)
Copyright (c) The PHP Group
Zend Engine v4.3.7, Copyright (c) Zend Technologies
Você pode verificar a lista de módulos PHP habilitados.
$ /usr/local/lsws/lsphp83/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/lsphp83/lib
.
$ sudo cp php.ini-production /usr/local/lsws/lsphp83/lib/php.ini
Configuraremos o OpenLiteSpeed para funcionar com PHP posteriormente.
Abra o php.ini
para edição.
$ sudo nano /usr/local/lsws/lsphp83/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/lsphp83/lib/php"
Quando terminar, salve o arquivo pressionando Ctrl + X e digitando Y quando solicitado.
Passo 5 – Configurar MySQL
Faça login no shell do MySQL.
$ 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';
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.
Abra o URL http://
em seu navegador e você deverá obter a seguinte página.
Passo 7 – Configurar PHP
Nesta etapa, precisamos associar nossa cópia do PHP 8.3 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: lsphp83/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.3, devemos 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 120093 0.0 0.8 123772 32920 ? S 06:35 0:00 lsphp
nobody 120111 0.0 0.4 123772 18980 ? Ss 06:38 0:00 lsphp
navjot 120139 0.0 0.0 6544 2304 pts/0 S+ 06:44 0:00 grep --color=auto lsphp
Elimine manualmente os processos lsphp
.
$ sudo kill -9 120093
$ sudo kill -9 120111
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) [AU]:
State or Province Name (full name) [Some-State]:
Locality Name (eg, city) []:
Organization Name (eg, company) [Internet Widgits Pty Ltd]:
Organizational Unit Name (eg, section) []:
Common Name (e.g. server FQDN or YOUR name) []: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. Ubuntu 24.04 vem com Snapd pré-instalado.
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.10.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
Mon 2024-06-03 07:20:00 UTC 5min Mon 2024-06-03 07:10:02 UTC 4min 11s ago sysstat-collect.timer sysstat-collect.service
Mon 2024-06-03 08:29:00 UTC 1h 14min - - snap.certbot.renew.timer snap.certbot.renew.service
Mon 2024-06-03 08:50:32 UTC 1h 36min Mon 2024-06-03 07:04:04 UTC 10min ago fwupd-refresh.timer fwupd-refresh.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, vá para 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: $SERVER_ROOT/certs/key.pem
Certificate File: $SERVER_ROOT/certs/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.
ALPN: Enable HTTP/2 and HTTP/3
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 Ubuntu 24.04. Se você tiver alguma dúvida, poste-a nos comentários abaixo.