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.
CONTEÚDO
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.
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.
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:
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.
#display_errors Off
display_errors On
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.
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:
<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>
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.
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:
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:
<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.
sudo a2enmod rewrite
Depois precisamos criar um arquivo .htaccess no diretório do site.
sudo nano /var/www/html/siteteste_adp/public_html/.htaccess
No arquivo cole o seguinte código:
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php?url=$1
Por fim, vamos reiniciar o apache.
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.
sudo cp -R /usr/share/phpmyadmin /var/www/html
sudo nano /etc/apache2/sites-enabled/phpmyadmin_adp.conf
No arquivo phpmyadmin_adp.conf cole o código abaixo:
<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.
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 ;)