Como Instalar Openlitespeed no Ubuntu 20.04

Este post também está disponível em: English (Inglês)

O OpenLiteSpeed é um Web Server Open Source moderno com recursos de alto desempenho e segurança de alto nível.

O servidor entende as regras de reescrita do Apache e possui recursos de aceleração de cache inteligente que permitem implementar o cache mais rápido em seu servidor.

Possui Suporte Múltiplo PHP embutido e também a LSAPI para aplicativos externos 2x mais rápidos; Além de tudo isso é possível habilitar vários processadores PHP para diferentes sites.

Principais recursos do OpenLiteSpeed

  • Compatibilidade com as regras de reescrita do Apache.
  • Painel de Administração Web.
  • Arquitetura orientada a eventos.
  • Suporte a HTTP/3 & HTTP/2.
  • Suporte a múltiplas versões PHP.
  • Módulo Multi-Thread.
  • LiteSpeed Cache.
  • WAF(mod_security 3), Anti-DDoS, e Limite de largura de banda.

Neste post vamos abordar

  • Configuração do Firewall UFW
  • Instalação do OpenLiteSpeed
  • Instalação do PHP 7.4 e extensões
  • Instalação do MariaDB 10.4
  • Correta configuração de vhost no OpenLiteSpeed para hospedar nosso primeiro domínio
  • Instalação e configuração de SSL com Let´s Encrypt em seu domínio no OpenLiteSpeed
  • Instalação do WordPress

Observação: Para melhor segurança e excelente desempenho, o SSL irá utilizar o novo TLS 1.3 e http a nova versão http/3.

Configuração do Firewall UFW

Vamos utilizar o Firewall padrão do Ubuntu 20.04. Vamos abrir as seguintes portas:
Porta: 80 tcp, 443 tcp/udp, 7080/tcp, 22/ssh

O UFW como padrão está inativo.

Por default o UFW está configurado para negar todas as conexões de entrada e permite apenas as conexões de saída, ou seja, ninguém externo conseguiria acessar seu servidor mas seus aplicativos conseguiriam acessar a rede externa.

Para evitar problemas vamos primeiro criar nossas regras, abrindo as portas que vamos utilizar.

ufw allow 80/tcp
ufw allow 443/tcp
ufw allow 443/udp
ufw allow 7080/tcp
ufw allow 22/tcp

Agora vamos habilitar o UFW. Digite y na pergunta

root@helpsysadmin:~# ufw enable
Command may disrupt existing ssh connections. Proceed with operation (y|n)? y

Feito! agora temos o UFW ativo e filtrando as portas que informamos.

Instalação do OpenLiteSpeed

Vamos instalar o OpenLiteSpeed através do Repositório

wget -O - http://rpms.litespeedtech.com/debian/enable_lst_debian_repo.sh | bash

Atualize a lista de repositório e instale o OpenLiteSpeed

apt update
apt install openlitespeed -y

Após a instalação vamos modificar a senha. Existem duas formas de fazer isso.

A primeira é utilizar o painel do OpenLiteSpeed e com o usuário e senha padrã(usuario: admin senha: 123456) alterar sua senha.

A Segunda é a que eu recomendo pelo menos conhecer. Este método é muito útil se um dia perder a senha do admin. Através do shell siga os passos abaixo

cd /usr/local/lsws/admin/misc
./admpass.sh

Em
User name [admin]: deixe em branco apenas dê enter
a seguir informe duas vezes a senha que deseja utilizar .

Este método é muito útil se um dia perder a senha da administração.

Para Acessar a administração do OpenLiteSpeed utilize: https://ipdoseuservidor:7080

Instalação do PHP 7.4 e extensões


Como padrão, o OpenLiteSpeed instala o PHP 7.3.

Para efeitos didáticos e melhorias, vamos instalar o PHP 7.4 e configurá-lo como padrão no OpenLiteSpeed.

Instale o PHP 7.4 e extensões

apt install -y lsphp74 lsphp74-apcu lsphp74-common lsphp74-curl lsphp74-dbg lsphp74-dev lsphp74-igbinary lsphp74-imagick lsphp74-imap lsphp74-intl lsphp74-ioncube lsphp74-json lsphp74-ldap lsphp74-memcached lsphp74-modules-source lsphp74-msgpack lsphp74-mysql lsphp74-opcache lsphp74-pear lsphp74-pgsql lsphp74-pspell lsphp74-redis lsphp74-snmp lsphp74-sqlite3 lsphp74-sybase lsphp74-tidy

Instalação do MariaDB 10.4

Instalação do repositório do MariaDB 10.4

apt-get install software-properties-common dirmngr apt-transport-https
apt-key adv --fetch-keys 'https://mariadb.org/mariadb_release_signing_key.asc'
add-apt-repository 'deb [arch=amd64,arm64,ppc64el] https://espejito.fder.edu.uy/mariadb/repo/10.4/ubuntu focal main'

Instalação do MariaDB 10.4

apt update
apt install mariadb-server

Execute o script para segurança do MariaDB

mysql_secure_installation
Enter current password for root (enter for none): ( PRESSIONE ENTER )
Set root password? [Y/n] Y
New password: Digite a senha desejada para o root do mariadb
Re-enter new password: Digite novamente a senha para o root do mariadb
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	

Habilitar e iniciar o MariaDB

systemctl enable mariadb
systemctl start mariadb
systemctl status mariadb

Configuração de vhost no OpenLiteSpeed para hospedar nosso primeiro domínio

Neste passo, precisamos de um domínio que iremos apontá-lo para o IP de nosso servidor. Em nosso exemplo estamos utilizando um domínio “helpsysadmin.ml” que utiliza os serviços do cloudflare.

Em seu provedor de DNS crie uma entrada tipo A do nome do seu domínio para o IP de seu servidor OpenLiteSpeed e outra entrada CNAME www para o nome de seu domínio.

Criando Virtual Host no OpenLiteSpeed

Acesse a administração do OpenLiteSpeed https://ipdoseuservidor:7080 e a seguir Virtual Hosts, clique no ícone Add

Salve as alterações

Adicione a configuração abaixo

VariáveisValor
Virtual Host Namehelpsysadmin.ml
Virtual Host Root$SERVER_ROOT/helpsysadmin.ml/
Config File$SERVER_ROOT/conf/vhosts/$VH_NAME/helpsysadmin.ml.conf
Follow Symbolic LinkYes
Enable Scripts/ExtAppsYes
RestrainedYes
ExtApp Set UID ModeServer UID

No topo da página clique em save. Você verá uma mensagem informando que o arquivo .conf não existe. Abaixo haverá a opção para criar o arquivo .conf onde deverá clicar “CLICK TO CREATE” a seguir irá conseguir salvar esta parte.

Salve as alterações

Quando clicamos em “CLICK TO CREATE” Openlitespeed cria um arquivo de configuração de host virtual que nos permite salvar as configurações

As configurações finais deverão estarão similar a imagem

Uma vez que nosso virtual host foi criado, vá novamente em Virtual Hosts –> clique no Virtual Host (helpsysadmin.ml) –> selecione a aba General e modifique as configurações como mostrado abaixo.

VariáveisValor
Document Root $VH_ROOT/html/
Domain Namehelpsysadmin.ml
Enable CompressionYes

Salve as alterações

Salve as alterações

Novamente vá em Virtual Hosts > clique em seu Virtual Host (helpsysadmin.ml) –> General e edite Index Files

VariáveisValor
Use Server Index Files No
Index Filesindex.html, index.php
Auto IndexNo
Auto Index URI
Salve as alterações

Novamente vá em Virtual Hosts > clique em seu Virtual Host (helpsysadmin.ml) –> Log e edite Virtual Host Log

VariáveisValor
Use Server’s LogYes
File Name$VH_ROOT/logs/error.log
Log LevelERROR
Rolling Size (bytes)10M
Salve as alterações

Novamente vá em Virtual Hosts > clique em seu Virtual Host (helpsysadmin.ml) –> Log e edite Access Log

VariáveisValor
Log ControlOwn Log File
Piped Logger
Log Format
Log Headers
Rolling Size (bytes)10M
Keep Days30
Bytes log
Compress ArchiveYes
Salve as alterações

Após criarmos um Virtual Host para nosso domínio, precisamos mapeá-lo para que possamos acessa-lo ao final.

Para fazer isso, vá em Listeners, vamos criar dois registro, um será responsável em configurar nosso domínio na porta 80 , o outro na porta segura 443.

Localize o menu “Listener List” e a direita clique no sinal de “+” para adicionarmos nosso primeiro Listerner.
Preencha os campos conforme a tabela

VariávelValor
Listener NamePorta80
IP AddressANY
Port 80
Binding
SecureNo
Notes
Salve as alterações

Agora adicione um novo Listener para a porta 443 conforme abaixo

VariávelValor
Listener NamePorta443
IP AddressANY
Port443
Binding
SecureYes
Notes
Salve as alteraçõe

Neste ponto temos os Listerners para a porta 80 e 443. Clique no nome de um dos Listernes que você criou, a seguir em “Virtual Host Mappings” clique no sinal “+“.

Na próxima tela em Virtual Host * selecione o nome do seu domínio e abaixo em Domains digite novamente o nome do seu domínio sem www ou http

Salve as alterações

Execute os mesmos passos com o Listener Porta443 que você criou anteriormente.

Criando pastas para logs e site

Acesse o SSH do seu servidor e digite(substitua o domínio informado pelo que configurou no OpenLiteSpeed)

mkdir /usr/local/lsws/helpsysadmin.ml/
mkdir /usr/local/lsws/helpsysadmin.ml/{html,logs}

Antes de prosseguirmos vamos reiniciar o OpenLiteSpeed e instalar um certificado SSL Let´s Encrypt para o domínio.

É importante que seu domínio esteja apontando para o IP do seu servidor como informamos no princípio deste post

Acesse o painel e reinicie o OLS

Acesse o SSH do seu servidor e instale o certbot

apt install certbot -y

Execute o certbot e responda as perguntas conforme abaixo adaptando para seu domínio

certbot certonly
How would you like to authenticate with the ACME CA?
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
1: Spin up a temporary webserver (standalone)
2: Place files in webroot directory (webroot)
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Select the appropriate number [1-2] then [enter] (press 'c' to cancel): 2
Please enter in your domain name(s) (comma and/or space separated)  (Enter 'c'
to cancel): helpsysadmin.ml
Input the webroot for helpsysadmin.ml: /usr/local/lsws/helpsysadmin.ml/html

Se tudo deu certo, você verá uma mensagem informando que Certificado e a Key foram criados, guarde estas informações. Vamos utilizá-las a seguir

IMPORTANT NOTES:
 - Congratulations! Your certificate and chain have been saved at:
   /etc/letsencrypt/live/helpsysadmin.ml/fullchain.pem
   Your key file has been saved at:
   /etc/letsencrypt/live/helpsysadmin.ml/privkey.pem
   Your cert will expire on 2021-04-27. To obtain a new or tweaked
   version of this certificate in the future, simply run certbot
   again. To non-interactively renew *all* of your certificates, run
   "certbot renew"
 - If you like Certbot, please consider supporting our work by:

   Donating to ISRG / Let's Encrypt:   https://letsencrypt.org/donate
   Donating to EFF:                    https://eff.org/donate-le

Volte ao painel do OpenLiteSpeed em Virtual Hosts >> helpsysadmin.ml e selecione a aba SSL.

Edite SSL Private Key & Certificate

Private Key File é o segundo resultado quando solicitou o certificado

Certificate File é o primeiro resultado quando solicitou o certificado

Salve as alterações

Após salvar as alterações continue na aba SSL, vamos fazer algumas alterações e melhorias

Edite SSL Protocol

VariávelValor
Protocol VersionTLS v1.2 TLS v1.3
Ciphers
Enable ECDH Exchange
Enable DH Key Exchange
DH Parameter
Salve as alterações e continue na aba SSL

Edite Security

VariávelValor
SSL Renegotiation ProtectionHTTP/2SSL Renegotiation ProtectionYes
Enable Session CacheYes
Enable Session TicketsYes
Enable SPDY/HTTP2/HTTP3HTTP/3
Enable QUICYes

Como este é o primeiro domínio com certificado SSL precisaremos repetir estes passos em Listeners, a seguir, clique em Porta443 e acesse a aba SSL.
Preencha os campos exatamente como fez em Virtual Hosts anteriormente. Ao final salve e dê um restart no OpenLiteSpeed pelo painel.

Nota: Nos próximos domínios que hospedar, será necessário informar as configurações de SSL apenas no Virtual Host referente ao domínio.

Neste ponto se acessarmos nosso domínio com https veremos uma página 404 pois não enviamos nenhum arquivo a nossa conta.

Nós poderíamos a partir deste ponto abordar como instalar o WordPress, pois como informei no princípio, o OpenLiteSpeed instala como padrão o php 7.3 com algumas extensões.

Já instalamos o php 7.4 com extensões importantes para o WordPress, agora vamos configurá-lo no OpenLiteSpeed.

Acesse o painel do OpenLiteSpeed >> Server Configuration ,
selecione External App e em External Applications clique no simbolo de “+” a seguir em Type Selecione LiteSpeed SAPI App

A seguir clique no ícone Próximo

Preencha os campos conforme a tabela abaixo:

VariávelValor
Name *lsphp74
Address *uds://tmp/lshttpd/lsphp74.sock
Notes
Max Connections *10
EnvironmentPHP_LSAPI_CHILDREN=10
LSAPI_AVOID_FORK=200M
Initial Request Timeout (secs) *60
Retry Timeout (secs) *0
Persistent ConnectionYes
Connection Keep-Alive Timeout
Response Buffering *No
Start By Server *Yes (Through CGI Daemon)
Commandlsphp74/bin/lsphp
Back Log100
Instances1
Run As User
Run As Group
umask
Run On Start Up
Max Idle Time
Priority0
Memory Soft Limit (bytes)2047M
Memory Hard Limit (bytes)2047M
Process Soft Limit1400
Process Hard Limit1400

Salve as alterações e clique na aba “Script Handler” . Nesta aba atualmente está configurado para roda o php 7.3. Vamos fazer modificações para que nossas aplicações utilizem a partir de agora o php 7.4 que acabamos de configurar.

Na coluna Actions, localize e clique no ícone “Edit”

Em “Handler Name *” modifique para lsphp74 e a seguir clique em “Save” e restart o OpenLiteSpeed para que as configurações sejam ativadas.

O próximo passo é o WordPress. Antes de sairmos do OpenLiteSpeed , vamos ativar o suporte a .htacess que será muito importante no WordPress.

Em Server Configuration > General
Localize e edite Rewrite Control
Altere Auto Load from .htaccess para Yes e salve a alteração.

Agora, no menu Virtual Host, selecione o registro referente a seu domínio.
Localize a aba “Rewrite” e edite “Rewrite Control

VariávelValor
Enable RewriteYes
Auto Load from .htaccessYes
Log Level

Salve as alterações, reinicie o OpenLiteSpeed.

Instalando o WordPress e o Plugin Litespeed LS CACHE

Acesse o ssh como root no seu servidor e a seguir o diretório onde ficarão os arquivos do seu site. Salve os arquivos do wordpress

cd /usr/local/lsws/helpsysadmin.ml/html/
wget https://br.wordpress.org/latest-pt_BR.tar.gz
tar -xzvf latest-pt_BR.tar.gz
mv wordpress/* . 

Criando banco de dados e usuário para o WordPress com MariaDB

Acesse o MariaDB com o usuário root e senha que você definiu quando instalou o MariaDB acima

mysql -u root -pSENHAROOT

Crie o banco de dados

CREATE DATABASE wordpress DEFAULT CHARACTER SET utf8 COLLATE utf8_unicode_ci;

A seguir vamos criar um usuário (wordpress_user) com todas as permissões neste banco de dados e definir a senha. Sugiro utilizar um nome de usuário e senha seguro. Guarde estas informações, iremos utiliza-las mais a frente.

GRANT ALL ON wordpress.* TO 'wordpress_user'@'localhost' IDENTIFIED BY 'senha';

Temos um banco de dados e um usuário com acesso total a este banco para utilizarmos no WordPress. Agora precisamos executar o comando a seguir para recarregar as tabelas e para que a instância atual do MariaDB saiba sobre as alterações que você fez:

FLUSH PRIVILEGES;

Agora, vamos sair do MariaDB.

EXIT;

Volte ao diretório onde estão os arquivos do WordPress, crie o arquivo .htaccess, altere o usuário e grupo dos arquivos para nobody e nogroup. Como padrão o OpenLiteSpeed executa como “user(nobody) : group(nogroup)”, para que não tenhamos problemas de permissões estas alterações são necessárias

cd /usr/local/lsws/helpsysadmin.ml/html/
touch .htaccess
chown nobody.nogroup .htaccess
chown -R nobody.nogroup 

Acesse em seu navegador web o domínio que configurou.
Exemplo: https://helpsysadmin.ml

Você verá uma página explicando o que virá a seguir na configuração do WordPress. Clique em “Vamos lá
Na página a seguir preencha o nome do banco de dados que criou, usuário e senha. Clique em próximo.

Será exibido uma mensagem informando que não foi possível criar o arquivo wp-config.php e no quadro abaixo o conteúdo que deverá ter este arquivo. Copie o conteúdo, volte para o local de seus arquivos, crie o wp-config.php e cole o conteúdo anterior.. Salve as alterações e volte a configuração do seu domínio em seu browser

cd /usr/local/lsws/helpsysadmin.ml/html
nano wp-config.php

Nesta parte você deverá informar o nome do usuário admin, senha e e-mail, clique em prosseguir!

Pronto seu WordPress está instalado.

Agora gostaria de abordar de forma breve um plug-in poderoso para usuários Openlitespeed e Litespeed. Ele é um excelente plugin com recursos básicos e avançados. Sugiro passar um tempo descobrindo o que funciona ou não para seu site. Localize o plug-in LiteSpeed Cache.

Este foi um longo post, mas achei necessário ser assim para abordar estes assuntos com qualidade e não apenas mais um na Web. Espero que tenham gostado e deixe comentários abaixo.