Pesquisa de site

Instalando LAMP (Linux, Apache, MySQL/MariaDB e PHP/PhpMyAdmin) no Arch Linux


Arch Linux fornece um ambiente de sistema flexível e moderno e é uma solução poderosa e mais adequada para o desenvolvimento de aplicações web em pequenos sistemas não críticos devido ao fato de ser um código aberto completo e fornecer os últimos lançamentos atualizados em Kernels e software web para servidores e bancos de dados.

O objetivo principal deste tutorial é guiá-lo através de um passo a passo completo que no final levará à instalação de uma das combinações de software mais utilizadas em Desenvolvimento Web: LAMP (Linux, Apache, MySQL/MariaDB e PHP/PhpMyAdmin ) e apresentará alguns recursos interessantes (scripts Bash rápidos e sujos) que não estão presentes em um sistema Arch Linux, mas podem facilitar o trabalho de criação de vários Hosts Virtuais , gere Certificados SSL e Chaves necessários para transações HTTS seguras.

Requisitos

  1. Processo anterior de instalação do Arch Linux – pule a última parte com DHCP.
  2. Instalação anterior do LEMP no Arch Linux – apenas a parte com configuração de endereço IP estático e acesso SSH remoto.

Etapa 1: instalar o software básico LAMP

1. Após a instalação mínima do sistema com endereço IP estático e acesso remoto ao sistema usando SSH, atualize sua máquina Arch Linux usando o utilitário pacman.

sudo pacman -Syu

2. Quando o processo de atualização terminar, instale o LAMP por partes, primeiro instale o Apache Web Server e inicie/verifique cada daemon de processo do servidor.

sudo pacman -S apache 
sudo systemctl start httpd 
sudo systemctl status httpd

3. Instale a linguagem de script dinâmica PHP do lado do servidor e seu módulo Apache.

sudo pacman -S php php-apache

4. Na última etapa, instale o banco de dados MySQL, escolha 1 (MariaDB) bifurcação do banco de dados da comunidade, inicie e verifique o status do daemon.

sudo pacman -S mysql 
sudo systemctl start mysqld 
sudo systemctl status mysqld

Agora você tem o software LAMP básico instalado e iniciado com as configurações padrão até agora.

Etapa 2: banco de dados MySQL seguro

5. O próximo passo é proteger o banco de dados MySQL definindo uma senha para a conta root, remover contas de usuários anônimos, remover o banco de dados de teste e proibir login remoto para o usuário root (pressione [ Enter] para a senha atual da conta root e responda Sim em todas as questões de segurança).

sudo mysql_secure_installation

6. Verifique a conectividade do banco de dados MySQL executando o comando a seguir e saia do shell do banco de dados com a instrução quit ou exit.

mysql -u root -p

Etapa 3: modificar o arquivo de configuração principal do Apache

7. As configurações a seguir são, em sua maioria, relacionadas ao Apache Web Server para fornecer uma interface dinâmica para Hospedagem Virtual com linguagem de script PHP, SSL ou Hosts virtuais não SSL e pode ser feito modificando as configurações do arquivo de serviço httpd.

Primeiro abra a configuração principal do arquivo Apache com seu editor de texto favorito.

sudo nano /etc/httpd/conf/httpd.conf

Na parte inferior do arquivo, anexe as duas linhas a seguir.

IncludeOptional conf/sites-enabled/*.conf
IncludeOptional conf/mods-enabled/*.conf

A função das instruções Include aqui é dizer ao Apache que, de agora em diante, ele deverá ler configurações adicionais de todos os arquivos que residem em /etc/httpd/conf/sites-enabled/ (para hospedagem virtual) e /etc/httpd/conf/mods-enabled/ (para módulos de servidor habilitado) caminhos do sistema que terminam em uma extensão .conf.

8. Após o Apache ter sido instruído com essas duas diretivas, crie os diretórios de sistema necessários emitindo os seguintes comandos.

sudo mkdir /etc/httpd/conf/sites-available
sudo mkdir /etc/httpd/conf/sites-enabled
sudo mkdir /etc/httpd/conf/mods-enabled

O caminho sites-available contém todos os arquivos de configuração dos Virtual Hosts que não estão ativados no Apache, mas o próximo script Bash usará esse diretório para vincular e ativar sites localizados lá.

Etapa 4: Criar comandos Apache a2eniste e a2diste

9. Agora é hora de criar scripts a2ensite e a2dissite Apache que servirão como comandos para ativar ou desativar o arquivo de configuração do Virtual Host. Digite o comando cd para retornar ao caminho do usuário $HOME e crie seus scripts bash a2eniste e a2dissite usando seu editor favorito.

sudo nano a2ensite

Adicione o seguinte conteúdo neste arquivo.

#!/bin/bash
if test -d /etc/httpd/conf/sites-available && test -d /etc/httpd/conf/sites-enabled  ; then
echo "-------------------------------"
else
mkdir /etc/httpd/conf/sites-available
mkdir /etc/httpd/conf/sites-enabled
fi

avail=/etc/httpd/conf/sites-available/$1.conf
enabled=/etc/httpd/conf/sites-enabled
site=`ls /etc/httpd/conf/sites-available/`

if [ "$#" != "1" ]; then
        echo "Use script: n2ensite virtual_site"
        echo -e "\nAvailable virtual hosts:\n$site"
        exit 0
else
if test -e $avail; then
sudo ln -s $avail $enabled
else
echo -e "$avail virtual host does not exist! Please create one!\n$site"
exit 0
fi
if test -e $enabled/$1.conf; then
echo "Success!! Now restart Apache server: sudo systemctl restart httpd"
else
echo  -e "Virtual host $avail does not exist!\nPlease see avail virtual hosts:\n$site"
exit 0
fi
fi

Agora crie um arquivo de script bash a2dissite.

sudo nano a2dissite

Anexe o seguinte conteúdo.

#!/bin/bash
avail=/etc/httpd/conf/sites-enabled/$1.conf
enabled=/etc/httpd/conf/sites-enabled
site=`ls /etc/httpd/conf/sites-enabled`

if [ "$#" != "1" ]; then
        echo "Use script: n2dissite virtual_site"
        echo -e "\nAvailable virtual hosts: \n$site"
        exit 0
else
if test -e $avail; then
sudo rm  $avail
else
echo -e "$avail virtual host does not exist! Exiting"
exit 0
fi
if test -e $enabled/$1.conf; then
echo "Error!! Could not remove $avail virtual host!"
else
echo  -e "Success! $avail has been removed!\nsudo systemctl restart httpd"
exit 0
fi
fi

10. Após a criação dos arquivos, aloque permissões de execução e copie-os para um diretório executável ` PATH para torná-los disponíveis em todo o sistema.

sudo chmod +x a2ensite a2dissite
sudo cp a2ensite a2dissite /usr/local/bin/

Etapa 5: Crie hosts virtuais no Apache

11. O arquivo de configuração padrão do Virtual Host para o servidor Web Apache no Arch Linux é fornecido pelo arquivo httpd-vhosts.conf localizado em /etc/httpd/conf/extra / mas se você tiver um sistema que usa muitos Hosts Virtuais pode ser muito difícil acompanhar qual site está ativado ou não. Se você quiser desabilitar um site você deve comentar ou deletar todas as suas diretivas e isso pode ser uma missão difícil se seu sistema fornecer muitos sites e seu site tiver mais diretivas de configuração.

Usar os caminhos sites-available e sites-enabled simplifica muito o trabalho de ativar ou desativar sites e também preserva todos os arquivos de configuração do seu site, mesmo que estejam ativados ou não.

Na próxima etapa, construiremos o primeiro Host Virtual que aponta para o localhost padrão com o caminho DocumentRoot padrão para servir arquivos de sites (/srv/http.

sudo nano /etc/httpd/conf/sites-available/localhost.conf

Adicione as seguintes diretivas do Apache aqui.

<VirtualHost *:80>
        DocumentRoot "/srv/http"
        ServerName localhost
        ServerAdmin [email 
        ErrorLog "/var/log/httpd/localhost-error_log"
        TransferLog "/var/log/httpd/localhost-access_log"

<Directory />
    Options +Indexes +FollowSymLinks +ExecCGI
    AllowOverride All
    Order deny,allow
    Allow from all
Require all granted
</Directory>

</VirtualHost>

As instruções mais importantes aqui são as diretivas Port e ServerName que instruem o Apache a abrir uma conexão de rede na porta 80 e redirecionar todas as consultas com o nome do host local para servir arquivos localizados no caminho /srv/http/.

12. Após a criação do arquivo localhost, ative-o e reinicie o daemon httpd para visualizar as alterações.

sudo a2ensite localhost
sudo systemctl restart httpd

13. Em seguida, aponte seu navegador para http://localhost, se você executá-lo no sistema Arch ou http://Arch_IP se você usar um sistema remoto.

Etapa 6: Habilite SSL com hospedagem virtual no LAMP

SSL (Secure Sockets Layer) é um protocolo projetado para criptografar conexões HTTP em redes ou Internet, que faz com que o fluxo de dados seja transmitido por um canal seguro usando chaves de criptografia simétricas/assimétricas. e é fornecido no Arch Linux pelo pacote OpenSSL.

14. Por padrão, o módulo SSL não está habilitado no Apache no Arch Linux e pode ser ativado removendo o comentário do módulo mod_ssl.so do httpd.conf principal arquivo de configuração e arquivo Incluir httpd-ssl.conf localizado no caminho httpd extra.

Mas para simplificar as coisas, vamos criar um novo arquivo de módulo para SSL no caminho mods-enabled e deixar o arquivo de configuração principal do Apache intacto. Crie o seguinte arquivo para o módulo SSL e adicione o conteúdo abaixo.

sudo nano /etc/httpd/conf/mods-enabled/ssl.conf

Anexe o seguinte conteúdo.

LoadModule ssl_module modules/mod_ssl.so
LoadModule socache_shmcb_module modules/mod_socache_shmcb.so

Listen 443

SSLCipherSuite HIGH:MEDIUM:!aNULL:!MD5
SSLPassPhraseDialog  builtin
SSLSessionCache        "shmcb:/run/httpd/ssl_scache(512000)"
SSLSessionCacheTimeout  300

15. Agora crie um arquivo Virtual Host que aponte para o mesmo nome de localhost, mas desta vez usando configurações de servidor SSL, e altere ligeiramente seu nome para lembrá-lo de que significa localhost com SSL.

sudo nano /etc/httpd/conf/sites-available/localhost-ssl.conf

Adicione o seguinte conteúdo neste arquivo.

<VirtualHost *:443>
        DocumentRoot "/srv/http"
        ServerName localhost
        ServerAdmin [email 
        ErrorLog "/var/log/httpd/localhost-ssl-error_log"
        TransferLog "/var/log/httpd/localhost-ssl-access_log"

SSLEngine on

SSLCertificateFile "/etc/httpd/conf/ssl/localhost.crt"
SSLCertificateKeyFile "/etc/httpd/conf/ssl/localhost.key"

<FilesMatch "\.(cgi|shtml|phtml|php)$">
    SSLOptions +StdEnvVars
</FilesMatch>

<Directory "/srv/http/cgi-bin">
    SSLOptions +StdEnvVars
</Directory>

BrowserMatch "MSIE [2-5]" \
         nokeepalive ssl-unclean-shutdown \
         downgrade-1.0 force-response-1.0

CustomLog "/var/log/httpd/ssl_request_log" \
          "%t %h %{SSL_PROTOCOL}x %{SSL_CIPHER}x \"%r\" %b"

<Directory />

    Options +Indexes +FollowSymLinks +ExecCGI
    AllowOverride All
    Order deny,allow
    Allow from all
Require all granted
</Directory>

</VirtualHost>

Além das diretivas Port e ServerName, outras diretivas importantes aqui são aquelas que apontam para o arquivo Certificado SSL e o arquivo Chave SSL que ainda não foram criados, então não reinicie o Apache Web Server ou você receberá alguns erros.

16. Para criar o arquivo e as chaves do certificado SSL necessários, instale o pacote OpenSSL emitindo o comando abaixo.

sudo pacman -S openssl

17. Em seguida, crie o seguinte script Bash que cria e armazena automaticamente todos os seus Certificados Apache e Chaves em /etc/httpd/conf/ssl/ caminho do sistema.

sudo nano apache_gen_ssl

Adicione o seguinte conteúdo do arquivo, salve-o e torne-o executável.

#!/bin/bash
mkdir /etc/httpd/conf/ssl
cd /etc/httpd/conf/ssl

echo -e "Enter your virtual host FQDN: \nThis will generate the default name for Nginx  SSL certificate!"
read cert

openssl genpkey -algorithm RSA -pkeyopt rsa_keygen_bits:2048 -out $cert.key
chmod 600 $cert.key
openssl req -new -key $cert.key -out $cert.csr
openssl x509 -req -days 365 -in $cert.csr -signkey $cert.key -out $cert.crt

echo -e " The certificate "$cert" has been generated!\nPlease link it to Apache SSL available website!"

ls -all /etc/httpd/conf/ssl
exit 0

sudo chmod +x apache_gen_ssl

Se você quiser que o script esteja disponível em todo o sistema, copie-o para um executável ` PATH.

sudo cp /apache_gen_ssl  /usr/local/bin/

18. Agora gere seu Certificado e Chaves executando o script. Forneça suas opções de SSL e não se esqueça do nome do certificado e do Nome comum para corresponder ao seu domínio oficial (FQDN).

sudo ./apache_gen_ssl

Após a criação do certificado e das chaves, não se esqueça de modificar o certificado SSL Virtual Host e as configurações das chaves para corresponder ao nome deste certificado.

19. A última etapa é ativar o novo SSL Virtual Host e reiniciar seu servidor para aplicar as configurações.

sudo a2ensite localhost-ssl
sudo systemctl restart httpd

É isso! Para verificar, abra o navegador e adicione Arch IP na URL usando o protocolo HTTPS: https://localhost ou https://system_IP.

Etapa 7: Habilite PHP no Apache

20. Por padrão, o Apache serve apenas conteúdo de arquivos estáticos HTML no Arch Linux, sem suporte a linguagens de script dinâmicas. Para ativar o PHP, primeiro abra o arquivo de configuração principal do Apache e depois pesquise e remova o comentário da seguinte instrução LoadModule (php-apache não funciona com mod_mpm_event no Arch Linux ).

sudo nano /etc/httpd/conf/httpd.conf

Usando [Ctrl]+[w] pesquise e comente a linha a seguir para ficar assim.

#LoadModule mpm_event_module modules/mod_mpm_event.so

21. Em seguida, crie um novo arquivo para o módulo PHP no caminho mods-enabled com o seguinte conteúdo.

sudo nano /etc/httpd/conf/mods-enabled/php.conf

Adicione exatamente o seguinte conteúdo (você deve usar mod_mpm_prefork).

LoadModule mpm_prefork_module modules/mod_mpm_prefork.so
LoadModule php5_module modules/libphp5.so

Include conf/extra/php5_module.conf

22. Para verificar a configuração, crie um arquivo PHP chamado info.php em seu DocumnetRoot (/srv/http/), reinicie o Apache e aponte seu navegador para o arquivo info.php: https://localhost/info.php.

<?php

phpinfo();

?>
sudo systemctl restart httpd

É isso! Se tudo se parece com a imagem acima, agora você tem a linguagem de script dinâmico do lado do servidor PHP habilitada no Apache e agora pode desenvolver sites usando CMS de código aberto como WordPress por exemplo.

Se você deseja verificar as configurações de sintaxe do Apache e ver uma lista de módulos carregados sem reiniciar o daemon httpd, execute os seguintes comandos.

sudo apachectl configtest
sudo apachectl -M

Etapa 8: instalar e configurar o PhpMyAdmin

23. Se você não domina a linha de comando do MySQL e deseja um acesso remoto simples ao banco de dados MySQL fornecido através da interface web, então você precisa do pacote PhpMyAdmin instalado em sua caixa Arch.

sudo pacman -S phpmyadmin php-mcrypt

24. Após a instalação dos pacotes você precisa habilitar algumas extensões do PHP (mysqli.so, mcrypt.so – para autenticação interna) e você também pode ativar outros módulos necessários para futuras plataformas CMS, como openssl.so, imap.so ou iconv.so etc.

sudo nano /etc/php/php.ini

Localize e descomente as extensões acima.

extension=mcrypt.so
extension=mssql.so
extension=mysqli.so
extension=openssl.so
extension=iconv.so
extension=imap.so
extension=zip.so
extension=bz2.so

Além disso, no mesmo arquivo, pesquise e localize a instrução open_basedir e adicione o caminho do sistema PhpMyAdmin (/etc/webapps/ e /usr/share/webapps/) para garantir que o PHP possa acessar e ler arquivos nesses diretórios (se você também alterar o caminho do Virtual Hosts DocumentRoot de /srv/http/ para outro local, será necessário anexar o novo caminho aqui também ).

25. A última coisa que você precisa fazer para acessar a interface da Web do PhpMyAdmin é adicionar instruções Apache do PhpMyAdmin em hosts virtuais. Como medida de segurança, garantiremos que a interface da Web do PhpMyAdmin possa ser acessível apenas a partir do host local (ou endereço IP do sistema) usando o protocolo HTTPS e não de outros hosts virtuais diferentes. Portanto, abra seu arquivo localhost-ssl.conf Apache e na parte inferior, antes da última instrução , adicione o seguinte conteúdo.

sudo nano /etc/httpd/conf/sites-enabled/localhost-ssl.conf
Alias /phpmyadmin "/usr/share/webapps/phpMyAdmin"

<Directory "/usr/share/webapps/phpMyAdmin">
    DirectoryIndex index.html index.php
    AllowOverride All
    Options FollowSymlinks
    Require all granted
</Directory>

26. Depois reinicie o daemon Apache e aponte seu navegador para o seguinte endereço e você poderá acessar sua interface da Web do PhpMyAdmin: https://localhost/phpmyadmin ou https://system_IP/phpmyadmin.

27. Se, após fazer login no PhpMyAdmin, você vir um erro inferior relacionado a um blowfish_secret, abra e edite /etc/webapps/phpmyadmin/config.inc. php e insira uma string aleatória como a da instrução a seguir e atualize a página.

$cfg['blowfish_secret'] = ‘{^QP+-(3mlHy+Gd~FE3mN{gIATs^1lX+T=KVYv{ubK*U0V’ ;

Etapa 9: ativar LAMP em todo o sistema

28. Se você deseja que a pilha LAMP seja iniciada automaticamente após a reinicialização do sistema, execute os seguintes comandos.

sudo systemctl enable httpd mysqld

Estas são algumas das principais configurações do LAMP necessárias para transformar um sistema Arch Linux em uma plataforma web simples, mas poderosa, rápida e robusta, com software de servidor de última geração para pequenos não -ambientes críticos, mas se você for teimoso e ainda quiser usá-lo em um ambiente de grande produção você deve ter bastante paciência e prestar atenção extra nas atualizações de pacotes e fazer imagens regulares de backup do sistema para uma restauração rápida do sistema em caso de falhas do sistema.