Instalando servidor web no Linux pelo Terminal e configurando URL amigável, hostVirtual e PHP.

Nesse artigo, iremos instalar um servidor web completo desde o apache até o banco de dados. Vamos abordar também toda a configuração para o seu bom funcionamento.

Autor: André Rodrigues

Tags:

#php #linux
4836

CONTEÚDO

Esse artigo foi criado para a instalação do PHP 7.0, hoje (07-01-2019) estamos na versão 7.3, com isso, para instalar as versões 7.1, 7.2 ou 7.3 (ou superior quando lançar), basta trocar a versão nos comandos desse artigo.
Por exemplo:
sudo apt-get install php7.0 para sudo apt-get install php7.3
Servidores Debian, costumam demorar para disponibilizar no repositório novas versões do PHP por questão de segurança dos pacotes, com isso, verifique se a versão do PHP já está no repositório do seu servidor.

Olá amigos, tudo bem?

Hoje iremos aprender a instalar um servidor web completo no seu Linux. Sinceramente, não entendo o porque usar WAMP, XAMPP e afins no Linux, já que temos serviços "nativos".

Instalando o servidor web

Vamos começar instalando o PHP7.0, Apache 2, MariaDB e o PhpMyAdmin.

Terminal
sudo apt-get install php7.0 apache2 libapache2-mod-php7.0 mariadb-server phpmyadmin

Assim que a instalação estiver em curso você terá que fazer algumas interações que são:

  • A instalação perguntará se você quer instalar o Apache2 ou o Lighttpd, escolha o Apache2 e continue.
  • A próxima pergunta será se você quer instalar a configuração padrão para o banco de dados do phpmyadmin, confirme e continue.
  • Em seguida, será pedido a senha do MySql e para o phpmyadmin, digite as senhas e prossiga.

Pronto amigo, nesse exato momento seu servidor web já está funcionando. Caso queira testar, acesse http://localhost para uma instalação local ou digite o IP do seu servidor web para um servidor online.

Por padrão, o diretório do seu servidor será /var/www/html.

Para testar o MySql execute o comando abaixo e digite a senha criada na instalação.

Terminal
sudo mysql -u root -p

Antes de continuar, você deve saber que terá que instalar alguns módulos para o PHP funcionar dependendo do seu projeto. Vamos destacar os principais agora:

  • php7.0-mysql - Usado para o PHP trabalhar com MySql
  • php7.0-curl - Usado para o PHP trabalhar com cUrl
  • php7.0-xml - Usado para o PHP trabalhar com XML
  • php7.0-mbstring - Usado para o PHP trabalhar com strings
  • php7.0-json - Usado para o PHP trabalhar com Json
  • php7.0-zip - Usado para o PHP trabalhar com ZIP
  • php7.0-gd - Usado para o PHP trabalhar com imagens
  • php7.0-soap - Usado para o PHP trabalhar com SOAP

Esses foram os principais mas a lista é bem grande, para você escolher o que deseja, vou deixar um apt-get com todas as opções:

Terminal
sudo apt-get install php7.0-cli php7.0-dev php7.0-gmp php7.0-json php7.0-mysql php7.0-phpdbg php7.0-snmp php7.0-tidy php7.0-zip php7.0-bcmath php7.0-common php7.0-enchant php7.0-imap php7.0-ldap php7.0-odbc php7.0-pspell php7.0-soap php7.0-xml php7.0-bz2 php7.0-curl php7.0-fpm php7.0-interbase php7.0-mbstring php7.0-opcache php7.0-readline php7.0-sqlite3 php7.0-xmlrpc php7.0-cgi php7.0-dba php7.0-gd php7.0-intl php7.0-mcrypt php7.0-pgsql php7.0-recode php7.0-sybase php7.0-xsl

Configurando o PHP

O PHP tem várias configurações e aqui vou apontar algumas que acho importantes. Todas as configurações do PHP estão no arquivo php.ini em /etc/php/7.0/apache2.

Vamos começar ativando ou desativando os erros do PHP, para isso mude a linha display_errors para on ou off.

Terminal
#display_errors Off
display_errors On
Sempre que você mudar alguma configuração, terá que reiniciar o apache com o comando sudo /etc/init.d/apache2 restart, para as alterações surtirem efeito.

Outra configuração importante é a que permite fazer uploads com mais de 2MB, muito utilizada para fazer a importação de grandes bancos de dados pelo PhpMyadmin. Para isso mude as linhas post_max_size e upload_max_filesize para os valores desejados.

Terminal
post_max_size 50M
upload_max_filesize 50M

Configurando o Virtual Host

Convenhamos que acessar um IP ou localhost não é muito intuitivo, para isso, iremos configurar o Virtual Host do apache para acessar seu site por um domínio.

Para começar, acesse o diretório onde o Apache trabalha com os sites habilitados em /etc/apache2/sites-enabled, crie um arquivo com o nome siteteste_adp.conf (sudo nano /etc/apache2/sites-enabled/siteteste_adp.conf) ou seu domínio se estiver configurando um servidor online e cole o arquivo de configuração abaixo:

Terminal
<VirtualHost *:80>
   # Dominio, subdominio e diretorio do site
   ServerName siteteste.adp
   ServerAlias www.siteteste.adp
   DocumentRoot /var/www/html/siteteste_adp/public_html

        
   # DISATIVANDO BROWSING DIRETORIOS
   Options All +Indexes
   IndexIgnore *

        
   # Formato do Log DEFLATE
   LogFormat '"%r" [ Normal: %{instr}n ] - [ Compress: %{outstr}n ] - [%{ratio}n%%]' DEFLATE

        
   # Localizacao do Log DEFLATE
   CustomLog /var/www/html/siteteste_adp/.log/deflate.log DEFLATE

        
   # Formato do Log ACESSO
   LogFormat "%a %t %h \"%r\" %>s %b" combined

        
   # Localizacao do Log ACESSO
   CustomLog /var/www/html/siteteste_adp/.log/access.log combined

        
   # Localizacao do Log de Erro ACESSO
   ErrorLog  /var/www/html/siteteste_adp/.log/error.log
</VirtualHost>
Lembre de mudar o ServerName para seu domínio se estiver configurando um servidor online.
Para cada subdomínio, crie uma linha com o ServerAlias e o subdomínio.
Mude o DocumentRoot, CustomLog e ErrorLog para o diretório do site e do log.

O proximo passo é criar o diretório do site, o diretório do log, criar um arquivo index.php e reiniciar o apache.

Terminal
sudo mkdir /var/www/html/siteteste_adp
sudo mkdir /var/www/html/siteteste_adp/public_html
sudo mkdir /var/www/html/siteteste_adp/.log
sudo echo "Ola mundo!" > /var/www/html/siteteste_adp/public_html/index.php
sudo /etc/init.d/apache2 restart

Chegou a hora de apontar o dominio para o servidor. Se você está configurando o servidor online, basta criar os registros no seu gerenciador DNS e apontar para o servidor online, se você está configurando um servidor local, precisa configurar o arquivo hosts em /etc/hosts e adicionar as linhas 127.0.0.1 siteteste_adp e 127.0.0.1 www.siteteste_adp, como no exemplo abaixo:

Terminal
127.0.0.1        siteteste_adp
127.0.0.1        www.siteteste_adp

Após salvar o arquivo hosts e tentar acessar seu domínio você será apontado para o diretório do site configurado no arquivo de VirtualHost.

Configurando a URL Amigável

Com seu arquivo de VirtualHost configurado, acesse o arquivo de configuração do apache que fica em /etc/apache2/apache2.conf e mude os valores das linhas AllowOverride para All, como no exemplo abaixo:

Terminal
<Directory />
   Options FollowSymLinks
   AllowOverride All
   Require all denied
</Directory>

        
<Directory /usr/share >
   AllowOverride All
   Require all granted
</Directory>

        
<Directory /var/www/ >
   Options Indexes FollowSymLinks
   AllowOverride All
   Require all granted
</Directory>

Agora vamos ativar o módulo rewrite.

Terminal
sudo a2enmod rewrite

Depois precisamos criar um arquivo .htaccess no diretório do site.

Terminal
sudo nano /var/www/html/siteteste_adp/public_html/.htaccess

No arquivo cole o seguinte código:

Terminal
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php?url=$1

Por fim, vamos reiniciar o apache.

Terminal
sudo /etc/init.d/apache2 restart

Se nada der errado seu site já está funcionando com URL Amigável. Para testar, acesse seu domínio e passe algum valor após a url como http://sitedeteste.adp/testeurl. Mesmo passando uma URL o servidor abrirá o arquivo index do seu site.

Para pegar o valor da URL passada, no caso o testeurl, o sistema joga toda a URL dentro de um um GET chamado url, como indicado no arquivo .htaccess. Para testar, basta colocar um <?= $_GET['url'] ?>, que o valor será impresso.

Configurando o PhpMyAdmin

Para configurar o PhpMyAdmin iremos criar um subdomínio e configurar o arquivo de VirtualHost.

Terminal
sudo cp -R /usr/share/phpmyadmin /var/www/html
sudo nano /etc/apache2/sites-enabled/phpmyadmin_adp.conf
Na instalação do PhpMyAdmin, ele instala o diretório do phpmyadmin em /usr/share, então o copiamos para dentro do diretório do apache.

No arquivo phpmyadmin_adp.conf cole o código abaixo:

Terminal
<VirtualHost *:80>
   # Dominio, subdominio e diretorio do site
   ServerName phpmyadmin.adp
   DocumentRoot /var/www/html/phpmyadmin

        
   # DISATIVANDO BROWSING DIRETORIOS
   Options All +Indexes
   IndexIgnore *
</VirtualHost>

Por fim, reinicie o apache.

Terminal
sudo /etc/init.d/apache2 restart

Caso ocorra algum erro ao tentar acessar o PhpMyAdmin, acesse nosso artigo "Corrigindo erro de acesso negado no MySql." para corrigir o acesso.

Agora só nos resta configurar um certificado digital (SSL), mas isso será matéria para outro artigo. Para um ceritificado auto assinado clique aqui e para certificado validado com Let's Encrypt Clique aqui.

Pronto pequeno Padawan! Seu sevidor web já está funcionando a todo vapor ;)

AGUARDE
CARREGANDO SITE