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

O Arch Linux oferece um ambiente de sistema cutting edge flexível e é uma solução poderosa mais adequada para o desenvolvimento de aplicações web em sistemas pequenos não críticos, devido ao fato de ser um completo Open Source e oferecer as últimas atualizações nos Kernels e softwares web para servidores e bancos de dados.

Install LAMP in Arch Linux

O principal objetivo deste tutorial é orientá-lo por meio de instruções passo a passo completas que, ao final, o levarão à instalação de uma das combinações de software mais utilizadas no Desenvolvimento Web: LAMP (Linux, Apache, MySQL/MariaDB e PHP/PhpMyAdmin) e apresentará algumas características agradáveis (scripts Bash rápidos e sujos) que não estão presentes em um sistema Arch Linux, mas podem facilitar a criação de vários Virtual Hosts, gerar Certificados SSL e Chaves necessárias para transações seguras de HTTP.

Requisitos

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

Passo 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 ao sistema remoto usando SSH, atualize seu Arch Linux usando o utilitário pacman.

$ sudo pacman -Syu

2. Quando o processo de atualização terminar, instale o LAMP peça por peça, primeiro instalando o Servidor Web Apache e iniciando/verificando cada processo de servidor de daemon.

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

3. Instale a linguagem de script de servidor dinâmico 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 de banco de dados comunitário (MariaDB), em seguida, 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 as configurações padrão até agora.

Passo 2: Proteger o Banco de Dados MySQL

5. O próximo passo é proteger o banco de dados MySQL configurando uma senha para a conta root, removendo contas de usuários anônimos, removendo o banco de dados de teste e proibindo 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 saia do shell do banco de dados com sair ou comando exit.

$ 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 na sua maioria relacionadas ao Servidor Web Apache para fornecer uma interface dinâmica para Hospedagem Virtual com a linguagem de script do PHP, Hosts Virtuais com ou sem SSL e podem ser feitas modificando as configurações do arquivo de serviço httpd.

Primeiramente, 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 seguintes duas 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 mais configurações de todos os arquivos que residem em /etc/httpd/conf/sites-enabled/ (para Hospedagem Virtual) e /etc/httpd/conf/mods-enabled/ (para módulos do servidor habilitados) que estão localizados em caminhos do sistema que terminam com a extensão .conf.

8. Após o Apache ter sido 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 contém todos os arquivos de configuração de Hosts Virtuais que não estão ativados no Apache, mas o próximo script Bash usará este diretório para vincular e habilitar sites que estão lá localizados.

Passo 4: Criar Comandos do Apache a2ensite e a2dissite

9. Agora é hora de criar os scripts do Apache a2ensite e a2dissite que servirão como comandos para habilitar ou desabilitar arquivos de configuração de Host Virtual. 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

Acrescente 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. Depois que os arquivos forem criados, conceda 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 Hosts Virtuais no Apache

11. O arquivo de configuração padrão do Virtual Host para o servidor Apache no Arch Linux é fornecido pelo arquivo httpd-vhosts.conf localizado no caminho /etc/httpd/conf/extra/, mas se você tiver um sistema que use muitos Virtual Hosts, pode ser muito difícil acompanhar qual site está ativado 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 seu sistema fornecer muitos sites e seu site tiver mais diretivas de configuração.

O uso dos caminhos sites-available e sites-enabled simplifica bastante o trabalho de ativar ou desativar sites e também preserva todos os arquivos de configuração de seus sites, mesmo que estejam ativados ou não.

No próximo passo, vamos construir o primeiro Virtual Host que aponta para 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 foi criado, ative-o e então reinicie o daemon httpd para ver as alterações.

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

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

Browse Apache

Passo 6: Habilitar SSL com Hospedagem Virtual em LAMP

SSL (Secure Sockets Layer) é um protocolo projetado para criptografar conexões HTTP em redes ou na Internet, o que permite 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á ativado no Apache no Arch Linux e pode ser ativado descomentando o módulo mod_ssl.so no arquivo de configuração principal httpd.conf e o arquivo Include httpd-ssl.conf localizado no caminho extra do httpd.

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 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

Adicione 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 aponta para o mesmo nome de localhost, mas usando configurações do servidor SSL desta vez, e altere ligeiramente seu nome para lembrá-lo de que se trata de 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 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ê terá alguns erros.

16. Para criar o arquivo de Certificado SSL e as Chaves necessárias, instale o pacote OpenSSL emitindo o comando abaixo.

$ sudo pacman -S openssl

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

$ sudo nano apache_gen_ssl

Adicione o seguinte conteúdo do arquivo e salve, tornando-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
Store Apache Certificates and Keys
$ sudo chmod +x apache_gen_ssl

Se desejar 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 o seu Certificado e suas Chaves executando o script. Forneça suas opções SSL e não se esqueça de que o nome do certificado e Nome Comum devem corresponder 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 tiverem sido criados, não se esqueça de modificar as configurações do certificado e das chaves do Virtual Host SSL para que correspondam 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: Habilitar 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, em seguida, pesquise 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], pesquise 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 a configuração, crie um arquivo PHP chamado info.php no seu DocumnetRoot (/srv/http/), depois 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! Se tudo parecer com a imagem acima, agora você tem a linguagem de script de servidor PHP ativada no Apache e pode desenvolver sites 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 a linha de comando do MySQL e deseja um acesso remoto simples ao banco de dados MySQL fornecido através 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 a instalação dos pacotes, você precisa habilitar algumas extensões PHP (mysqli.so, mcrypt.so – para autenticação interna) e também pode habilitar outros módulos necessários para plataformas CMS futuras 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, procure 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 sob esses diretórios (Se você, também, alterar o caminho DocumentRoot do Virtual Host de /srv/http/ para outra localização, você precisa adicionar o novo caminho aqui também).

Enable open_basedir

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

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

Access PhpMyAdmin Web Interface

27. Se, depois de fazer login no PhpMyAdmin, você ver um erro na parte inferior referente a um blowfish_secret, abra e edite o arquivo /etc/webapps/phpmyadmin/config.inc.php e insira uma sequência aleatória como a que está na seguinte instrução, em seguida 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 Todo o Sistema

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, porém poderosa, rápida e robusta, com software de servidor de última geração para ambientes pequenos e não críticos. Mas se você for teimoso e ainda quiser usá-lo em um ambiente de produção grande, você deve se armar com muita paciência e prestar muita atenção nas atualizações dos pacotes e fazer imagens regulares de backup do sistema para uma rápida restauração em caso de falhas no sistema.

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