Skip to content

Instantly share code, notes, and snippets.

@mdamaceno
Last active November 10, 2015 13:19
Show Gist options
  • Save mdamaceno/203fb0619d57d15756f2 to your computer and use it in GitHub Desktop.
Save mdamaceno/203fb0619d57d15756f2 to your computer and use it in GitHub Desktop.

Instalar Nginx

sudo apt-get update
sudo apt-get install nginx

Ver se Nginx está funcionando corretamente

Digite no navegador:

http://ip_do_servidor

Instalar MySQL

sudo apt-get install mysql-server

Gerar a estrutura de diretórios do MySQL

sudo mysql_install_db

Para finalizar, rode este comando configuração ativação/desativação de acesso remoto entre outros:

sudo mysql_secure_installation

Você vai precisar da senha de root do MySQL.

Alterar a porta de acesso ao MySQL

O MySQL vem configurado para ser acessado através da porta 3306. Para alterar essa porta, digite o comando:

sudo vim /etc/mysql/my.cnf

Há dois lugares onde se deve alterar a porta. São eles:

[client] port = numero_da_porta

e

[mysqld] port = numero_da_porta

Autorizar conexões remotas ao MySQL

É preciso informar ao MySQL qual usuário e ip que estarão autorizados a acessar o banco de dados remotamente. Para isso precisamos comentar uma linha no mesmo arquivo /etc/mysql/my.cnf.

Procure por:

bind-address 127.0.0.1

Deixe assim:

#bind-address 127.0.0.1

Após isso, dentro do servidor, entre no MySQL com o comando:

mysql -u NOMEDOUSUARIO -P PORTA -p

Digite a senha.

Dentro do MySQL, digite os comandos:

GRANT ALL PRIVILEGES ON *.* TO 'NOMEDOUSUARIO'@'%' WITH GRANT OPTION;
FLUSH PRIVILEGES;

Este comando dá todos os privilégios ao usuário vindas de qualquer IP a todos os banco de dados e tabelas.

O ideal é criar um usuário especifíco para acesso remoto ao MySQL. Para criar um novo usuário já com essas permissões, digite:

GRANT ALL PRIVILEGES ON *.* TO 'NOMEDEUSUARIO'@'%' IDENTIFIED BY 'SENHA' WITH GRANT OPTION;
FLUSH PRIVILEGES;

Se preferir, você pode especificar um único IP com acesso remoto.

GRANT ALL PRIVILEGES ON *.* TO 'NOMEDOUSUARIO'@'NUMERODOIP' WITH GRANT OPTION;
FLUSH PRIVILEGES;

Feito isso, reinicie o MySQL.

sudo service mysql restart

Instalar PHP

sudo apt-get install php5-fpm php5-mysql
sudo apt-get install php5 php5-mcrypt

Configuração do PHP processor

sudo vim /etc/php5/fpm/php.ini

Procure por cgi.fix_pathinfo. Sua linha deve estar comentada. Descomente-a e deixe-a da seguinte forma:

cgi.fix_pathinfo=0

Isso é feito, por questões de segurança, porque o PHP, por padrão, executa o arquivo mais próximo se um arquivo PHP não for encontrado. Essa alteração previne a execução de scripts maliciosos por um invasor.

Salve o arquivo e feche.

Rode o seguinte comando para efetivar as alterações:

sudo service php5-fpm restart

Configurar o Nginx para usar o PHP Processor

Entre no arquivo:

/etc/nginx/sites-available/default

Encontre o bloco server. Ele deve se parecer com isso:

server {
    listen 80 default_server;
    listen [::]:80 default_server ipv6only=on;

    root /usr/share/nginx/html;
    index index.html index.htm;

    server_name localhost;

    location / {
        try_files $uri $uri/ =404;
    }
}

Precisamos fazer algumas modicações nessa parte.

  • Para cada site, precisamos criar um bloco server.
  • Precisamos adicionar index.php como primeiro valor de index para permitir que o Nginx execute os arquivos PHP.
  • Precisamos alterar o valor de server_name para apontar para o domínio ou IP.
  • Precisamos adicionar a diretiva try_files para previnir que o Nginx envie requisições quebradas para o PHP processor.

Com as alterações, o arquivo deve ficar assim:

server {
    listen 80 default_server;
    listen [::]:80 default_server ipv6only=on;

    root /usr/share/nginx/html;
    index index.php index.html index.htm;

    server_name server_domain_name_or_IP;

    location / {
        try_files $uri $uri/ =404;
    }

    error_page 404 /404.html;
    error_page 500 502 503 504 /50x.html;
    location = /50x.html {
        root /usr/share/nginx/html;
    }

    location ~ \.php$ {
        try_files $uri =404;
        fastcgi_split_path_info ^(.+\.php)(/.+)$;
        fastcgi_pass unix:/var/run/php5-fpm.sock;
        fastcgi_index index.php;
        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
        include fastcgi_params;
    }
}

Feito isso, reinicie o Nginx:

sudo service nginx restart

Crie um arquivo para testar a configuração

sudo vim /usr/share/nginx/html/info.php

Insira o conteúdo:

<?php
phpinfo();
?>

Salve e feche o arquivo.

Agora, você pode visitar esta página em seu navegador com o domínio ou IP seguido de /info.php

Você pode remover este arquivo com o comando:

sudo rm /usr/share/nginx/html/info.php

Atualizando a versão do PHP

Os passos anteriores instalam o PHP 5.5. Para projetos atuais que utilizam o framework Laravel 5.1, precisamos da versão 5.6 do PHP. Para termos a versão atual do PHP rode o comando:

sudo add-apt-repository ppa:ondrej/php5-5.6

Este comando adiciona o repositório com a versão do 5.6 do PHP. Aperte Enter para confirmar e espere a finalização do processo. Para atualizar:

sudo apt-get update
sudo apt-get install php5

Terminado o processo de instalação, verifique a versão do PHP com o comando.

php -v

Instalação de pacotes necessários para desenvolvimento

Feita a instalação do PHP, podemos agora instalar outros pacotes que são necessários para desenvolvimento web. Para isso, digite o seguinte comando:

sudo apt-get install curl build-essential openssl libreadline6 libreadline6-dev curl git-core zlib1g zlib1g-dev libssl-dev libyaml-dev libsqlite3-dev sqlite3 libxml2-dev libxslt-dev autoconf libc6-dev ncurses-dev automake libtool bison subversion git git-svn gitk ssh libssh-dev

Não se preocupe muito com o que cada um desses pacotes faz. São pacotes básicos que estão presentes em todo servidor web.

Se for trabalhar com banco de dados Redis (ex.: Laravel, Ruby on Rails), instale os pacotes:

sudo apt-get install redis-server libhiredis-dev

Para trabalhar com cache de aplicações, use o Memcache:

sudo apt-get install memcache libmemcached-dev

Muitas aplicações precisam mainipular imagens. Para isso, instalamos o Imagemagick:

sudo apt-get install imagemagick libmagickwand-dev

Instalar NPM e Node.js

Frameworks como Laravel e Ruby on Rails utilizam NPM / Node.js. Para instala-los, vamos usar o gerenciador NVM. Digite o comando:

curl -o- https://raw.githubusercontent.com/creationix/nvm/v0.29.0/install.sh | bash

Terminado o processo, digite:

source ~/.bashrc
nvm --version

Para instalar o Node.js:

nvm install 5.0.0
node -v
npm -v

Verifique a versão atual no site do Node.js

Instalar Composer

O framework Laravel usa o Composer para gerenciamento de dependências. Para instalar, digite o comando:

curl -sS https://getcomposer.org/installer | sudo php -- --install-dir=/usr/local/bin --filename=composer

Aguarde todo o processo de instalação e digite composer.

Tudo pronto para começar a trabalhar com Laravel no seu servidor!

Referências:

DigitalOcean AkitaOnRails

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment