Ubuntu 16.04 LAMP server tutorial with Apache 2.4, PHP 7 and MySQL

LAMP é abreviação de Linux, Apache, MySQL, PHP. Este tutorial mostra como você pode instalar um servidor web Apache em um servidor Ubuntu 16.04 LTS (Xenial Xerus) com suporte a PHP 7 (mod_php) e MySQL / MariaDB e como configurar um certificado SSL com Let’s encrypt. Além disso, vou instalar o PHPMyAdmin para facilitar a administração do MySQL. Uma configuração LAMP é uma base perfeita para sistemas CMS como Joomla, WordPress ou Drupal.

Nota Preliminar

Neste tutorial, usarei o nome de host server1.example.com com o endereço IP 192.168.1.100. Essas configurações podem diferir para você, então você deve substituí-las quando apropriado.

Eu recomendo usar uma configuração mínima do servidor Ubuntu como base para o tutorial, que pode ser uma imagem de servidor virtual ou raiz com uma instalação mínima Ubuntu 16.04 de uma empresa de hospedagem web ou você usa nosso tutorial de servidor mínimo para instalar um servidor a partir do zero.

Estou executando todas as etapas neste tutorial com privilégios de root, portanto, certifique-se de que você está conectado como root:

sudo su

1. Instalando o MySQL ou o MariaDB

Existem atualmente dois sistemas de banco de dados MySQL amplamente utilizados, o clássico servidor “MySQL” desenvolvido pela Oracle e disponível na versão 5.7 agora e o forno MySQL chamado MariaDB, desenvolvido pelo desenvolvedor original do MySQL Monty Widenius.

Vou mostrar-lhe como instalar as duas alternativas abaixo. Basta seguir o capítulo 1.1 ou 1.2, mas não ambos. Vou usar o MySQL 5.7 para a imagem da máquina virtual que pode ser baixada do Howtoforge.

1.1 Instalar o MySQL 5.7

Para instalar o MySQL 5.7, execute este comando:

apt-get -y install mysql-server mysql-client

Os pacotes mysql-server e mysql-client são chamados de ‘meta-packages’, eles sempre instalam a versão mais recente do MySQL disponível no Ubuntu. A última versão é atualmente o MySQL 5.7.

Nós definimos a senha de root para o MySQL já durante a instalação, mas eu gostaria de remover o usuário anônimo e banco de dados de teste por razões de segurança. Execute o comando mysql_secure_installation abaixo para conseguir isso.

mysql_secure_installation

Ser-lhe-ão feitas estas perguntas:

Securing the MySQL server deployment.

Enter password for user root: <– Enter the MySQL root password

VALIDATE PASSWORD PLUGIN can be used to test passwords
and improve security. It checks the strength of password
and allows the users to set only those passwords which are
secure enough. Would you like to setup VALIDATE PASSWORD plugin?

Press y|Y for Yes, any other key for No:
Using existing password for root.
Change the password for root ? ((Press y|Y for Yes, any other key for No) : <– Choose ‘y’ here if you like to enable the password validation, I don’t need that function, so I choose ‘n’ here.

… skipping.
By default, a MySQL installation has an anonymous user,
allowing anyone to log into MySQL without having to have
a user account created for them. This is intended only for
testing, and to make the installation go a bit smoother.
You should remove them before moving into a production
environment.

Remove anonymous users? (Press y|Y for Yes, any other key for No) : <– y
Success.

Normally, root should only be allowed to connect from
‘localhost’. This ensures that someone cannot guess at
the root password from the network.

Disallow root login remotely? (Press y|Y for Yes, any other key for No) : <– y
Success.

By default, MySQL comes with a database named ‘test’ that
anyone can access. This is also intended only for testing,
and should be removed before moving into a production
environment.

Remove test database and access to it? (Press y|Y for Yes, any other key for No) : <– y
– Dropping test database…
Success.

– Removing privileges on test database…
Success.

Reloading the privilege tables will ensure that all changes
made so far will take effect immediately.

Reload privilege tables now? (Press y|Y for Yes, any other key for No) : <– y
Success.

Tudo feito!

A configuração do MySQL foi garantida agora.

1.2 Instalar o MariaDB 10

Execute o seguinte comando para instalar o MariaDB-server eo cliente:

apt-get -y install mariadb-server mariadb-client

Agora definimos uma senha de root para MariaDB.

mysql_secure_installation

Ser-lhe-ão feitas estas perguntas:

Enter current password for root (enter for none): <– press enter
Set root password? [Y/n] <– y
New password: <– Enter the new MariaDB root password here
Re-enter new password: <– Repeat the password
Remove anonymous users? [Y/n] <– y
Disallow root login remotely? [Y/n] <– y
Reload privilege tables now? [Y/n] <– y

Teste o login para MariaDB com o “comando mysql”

mysql -u root -p

E digite a senha de root do MariaDB que você definiu acima. O resultado deve ser semelhante à imagem abaixo:

MariaDB Login on Ubuntu 16.04.

Para sair do shell do MariaDB, digite o comando “quit” e pressione enter.

2. Instalar o Apache 2.4

O Apache 2 está disponível como um pacote do Ubuntu, portanto, podemos instalá-lo assim:

apt-get -y install apache2
Agora dirija o seu navegador para http://192.168.1.100, e você deverá ver a página padrão do Apache2 (funciona!)
A raiz do documento do vhost padrão do apache é / var / www / html no Ubuntu eo arquivo de configuração principal é /etc/apache2/apache2.conf. O sistema de configuração está totalmente documentado em /usr/share/doc/apache2/README.Debian.gz.

3. Instale o PHP 7

Podemos instalar o PHP 7 eo módulo Apache PHP da seguinte forma:

apt-get -y install php7.0 libapache2-mod-php7.0
Em seguida, reinicie o Apache:
systemctl restart apache2

4. Teste o PHP e obtenha detalhes sobre sua instalação do PHP

A raiz do documento do site padrão é / var / www / html. Vamos agora criar um pequeno arquivo PHP (info.php) nesse diretório e chamá-lo em um navegador. O arquivo exibirá muitos detalhes úteis sobre a instalação do PHP, como a versão do PHP instalada.

nano /var/www/html/info.php

<?php
phpinfo();
?>

Em seguida, altere o proprietário do arquivo info.php para o usuário e grupo de
dados www.

chown www-data:www-data /var/www/html/info.php

Agora, chamamos esse arquivo em um navegador (por exemplo, 
http://192.168.1.100/info.php):

PHPINFO output from PHP 7.

Como você vê, o PHP 7.0 está funcionando, e está funcionando através do Apache 2.0 Handler, como mostrado na linha Server API. Se você rolar mais para baixo, você verá todos os módulos que já estão habilitados no PHP5. O MySQL não está listado aqui o que significa que ainda não temos suporte ao MySQL / MariaDB em PHP.

5. Obtenha suporte ao MySQL / MariaDB em PHP

Para obter suporte ao MySQL em PHP, podemos instalar o pacote php7.0-mysql. É uma boa idéia instalar alguns outros módulos PHP, bem como você pode precisar deles para suas aplicações. Você pode pesquisar módulos disponíveis do PHP como este:

apt-cache search php7.0

Escolha os que você precisa e instalá-los assim:

apt-get -y install php7.0-mysql php7.0-curl php7.0-gd php7.0-intl php-pear php-imagick php7.0-imap php7.0-mcrypt php-memcache  php7.0-pspell php7.0-recode php7.0-sqlite3 php7.0-tidy php7.0-xmlrpc php7.0-xsl php7.0-mbstring php-gettext

Agora reinicie o Apache2:

systemctl restart apache2

PHP with MySQL / MariaDB support.

PHP 7 tem agora o suporte a MySQL / MariaDB como mostrado em phpinfo () acima.

6. Instale o cache Opcache + APCu PHP para acelerar o PHP

O PHP 7 é fornecido com um cacher embutido de opcode para armazenar em cache e otimizar o código intermediário do PHP, ele tem o nome ‘opcache’ e está disponível no pacote php7.0-opcache. É altamente recomendável ter um Opcache instalado para acelerar a sua página PHP. Além do opcache, eu instalarei o APCu que é um wrapper de compatibilidade para o opcache para fornecer as funções do cache do APC, um sistema de cache frequentemente usado em versões do php 5.x e muitos sistemas do CMS ainda o usam.

Opcache e APCu podem ser instalados da seguinte forma:

apt-get -y install php7.0-opcache php-apcu

Não se preocupe se mostrar que o Opcache já está instalado.

Agora reinicie o Apache:

systemctl restart apache2

Agora recarregue http://192.168.1.100/info.php no seu navegador e role até a seção de módulos novamente. Agora você deve encontrar muitos novos módulos lá:

HowtoForgeAPCu installed in PHP.

Por favor, não se esqueça de apagar o arquivo info.php quando você não precisa mais, pois fornece detalhes sensíveis do seu servidor. Execute o seguinte comando para excluir o arquivo.

rm -f /var/www/html/info.php

 

7. Ativar o site SSL no Apache

SSL / TLS é uma camada de segurança para criptografar a conexão entre o navegador da Web e seu servidor. A maioria dos navegadores da Web começa a mostrar sites como inseguros hoje quando a conexão entre o servidor eo navegador da Web não é criptografada com SSL. Neste capítulo, vou mostrar-lhe como proteger o seu site com SSL.

Execute os seguintes comandos no servidor para ativar o suporte a SSL (https: //). Corre:

a2enmod ssl
a2ensite default-ssl

Que habilita o módulo SSL e adiciona um link simbólico na pasta / etc / apache2 / sites-enabled para o arquivo /etc/apache2/sites-available/default-ssl.conf para incluí-lo na configuração ativa do apache. Em seguida, reinicie o apache para ativar a nova configuração:

systemctl restart apache2

Agora teste a conexão SSL abrindo https://192.168.1.100 em um navegador da Web.

Accept SSL Warning in Firefox

Você receberá um aviso SSL como o certificado SSL do servidor é um certificado SSL “auto-assinado”, isso significa que o navegador não confia neste certificado por padrão e você deve aceitar o aviso de segurança primeiro. Depois de aceitar o aviso, você verá a página padrão do apache

Apache default page in https mode.

O fechado “Green Lock” na frente do URL no navegador mostra que a conexão é criptografada.

Existem duas maneiras de se livrar do aviso SSL: substitua o certificado SSL auto-assinado /etc/ssl/certs/ssl-cert-snakeoil.pem por um certificado SSL assinado oficialmente que você compra de uma autoridade SSL ou você recebe Um certificado SSL grátis de Let’s encrypt, que descreverei no capítulo 8.

8. Obtenha um certificado SSL grátis de Let’s Encrypt

O primeiro passo para proteger o site com um Let’s Encrypt SSL Certificate é instalar o pacote python-letsencrypt-apache. Executar o seguinte comando:

apt-get -y install python-letsencrypt-apache

Na próxima etapa, solicitaremos um certificado SSL de Let’s Encrypt, durante esse processo, o servidor Let’s Encrypt tentará se conectar ao seu servidor através do nome de domínio que você fornece ao comando letsencrypt. É importante que este nome de domínio aponte para o seu servidor no DNS já para que o site é acessível por seu nome de domínio na porta 80 (http) já. Se o site não puder ser acessado pela Internet, a criação do certificado Let’s Encrypt SSL falhará.

Antes de podermos começar a criar o cert SSL, defina o nome do domínio no arquivo de configuração do vhost. Abra o arquivo vhost padrão com um editor:

nano /etc/apache2/sites-available/000-default.conf

E adicione a linha:

ServerName example.com

Logo abaixo da linha ‘DocumentRoot’. Substitua example.com pelo nome de domínio do seu próprio site.

Em seguida, crie o Certificado SSL com este comando:

letsencrypt –apache -d example.com

Substitua example.com por seu nome de domínio aqui novamente. O comando irá iniciar um assistente que lhe faz várias perguntas.

Digite o endereço de e-mail onde o administrador que é responsável por este site pode ser alcançado.

Aceite os termos e condições da autoridade Let’s Encrypt SSL.

Escolha se deseja redirecionar solicitações não SSL para https: // automaticamente. Vou selecionar sim aqui para evitar problemas de conteúdo duplicado quando o site estiver disponível como http: // e https: // versão.

O certificado SSL foi emitido com êxito.

Quando você acessa o site agora com um navegador, você será redirecionado automaticamente para SSL eo bloqueio verde na frente da barra de URL no navegador mostra que estamos usando um certificado SSL confiável agora.

8.1 Vamos criptografar a Renovação Automática

Vamos criptografar certificados SSL são válidos por um curto período de 80 dias apenas. Portanto, vamos configurar um cronjob agora para renovar automaticamente o certificado SSL quando necessário. O comando é ‘letsencrypt renew’.

Configure um cronjob para renovação automática LE. Corre:

crontab -e

Para abrir a raiz crontab em um editor. Insira a seguinte linha no final do arquivo:

0 1 * * * /usr/bin/letsencrypt renew &> /dev/null

Salvar o arquivo, isso ativará o cronjob. Este cronjob irá chamar o Let's Encrypt renovar comando todas as noites em 1 am. O comando irá renovar o SSL cert apenas quando necessário (30 dias antes de expirar), não há nenhum problema para executá-lo todas as noites.

9. Instale o phpMyAdmin

PhpMyAdmin é uma interface web através da qual você pode gerenciar seus bancos de dados MySQL. É uma boa idéia instalá-lo:

apt-get -y install phpmyadmin

Você verá as seguintes perguntas:

Web server to configure automatically: <– Select the option: apache2
Configure database for phpmyadmin with dbconfig-common? <– Yes
MySQL application password for phpmyadmin: <– Press enter, apt will create a random password automatically.

9.1 Acesso root ao PHPMyAdmin com MariaDB

A seguinte etapa é necessária apenas para as instalações do MariaDB, se você usar o MySQL 5.7, então pule esta etapa.

O MariaDB habilita um plugin chamado “unix_socket” para o usuário root por padrão, este plugin impede que o usuário root possa fazer login no PHPMyAdmin e que as conexões TCP para o MySQL estejam funcionando para o usuário root. Para obter um usuário com privilégios para criar outros usuários e bancos de dados no PHPMyAdmin, vou criar um novo usuário MySQL com o nome “admin” com os mesmos privilégios que o usuário root.

Faça login no banco de dados MySQL como usuário root no shell:

mysql -u root

Crie um novo usuário com o nome “admin” ea senha “howtoforge”. Substitua a senha “howtoforge” com uma senha segura nos comandos abaixo!

CREATE USER ‘admin’@’localhost’ IDENTIFIED BY ‘howtoforge’;
GRANT ALL PRIVILEGES ON *.* TO ‘admin’@’localhost’ WITH GRANT OPTION;
FLUSH PRIVILEGES;
exit

Em seguida, você pode acessar phpMyAdmin sob http://192.168.1.100/phpmyadmin/:

Login to phpmyadmin

PHPMyAdmin

10 Download da imagem da máquina virtual deste tutorial

Este tutorial está disponível como pronto para usar a imagem da máquina virtual no formato ovf / ova que é compatível com VMWare e Virtualbox. A imagem da máquina virtual usa os seguintes detalhes de login:

SSH / Shell Login

Username: administrator
Password: howtoforge

This user has sudo rights.

MySQL Login

Username: root
Password: howtoforge

The IP of the VM is 192.168.1.100, it can be changed in the file /etc/network/interfaces. Please change all the above passwords to secure the virtual machine.

Obs: Caso apareça a mensagem:

The requested URL /phpmyadmin was not found on this server.

fazer uma alias no arquivo /etc/apache2/apache2.conf basta adicionar as seguintes linhas no final do documento

para acessar o arquivo digite:

sudo gedit /etc/apache2/apache2.conf

Alias /phpmyadmin /usr/share/phpmyadmin

<Directory /usr/share/phpmyadmin>
Options Indexes FollowSymLinks
AllowOverride All
Order allow,deny
Allow from all
</Directory>

Fonte: HowtoForge

Anúncios

Deixe um comentário

Preencha os seus dados abaixo ou clique em um ícone para log in:

Logotipo do WordPress.com

Você está comentando utilizando sua conta WordPress.com. Sair / Alterar )

Imagem do Twitter

Você está comentando utilizando sua conta Twitter. Sair / Alterar )

Foto do Facebook

Você está comentando utilizando sua conta Facebook. Sair / Alterar )

Foto do Google+

Você está comentando utilizando sua conta Google+. Sair / Alterar )

Conectando a %s

Site hospedado por WordPress.com.

Acima ↑

Elvis Rodrigues

TECNOLOGIA PARA TODOS

aldey freire

Sudo make me a sandwich

Sempre a mais

Tudo e muito mais.

Stuff n Things I Hate

Just another WordPress.com site

Ivo Sakihara

Áudio Blog

%d blogueiros gostam disto: