anúncios

quarta-feira, 29 de maio de 2019

Configurando Vhost do Nginx no Debian

O que é Vhost?

Vhost é a capacidade de ter diversos sites ou sistemas no mesmo servidor de forma isolada. Assim é possível ter vários domínios ou subdomínios no mesmo servidor.

O presente howto tem como objetivo explicar os procedimentos de configurar Vhost do Nginx no Debian, mas também funciona em distros derivadas do Debian, como o Ubuntu por exemplo.

Configuração do Vhost
Primeiramente é preciso instalar o Nginx no Debian/Ubuntu, o qual pode ser instalado via APT.

# apt update
# apt install nginx php7.2 php7.2-fpm php7.2-mysql php7.2-gd php7.2-mysql mysql-server


Então segue os procedimentos para configuração do Vhost no Nginx abaixo:

O Nginx tem um arquivo de configuração de Vhost de exemplo, então pode fazer uma cópia deste arquivo para cada Vhost que for criar, depois alterar o server_name, root e Directory para o Vhost correspondente.

# cp /etc/nginx/sites-available/default /etc/nginx/sites-available/default.bkp

O nome app.local coloca o nome que quiser, geralmente é comum colocar o nome do domínio/subdomínio do Vhost correspondente.
# vim /etc/nginx/sites-available/app.local
Altere o arquivo para ficar como este, apenas altere o diretório de localização do seu site ou sistema.

server {
  # Porta WEB
 listen 80 default_server;
 listen [::]:80 default_server;
 
 # Nome do servidor
 server_name app.local;     

 # Diretorio de Log
 access_log /var/log/nginx/access.log;
 error_log /var/log/nginx/error.log;
 rewrite_log on;

 # Diretorio dos arquivos web
 root /var/www/html/app/public;
 
 # Extensões de arquivos que serão lidos
 index index.php index.html;

 client_max_body_size 128M;

 # URL amigáveis
 location / {
  try_files $uri $uri/ /index.php?$query_string;
 }

 # Configurações PHP FPM.
    location ~* \.php$ {
         fastcgi_pass unix:/run/php/php7.2-fpm.sock;
         fastcgi_index index.php;
         fastcgi_split_path_info ^(.+\.php)(.*)$;
         include /etc/nginx/fastcgi_params;
  fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
    }

 # Bloqueia arquivo com .ht (Nginx não utiliza o .htaccess como o Apache)
 location ~ /\.ht {
  deny all;
 }

 # Configura cache das extensões abaixo para expirar em 365 dias
 location ~* \.(?:ico|css|js|jpe?g|JPG|png|svg|woff)$ {
    expires 365d;
 }

}

Nota: A configuração do Vhost acima é de uma aplicação web, que funciona na rede interna, para rede externa, só alterar o ServerName para o nome de domínio válido no registro.br.

Explicação das configurações essenciais para o funcionamento do Vhost no Nginx

1. Na linha listen devemos colocar a porta que o Nginx escutará que é a porta padrão 80. A opção default_server deverá ser usada em somente uma configuração, pois essa será a principal do servidor.
2. Na linha server_name deverá ser inserido o nome do seu domínio.
3. Na directiva root deverá ser o caminho da sua aplicação, dos seus arquivos em PHP por exemplo.
4. No bloco de configurações do PHP é usado o PHP 7.2, caso esteja usando outra versão do PHP deve ser alterado a opção fastcgi_pass unix:/run/php/php7.2-fpm.sock; alterando o PHP7.2 para a versão instalada no seu servidor.

Testes de configuração
# nginx –t
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok nginx: configuration file /etc/nginx/nginx.conf test is successful

Se o retorno foi ok conforme acima, então podemos habilitar o Vhost

Habilitar o Vhost app.conf
# ln -s /etc/nginx/sites-available/app.local /etc/nginx/sites-enabled/app.local

Reinciar o Nginx
# service nginx restart

Como neste caso o Vhost é na rede interna, então para simular o domínio é necessário adicionar no arquivo /etc/hosts o IP do servidor seguido do nome ServerName definido no arquivo Vhost.
Para que uma máquina com Windows possa acessar a aplicação com o Vhost, o arquivo hosts é C:\Windows\System32\drivers\etc\hosts
Abrir com Bloco de Notas como Administrador o arquivo hosts no caminho mencionado.

IPSERVIDOR app.local

Abre o browser e acesse http://app.local

Para criar outro Vhost, copie o arquivo do Vhost criado anteriormente e troque o server_name, root e Directory para o Vhost corresponde, habilita o novo Vhost, reiniciar o Nginx e adicione no arquivo hosts.

Feito!

domingo, 26 de maio de 2019

Resolvendo o problema Kernel driver not installed no VirtualBox

Se após instalar o VirtualBox, criar a máquina virtual (VM) e ao tentar iniciar a VM ocorrer o erro seguinte:
"Kernel driver not installed (rc=-1908) The VirtualBox Linux kernel driver is either not loaded or not set up correctly. Please try setting it up again by executing '/sbin/vboxconfig' as root.

If your system has EFI Secure Boot enabled you may also need to sign the kernel modules (vboxdrv, vboxnetflt, vboxnetadp, vboxpci) before you can load them. Please see your Linux system's documentation for more information. where: suplibOsInit what: 3 VERR_VM_DRIVER_NOT_INSTALLED (-1908) - The support driver is not installed. On linux, open returned ENOENT."

Desde a versão do kernel Linux 4.4.0-20, foi obrigado que os módulos do kernel sem estar assinados não poderão ser executados com o Secure Boot ativado. Caso você deseja manter o Secure Boot habilitado, então precisa seguir os procedimentos a seguir para assinar esses módulos.

Antes, verifique com o comando seguinte:
$ mokutil --sb-state
SecureBoot enabled

Se estiver como SecureBoot e quiser continuar habilitado para usar VMs no VirtualBox, então segue os procedimentos.

1. openssl req -new -x509 -newkey rsa:2048 -keyout vboxdrv.priv -outform DER -out vboxdrv.der -nodes -days 36500 -subj "/CN=MySelf/"

2. sudo /usr/src/linux-headers-$(uname -r)/scripts/sign-file sha256 ./vboxdrv.priv ./vboxdrv.der $(modinfo -n vboxdrv)

3. tail $(modinfo -n vboxdrv) | grep "Module signature appended"

4. sudo mokutil --import vboxdrv.der

5. Reiniciar e aplicar o MOK no boot com o password do item 4.

Perform MOK management
Enroll MOK
Continue
Yes
Password (definido no item 4)
OK

6. mokutil --test-key MOK.der

Carregar o módulo vboxdrv
sudo modprobe vboxdrv

Caso não queira, pode desativar a validação com o comando seguinte:
$ sudo mokutil --disable-validation
Ou desabilitar o SecureBoot

Referências
https://askubuntu.com/questions/760671/could-not-load-vboxdrv-after-upgrade-to-ubuntu-16-04-and-i-want-to-keep-secur

Feito!

Instalando o VirtualBox 6 no Debian/Ubuntu

O que é VirtualBox ?

O VirtualBox é um software de virtualização para arquitetura x86 e AMD64 / Intel64 para uso desktop. O VirtualBox não é apenas um produto extremamente rico em recursos e alto desempenho para clientes corporativos, mas também é a única solução profissional disponível gratuitamente como Software de Código Aberto sob os termos da Licença Pública Geral GNU (GPL) versão 2.

Atualmente, o VirtualBox é executado em hosts Windows, Linux, Macintosh e Solaris e suporta um grande número de sistemas operacionais convidados, incluindo, sem limitação, Windows (NT 4.0, 2000, XP, Server 2003, Vista, Windows 7, Windows 8, Windows 10). ), DOS / Windows 3.x, Linux (2.4, 2.6, 3.xe 4.x), Solaris e OpenSolaris, OS/2 e OpenBSD.

O presente post apresenta os procedimentos de instalação do VirtualBox 6 no GNU/Linux que pode aplicar nas distribuições Debian e Ubuntu.

Atualizar o repositório e instalar os pré requisitos
sudo apt update
sudo apt install gcc make linux-headers-$(uname -r) dkms


Adicionar o VirtualBox no repositório
$ wget -q https://www.virtualbox.org/download/oracle_vbox_2016.asc -O- | sudo apt-key add -
$ wget -q https://www.virtualbox.org/download/oracle_vbox.asc -O- | sudo apt-key add -

$ sudo sh -c 'echo "deb [arch=amd64] http://download.virtualbox.org/virtualbox/debian $(lsb_release -sc) contrib" >> /etc/apt/sources.list.d/virtualbox.list'

Após adicionar no repositório, podemos fazer a instalação do VirtualBox via APT, segue:
$ sudo apt install virtualbox-6.0

Feito!

terça-feira, 21 de maio de 2019

Criando repositório remoto Git no servidor próprio

É comum utilizar servidor Git hospedado, como o Github, Bitbucket e Gitlab, mas sabendo que o Git é distribuído, ou seja, você pode ter seu próprio servidor Git, então esse é o objetivo deste post, é criar um repositório remoto no servidor Git próprio.

Servidor Remoto para repositório Git
Premissas: Uma máquina Linux com a distribuição que preferir e SSH instalado.
Suponha que você escolheu o diretório ~/git e que vamos criar um repositório chamado repo1.git. Segue os procedimentos:
mkdir -p ~/git/repo1.git
cd ~./git/repo1.git

Com o diretório criado, precisa definir um repositório remoto, que apenas armazenará arquivos, sem diretório de trabalho (working directory):
git --bare init
Com isso, você já tem um repositório remoto, ao qual pode fazer push e de onde pode fazer clone.

Repositório Git Local
Agora no diretório do projeto, pode ser na mesma ou outra máquina
Aqui será usado o diretório ~/git/repo1.git criado antes.
Acesse até o diretório do projeto e segue:
git init .
git add .
git commit -m "first commit"

Agora é necessário especificar que será usado um repositório remoto, onde podemos fazer push dos arquivos. Para isso, segue:

git remote add origin ssh://usuario@IP/~/git/repo1.git

Assim pode enviar os arquivos ao servidor remoto remoto

git push origin master

Para clonar o repositório do servidor remoto Git?
git clone ssh://usuario@IP/~/git/repo1.git

O usuário, o IP e diretório é da máquina onde está o servidor Git.

Referências
https://git-scm.com/book/pt-br/v1/Git-no-Servidor-Configurando-o-Servidor

Feito!