Instalando Servidor Web no Debian 9

Instalando Servidor Web no Debian 9

O provisionamento de um webserver no Linux não é bicho de 7 cabeças, mas exige um pouco de dedicação e atenção aos detalhes, garantir um webserver no mínimo funcional envolve disponibilizar o Apache, MariaDB e o PHP, há muitas soluções para entregar esse ambiente no Linux dentre eles o LAMP e o XAMMP, porém nesse tutorial faremos o procedimento manual visando demonstrar a utilidade de cada componente.

Atualizando o source.list do do sistema

Antes de começarmos a instalar programas devemos garantir que a lista de repositórios esteja atualizada.

O comando abaixo insere lists de repositório main.

su -
echo -e "deb  https://deb.debian.org/debian stretch main\ndeb-src https://deb.debian.org/debian stretch main\n\ndeb https://deb.debian.org/debian stretch-updates main\ndeb-src  https://deb.debian.org/debian stretch-updates main\n\ndeb https://security.debian.org/ stretch/updates main\ndeb-src https://security.debian.org/ stretch/updates main"  >  /etc/apt/sources.list
apt update

Upgrade

Confira se há algum pacote necessitando de upgrade, isso é importante para manter sua distribuição sempre atualizada.

apt list --upgradable
apt upgrade

Instalando o Apache, PHP e MariaDB

A etapa seguinte instalaremos os pacotes apache, mariadb, php e mais alguns conjuntos de extensões e e programas úteis durante a gestão do seu webserver, como o caso do curl, wget e unzip.

apt-get install wget \
curl \
unzip \
snmp \
apache2 \
php \
libapache2-mod-php \
php-gd \
php-ldap \
php-curl \
php-mbstring \
sudo \
php-bcmath \
php-imap \
php-soap \
php-cli \
php-common \
php-snmp \
php-xmlrpc \
libmariadbd18 \
libmariadbd-dev \
mariadb-server \
php-dev \
php-pear \
php-mysql \
php-xml \
php-apcu-bc -y

Criando usuário no banco de Dados MariaDB

Como você deve ter notado estamos utilizando o MariaDB como SGDB, ele é um fork do MySQL possuindo todos os recursos de seu predecessor, a diferença é que ele não sofre restrição para uso comercial, para sabser mais sobre ele acess o site oficial.

Definindo senha para o usuário root

Aqui nós definimos uma senha e privilégios ao usuário root.

mysql -e "GRANT ALL PRIVILEGES ON *.* TO 'root'@'localhost' IDENTIFIED BY 'SenhaROOT';
FLUSH PRIVILEGES;"

Criando uma base de dados no MariaDB

Faça um teste criando um banco de dados a fim de testá-lo.

mysql -u root  -p -e "create database MEUBANCODEDADOS character set utf8";

Criando Usuário para gerenciar uma base MariaDB

Criando o usuário

Crie um usuário extra para gerenciar a sua base de dados.

mysql -u root -p -e "create user 'USUARIO'@'localhost' identified by '12345'";

Concedendo permissões de administrador ao USUARIO à base MEUBANCODEDADOS

mysql -u root -p -e "grant all on MEUBANCODEDADOS.* to 'USUARIO'@'localhost'  with grant option;
FLUSH PRIVILEGES;"

Listando usuários criados

Entre com o usuário root

su -

Execute o comando abaixo para lista os usuário administradores do banco de dados.

mysql -u root  -p -e "select user,host from mysql.user";

Gerenciando o servidor via interface web

As aplicações, webmin e phpmyadmin, são opcionais, servindo apenas como auxílio para quem ainda não domina o gerenciamento de um servidor linux via CLI, sendo totalmente dispensável a sua instalação.

PhpMyadmin

Você pode gerenciar tranquilamente o webserver via CLI ( Comand Line Interface), no entanto há casos onde o admin tem preferência por utilizar um ambiente gráfico e no caso do linux temos as opções como o PHPMyAdmin

apt-get install phpmyadmin

Escolha o apache2

Captura de tela de 2018-02-01 12-43-07

Como definimos uma senha padrão para o user root do mysql, o dbconfig-common não será executado corretamente então marque a opção Não logo quando surgir esta tela.

Captura de tela de 2018-02-01 12-43-35

Execute o seguinte comando para criar o banco pertecente ao phpMyAdmin.

mysql -u root -p < /usr/share/doc/phpmyadmin/examples/create_tables.sql

Etapa Opcional

Este comando cria um usuário chamado phpmyadmin capaz de gerenciar todas as bases de dados, nesse caso altere a senha o user de acordo com o seu ambiente.

mysql -u root  -p -e "CREATE USER 'phpmyadmin'@'localhost' IDENTIFIED BY 'SenhaMyAdmin';
GRANT ALL PRIVILEGES ON *.* TO 'phpmyadmin'@'localhost' WITH GRANT OPTION ;
FLUSH PRIVILEGES; "

Como acessar o phpMyAdmin ?

Muito simples insira o endereço IP do servidor web, seguido de phpmyadmin. Exemplo ip-do-servidor/phpmyadmin

Captura de tela de 2018-02-01 13-56-59

Instalando o Webmin

Webmin é uma interface baseada na web para administração de sistema para Unix. Usando qualquer navegador web moderno, você pode configurar contas de usuários, Apache, DNS, compartilhamento de arquivos e muito mais. O Webmin remove a necessidade de editar manualmente os arquivos de configuração do Unix como / etc / passwd e permite gerenciar um sistema a partir do console ou remotamente. Consulte a página de módulos padrão para obter uma lista de todas as funções incorporadas no Webmin.

Inserindo o repositório do webmin no source list

echo -e "deb https://download.webmin.com/download/repository sarge contrib" >>  /etc/apt/sources.list

Baixando a chave

wget https://www.webmin.com/jcameron-key.asc

Adicionando o chave

apt-key add jcameron-key.asc

Instalando o https download transport for APT

Este pacote permite o uso de linhas ‘deb https: // foo distro main’ na /etc/apt/sources.list para que todos os gerenciadores de pacotes que usam a biblioteca libapt-pkg possam acessar metadados e pacotes disponíveis em fontes acessíveis em https ( Protocolo de transferência de hipertexto seguro).

apt  install apt-transport-https

Atualizando

apt update

Instalando o Webmin

apt install webmin

Como acessar o Webmin ?

https://ip-do-webserver:10000

Captura de tela de 2018-02-01 13-58-47

Instalando FirewallD

O Firewalld fornece um firewall gerido dinamicamente com suporte para zonas de rede / firewall que definem o nível de confiança de conexões de rede ou interfaces. Possui suporte para IPv4, configurações de firewall IPv6, pontes de ethernet e conjuntos de IP. Existe uma separação de tempo de execução e opções de configuração permanente. Ele também fornece uma interface para serviços ou aplicativos para adicionar regras de firewall diretamente.

Instalando

apt install firewalld

Inciando

systemctl start firewalld 

Colocando o FirewallD no boot do sistema

systemctl enable firewalld 

Conferido o estado do FirewallD

systemctl status firewalld 

Verificando a atual zona de operação

firewall-cmd --get-default-zone

Liberando portas no firewall

80 e 443 para o servidor web 10000 para o webmin

firewall-cmd --permanent --zone=public --add-port=80/tcp
firewall-cmd --permanent --zone=public --add-port=443/tcp
firewall-cmd --permanent --zone=public --add-port=10000/tcp

Recarregue o firewallD com o seguinte comando

firewall-cmd --reload

Para listar as portas liberadas no FirewallD execute o comando;

firewall-cmd --zone=public --list-all
public
  target: default
  icmp-block-inversion: no
  interfaces: 
  sources: 
  services: ssh dhcpv6-client
  ports: 80/tcp 443/tcp 10000/tcp
  protocols: 
  masquerade: no
  forward-ports: 
  source-ports: 
  icmp-blocks: 
  rich rules: 

O que instalamos ?

Nosso webserver está instalado e pronto para uso contendo os seguintes recursos

PHP 7 - Para executar aplicações em PHP

MariaDB - Para Banco de Dados

Apache 2 - Apache para Servidor Web

Opache - Para Otimizar o carregamento de aplicações

Webmin - Para Gerenciar o servidor via web

PHP MyAdmin - Para gerenciar o SGDB

FirewallD - Para prover uma camada de segurança principalmente em VPS

Conclusão

Ainda que essa provisão de web server tenha propósito geral, é bem provável que ela não sirva de imediato a todos os casos, pois não instalamos outros SGDBs como PostgreSQL, Firebird, SQLite3, entre tantas outras opções, dessa forma também não habilitamos as respectivas extensões no apache, já que seria algo desnecessário e consumiríamos recursos importantes como memória e cpu em nosso servidor, e em muitos casos incompatibilidade entre as aplicações.

Levando tudo isso em conta percebemos que provisionar o webserver no Debian pode não ser uma tarefa extremamene complexa, mas exige atenção e um pouco de cuidado para que o ambiente seja produtivo, seguro e que tenha uma boa documentação do processo, tornando-o assim uma solução viável e também escalável para a seu projeto.

Fico por aqui e até uma próxima oportunidade 😃

Fontes

PHP

Webmin

phpMyAdmin

MariaDB

Apache

FirewallD

Posted on