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

O Arch Linux oferece um ambiente de sistema flexível e de vanguarda e é uma poderosa solução mais adequada para o desenvolvimento de aplicações web em sistemas pequenos e não críticos devido ao fato de ser um completo Código Aberto e oferecer as últimas versões dos Kernels e softwares web para servidores e bancos de dados.

Install LAMP in Arch Linux

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

Requisitos

  1. Processo de Instalação do Arch Linux anterior – pule a última parte com DHCP.
  2. Instalação LEMP no Arch Linux anterior – apenas a parte de configurar um Endereço IP Estático e acesso remoto via SSH.

Passo 1: Instalar 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 o seu sistema Arch Linux utilizando a ferramenta pacman.

$ sudo pacman -Syu

2. Quando o processo de atualização terminar, instale o LAMP a partir de peças, primeiro instale o Servidor Web Apache e inicie/verifique cada processo de servidor daemon.

$ sudo pacman -S apache 
$ sudo systemctl start httpd 
$ sudo systemctl status httpd
Install Apache Web Server

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

$ sudo pacman -S php php-apache

4. No último passo, instale o banco de dados MySQL, escolha 1 bifurcação da comunidade do banco de dados (MariaDB), então inicie e verifique o status do daemon.

$ sudo pacman -S mysql 
$ sudo systemctl start mysqld 
$ sudo systemctl status mysqld
Install MySQL Database
Start MySQL Database

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

Passo 2: Segurançar o Banco de Dados MySQL

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

$ sudo mysql_secure_installation
Secure MySQL Database
Set MySQL root Password

6. Verifique a conectividade do banco de dados MySQL executando o seguinte comando e depois saia do shell do banco de dados com sair ou a instrução sair.

$ mysql -u root -p
Verify MySQL Database Connectivity

Passo 3: Modificar o Arquivo de Configuração Principal do Apache

7. As seguintes configurações estão em sua maioria relacionadas ao Servidor Web Apache para fornecer uma interface dinâmica para Hospedagem Virtual com a linguagem de script PHP, Hosts Virtuais com SSL ou não e podem ser feitas através da modificação das configurações do arquivo do serviço httpd.

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

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

No final do arquivo, adicione as duas seguintes linhas.

IncludeOptional conf/sites-enabled/*.conf
IncludeOptional conf/mods-enabled/*.conf
Include Virtual Host Configuration

O papel das declarações Incluir aqui é informar ao Apache que, a partir de agora, ele deve 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 servidores ativados) caminhos do sistema que terminam com a extensão .conf.

8. Depois que o Apache foi instruído com essas duas diretrizes, crie os diretórios do 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 mantém todos os arquivos de configuração de Virtual Hosts que não estão ativados no Apache, mas o próximo script Bash usará este diretório para vincular e habilitar sites localizados lá.

Passo 4: Criar Comandos Apache a2ensite e a2dissite

9. Agora é hora de criar scripts Apache a2ensite e a2dissite que servirão como comandos para habilitar ou desabilitar o arquivo de configuração do Virtual Host. Digite o comando cd para retornar ao seu caminho de 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
Create a2eniste Apache Script

Agora crie o 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
Create a2dissite Apache Script

10. Após os arquivos serem criados, 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/
Set Execute Permissions

Passo 5: Criar Virtual Hosts 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 no caminho /etc/httpd/conf/extra/, mas se você tiver um sistema que utiliza muitos Virtual Hosts, pode ser muito difícil acompanhar quais sites estão ativados ou não. Se você deseja desativar um site, você deve comentar ou excluir todas as suas diretivas e isso pode ser uma missão difícil se o seu sistema fornecer muitos sites e o 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 dos seus sites, mesmo que estejam ativados ou não.

No próximo passo, vamos construir o primeiro Virtual Host que aponta para o localhost padrão com o caminho padrão do DocumentRoot 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 protected]
        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>
Create Virtual Hosts in Apache

As declaraçõ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 localhost para servir arquivos localizados no caminho /srv/http/.

12. Depois que o arquivo localhost for criado, ative-o e depois reinicie o daemon httpd para visualizar as alterações.

$ sudo a2ensite localhost
$ sudo systemctl restart httpd
Active a2ensite Script

13. Em seguida, aponte o seu navegador para http://localhost, se estiver executando no sistema Arch, ou http://Arch_IP se estiver usando um sistema remoto.

Browse Apache

Passo 6: Habilitar SSL com Virtual Hosting no LAMP

SSL (Secure Sockets Layer) é um protocolo projetado para criptografar conexões HTTP em redes ou na Internet, permitindo que o fluxo de dados seja transmitido por um canal seguro usando chaves de criptografia simétrica / assimétrica 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 descomentando o módulo mod_ssl.so do arquivo de configuração principal httpd.conf e o arquivo Include httpd-ssl.conf localizado no caminho extra do httpd.

Para simplificar, vamos criar um novo arquivo de módulo para SSL no caminho mods-enabled e deixar o arquivo de configuração principal do Apache intocado. 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
Enable SSL with Virtual Hosting

15. Agora crie um arquivo de Virtual Host que aponte para o mesmo nome de localhost, mas usando configurações de servidor SSL desta vez, e mude ligeiramente seu nome para lembrar que se refere ao localhost com SSL.

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

Adicione o seguinte conteúdo a este arquivo.

<VirtualHost *:443>
        DocumentRoot "/srv/http"
        ServerName localhost
        ServerAdmin [email protected]
        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>
Create SSL Virtual Host

Além das diretivas Port e ServerName, outras diretivas importantes aqui são aquelas que apontam para o arquivo de Certificado SSL e o arquivo de 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 de Certificado SSL necessário e Chaves, 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 conteúdo do arquivo a seguir, salve-o e torne 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
Store Apache Certificates and Keys
$ sudo chmod +x apache_gen_ssl

Se deseja que o script esteja disponível em todo o sistema, copie-o para um $ PATH executável.

$ sudo cp /apache_gen_ssl  /usr/local/bin/

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

$ sudo ./apache_gen_ssl
Create Apache Certificates and Keys
Enter Certificates Details

Depois que o certificado e as chaves forem criados, não se esqueça de modificar as configurações de certificado e chaves do Virtual Host SSL para corresponder ao nome deste certificado.

19. O último passo é ativar o novo Virtual Host SSL e reiniciar o servidor para aplicar as configurações.

$ sudo a2ensite localhost-ssl
$ sudo systemctl restart httpd
Activate SSL Virtual Host

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

Browse Apache over SSL

Passo 7: Ativar o 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 procure e descomente a 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] procure e comente a seguinte linha para ficar assim.

#LoadModule mpm_event_module modules/mod_mpm_event.so
Enable PHP Module

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
Enable mod_mpm_prefork Module

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

<?php

phpinfo();

?>
$ sudo systemctl restart httpd
Verify PHP Information

É isso aí! Se tudo parecer como na imagem acima, você agora tem a linguagem de script server-side PHP habilitada no Apache e pode agora desenvolver websites usando CMS de código aberto como o 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

Passo 8: Instalar e configurar o PhpMyAdmin

23. Se você não domina o terminal de comandos do MySQL e deseja um acesso remoto simples ao banco de dados MySQL fornecido por meio de uma interface web, então você precisa do pacote PhpMyAdmin instalado em seu sistema Arch.

$ sudo pacman -S phpmyadmin php-mcrypt

24. Após os pacotes terem sido instalados, você precisa habilitar algumas extensões do PHP (mysqli.so, mcrypt.so – para autenticação interna) e você também pode habilitar outros módulos necessários para futuras plataformas de 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
Install and Configuring PhpMyAdmin

Além disso, no mesmo arquivo, pesquise e localize a declaraçã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 sob esses diretórios (Se você também mudar o caminho DocumentRoot do Virtual Hosts de /srv/http/ para outro local, você também precisa adicionar o novo caminho aqui).

Enable open_basedir

25. A última coisa que você precisa fazer para acessar a Interface Web do PhpMyAdmin é adicionar declarações Apache do PhpMyAdmin nos Virtual Hosts. Como medida de segurança, certifique-se de que a Interface Web do PhpMyAdmin só pode ser acessada localmente (ou pelo endereço IP do sistema) usando o protocolo HTTPS e não de outros Virtual Hosts diferentes. Portanto, abra seu arquivo Apache localhost-ssl.conf e, na parte inferior, antes da última declaraçã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>
Create PhpMyAdmin Virtual Host Configuration

26. Em seguida, reinicie o daemon Apache e aponte seu navegador para o seguinte endereço e você deverá conseguir acessar a Interface Web PhpMyAdmin: https://localhost/phpmyadmin ou https://system_IP/phpmyadmin.

Access PhpMyAdmin Web Interface

27. Se, depois de fazer o login no PhpMyAdmin, você vir um erro relacionado a blowfish_secret, abra e edite o arquivo /etc/webapps/phpmyadmin/config.inc.php e insira uma string aleatória como na seguinte declaração e então atualize a página.

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

Passo 9: Habilitar o Sistema LAMP em Toda a Extensão

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

$ sudo systemctl enable httpd mysqld
Enable LAMP System Wide

Estas são algumas das principais configurações no 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 ponta para pequenos ambientes não críticos. Se ainda assim você insistir em utilizá-lo em um ambiente de produção ampliado, é importante ter bastante paciência e prestar atenção extra nas atualizações dos pacotes, além de fazer regularmente imagens de backup do sistema para uma rápida restauração em caso de falhas do sistema.

Source:
https://www.tecmint.com/install-lamp-in-arch-linux/