Introdução
Vou mostrar neste passo a passo como eu configuro meu VPS no Ubuntu 16.10 com LAMP.
Passo 1: Atualizar o servidor
$ sudo apt-get update $ sudo apt-get dist-upgrade $ sudo apt-get install zip unzip nmap
$ sudo timedatectl set-timezone America/New_York
Passo 2: Instalar e configurar o apache
Instalando o apache
$ sudo apt-get install apache2
Ativando a módulo rewrite do apache
$ sudo a2enmod rewrite
Com o modulo rewrite ativo, agora precisamos liberar globalmente para todos os servidores virtuais.
Abrimos o arquivo de configuração do apache para edição.
$ sudo vim /etc/apache2/apache2.conf
Com o arquivo aberto, altere a parte:
AllowOverride None
para
AllowOverride All
e Definir ServerName Global para Suprimir Avisos de Sintaxe
. . .
ServerName nome_de_domínio_do_servidor_ou_IP
. . .
<Directory /home/>
Options Indexes FollowSymLinks
AllowOverride All
Require all granted
</Directory>
Reiniciar o apache
$ sudo systemctl restart apache2
Efetuar o teste para ver se tem algum erro de sintaxe
$ sudo apache2ctl configtest
Se estiver tudo ok, a seguinte mensagem deverá aparecer.
[secondary-label Output] Syntax OK
Precisamos alterar um 2° arquivo.
$ sudo vim /etc/apache2/sites-available/000-default.conf
Altere: DocumentRoot /var/www
Para: DocumentRoot /home/html
Reiniciar o apache
$ sudo systemctl restart apache2
Instalando o modulo “mpm-itk” para ser possivel acessar o VirtualServer com usuarios diferentes, será configurado mais a frente
$ sudo apt-get install libapache2-mpm-itk $ sudo a2enmod mpm_itk $ sudo systemctl restart apache2
Resolvendo o erro:
Invalid command ‘Header’, perhaps misspelled or defined by a module not included in the server configuration
$ cd /etc/apache2/mods-available $ sudo a2enmod headers $ sudo systemctl restart apache2
Reinicie o Apache para implementar suas alterações:
$ sudo systemctl restart apache2
Ajustar o Firewall para Permitir Tráfego Web, caso o mesmo esteja configurado.
$ sudo ufw app list
Output
Available applications:
Apache
Apache Full
Apache Secure
OpenSSH
Verifique as portas abertas para Apache Full
$ sudo ufw app info "Apache Full"
Permita o tráfego entrante para esse perfil:
$ sudo ufw allow in "Apache Full"
Agora vamos testar
Acesse: http://endereço_IP_do_seu_servidor
Vamos solicitar ao apache para ler primeiro os arquivos .php adicionando o index.php em primeiro lugar.
$ sudo vim /etc/apache2/mods-enabled/dir.conf $ sudo systemctl restart apache2
Podemos ver o status do apache
$ sudo systemctl status apache2
Passo 2.1: Configurar o Virtual Host
Preparando o ambiente do usuario
$ useradd -d /home/$USER $USER $ mkdir -p /home/$USER/$SITE/public_html $ mkdir -p /home/$USER/temp $ mkdir -p /home/$USER/log $ chmod 755 /home/$USER $ sudo vim /home/$USER/$SITE/public_html/index.html
Insira este código html no seu novo arquivo.
<html>
<head>
<title>Bem vindo ao site XXX!</title>
</head>
<body>
<h1>Sucesso! O site XXX em virtual host está funcionando!</h1>
</body>
</html>
$ chown -R $USER:$USER /home/$USER
Preparar a ativação do site no apache
$ sudo cp /etc/apache2/sites-available/000-default.conf /etc/apache2/sites-available/$SITE.conf $ sudo vim /etc/apache2/sites-available/$SITE.conf
Edite seu arquivo para se parecer com esse
<VirtualHost *:80>
ServerAdmin webmaster@localhost
ServerName [server_name]
ServerAlias www.[server_name]
AssignUserID $USER $USER
DocumentRoot /home/$USER/$SITE/public_html
ErrorLog /home/$USER/log/$SITE_error.log
CustomLog /home/$USER/log/$SITE_access.log combined
</VirtualHost>
$ sudo a2ensite $SITE.conf
Vamos desativar o host padrão *opcional
$ sudo a2dissite 000-default.conf $ sudo chown -R $USER:$USER /home/$USER/ $ sudo systemctl restart apache2
Opcional quando estiver configurando em localhost
$ sudo vim /etc/hosts
Adicione uma linha com seu dominio e IP da maquina.
127.0.0.1 localhost 127.0.1.1 guest-desktop 111.111.111.111 $SITE
Passo 3: Instalando o MySQL
$ sudo apt-get install mysql-server $ sudo mysql_secure_installation
Será pedido que você digite a senha que você definiu para a conta root do MySQL. Depois, será perguntado se você quer configurar o plugin VALIDATE PASSWORD PLUGIN. No meu caso é não.
Passo 4: Instalar o PHP
$ sudo apt-get install php libapache2-mod-php php-mcrypt php-mysql php-curl php-gd libapache2-mod-php php-mcrypt php-xdebug php-cli php-pgsql php-imagick php-intl
echo "<?php echo phpinfo();" > /home/$USER/$SITE/public_html/info.php
echo "<?php echo exec('id');" > /home/$USER/$SITE/public_html/test.php
Instalar o phpmyadmin: https://www.digitalocean.com/community/tutorials/how-to-install-and-secure-phpmyadmin-on-ubuntu-16-04
Instalar e configurar ssh_key: https://www.digitalocean.com/community/tutorials/how-to-use-ssh-keys-with-digitalocean-droplets
Instalar e configurar o firewall: https://www.digitalocean.com/community/tutorials/how-to-set-up-a-firewall-with-ufw-on-ubuntu-16-04
Instalar o sftp: https://www.digitalocean.com/community/tutorials/how-to-set-up-vsftpd-for-a-user-s-directory-on-ubuntu-16-04
Configurar o SMTP para envio somente: https://www.digitalocean.com/community/tutorials/how-to-install-and-configure-postfix-as-a-send-only-smtp-server-on-ubuntu-16-04
Fonte:
https://www.digitalocean.com/community/tutorials/how-to-set-up-apache-virtual-hosts-on-ubuntu-16-04
https://www.digitalocean.com/community/tutorials/como-instalar-a-pilha-linux-apache-mysql-php-lamp-no-ubuntu-16-04-pt