Instalar e configurar servidor Linux + compilar Nginx e PHP 7 com acesso a Oracle, SQL Server, Postgres, Firebird e Mysql + Tomcat e Webmin
maio 29, 2016 6 Comentários
Hello World!
Este tutorialzaço demorou, mas saiu! É, definitivamente este demorou um bocado, pois acredito que tenha colocado uma enquete sobre isso há uns 2 ou 3 anos.
Lembrando que este tutorial diz a respeito de uma integração do PHP 7 com proxy reverso Nginx que irá servir os seus arquivos para a web. Portanto farei outro tutorial baseado em Apache, pois no momento da compilação do PHP são passados parâmetros diferentes e não dá para para compilar para os dois ao mesmo tempo.
Neste tutorial iremos abordar:
- Instalação e Configuração do Linux Debian;
- Conceito de Particionamento de Discos;
- Conceito de Gerenciador de Boot;
- Conceito de Configuração de Repositórios;
- Conceito de Instalação e Configuração e Pacotes de forma manual e por gerenciador;
- Conceito de Configuração de Redes;
- Conceito de Manipulação de Diretórios;
- Conceito de Gerenciadores de Pacotes;
- Conceito de Acesso Remoto usando SSH via terminal ou modo gráfico;
- Preparação do ambiente Oracle para integração com o PHP 7;
- Instalação do MySQL/MariaDB;
- Instalação do Firebird;
- Instalação do Postgres;
- Configuração e instalação da biblioteca OpenSSL a partir de seus fontes;
- Instalação da biblioteca MCrypt;
- Configuração e instalação da biblioteca Freetype a partir de seus fontes;
- Configuração e instalação da biblioteca FreeTDS a partir de seus fontes;
- Configuração e instalação da biblioteca UnixODBC a partir de seus fontes;
- Configuração e instalação da biblioteca do PHP 7 a partir de seus fontes;
- Configurando a biblioteca do SQL Server no PHP 7;
- Instalação e configuração do Microsoft ODBC Driver 13 for SQL Server;
- Configuração e preparação das bibliotecas PDO_SQLSRV e SQLSRV para o PHP 7;
- Configuração e instalação da biblioteca do PHP-FPM a partir do resultado da compilação do PHP 7;
- Configuração e instalação da biblioteca Image Magick a partir de seus fontes;
- Configuração e instalação do Nginx a partir de seus fontes e integração com PHP-FPM;
- Instalação e Configuração do PHPMyAdmin no Nginx;
- Capturando contéudo de variáveis de ambiente com o Nginx;
- Instalando e configurando o Xdebug a partir dos fontes;
- Instalação e configuração do Webmin;
- Configuração e instalação do Apache Tomcat a partir de seus fontes;
- Configuração do feeTDS;
- Configuração de Scripts de Inicialização;
- Instalação do RCConf;
Serão 74 passos que vão desde o básico da instalação do Linux Debian em modo texto até a configuração de um ambiente web propício para abrigar vários tipos de aplicações em PHP 7. Todos os passos são detalhados e tem destaque em azul quando é necessário detalhar ainda mais sobre o tema. Cada passo trata de um assunto diferente, porém complementar e por isso a necessidade de um só tutorial para abordar esta proposta de servidor. Boa leitura.
Vá direto para a instalação se não estiver afim de ler esta história chata aí abaixo. – Voltar ao início
Uma breve história antes, pois você pode estar se perguntando de por que tanta coisa instalada em um só servidor?
Éramos uma equipe de desenvolvimento de sistemas de determinado setor público e não tínhamos oportunidade para mostrar o nosso valor porque quando se trabalha no setor público você costuma ver, a todo momento, empresas se beneficiarem de políticos para venderem seus serviços ou políticos que possuem empresas, utilizarem o seu cargo ou acesso privilegiado para enraizar o seu produto e assim iniciar um ciclo de dependência por anos, décadas ou por todo o sempre até que venha outro político de um grupo ainda mais forte que consiga quebrar este ciclo e que consequentemente ergue a partir dali um novo ciclo para também deixar o seu rastro e não sua marca como bom gestor.
Você pode se perguntar o que este tutorial tem a haver com isso? Bem, quando nossa equipe teve a oportunidade de mostrar o que sabíamos fazer, montamos servidor de correio, anti spam, novo portal, nova intranet, novo padrão de servidores de aplicativos, documentação atualizada e n aplicativos sob demanda com alto grau de produtividade e gerido por um efetivo, um comissionado e vários estagiários que hoje despontam no mercado como bons profissionais. Mas o nosso sucesso não seria atingido se não houvesse cumplicidade e perseverança de nossa parte. Não preciso dizer que uma boa equipe é um casamento e se a sua não for, se sempre tiver quem sabote ou quem não colabore, vá fazendo o que der, estude bastante, trabalhe para ver as coisas mudarem, pois isso também muda as pessoas e se não mudar, não se preocupe, as maçãs podres se alto isolam porque ninguém quer comê-las. Mas ainda sim seja sempre gentil com estas maçãs, não jogue-as fora, pois se tiverem de apodrecer, deixe que o destino delas se encarregue com isso.
Não estou aqui para condenar empresas que prestam serviço para o setor público, mas sejamos realistas, fora o fato de as vezes o poder público não pagar em dia o que deve, os valores dos contratos são atrativos e por muitas vezes a concorrência para prestar serviços é grande, mas a qualidade destes serviços prestados não é garantida porque o pregão para concorrência não mede qualidade e sim requisitos especificados no edital de abertura e o menor valor oferecido. E muitas vezes estes editais para concorrência de empresas são confeccionados para beneficiar uma empresa X ou são mal feitos a ponto de estarem cheio de brechas que permitem que qualquer empresa que não tenha a bagagem necessária para a prestação de serviços coloque o menor valor e ganhe a licitação.
Sempre tenha em mente que se sua equipe de desenvolvimento não se atualiza com o mercado e/ou não for comprometida com a evolução dos sistemas de informação vigentes, provavelmente ela não terá nem voz para impedir que seus integrantes formados por programadores e analistas se tornem operadores e administradores de sistemas de terceiros que podem ter todo o tipo de código sujo ou não, que funcionam como deveriam ou não. É a lei! Por isso use sua inteligência para propor sem criar discórdias.
E agora sobre o nosso padrão de servidor querido.
Nossa equipe desenhou este padrão de servidor porque tínhamos um Windows Server 2003, outro que era Windows 2000, outro um Red Hat Linux 5, um Cent-OS, outro que era um Windows XP e os scripts que as empresas terceirizadas deixavam ficavam espalhados e ninguém sabia o que rodava neles e quem deveria saber nunca saberá de nada. As aplicações que rodavam nestes servidores em sua maioria eram feitas em Java ou PHP e acessavam o banco de dados Oracle ou MySQL. Foi aí que chegamos a seguinte conclusão: para que ficar enfiando este monte de Windows com Linux, cheios de vírus, fragmentando, sendo Windows do jeito que ele é e a gente nunca sabe o que tem lá dentro? Pra que Windows aqui se até o Obama espalhou Linux pela Casa Branca? Então. Depois de muitos testes com muitas versões Linux chegamos ao Debian, ficamos nele e definimos um padrão. O local dos scripts, o local do Java, o local do Apache, o local das apps em PHP, o local das apps em JSP, a opção de desabilitar ou habilitar determinado banco de dados caso apareça uma destas empresas “paraquedistas” que já entram na sua sala com a aplicação e o banco na mão e por aí vai.
Enfim, este tutorial foi batizado com o nome de Bender. Por que? Porque gostamos de Futurama.
fonte: https://mastigado.wordpress.com
Welcome to Bender!
Instalação do Linux – Voltar ao início
Baixamos a imagem ISO no site do Debian (http://www.debian.org) e instalarei em uma máquina virtual VMWare, mas você pode instalar no Virtual Box ou naquela do Windows que não me lembro o nome e aquela outra do Linux que eu também não lembro do nome e você também pode instalar no computador comum também.
E vamos começar a instalação.
1º – Criei um servidor Linux com as seguintes configurações, 20 GB de HD, 512 megabytes de memória RAM e dois processadores. Repare que fiz a configuração em uma máquina com pouca memória e pouco espaço em disco para que você perceba que um servidor Linux em modo texto não precisa de muita coisa, a não ser claro que você precise de mais desempenho e mais espaço em disco.
2º – Ah! Abaixo está a tela de instalação do Debian 8, lindo não acham? Bem, eu escolhei a opção 64 bit install e não 64 bit graphical install porque eu prefiro o modo texto (só por isso), pois é a mesma coisa.
3º – Quanto a escolher a linguagem, é Hue hue hue BR mesmo. Maque aí, Portuguese (Brazil).
4º – Confirme se é este idioma mesmo que você vai querer instalar.
5º – Confirme a sua localidade.
6º – Agora escolha o idioma do teclado (não vou te ensinar a fazer isso se você não souber, por favor!).
7º – Defina o hostname ou seja, o nome do seu computador. Pode chamá-lo de nheconhecohost se preferir.
8º – Aqui, coloque o nome do domínio em que você se encontra. Se você está em uma empresa, coloque aí o dominio de sua empresa, senão coloque aí HOUSE ou DISTRITO9 ou VILADOCHAVES.
9º – Agora, esta aí é senha do root. Isso mesmo! A senha do admin mor do Linux. Com esta senha você faz qualquer coisa lá dentro, então tome cuidado com ela e coloque de preferência uma cheia de caracteres especiais, números, letras, etc.
10º – Aqui você insere o nome real do seu usuário Linux. Tipo Joaquim José da Silva Xavier, sacou?
11º – Agora você coloca o login do seu usuário. Tipo assim: tiradentes.
12º – And now, insira a senha deste usuário. Lembrando que este usuário é um usuário comum e não tem privilégios para instalar programas, executar algumas aplicações, fazer cagada, etc.
13º – Agora, escolha a região adequada ao seu fuso horário.
14º – E agora vamos particionar com o nosso particionador de disco. Antes de iniciarmos o particionamento gostaria de fazer uma observação e comparação referente ao sistema operacional Windows. – Voltar ao início
Explicação para você saber diferenciar (mais ou menos) como fica o particionamento no Windows e no Linux – Voltar ao início
No Windows, na hora em que você escolhe o disco que deseja para instalar o sistema operacional (dentro de seu instalador), ele cria automaticamente uma partição para guardar arquivos de inicialização e outras coisas que não sei o que é. No Windows as partições são dividas por C, D, E, F…Z: e etc. Por padrão, o sistema operacional no Windows é instalado na unidade C: e por muitos este C: também é chamado de raiz do HD. Na verdade, o termo raiz se refere basicamente ao nível mais abaixo que você consegue chegar da sua árvore de arquivos e pastas (nossa, já tô falando coisa de inclusão digital, vou parar por aqui). Mas peraê, outra coisinha sobre Windows é que quando ele é instalado, basicamente são deixadas os diretórios de Arquivos de Programas, as pastas dos Usuários e a pasta Windows, que guarda o sistema operacional. Pronto! Tá explicado.
Diretórios como partições no Linux
No Linux, você tem o diretório raiz (equivalente ao C: do Windows) chamado de / (sim, a gente chama ele de barra). E no Linux, este negócio de partição C, D, E e etc não existe, pois o conceito aqui é outro. Quando você instala um Linux, o seu diretório raiz / contém vários outros diretórios (usr, mnt, srv, media, home, bin, etc, boot, var e alguns outros) e cada um deles tem uma função. Existem muitas distribuições Linux que usam mais determinados tipos de diretórios do que outras. Quer um exemplo? Distribuições (baseadas em pacotes .deb) como Ubuntu, Mint, Debian, Knoppix, etc costumam usar o diretório chamado media para montar as suas unidades, já outras como Red Hat, Fedora, Mandriva (nem sei existe ainda), Cent-OS usam a pasta mnt e por aí vai. Mas no Linux, estes diretórios (ou qualquer diretório) podem e devem por muitas vezes serem transformados em partições. Como assim? É como se no Windows você transformasse a pasta Arquivos de Programas em uma partição. Complicado? Bem, pense que se no Windows as partições que geralmente são chamadas de C ou D:, como seria uma partição chamada Arquivos de Programas? Arquivos de Programas: ? Pois bem, no Windows não é possível “transformar” um diretório em uma partição, mas sim colocar um diretório dentro de uma partição. Já no Linux não, você pode dizer que um diretório chamado minhapasta seja uma partição e e sobre isso que eu irei tratar abaixo. Ah sim! Qual é a vantagem disso para o Linux? Inúmeras, vou citar algumas.
- No Linux a pasta onde ficam os dados do usuário chama-se home (no Windows, Users, cópia descarada :p), daí você pode colocar um outro HD só para armazenar informações dos usuários e dizer que o diretório home aponta para ele.
- Outro diretório conhecido no Linux é o var. Diretório este que costuma guardar os logs de acesso de vários programas instalados e do sistema operacional. Pois bem, imaginemos que você tenha um aplicativo que gera logs toda a hora e que geram tantos a ponto de ter uma média de 50 megas de logs por dia (não estou discutindo aqui boas práticas de programação) e sua partição que abriga o diretório var tiver 2GB de tamanho? Pois bem, ao ter este diretório criado como uma partição, você tem uma margem de segurança para caso os logs cheguem a ocupar toda a partição de 2GB e o máximo que pode acontecer nesta ocasião é que seu aplicativo pare de gerar logs e a partição onde está está a área principal de seu sistema operacional não terá todo o seu HD cheio e com isso não provoque a parada total do sistema, obrigando que você tenha a possível intervenção humana no computador porque possivelmente ele estará inacessível.
Espaço de área de troca de arquivos temporários (swap)
No Linux, quando você faz uma instalação do zero, o mínimo que você tem que criar são duas partições, uma chamada / (como expliquei anteriormente) e outra chamada swap (mas esta não fica visível para quem usa o sistema operacional).
No Windows, esta partição não existe e seu tamanho é variável ao grosso modo de dizer. Nele, toda a vez em que o sistema operacional não tem mais memória RAM disponível, o SO passa a usar hd como memória virtual sem limite de tamanho pré definido, mesmo existindo um local onde você pode definir se quer que a área de arquivos de paginação do Windows tenha um espaço pré determinado como é feito obrigatoriamente no Linux toda a vez em que você instala o sistema operacional, esta prática não é obrigatória. Existe inclusive uma corrente de pensamento que diz que se você instalar o seu Windows num HD de disco rígido e definir que toda a sua área de memória virtual fique numa partição de HD SSD, seu Windows ficará bem mais rápido. Faz sentido e isso também valeria para o Linux.
Essa área de memória com tamanho definido no Linux tem algumas interpretações de como ela deveria ser o tamanho ideal alocado durante a instalação do Linux. Para alguns o seu tamanho deve ser do mesmo tamanho da memória RAM, outros dizem que o ideal é de que seja o dobro do tamanho da RAM, entre outras vertentes. Mas no nosso caso, iremos criar com o dobro do tamanho da memória RAM definida do nosso computador e é assim que costumo fazer em instalações Linux.
Particionamento de disco
Como disse antes, você pode definir no Linux se quer que diretórios sejam também partições e é isso que faremos aqui com alguns diretórios.
Iremos usar o método de particionamento Manual e seguir em frente.
15º – Escolhendo o HD que será particionado
No meu caso preferi fazer uma máquina virtual para testar esta aplicação. Você pode até se assustar por eu ter definido um HD de apenas 20GB, entretanto achei mais do que suficiente para este trabalho. Bem, então é isso, escolha o HD e dê Enter.
16º – Agora iremos definir este disco como Partição Livre para repartir esta partição de 20GB em tamanhos menores. Marque a opção Sim.
17º – Pronto! Agora definiremos a primeira partição de nosso HD. Dê Enter com o cursor em cima do ESPAÇO LIVRE.
18º – Siga em criar uma nova partição.
19º – Como já havia explicado antes desta seção de particionamento, vou deixar 1GB para a área de swap e se você não leu o que escrevi sobre a partição swap, recomendo ler.
20º – Aqui definiremos como Primária a partição swap e para explicar o que são partições primárias e lógicas vou deixar este link para que você possa retirar suas dúvidas quanto a isso, pois não vou entrar neste assunto para que este grande tutorial não fique ainda MAIS maior (mais maior? Oh no!).
21º – E em seguida definiremos que esta partição ficará no inicio do espaço disponível do disco.
22º – Bem, agora devemos usar esta partição como Área de troca (swap) e em seguida Finalizar a configuração da partição.
23º – Voltando para o menu principal do particionador, continuemos o resto das configurações no espaço livre restante. Marque a opção correspondente ao ESPAÇO LIVRE e dê Enter.
24º – Definimos aí que criaremos mais uma nova partição.
25º – E agora, iremos criar a partição para o diretório /. Bem, este / (lê-se barra) será como explicado anteriormente, é a raiz do nosso sistema operacional. E no Linux não é exigido um tamanho tão grande assim, nada que 5GB não resolvam, mas eu vou deixar 15GB, porém eu recomendo que antes de definir este tamanho, pense bem onde você deixará este sistema instalado, porque se é num servidor, num cliente, em uma máquina virtual como esta e por aí vai, cada caso é um caso. Num servidor de correio que montei uma vez de espaço em disco de 2TB, deixei 100gb só para o / e não que tenha sido necessário esse tamanhozão, mas eu achei bom ter espaço disponível para caso o sistema operacional precisasse guardar algo numa emergência. Portanto veja bem, a situação é quem diz sobre sua necessidade e para este caso abaixo deixei 15.5GB disponível porque eu só tô aqui para ensinar.
26º – E para este /, criar uma partição Lógica.
27º – E definir para que fique no inicio do espaço disponível.
28º – Agora, definiremos que:
- O sistema de arquivos é do tipo ext4;
- Sim, queremos formatar esta partição;
- O Ponto de montagem fica como /;
- E por último, finalizamos a configuração da partição.
Lembrando que você não é obrigado a escolher o tipo de sistema de arquivos ext4, só estou o utilizando porque já usei ReiserFS, ext2, ext3, entre outros, e o ext4 me pareceu ser (por enquanto) algo que eu possa sentir um pouco mais de confiança quando há dano físico no HD e princípio de perda de acesso a dados.
29º – E agora que já temos duas partições definidas, iremos no espaço que restou, criar um espaço para outra área de partição. Esta partição será em cima do diretório srv. Separei este diretório porque nas distribuições Linux ele não costuma ser utilizado para guardar muitas coisas, daí será ele que usaremos para deixar os nossos arquivos publicados no servidor web.
30º – E para esta partição vamos deixar todo espaço em disco disponível, que no caso é de 5GB. Mas veja bem, eu tenho alguns servidores que deixo este espaço reservado com alguns bons gigas para eu colocar e publicar o que quiser, portanto saiba que esta é uma instalação teste e é você quem define como deve fazer isso com as suas partições.
31º – Mais uma vez definiremos como tipo de partição Lógica.
32º – E aqui os passos serão:
- O sistema de arquivos é do tipo ext4;
- O Ponto de montagem como /srv;
- E por último, finalizamos a configuração da partição.
33º – Bem, agora é finalizar o particionamento e escrever as mudanças no disco.
34º – Confirme isso aí e espere a instalação ir para o próximo passo.
35º – Agora configuraremos o repositório de nosso gerenciador de pacotes. Para quem não sabe como funciona um gerenciador de pacotes saiba que ele é basicamente um programa que baixa, instala e configura programas para você. Bem, lá na frente iremos utilizar bastante. No caso do Debian, que é a distribuição que estamos utilizando, ele usa o gerenciador de pacotes chamado Apt-Get. Por agora vamos nos ater apenas a escolher um repositório para podermos pegar os programas dele.
36º – E já que escolhemos o Brasil temos agora de escolher qual dos repositórios daqui iremos utilizar.
37º – Esta opção é para o caso o de se você precisar utilizar um proxy para sua conexão de internet funcionar, do contrário vá para o próximo passo sem alterar nada.
38º – Esta janela abaixo lhe dá ao opção de participar do concurso de utilização de pacotes. Bem, eu sempre marco sim para que a comunidade tenha dados mais precisos do que eu estou utilizando.
39º – E este aí abaixo é opção para você instalar o gerenciador de boot de nome GRUB. Eu particularmente sempre instalo este aí mesmo. Lembrando que se você não quiser instalar o GRUB ou se ele teve alguma incompatibilidade com sua máquina, você pode marcar a opção Não e escolher instalar o gerenciador de boot chamado LILO. Porém, nós iremos de GRUB mesmo.
40º – Lembrando que ao escolher o gerenciador de boot ele irá lhe perguntar em que partição será instalado. E sobre isso preste atenção no texto a seguir.
Breve explicação sobre o gerenciador de boot – Voltar ao início
Quando instalamos um gerenciador de boot em nosso HD, quero que saiba que é na partição onde se encontra o setor MBR (Master Boot Record) que ele deve ser instalado, pois é nesse local que costuma ser utilizado para a inicialização de um sistema operacional. Portanto observe que na configuração que fizemos no particionador, criamos uma partição primária e duas lógicas que pertencem a uma outra partição primária. Portanto só temos a partição sda. O que quero dizer com isso é que se tivéssemos duas partições, uma chamada de sda e outra como sda2 ou uma com sda e outra como sda1 e assim sucessivamente, você precisa saber que sempre tem que pegar a que define o dispositivo e isso é fácil de identificar porque ela não tem número junto com sua identificação, neste caso a sda. Mas aí você me pergunta, se eu tiver uma com o nome de sda e outra com o nome de sdb? Aí eu diria que você tem dois dispositivos (dois HDs provavelmente) em sua máquina e que escolher um deles para instalar o gerenciador de boot vai depender também de qual HD você escolheu na BIOS de sua máquina para estar no primeira opção de boot.
Eu gostaria muito de explicar a fundo sobre esta questão de boot e dispositivos que são listados no diretório /dev, mas por ora apenas escolheremos a partição sda.
41º – E depois de instalado o gerenciador de boot, nossa instalação do sistema operacional Debian está completa. Continue para reiniciar o sistema operacional.
42º – Voltar ao início – Reiniciado o computador, dê o comando apt-get update para atualizar a sua lista de repositório. Sobre essa lista de repositório eu comentei acima de que este repositório se trata de um servidor em algum lugar do mundo que guarda uma série de aplicativos que podem ser instalados após ter sido configurada esta lista na instalação ou no pós instalação do seu Linux Debian e o comando apt-get update é justamente para pedir informação para que este servidor nos envie a lista atualizada dos programas que ele tem disponibilizado para os usuários.
43º – Bem, agora iremos começar a nossa jornada de instalação de pacotes. – Voltar ao início
Breve explicação sobre Instalação de pacotes
Bem, como já havia comentado, iremos utilizar o gerenciador de pacotes Apt para que baixe, instale e configure os programas que solicitamos para ele. Várias distribuições Linux tem o seu próprio gerenciador de pacotes (no Mandriva era urpmi, no Cent-OS e derivados usamos o yum, no Arch Linux tem o pac man e etc) e no Debian temos o nosso Apt. Dentre os comandos existentes para utilizarmos junto a ele só utilizaremos os básicos e isso será o bastante para o que precisamos.
Baixando alguns programas manualmente.
44º – Bem, agora iremos baixar os programas para começarmos a configurar o nosso Linux Debian, seja instalando e configurando aplicativos pelo gerenciador de pacotes, manualmente ou compilando. Vamos lá então.
O primeiro da lista é o Free Type. Você irá programar no Google por freetype e vai baixar sua versão mais recente. Bem eu baixei a versão 2.9 (em 10/05/2019), então eu não sei como estará lá no dia.
45º – O próximo app será o Image Magick. Procure no tio Google e baixe sua última versão por favor. Eu baixo a 7.0.8-44 (em 10/05/2019), mas hoje não sei em que versão está, então esteja atualizado.
46º – Agora (Se você quiser, vá até o site do Packges Debian e baixe a última versão do LibmCrypt. Eu baixei esta versão aí, a 2.5.8.3-3, mas se existir uma mais nova, baixe-a.
47º – Agora procure pela biblioteca Openssl. Eu baixei a versão 1-1.1 no repositório do Github (https://github.com/openssl/openssl/releases) (em 10/05/2019), portanto se não tiver uma mais nova, baixe essa aí mesmo.
48º – Agora vá até a página do Nginx e baixe sua última versão. Eu baixei essa 1.14.2 (em 10/05/2019) aí, mas fique a vontade em baixar uma mais recente.
50º – Agora meus caros, iremos baixar as bibliotecas de conexão com o Oracle. E chegando lá na área de download dos caras, você pode clicar em:
- Instant Client for Linux x86-64 para Linux 64 bit;
- Instant Client for Linux x86 para Linux 32 bit;
51º – E depois de escolhida a plataforma, você deverá escolher quais bibliotecas desta plataforma irá baixar. As que eu escolhi foram (em 10/05/2-19):
- (basic) – instantclient-basic-linux.x64-19.3.0.0.0.zip
- (sdk) – instantclient-sdk-linux.x64-19.3.0.0.0.zip
- (sqlplus) – instantclient-sqlplus-linux.x64-19.3.0.0.0.zip
Veja bem, não necessariamente precisa ser na mesma versão que eu baixei, contudo deverá ser obrigatoriamente as que contém os nomes basic, sdk e e sqlplus e só. Os pacotes também devem ser do tipo zip.
52º – Baixe também a última versão do Apache Tomcat 6 (sim, já está no 9, mas eu defini o 6). E sim, neste tutorial iremos utilizar a versão 6 do Tomcat porque eu ainda não tive tempo de configurar as outras versões, mas presumo que não seja muito diferente, então se você quiser se aventurar em baixar uma versão mais recente é por sua conta e risco na hora de integrar com a biblioteca do Oracle. Ah sim! Baixe a versão para Linux ok? De preferência em pacote tarball tipo este apache-tomcat-6.0.45.tar.gz.
53º – Você também deve ir até a página do Unix ODBC e baixar a sua última versão. Eu baixei esta unixODBC-2.3.7.tar.gz aí (em 10/05/2019), mas fica a seu critério baixar uma mais nova ou não.
54º – Você vai digitar Webmin no Google e na seção de Download da página irá baixar o pacote .deb relativo ao executável do Linux Debian. Sim é bom que você saiba que pacotes com extensão .deb são como .exe para Windows, a gente dá dois cliques e ele sai instalando. Não que não podemos instalar o pacote tarball, mas por ora este aí será o nosso pacote.
55º – E por fim o nosso querido PHP 7. Bem, eu baixei essa versão aí, php-7.3.5.tar.bz2 (em 10/05/2019), portanto fique a vontade se tiver uma mais atual, aliás eu aconselho.
Após ter instalado o Linux e ter baixado os pacotes, a primeira coisa que devemos fazer é instalar o pacote ssh usando Apt. Com ele teremos acesso remoto ao Linux. Alguns podem até dizer “ah, mas este pacote já vem instalado”, bem, instale com o comando abaixo.
apt-get install ssh
Descobrindo o seu ip no Linux
No Windows a gente digita ipconfig no terminal e no Linux digitamos ifconfig.
Portanto não tenha medo, digite:
ifconfig
E agora você pode acessar remotamente o seu servidor Linux utilizando o comando abaixo de outro terminal em outro computador.
ssh bender@ip_do_seu_servidor_linux
Repare que o acesso remoto para o servidor Linux só estará liberado para o usuário que criamos na instalação e não o root. Claro que isto é uma medida de segurança, portanto para logar como usuário root, você pode tanto digitar no terminal:
su
ou
login
E digitar o login root e a senha do root.
Mas, se você quiser sempre se logar como root remotamente utilize o Nano (leia a explicação sobre este editor neste post que fiz especialmente para você nunca usou este editor) que nos permite editar o arquivo responsável por esta “trava”. Por sua conta e risco, ok?
nano /etc/ssh/sshd_config
Desça até a linha onde é permitido o root login (PermitRootLogin yes) e descomente (retire o símbolo # se estiver na frente) e depois pressione as teclas Crtl + o para salvar as modificações no arquivo e Crtl + x para fechar o arquivo e voltar para o terminal.
Depois de feito o procedimento acima, reinicie o serviço de ssh com o comando abaixo.
/etc/init.d/ssh restart
Pronto. Agora você já poderá acessar remotamente o seu servidor Linux.
Configuração de Rede em modo texto – Voltar ao início
Existe um arquivo no Linux que é praticamente padrão entre todas as distribuições sobre configuração de rede. E quando eu digo “praticamente” quero dizer que não vou me ater a possíveis erros que aconteceram em outras distribuições quando alterei este arquivo pelo modo texto, pois o que você tem que saber aqui é que no Debian ele funciona.
Para alterar sua configuração de redes como no Windows, vá no arquivo /etc/network/interfaces
nano /etc/network/interfaces
E lá você verá algo assim:
# This file describes the network interfaces available on your system # and how to activate them. For more information, see interfaces(5). source /etc/network/interfaces.d/* # The loopback network interface auto lo iface lo inet loopback # The primary network interface allow-hotplug eth0 iface eth0 inet dhcp
A configuração acima indica que você está utilizando ip dinâmico e para configurarmos com ip fixo utilizamos algo assim:
# This file describes the network interfaces available on your system # and how to activate them. For more information, see interfaces(5). source /etc/network/interfaces.d/* # The loopback network interface auto lo iface lo inet loopback # The primary network interface allow-hotplug eth0 #iface eth0 inet dhcp iface eth0 inet static address 192.168.3.161 netmask 255.255.255.0 network 192.168.1.0 broadcast 192.168.1.255 gateway 192.168.3.1 dns-nameserver 192.168.3.1
Repare que nesta desligamos o DHCP e a função “hotplug”.
Alterando o NameServer
Também existe um arquivo chamado resolv.conf e é nele que geralmente são guardados configurações do domínio que você está. Para acessá-lo digite:
nano /etc/resolv.conf
#domain Home #search Home nameserver 192.168.3.1
Estou deixando estas informações de rede apenas para caráter informativo, mas pode ser que em ambiente de produção você vá ter de alterar estes dois arquivos em algum momento.
O QUE VOCÊ DEVE SABER ANTES DE IR INSTALANDO TUDO QUANTO É PACOTE – Voltar ao início
É necessário saber que quando se trabalha com Linux possíveis pesquisas e buscas sobre determinadas bibliotecas e suas respectivas configurações podem e devem acontecer. Não se sinta desesperado e nem desamparado, mas sim pronto para abrir a cabeça de que vida não tem de ser fácil.
Você tem de estar preparado para caso aconteça possíveis erros ao instalar qualquer pacote. Por que? Porque tudo o que está aqui descrito é baseado na minha instalação e não que a sua seja diferente, mas podem acontecer atualizações ou remoção de pacotes durante este período que instalei o Debian (lá pra outubro/novembro de 2015 até agora), pois como disse antes, este tutorial está me tomando muito tempo e a vida e a evolução dos sistemas não param.
Pois bem o que você pode fazer caso algum pacote não instale:
Se alguns destes pacotes que estão no ítem 55º passo não instalarem, se certifique que digitou o nome do pacote corretamente. E se ainda assim ele dizer que o pacote não existe ou que dependa de outro, dê o comando:
apt-get -f install
que ele tentará resolver as dependências daqueles pacotes.
E se ainda assim não instalar, você poderá procurar pelo nome do pacote ou similar utilizando o comando:
apt-cache search nome_do_pacote
ou
apt-cache search parte_do_nome_do_pacote
Exemplo:
Se ele não estiver encontrando o pacote blender-blablabla-dev, procure na listagem de pacotes disponíveis para serem baixados no servidor usando parte do nome do pacote. Tipo isso:
apt-cache search blender
Repare que na imagem acima ele trouxe tudo que está relacionado ao termo blender, estando escrito no nome do pacote ou não. Então fique esperto e aprenda como usar suas ferramentas disponíveis. Mas não significa que você pode ter seu problema resolvido completamente. Siga em frente lendo esta “carta de orientação”.
Outra situação que pode acontecer é o fato de você utilizar o comando para instalar pacotes do Debian, tipo este:
dpkg -i nome_do_pacote.deb
E também lhe ser mostrado as mesmas mensagens de que não é possível ser instalado, que é por causa de bla, bla, bla e etc. Neste caso, faça a mesma coisa, apt-get -f install para tentar resolver as dependências, se não der certo, tente procurar usando o comando search do Apt (como foi explicado acima). Se ainda assim não encontrar o pacote, digite o nome dele no Google e vá descobrir se ele está obsoleto ou não. Portanto se depois de tudo o que você fez para tentar instalar o pacote não deu certo, pule a etapa e siga em frente no tutorial, mas se por acaso lá na frente algo que você está tentando instalar depender de algum pacote que foi deixado de instalar aqui atrás, você vai ter de aprender a se virar, baixar o pacote, configurá-lo e compilá-lo manualmente. Não que isso vá acontecer, mas você deve estar preparado para saber ser virar no Linux porque este tutorial é de média complexidade, portanto para lhe dar o caminho das pedras e você conseguir resolver estes e outras inúmeras questões, criei este guia objetivo para leigos e esquecidos, pois tem inúmeras coisas aí que você pode usar para consulta. E se você quiser perguntar algo aqui no blog, fique a vontade, mas também não significa que eu seja um Oráculo.
Instalação e configuração dos pacotes (finalmente)
56º – Agora iremos baixar e instalar pacote por pacote via Apt. Portanto eventuais questionamentos sobre para que serve cada pacote irei me abster, porque muitos deles são dependências que outros pacotes estão pedindo, portanto para que não fiquemos baixando, compilando e configurando pacote por pacote, vou deixar uma lista dos que devem ser instalados utilizando o gerenciador de pacotes. Lembrando que caso algum pacote não instale peço que você verifique se o nome dele está mesmo correto, pesquise no Google se for preciso para ser informar se o pacote foi descontinuado ou se tem uma versão mais nova e se for este o caso, instale a versão mais nova, mas se ainda assim não existir mais este pacote para a sua versão do Debian, pule essa parte de sua instalação e vá para o próximo ítem.
Então vamos lá, se logue em em seu sistema operacional como root e execute linha por linha dos comandos abaixo.
apt-get install libxml2-dev apt-get install binutils apt-get install gcc apt-get install make apt-get install build-essential apt-get install libmcrypt4 apt-get install libaio1 apt-get install libpng12-dev apt-get install libjpeg62 apt-get install zlib1g apt-get install zip apt-get install libcurl4-openssl-dev apt-get install libssl-dev apt-get install libpng-dev apt-get install libperl-dev apt-get install libjpeg-dev apt-get install libxslt1-dev apt-get install libevent-dev apt-get install libaprutil1 apt-get install libaprutil1-dev apt-get install libpcre3-dev apt-get install libicu-dev apt-get install libzip-dev apt-get install libmhash-dev apt-get install libltdl-dev apt-get install libbz2-dev apt-get install libt1-dev apt-get install libbz2 (caso haja erro na instalação do libbz2 no PHP) * apt-get install libbz2-1.0 (caso haja erro na instalação do libbz2 no PHP) * apt-get install libmcrypt-dev apt-get install libtidy-dev apt-get install libxpm-dev apt-get install libsqlite3-dev apt-get install autoconf2.13 apt-get install autoconf2.64 apt-get install libharfbuzz-dev apt-get install libxslt-dev apt-get install libtidy-dev apt-get install libpq-dev apt-get install libfreetype6-dev apt-get install mlocate apt-get install pkg-config apt-get install firebird-dev apt-get install unixodbc apt-get install unixodbc-bin apt-get install unixodbc-dev apt-get install tdsodbc apt-get install python apt-get install python-dev apt-get install python-psycopg2 apt-get install python-django apt-get install python-mysqldb apt-get install python-pyodbc apt-get install bison apt-get install re2c apt-get install memcached apt-get install net-tools apt-get install libssl-dev apt-get install libsqlite3-dev apt-get install cmake apt-get install iodbc
Instalando arquivos necessários para a biblioteca freeTDS(responsável para a conexão com SQL-Server):
apt-get install libaprutil1-dbd-freetds apt-get install freetds-common apt-get install freetds-dev apt-get install libct4 apt-get install libsybdb5 apt-get install tdsodbc apt-get install libdbd-freetds libqt4-sql-tds sqsh
Opcionais:
(para gerenciar a inicialização de programas no Debian) apt-get install rcconf (para caso as funções updatedb e locate não funcionarem) apt-get install mlocate
E por fim sobre estes pacotes abaixo
SÓ ACONSELHO VOCÊ INSTALAR OS DOIS PACOTES ABAIXO SE QUISER USAR MODO GRÁFICO!
Resumindo em outras palavras, se você quiser estragar tudo enfiando modo gráfico no nosso querido servidorzinho em modo texto tornando-o mais pesado com pacotes desnecessários para o que iremos fazer aqui, dê o comando abaixo (e aproveite e volte para o mundo gráfico do Windows).
Não instale estes dois pacotes abaixo por favor!
(para controlar a execução e paralisação do modo gráfico quando necessário, coisa que não será nunca)
apt-get install gdm
(para caso seja necessário um modo gráfico, mas não será necessário)
apt-get install gnome-core
Para acessarmos os arquivos do Linux no Windows ou do Linux no Linux (WinSCP ou Filezilla ou outros) – Voltar ao início
Repare que estou fazendo esta observação após você ter instalado o pacote ssh no Linux. Com ele poderemos fazer conexões em modo texto e em modo gráfico utilizando gerenciadores de acesso SSH/FTP utilizando a porta 22 que é padrão do protocolo SFTP.
Você já deve ou já deveria ter pensado que se tivermos baixado alguns arquivos para serem executados no Linux foi utilizando outro computador que não é este que estamos configurando. Pois bem, para fazer isso temos vários programas tanto no Windows quanto no Linux, mas eu particularmente utilizo no Windows o programa WinSCP e no Linux o Filezilla, mesmo os dois sistemas operacionais tendo já gerenciadores de FTP embutidos. Vale lembrar que ambos programas tem a mesma finalidade. Então vá no Google e baixe o WinSCP se você estiver usando Windows e precisar acessar o Linux. As configurações são simples e estão como abaixo.
- File Protocol: SFTP
- Host name: o ip do seu Linux.
- Port Number: 22
- User name: root
- Password: aquela sua senha que o bairro inteiro já sabe.
E quando conectado ficará algo assim:
Repare na imagem acima que do lado esquerdo você vê o seu computador e do lado direito você vê o seu servidor Linux. Você pode transferir os arquivos de um lado para o outro apenas arrastando ou clicando com o botão direito e clicando nas opções do menu que se abrirá.
Você também pode e deve baixar o software Putty para acessarmos via modo texto o servidor que estamos configurando. E nele configuramos o nosso tipo de acesso. No momento em que clicarmos em Open, será pedido o login e senha do servidor.
E depois de conectado, faremos a nossa configuração via modo texto.
57º – Preparando o ambiente Oracle
Extraia os arquivos do instantclient-basic, instantclient-sdk e instantclient-sqlplus (que você baixou anteriormente) para o diretório /usr/local descompactando antes:
Primeiro descompacte todos os pacotes (lembrando que não adianta sair copiando e colando se o pacote não for igual ao que eu baixei, portanto preste atenção, se baixou um pacote diferente coloque o nome correspondente a ele):
- unzip instantclient-basic-linux-x86-64-19.3.0..0.zip
- unzip instantclient-sdk-linux-x86-64-19.3.0.0.0.zip
- unzip instantclient-sqlplus-linux-x86-64-19.3.0.0.0.zip
Depois mova o diretório para /usr/local.
mv instantclient_19_3 /usr/local/
O código riscado abaixo está provisoriamente inabilitado (não o utilize)
E então, criamos um link simbólico o library client da biblioteca
ln -sf /usr/local/instantclient_19_3/libclntsh.so.19.1 /usr/local/instantclient_19_3/libclntsh.so
Depois, para atualizar as informações da LD executamos o ldconfig.
ldconfig
Criamos os diretórios para as variáveis de ambiente do Oracle
mkdir /usr/local/instantclient_19_3/network/ mkdir /usr/local/instantclient_19_3/network/admin/
E para criar as variáveis de ambiente executamos cada linha abaixo
export LD_LIBRARY_PATH=/usr/local/instantclient_19_3/ export ORACLE_HOME=/usr/local/instantclient_19_3/network/admin/ export TNS_ADMIN=/usr/local/instantclient_19_3/network/admin/
Preparando o arquivo tnsnames.ora
Eu não sei qual a sua configuração de banco de dados, mas eu peguei um exemplo do arquivo tnsnames.ora que deve ser mais ou menos este formato abaixo. Este arquivo é utilizado para se conectar aos chamados “schemas” do Oracle, portanto se você sabe quais serão as configurações de banco do seu servidor, altere o que achar necessário e salve o arquivo com o nome de tnsnames.ora, mas se você não entende porcaria nenhuma de Oracle, copie este conteúdo abaixo e salve o arquivo com o nome de tnsnames.ora do mesmo jeito que se um dia alguém precisar utilizar este biblioteca só será preciso alterar algumas configurações.
GSA = (DESCRIPTION = (ADDRESS_LIST = (ADDRESS = (PROTOCOL = TCP)(HOST = dboracle1)(PORT = 1521)) ) (CONNECT_DATA = (SERVICE_NAME = gsa) ) ) GSATESTE = (DESCRIPTION = (ADDRESS_LIST = (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.0.19)(PORT = 1521)) ) (CONNECT_DATA = (SERVICE_NAME = gsa) ) ) GSA_TREINA = (DESCRIPTION = (ADDRESS_LIST = (ADDRESS = (PROTOCOL = TCP)(HOST = 192.166.0.19)(PORT = 1521)) ) (CONNECT_DATA = (SERVICE_NAME = gsa) ) ) PORTAL = (DESCRIPTION = (ADDRESS_LIST = (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.0.28)(PORT = 1521)) ) (CONNECT_DATA = (SERVICE_NAME = portal) ) )
Feito o processo acima, copie o texto para um arquivo de nome tsnames.ora-modelo para dentro de ORACLE_HOME:
cp tnsnames.ora-modelo $ORACLE_HOME/tnsnames.ora
E pronto! Finalizamos por enquanto a parte do Oracle.
58º – Instalando o MySQL (Maria DB na prática se for no Debian) – Voltar ao início
Não tem muito o que fazer, você vai usar o gerenciador de pacotes mesmo para instalar o MariaDB, pois o nosso foco aqui é compilar o PHP e seus derivados. Vale lembrar que se algum destes pacotes não estiverem disponíveis, retire um e bola pra frente. Se for pedido o password durante a instalação coloque o mesmo do usuário root da máquina que definimos na instalação e altere depois se preferir, porém não se surpreenda se o Debian não vier mais com o MySQL, mas sim o Maria DB (seu sucessor espiritual) quando dizer para instalar o MariaDB Server.
apt-get install mariadb-server-10.3
59º – Instalando o Firebird – Voltar ao início
E para quem nunca utilizou o Firebird saiba que este é um puta banco. Vou incluí-lo aqui na instalação porque na configuração do PHP também iremos integrá-lo. E segue a mesma orientação do MySQL, se for pedido o password durante a instalação coloque o mesmo do root da máquina que definimos na instalação e altere depois se preferir.
apt-get install firebird3.0-server
E em seguida coloque o password.
60º – Instalando o Postgresql – Voltar ao início
Aqui é a mesma coisa, será via Apt mesmo. Para quem não sabe o Postgres é um banco de dados muito bom e também muito utilizado e vamos preparar o PHP para recebê-lo durante sua configuração.
apt-get install postgresql postgresql-server-dev-all
61º – Instalando o OpenSSL – Voltar ao início
Bem, este será pré configurado e compilado em nosso Linux. Já baixamos o arquivo e agora façamos nossa parte.
Vá até onde está o arquivo baixado e descompacte utilizando o comando tar.
tar -zxvf openssl-1.1.0-pre1.tar.gz
Depois entre no diretório descompactado.
cd openssl-1.1.0-pre1
Configure o local onde será instalada a biblioteca.
./config --prefix=/usr/local/open-ssl
Feita a configuração, compile utilizando os comandos abaixo.
make && make install
Terminado o processo, exclua o diretório.
rm -r openssl-1.1.0-pre1
62º – Instalando a biblioteca Mcrypt – Voltar ao início
Antigamente eu até compilava o libmcrypt, posso até fazer isso na 2ª versão deste tutorial que será direcionado para Apache e não Nginx, mas por ora iremos instalar a biblioteca a partir do pacote que baixamos no site de packages do Debian.
dpkg -i libmcrypt-dev_2.5.8-3.3_amd64.deb
63º – Instalando o Freetype – Voltar ao início
A biblioteca Freetype está relacionada a fonts (tipos de letra) e esta e outras bibliotecas foram utilizadas por mim para poder instalar CMS com o Drupal e a plataforma de ensino a distância Moodle.
Primeiro iremos descompactar a biblioteca que baixamos.
tar -jxvf freetype-2.4.4.tar.bz2
Depois entramos no diretório do Freetype.
cd freetype-2.4.4
Executamos o Autogen.
sh autogen.sh
Executamos o configurador.
./configure
E por fim enviamos o comando para que ele seja compilado.
make && make install
64º – Instalando o FreeTDS – Voltar ao início
Esta biblioteca é geralmente utilizada para fazermos comunicação com SQL Server tanto via PHP ou Python (se servir para outra coisa também eu não sei dizer), porém o PHP 7 não oferece suporte para a biblioteca mssql contida nas versões anteriores do PHP, entretanto iremos instalar ainda assim caso utilizemos Python.
Primeiro descompactamos o pacote.
tar -zxvf freetds-pached.tar.gz
Entramos no diretório.
cd freetds-0.95.91
E configuramos a nossa pré compilação com os parâmetros abaixo.
./configure --prefix=/usr/local/freetds --with-tdsver=7.4 --enable-msdblib --enable-dbmfix --with-gnu-ld
Aqui vai o script já pronto para o copiar e colar:
./configure --prefix=/usr/local/freetds --with-tdsver=7.4 --enable-msdblib --enable-dbmfix --with-gnu-ld
E em seguida compilaremos.
make && make install
65º – Instalar a biblioteca UnixODBC – Voltar ao início
Sim, este é o driver odbc para sistemas Unix e se não tem mais SQL Server poderíamos pelo menos o driver ODBC não? É, não se dizer sobre isso. Mas será incluído também em nosso PHP 7 mais a frente.
Mas antes em primeiro lugar descompacte a biblioteca.
tar -zxvf unixODBC-2.3.4.tar.gz
Entre no diretório do Unix ODBC.
cd unixODBC-2.3.4
E configure o aplicativo com os devidos parâmetros.
./configure --prefix=/usr/local/unixODBC
Para facilitar copie e cole isso aqui se preferir:
./configure --prefix=/usr/local/unixODBC
E por fim compile.
make && make install
E depois de instalado, crie um link simbólico para o diretório libs.
ln -s /usr/local/unixODBC/lib /usr/local/lib64
E devido a um certo problema de compilação no PHP 7 tive de criar alguns links simbólicos no diretório /usr/local/lib64. Portanto vá até o diretório /usr/local/lib64 e execute os comandos abaixo lá. São eles:
ln -s /usr/local/unixODBC/include/odbc.h odbc.h ln -s /usr/local/unixODBC/include/odbcsdk.h odbcsdk.h ln -s /usr/local/unixODBC/include/iodbc.h iodbc.h ln -s /usr/local/unixODBC/include/sqlunix.h sqlunix.h ln -s /usr/local/unixODBC/include/sqltypes.h sqltypes.h ln -s /usr/local/unixODBC/include/sqlucode.h sqlucode.h ln -s /usr/local/unixODBC/include/sql.h sql.h ln -s /usr/local/unixODBC/include/isql.h isql.h ln -s /usr/local/unixODBC/include/sqlext.h sqlext.h ln -s /usr/local/unixODBC/include/isqlext.h isqlext.h ln -s /usr/local/unixODBC/include/udbcext.h udbcext.h ln -s /usr/local/unixODBC/include/sqlcli1.h sqlcli1.h ln -s /usr/local/unixODBC/include/LibraryManager.h LibraryManager.h ln -s /usr/local/unixODBC/include/cli0core.h cli0core.h ln -s /usr/local/unixODBC/include/cli0ext.h cli0ext.h ln -s /usr/local/unixODBC/include/cli0cli.h cli0cli.h ln -s /usr/local/unixODBC/include/cli0defs.h cli0defs.h ln -s /usr/local/unixODBC/include/cli0env.h cli0env.h
Sim, eu acho meio “pedreiragem” isso aí, porém digamos que eu tentei fazer várias coisas e isso aí de colocar os links simbólicos foi o que funcionou na hora da compilação do PHP 7.
66º – Instalando e configurando o PHP 7 – Voltar ao início
Entremos em nossa pasta onde se encontra o arquivo compactado do PHP 7 e começemos o serviço.
Primeiro iremos apenas descompactá-lo, pois será preciso incluir algumas bibliotecas do SQL Server dentro dos fontes do PHP.
tar -jxvf php-7.3.7.tar.bz2
Configurando a biblioteca do SQL Server no PHP 7 – Voltar ao início
Agora, para você poder compilar tanto o PDO do SQL Server, quanto o próprio driver do SQL Server junto com o PHP 7 teremos de seguir um dos dois passos abaixo.
Primeiro, vamos baixar a última lib disponibilizada pela Microsoft no link oficial da Microsoft, que está no GitHub. Portanto se estiver como 5.6 escrito na área de releases (source code) da biblioteca não temas (baixe apenas).
E aí depois descompactamos o arquivo abaixo.
tar -zxvf msphpsql-5.6.1.tar.gz
Instalação e configuração do Microsoft ODBC Driver 13 for SQL Server
Primeiro devemos fazer download do driver (e para o caso de você não conseguir baixar este arquivo usando o link abaixo, você pode utilizar este que reservei porque acho o link da Microsoft muito burocrático de se obter).
Apenas para caráter informativo tentei baixar a versão 17 do ODBC driver da Microsoft neste link, mas além de não permitirem que você realmente baixe os fontes, te dão um link doido pra você acrescentar no repositório do APT que comigo nunca funcionou, então fica aqui só para constar e ficar recomendado para não baixá-lo mesmo sendo atualizado.
Depois descompactamos o pacote,
tar -zxvf msodbcsql-13.0.0.0.tar.gz
entramos dentro do diretório descompactado
cd msodbcsql-13.0.0.0
e mandamos instalar o bichinho.
./install.sh install --force
Após a instalação, não se preocupe se for informado de que que houve uma falha ao checar a versão 64 bit do seu Linux. Siga em frente.
Checking for 64 bit Linux compatible OS …………………………… FAILED
Checking required libs are installed …………………………. NOT CHECKED
unixODBC utilities (odbc_config and odbcinst) installed ………… NOT CHECKED
unixODBC Driver Manager version 2.3.1 installed ……………….. NOT CHECKED
unixODBC Driver Manager configuration correct …………………. NOT CHECKED
Microsoft ODBC Driver 13 for SQL Server already installed ………. NOT CHECKED
Microsoft ODBC Driver 13 for SQL Server files copied …………………… OK
Symbolic links for bcp and sqlcmd created …………………………….. OK
Microsoft ODBC Driver 13 for SQL Server registered ………………. INSTALLED
Seguindo então, executamos os dois parâmetros abaixo e conferimos logo em seguida o resultado (utilizei-me do comando /usr/bin/odbcinst porque este faz referência a instalação do unixODBC da Microsoft).
/usr/bin/odbcinst -j
/usr/bin/odbcinst -q -d -n "ODBC Driver 13 for SQL Server"
E esperamos ver este resultado:
Bem, obtido o resultado satisfatório da imagem acima crie um diretório chamado unixODBCMS dentro de /usr/local.
mkdir /usr/local/unixODBCMS
E também crie uma pasta chama include dentro dentro dela.
mkdir /usr/local/unixODBCMS/include
Pronto. Agora criaremos um link simbólico para o ODBC da Microsoft que baixamos e instalamos.
ln -sf /usr/bin/odbcinst /usr/local/unixODBCMS/odbcinst
E também devemos criar um link simbólico para o cabeçalho de um arquivo do Unix ODBC que instalamos mais cedo.
ln -sf /usr/local/unixODBC/include/sqlext.h /usr/local/unixODBCMS/include/sqlext.h
Agora sim terminamos a parte referente ao Unix ODBC da Microsoft.
Configuração e preparação das bibliotecas PDO_SQLSRV e SQLSRV para o PHP 7 – Voltar ao início
Bem, agora voltamos para nosso diretório que contém os fontes das bibliotecas PDO_SQLSRV e SQLSRV, mais precisamente dentro da pasta source.
cd msphpsql-5.6.1/source
E e chegando lá, copie o diretório shared para dentro dos diretórios pdo_sqlsrv e sqlsrv como ilustra os comandos abaixo (caso não faça isso, você pode ter o erro: Cannot find PDO_SQLSRV headers exposto em seu browser na hora em que tentar configurar o PHP).
cp -r shared pdo_sqlsrv
cp -r shared sqlsrv
Em seguida, copie os diretórios pdo_sqlsrv e sqlsrv para dentro da pasta ext que está dentro dos fontes do PHP 7.3.5 já descompactados anteriormente.
cp -r /srv/bender13/php/msphpsql-5.6.1/source/pdo_sqlsrv /srv/bender13/php/php7.3.5/ext
cp -r /srv/bender13/php/msphpsql-5.6.1/source/sqlsrv /srv/bender13/php/php-7.3.5/ext
Pronto, os procedimentos para configuração do SQL Server junto aos fontes do PHP 7 estão finalizados por enquanto.
Depois entramos no diretório onde está os fontes do PHP 7.3.5
cd php/php-7.3.7
E executamos um buildconf
./buildconf --force
Agora, gostaria que você entendesse que todos os pacotes que baixamos, configuramos e instalamos até agora foram especificamente para a preparação deste ambiente do PHP compilado no seu Linux. Nas versões anteriores em que eu ainda instalava o PHP 5 existiam as bibliotecas que não estão mais compatíveis como por exemplo a mssql responsável pela conexão com o SQL Server e outras.
Agora, antes de configurarmos deixarei algumas observações.
1ª – A primeira é para caso você tenha instalado uma nova versão da biblioteca do Oracle. Para compilar o PDO do Oracle é preciso observar como é referenciada esta biblioteca no PHP. A ordem para colocar o parâmetro de configuração é o local onde está instalado e a versão final do instant client, separado por vírgula.
Exemplo:
--with-pdo-oci=instantclient,/home/cjones/instantclient_19_3,19.1).
Mas veja bem não se preocupe com isso se você baixou a mesma versão que está neste tutorial.
2ª – Esta segunda irá impactar totalmente na configuração do seu PHP. PORTANTO SE O SEU SERVIDOR FOR 64 BIT INSIRA O PARÂMETRO ABAIXO NA CONFIGURAÇÃO DO PHP JUNTO COM OS OUTROS que iremos mostrar mais abaixo (no script de configuração já deixei inserido por padrão para você não ter este trabalho).
--with-libdir=lib64
3ª – Tive de retirar os parâmetros relacionados a libmcrypt e ao GD porque a partir do PHP 7.1.1 eles foram drepeciados.
--with-mcrypt --with-GD --enable-gd-native-ttf
Configuração do PHP
Como disse anteriormente não irei explicar o porquê de cada biblioteca, mas quero dizer que fiz o que pude para que esta pré configuração do PHP seja compatível o máximo de apps web que temos que instalar, como Moodle, Drupal, Sonar, etc.
./configure CXXFLAGS=-std=c++11 --enable-sqlsrv=shared --with-pdo_sqlsrv=shared --prefix=/opt/php7 --with-config-file-path=/opt/php7/etc --enable-pdo --with-pdo-pgsql --with-pdo-firebird --with-pgsql --with-pdo_sqlite --with-pdo_mysql --with-pdo_oci --with-mysqli --with-unixODBC=/usr/local/unixODBCMS --with-pdo-odbc=unixODBC,/usr/local/unixODBC --enable-ftp --enable-mbstring --enable-ctype --with-curl --with-openssl --with-xmlrpc --with-zlib --with-gettext --with-freetype-dir=/usr/local/include/freetype2 --enable-sockets --enable-tokenizer --enable-zip --enable-mbstring --with-jpeg-dir=/usr/lib --with-zlib-dir=/lib --with-bz2=/lib --with-iconv --enable-dba=shared --enable-soap --enable-fpm --enable-exif --enable-wddx --enable-bcmath --enable-calendar --enable-dba --enable-zip --enable-sysvmsg --enable-sysvsem --enable-sysvshm --with-png-dir --with-zlib-dir --with-layout=GNU --with-gettext --with-tidy --with-pear --with-xpm-dir --with-mhash --with-xsl --enable-intl --with-fpm-user=www-data --with-fpm-group=www-data --with-oci8=instantclient,/usr/local/instantclient_19_3 --with-pdo-oci=instantclient,/usr/local/instantclient_19_3,19.1 --with-libdir=lib64 --enable-debug
Para o caso de você ter dificuldade em copiar os comandos acima para colar no terminal, pode utilizar o que está abaixo.
./configure CXXFLAGS=-std=c++11 --enable-sqlsrv=shared --with-pdo_sqlsrv=shared --prefix=/opt/php7 --with-config-file-path=/opt/php7/etc --enable-pdo --with-pdo-pgsql --with-pdo-firebird --with-pgsql --with-pdo_sqlite --with-pdo_mysql --with-pdo_oci --with-mysqli --with-unixODBC=/usr/local/unixODBCMS --with-pdo-odbc=unixODBC,/usr/local/unixODBC/ --enable-ftp --enable-mbstring --enable-ctype --with-curl --with-openssl --with-xmlrpc --with-zlib --with-gettext --with-freetype-dir=/usr/local/include/freetype2 --enable-sockets --enable-tokenizer --enable-zip --enable-mbstring --with-jpeg-dir=/usr/lib --with-zlib-dir=/lib --with-bz2=/lib --with-iconv --enable-dba=shared --enable-soap --enable-fpm --enable-exif --enable-wddx --enable-bcmath --enable-calendar --enable-dba --enable-zip --enable-sysvmsg --enable-sysvsem --enable-sysvshm --with-png-dir --with-zlib-dir --with-layout=GNU --with-gettext --with-tidy --with-pear --with-xpm-dir --with-mhash --with-xsl --enable-intl --with-fpm-user=www-data --with-fpm-group=www-data --with-oci8=instantclient,/usr/local/instantclient_19_3 --with-pdo-oci=instantclient,/usr/local/instantclient_19_3,19.1 --with-libdir=lib64 --enable-debug
E claro! Agora vamos compilar (e aguardar muito). Vá fazer um lanche se preferir e não saia do diretório do PHP assim que terminar de compilar.
make && make install
Observação a respeito do resultado pós compilação (observe a figura abaixo e siga as orientações seguintes):
Ao final da compilação o PHP 7 dá uma orientação para você adicionar o PEAR no seu arquivo php.ini.
Portanto, abra o arquivo php.ini-production que está no diretório onde você acabou de compilar o PHP 7.
nano php.ini-production
E inclua o path do pear arquivo conforme orientado. Pode ser logo abaixo da sessão onde ele trata do include_path do pear (; PHP’s default setting for include_path is “.;/path/to/php/pear”).
include_path = "/opt/php7/share/pear"
Observação a respeito do parâmetro sigchild:
Removi a opção –enable-sigchild por conta de avisos do Composer e do próprio site da Oracle que me recomenda não utilizá-lo. Você pode consultar em:
https://blogs.oracle.com/opal/entry/php_oci8_signal_handling_and_e_1
67º – Configurando o php-fpm – Voltar ao início
Uma das coisas novas que o PHP traz de algumas versões recentes (acho que do 5.5 ou do 5.6 pra cá) é o fato de não precisarmos mais utilizar um servidor web para servir nossas aplicações em PHP porque o nosso querido PHP já vem com um servidor web embutido. Sim, nada de Apache ou Nginx, porém eu não vou abordar isso neste tutorial porque o foco deste é intengrá-lo com o proxy reverso Nginx. Proxy reverso? O que é isso? Vou utilizar a explicação do pessoal da net: imagina um proxy e depois imagina ele sendo reverso. Ah tá! Entendi porra nenhuma. Mas vamos lá configurar o nosso php-fpm.
Bem, ainda dentro do diretório do PHP faremos a configuração abaixo.
Crie um diretório para os logs do php-fpm.
mkdir /var/log/php-fpm
Torne o usuário www-data dono deste diretório.
chown -R www-data:www-data /var/log/php-fpm
Copie o arquivo de configuração do PHP que acabamos de gerar durante a compilação para dentro do diretório onde foi instalado o nosso PHP segundo orientação de nossa pré-configuração.
cp -f php.ini-production /opt/php7/etc/php.ini
Agora altere a permissão deste aquivo.
chmod 644 /opt/php7/etc/php.ini
Copie a configuração padrão do nosso php-fpm para o local onde ela deverá ficar.
cp /opt/php7/etc/php-fpm.conf.default /opt/php7/etc/php-fpm.conf
E copie a configuração do SAPI (Server Application Interface) para ele.
cp -f sapi/fpm/init.d.php-fpm /etc/init.d/php-fpm
Altere a permissão de seu arquivo php-fpm.
chmod 755 /etc/init.d/php-fpm
Atualize o mesmo para sua inicialização no Linux.
update-rc.d -f php-fpm defaults
Crie um arquivo para guardar o pid (id do processo do php-fpm) de quando ele estiver sendo executado.
touch /var/run/php-fpm.pid
Finalizando o assunto sobre as bibliotecas do PDO_SQLSRV e SQLSRV
Vá dentro do diretório /opt/php7/lib/php e provavelmente haverá um diretório com uma data e o nome debug no final. Estou dizendo isso porque na minha configuração apareceu a data de 3 de março de 2016, então pode ser que você pegue algum fonte de outra data de compilação que poderá fazer esta data variar.
Mas vamos no endereço em foram geradas as duas libs de extensão .so para a biblioteca do SQL Server e adicioná-las em seu arquivo php.ini.
Primeiro abra o seu arquivo php.ini
nano /opt/php7/etc/php.ini
Acrescente as linhas abaixo dentro dele, salve e feche o arquivo (mas antes preste atenção vendo se o diretório 20180731-debug tem mesmo esse nome porque sua forma varia conforme a data de compilação).
[PDO_SQLSRV] ;set pdo_sqlsrv para sql server extension=/opt/php7/lib/php/20180731-debug/pdo_sqlsrv.so ;[SQLSRV] ;set sqlsrv para sql server extension=/opt/php7/lib/php/20180731-debug/sqlsrv.so
Instale o PHAR sengundo resultado da compilação.
/srv/_LIBSPHP7/php-7.3.28/build/shtool install -c ext/phar/phar.phar /opt/php7/bin/ ln -s -f phar.phar /opt/php7/bin/phar
E por fim saia do diretório em que foi compilado o PHP e o remova.
rm -r php-7.1.1
Configuração dos arquivos do PHP-FPM
Definição do que é pra que serve (segundo o manual do PHP) :
FPM (FastCGI Process Manager) é uma alternativa para a implementação PHP FastCGI com algumas features adicionais (principalmente) usado em sites pessados.
Entre as features estão incluidas:
-
gerenciamento de processos avançado com stop/start;
-
habilidade para começar a trabalhar com uid/gid/chroot/environment diferentes, ouvindo em diferentes portas e últilizando-se de php.ini destintos (troca de safe_mode);
-
stdout e stderr logging;
-
reinício de emergência em caso de destruição acidental de opcode cache;
-
acelera o processo de upload;
-
“slowlog” – os scripts de registro (e não apenas seus nomes, mas o seu PHP backtraces também, usando ptrace e coisas semelhantes para o processo de leitura remota execute_data) que são executados extraordinariamente lento;
-
fastcgi_finish_request() – função especial para finalizar pedido e liberar todos os dados ao mesmo tempo continuando a fazer algo demorado (conversão de vídeo, processamento de estatísticas, etc);
-
dinâmico/estático child spawning;
-
informações básicas de estatus do SAPI (similar ao Apache mod_status);
-
php.ini-baseado em arquivos de configurações.
Mão na massa da configuração do PHP-FPM
Abra o arquivo de inicialização do php-fpm com editor Nano.
nano /etc/init.d/php-fpm
E altere a linha:
php_fpm_PID=${prefix}/var/run/php-fpm.pid
para:
php_fpm_PID=/var/run/php-fpm.pid
Agora, iremos iremos descomentar algumas linhas e também alterando alguns valores se necessário do arquivo php-fpm.conf. Portanto abra o arquivo de configuração usando o editor.
nano /opt/php7/etc/php-fpm.conf
E identifique onde estão as linhas que contém os valores abaixo. Se estiverem comentadas, descomente retirando o símbolo “#” que precede a linha e se conterem valores diferentes altere para os que são informados aqui (OBSERVE QUE NÃO É SÓ DESCOMENTAR, POIS AS VEZES OS VALORES SÃO PARECIDOS, PARECIDO TAMBÉM QUER DIZER NÃO IGUAL. PRESTE ATENÇÃO!).
pid = /var/run/php-fpm.pid rlimit_core = 'unlimited'
Agora, iremos iremos descomentar algumas linhas e também alterando alguns valores se necessário do arquivo http://www.conf.default. Portanto abra o arquivo de configuração usando o editor.
nano /opt/php7/etc/php-fpm.d/www.conf.default
E aqui também identifique onde estão as linhas que contém os valores abaixo. Faça o mesmo que foi feito logo acima, se estiverem comentadas, descomente retirando o símbolo “#” que precede a linha e se conterem valores diferentes altere para os que são informados aqui.
user = www-data group = www-data listen = 127.0.0.1:9000 pm = dynamic pm.max.children = 10 pm.start_servers = 4 pm.min_spare_servers = 2 pm.max_spare_servers = 6 pm.status_path = /status ping.path = /ping chdir = /srv/www
Pronto! Agora salve o arquivo e feche-o. Mas antes de prosseguirmos, copie renomeando este este arquivo para evitarmos problemas na hora de iniciar o PHP-FPM (aqui está a dica para resolução do problema que acontecerá se esta providência não for tamada).
cp /opt/php7/etc/php-fpm.d/www.conf.default /opt/php7/etc/php-fpm.d/www.conf
Comandos para gerenciarmos o PHP-FPM
/etc/init.d/php-fpm start /etc/init.d/php-fpm stop /etc/init.d/php-fpm reload
Nem preciso dizer o que cada um faz né? Pois bem, iremos utilizá-los adiante.
E para maiores detalhes sobre os parâmetros de configuração do arquivo php-fpm.conf, clonei um informativo da página oficial do PHP que contém a devida explicação para cada parâmetro do arquivo e para que eles servem. Está neste post.
Criação do nosso diretório público onde ficará nosso arquivo
Crie um um diretório para abrigar os nossos apps que estarão publicados utilizando o comando “Make Dir” do Linux.
mkdir /srv/www
E apesar de ser uma má prática, vou deixar aqui um comando para você deixar um comando para que você não tenha problemas com permissão de leitura ou escrita de arquivos futuramente neste diretório.
chmod 777 /srv/www
Este comando aí em cima chmod com o complemento 777 quer dizer que o diretório www terá permisão de leitura, escrita e gravação para para todo o tipo de usuário. Isso quer dizer de certa um furo de segurança, por isso recomendo a pesquisa de qual será a melhor opção de configuração de permissão para o seu diretório público porque eu não irei abordar isso aqui. Há um tempo atrás fiz este post onde abordo superficialmente como dar permissão específica no diretório.
Configurando o intl
Configuraremos o intl para uso conjunto com freetds para acesso ao SQL Server, pois felizmente a biblioteca sqlsrv (e não mais mssql) já está disponível para PHP7 assim como nas versões anteriores e por isso deixarei sua configuração aqui para caso alguém utilize o ODBC do PHP ou Python.
O que você deve fazer para incluir a informar a configuração do FreeTDS é alterar a linha no arquivo /opt/php7/etc/php.ini para igual está no parâmetros abaixo:
[intl] intl.default_locale = pt_utf8 ; This directive allows you to produce PHP errors when some error ; happens within intl functions. The value is the level of the error produced. ; Default is 0, which does not produce any errors. intl.error_level = E_WARNING intl.use_exceptions = 1
Lembrando para que surta efeito em qualquer configuração feita no php é necessário reiniciar (se ele ainda não estiver sido ligado o parâmetro é start).
/etc/init.d/php-fpm restart ou reload
(Em fase de teste e implementação. Segure as ondas mais um pouco)
Configuração do freeTDS para acessar o SQL Server
Acessar o arquivo freetds.conf, fazer o backup do arquivo original e altere todo o seu conteúdo para:
nano /etc/freetds/freetds.conf
[global]
host = xxx.xxx.xxx.xxx (host name or ip of the MSSQL server)
port = 1433</del>
client charset = UTF-8
tds version = 8.0>
text size = 20971520
Observação para instalação da biblioteca do Image Magick. – Voltar ao início
Talvez você precise instalar a biblioteca libjpeg62 para configurar esta biblioteca. Caso tenha problema ao configurar o Image Magick veja no inicio do tutorial, em apt-get install libjpeg62, caso não consiga baixar pelo apt-get, instale manualmente. Para instalar manualmente você pode tanto baixar um pacote dpkg ou baixar um tarball e instalar como já estamos fazendo com vários pacotes.
68º – Instalando o ImageMagick
Vamos agora pegar aquele versão que baixamos do Image Magick e a configuraremos.
Dê o comando para descompactar a biblioteca do Image Magick que baixamos anteriormente.
tar -zxvf ImageMagick-6.9.2-8.tar.gz
Agora entre no diretório onde foi descompactado o arquivo.
cd ImageMagick-6.9.2-8/
Configure.
./configure
Mande compilar o bicho.
make && make install
Depois saia o diretório e o remova.
rm -r ImageMagick-6.9.2-8/
69º – Instalando, configurando e integrando o Nginx ao PHP7 – Voltar ao início
Breve definição sobre Nginx (segundo o Wikipedia)
Nginx [engine x] é um servidor proxy HTTP e reverso, bem como um servidor de proxy de email, escrito por Igor Sysoev desde 2005. Segundo a Netcraft em fevereiro de 2013 o Nginx foi considerado o maior servidor HTTP, responsável por 12,81% dos servidores de HTTP e IMAP/POP3.
Começando:
Descompacte o Nginx que baixamos anteriormente.
tar –zxvf nginx-1.14.2.tar.gz
Depois entremos dentro do diretório com o comando.
cd nginx-1.14.2
E configuramos o bicho.
./configure --user=www-data --group=www-data --conf-path=/usr/local/nginx/nginx.conf --error-log-path=/usr/local/nginx/logs/error.log --pid-path=/usr/local/nginx/logs/nginx.pid --lock-path=/var/lock/nginx.lock --http-log-path=/usr/local/nginx/access.log --with-http_dav_module --with-http_ssl_module --http-proxy-temp-path=/usr/local/nginx/proxy_temp --with-http_stub_status_module --with-debug --with-http_flv_module --with-http_xslt_module --with-http_gzip_static_module --with-mail --with-mail_ssl_module --without-mail_pop3_module --without-mail_imap_module --without-mail_smtp_module --with-http_stub_status_module --http-client-body-temp-path=/usr/local/nginx/client_body_temp --http-fastcgi-temp-path=/usr/local/nginx/fastcgi
Você também pode copiar e colar a linha abaixo e colar no terminal.
./configure --user=www-data --group=www-data --conf-path=/usr/local/nginx/nginx.conf --error-log-path=/usr/local/nginx/logs/error.log --pid-path=/usr/local/nginx/logs/nginx.pid --lock-path=/var/lock/nginx.lock --http-log-path=/usr/local/nginx/access.log --with-http_dav_module --with-http_ssl_module --http-proxy-temp-path=/usr/local/nginx/proxy_temp --with-http_stub_status_module --with-debug --with-http_flv_module --with-http_xslt_module --with-http_gzip_static_module --with-mail --with-mail_ssl_module --without-mail_pop3_module --without-mail_imap_module --without-mail_smtp_module --with-http_stub_status_module --http-client-body-temp-path=/usr/local/nginx/client_body_temp --http-fastcgi-temp-path=/usr/local/nginx/fastcgi
Depois o compilamos e instalamos.
make && make install
E por fim, saímos do diretório e o removemos
cd.. rm -r nginx-1.14.2
Configurando o Nginx
Agora iremos criar dois diretórios para o nosso Nginx
Este primeiro será o local onde iremos guardar a configuração de cada site.
mkdir /usr/local/nginx/sites-available
Este segundo será o local onde iremos guardar os atalhos para a configuração de cada site
mkdir /usr/local/nginx/sites-enabled
Por que faremos as configurações acima? Bem, você pode querer manter a configuração de um site, mas não deixá-lo ativo e para isso apenas removemos o atalho que aponta para a configuração de um site da pasta sites-enabled.
Agora vamos até o local onde foi instalado o aplicativo segundo o nosso arquivo de configuração.
cd /usr/local/nginx
Configuração Repartida e Detalhada
Como passei muito tempo para aprender como configurar o Nginx na sua forma mais básica e que pudesse servir alguma app que fiz, adquiri o hábito de repartir bem a sua configuração para que fique o limpa e por isso faremos uma configuração detalhada do nosso amigo. Portanto agora, crie um diretório para guardar estas configurações.
mkdir /usr/local/nginx/conf
Em seguida vá dentro do diretório “conf” que criamos e crie um arquivo para guardar as configurações de charset chamado charset.conf.
touch charset.conf
Abra este arquivo com o Nano
nano charset.conf
E cole esta configuração lá dentro
charset utf-8;
Salve e feche o arquivo.
Agora crie um arquivo chamado expires.conf
nano expires.conf
Insira o conteúdo abaixo no arquivo e salve
expires max;
Crie também um arquivo chamado gzip.conf, coloque o conteúdo abaixo dentro dele, salve e feche o arquivo.
# most people include something like this. don't. # check your default nginx.conf, it's already covered in a much better way. #gzip_disable MSIE [1-6].(?!.*SV1); # compress proxied requests too. # it doesn't actually matter if the request is proxied, we still want it compressed. gzip_proxied any; # a pretty comprehensive list of content mime types that we want to compress # there's a lot of repetition here because different applications might use different # (and possibly non-standard) types. we don't really care, we still want them included # don't include text/html -- it is always included anyway gzip_types text/css text/plain text/javascript application/javascript application/json application/x-javascript application/xml application/xml+rss application/xhtml+xml application/x-font-ttf application/x-font-opentype application/vnd.ms-fontobject image/svg+xml image/x-icon application/rss+xml application/atom_xml; # increase the compression level, at the expense of additional CPU # cpu cycles are cheap virtually everywhere now, bandwidth not nearly as much gzip_comp_level 9; # the default is to gzip only HTTP 1.1 requests # we want to gzip http 1.0 requests, too, so lower the level required gzip_http_version 1.0; # set the Vary: Accept-Encoding header to force proxies to store compressed and uncompressed versions # per the nginx docs, a bug in IE 4 - 6 will cause them to not cache anything with this on # most people aren't going to care about ie 6 anymore, but keep that in mind gzip_vary on; # increase the size of the buffers which hold responses to make sure larger content can be compressed too # this means there are 16 buffers and they can each hold 8k # if you serve a lot of ridiculously large text (like combined CSS) you might consider upping this slightly gzip_buffers 16 8k; # up the minimum length a little to account for gzip overhead # this means anything smaller than 50 bytes won't be compressed. # the default is 20 bytes, which is sooo tiny it's a waste to compress gzip_min_length 50;
Crie agora um arquivo chamado ssl.conf, coloque o conteúdo abaixo nele, salve e feche o arquivo.
# we want to enable ssl session resumption to avoid # having to start the handshake from scratch each page load # so first we enable a shared cache, named SSL (creative!) that is 10mb large ssl_session_cache shared:SSL:10m; # save things in the cache for 3 minutes # if you're not making a request at least every 3 minutes, this isn't going # to accomplish anything anyway ssl_session_timeout 3m; # now we're going to change a bunch related to SSL ciphers and protocol # the primary goal here is to be more secure, and i've generally tried to # go with things that comply with the Federal Information Processing Standard (FIPS) # set by the US government for non-military government use # we don't want to support SSLv3, it's known to be insecure # FIPS 140-2 compliance, TLS1+ only ssl_protocols TLSv1 TLSv1.1 TLSv1.2; # now we go through a couple different options for the SSL ciphers to support, mainly just to # give you a bunch of options to pick from # this is a very concise definition of ciphers that don't allow anonymous DH or MD5 - the big weaknesses # per: https://calomel.org/nginx.html #ssl_ciphers HIGH:!ADH!MD5:@STRENGTH; # this is a very (not so) short list of very secure ciphers that may be incompatible with older browsers # per: https://calomel.org/nginx.html #ssl_ciphers ECDHE-RSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-SHA384:ECDHE-RSA-AES256-SHA:AES256-GCM-SHA384:AES256-SHA256:AES256-SHA:AES128-SHA; # this excludes insecure ciphers and sorts the others by strength # it is BEAST-resistant, prioritizing RC4 # per: http://groups.drupal.org/node/179344 #ssl_ciphers !aNULL:!LOW:!MD5:!EXP:RC4:CAMELLIA:AES128:3DES:SEED:AES256@STRENGTH; # this is a combination of everything above and openssl docs - very secure, FIPS-compliant, ordered by strength ssl_ciphers !aNULL:!eNULL:FIPS@STRENGTH; # don't let the client decide what ciphers to use, we've told the server which to allow ssl_prefer_server_ciphers on;
E por fim crie um arquivo chamado uploads.conf, coloque o conteúdo abaixo dentro dele, salve e feche o arquivo.
client_max_body_size 32m;
Alterando as configurações do arquivo nginx.conf
Agora, faça uma cópia do arquivo nginx.conf (que está dentro da raiz do diretório do Nginx) para outro arquivo.
cp nginx.conf nginx.conf.old
Abra o arquivo nginx.conf utilizando o editor Nano (ou outro de sua preferência)
nano nginx.conf
Apague todo o conteúdo do arquivo e cole o que está abaixo.
user www-data; worker_processes 4; error_log /usr/local/nginx/logs/error.log; pid /usr/local/nginx/logs/nginx.pid; events { worker_connections 1024; } http { include /usr/local/nginx/mime.types; default_type application/octet-stream; access_log /usr/local/nginx/logs/access.log; sendfile on; tcp_nopush on; keepalive_timeout 5; tcp_nodelay off; gzip on; include /usr/local/nginx/conf/gzip.conf; include /usr/local/nginx/conf/charset.conf; #include /usr/local/nginx/conf/ssl.conf; #include /usr/local/nginx/conf/uploads.conf; #include /usr/local/nginx/conf/expires.conf; include /usr/local/nginx/sites-enabled/*; }
Salve e feche o arquivo.
Criando um arquivo default para o seu diretório principal.
Você pode fazer configurações personalizadas para cada utilizando o Nginx. Entretanto, para quem já está acostumado com o Apache gosta de jogar um monte de “projetinhos” dentro do diretório public_html para fazer testes e tudo mais. E por causa deste comportamento que muitos de nós temos vou deixar abaixo um arquivo padrão para ser criado dentro do diretório sites-available. Vamos lá?
Entre dentro do diretório sites-available
Crie um arquivo chamado default.conf, cole o conteúdo abaixo nele, salve o conteúdo e feche o arquivo.
server { listen 80 default; root /srv/www; index index.php; location ~ .php$ { include /usr/local/nginx/fastcgi_params; fastcgi_pass 127.0.0.1:9000; fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME /srv/www$fastcgi_script_name; } }
Bem, vá até o diretório sites-enabled e crie um atalho para o arquivo de configuração default.conf.
ln -s /usr/local/nginx/sites-available/default.conf /usr/local/nginx/sites-enabled/default.conf
Algumas considerações sobre o arquivo default.conf
- Deixamos por padrão que ele trabalhe escutando requisições na porta 80 (como já é de costume);
- Definimos que o diretório root onde iremos colocar nossos projeto é o /srv/www;
- Definimos que o primeiro arquivo que ele irá procurar dentro de qualquer diretório é index.php (lembrando que poderíamos ter definido mais arquivos que ele vai buscando por eliminação se não existir o determinado. Seria algo como isto index index.php index.html zedocaixao.htm precisosabercomoissofunciona.php).
- Em location dizemos que iremos trabalhar com arquivos do tipo php.
- Depois damos um include nas configurações de FastCGI.
- E em seguida a porta que utilizaremos para passar estas informações via FastCGI. Repare que estas configurações de FastCGI tem de estar de acordo com a existente na configuração do seu PHP-FPM. Quero dizer que você não pode dizer que que lá você irá usar a porta 8000 e aqui 9000, porém fique tranquilo que já deixamos este tipo de configuração ok anteriormente na configuração do PHP.
- Já as outras duas configurações também pertencem ao FastCGI.
Testando o Nginx com o PHP-FPM
Vá até o diretório /srv/www e crie um arquivo chamado info.php, cole o conteúdo abaixo nele, salve e feche o arquivo.
<?php phpinfo(); ?>
Use o comando abaixo para parar o PHP-FPM caso ele já esteja rodando (estes comandos já foram explicados anteriormente).
/etc/init.d/php-fpm stop
E em seguida inicie o serviço
/etc/init.d/php-fpm start
Agora, verifiquemos se o serviço do Nginx foi parado corretamente.
/usr/local/nginx/sbin/nginx -s stop
E iniciemos em seguida.
/usr/local/nginx/sbin/nginx
Inclusive fiz um artigo explicando sobre os comandos do Nginx. Recomendo a leitura.
Agora faça o teste no navegador e digite o endereço no seu navegador
E espero que você veja algo do tipo (porque eu vi).
Verifique também se as bibliotecas pdo_sqlsrv e slqsrv do SQL Server foram instaladas corretamente.
Instalação e Configuração do PHPMyAdmin – Voltar ao início
Para fazermos um teste com um site individual, baixemos o PHPMyAdmin com o arquivo zip no site do PHPMyAdmin.
Descompacte o arquivo do PHPMyAdmin.
unzip phpMyAdmin-4.6.2-all-languages.zip
Renomeie o diretório descompactado.
mv phpMyAdmin-4.6.2-all-languages phpmyadmin
E mova para o diretório público
mv phpmyadmin /srv/www
Agora vamos ao diretório /usr/local/nginx/sites-available e criamos o arquivo abaixo.
nano phpmyadmin
E agora cole o conteúdo abaixo, salve e feche o arquivo.
server { listen 80; #server_name phpmyadmin; #rewrite ^/(.*) http://phpmyadmin.com/$1 permanent; } server { listen 80; server_name phpmyadmin; #access_log /srv/www/phpmyadmin/logs/access.log; #error_log /srv/www/phpmyadmin/logs/error.log; location ~ .php$ { fastcgi_pass 127.0.0.1:9000; fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME /srv/www/phpmyadmin$fastcgi_script_name; include fastcgi_params; } location /phpmyadmin { root /srv/www/phpmyadmin/; index index.php; } }
Veja bem. Sobre o arquivo de configuração acima é similar ao que já configuramos anteriormente, mas o que você precisa saber é que já tivermos o arquivo default.conf configurado não necessariamente precisariamos deste aí porque se trata de uma configuração personalizada para cada site que inserirmos no diretório sites-available. Alguma linhas eu comentei porque não estou em um servidor com domínio ou outras coisas, enfim, para mim deixei aí o que está comentado para vocês verem como funciona na verdade.
Bem, vá até o diretório sites-enabled e crie um atalho para o arquivo de configuração do phpmyadmin.
ln -s /usr/local/nginx/sites-available/phpmyadmin /usr/local/nginx/sites-enabled/phpmyadmin
E faça o teste no navegador digitando o seu ip e seu diretório do PHPMyAdmin deixado na pasta pública www.
Corrigindo os bugs do PhpMyAdmin com Nginx e PHP 7
Pois bem, estou atualizando esta informação para os que como eu sofreram para se logarem com o PhpMyAdmin nesta nova versão de PHP. Eis abaixo a solução:
Entre dentro do diretório do PhpMyAdmin
cd /srv/www/phpmyadmin
E copie o arquivo config.sample.inc para outro arquivo.
cp config.sample.inc.php config.inc.php
Depois, edite o arquivo config.inc.php
nano config.inc.php
E acrescente as linhas abaixo
$cfg['Servers'][$i]['connect_type'] = 'socket'; $cfg['Servers'][$i]['socket'] = '/var/run/mysqld/mysqld.sock';
Salve o arquivo e feche-o.
E por último, altere a permissão dele.
chmod 644 config.inc.php
Agora, dê um Ctrl + F5 para atualizar a sua página e pronto!
Para o caso de surgir a mensagem: Wrong permissions on configuration file, should not be world writable!
Altere a permissão do seu config inc para 755 como no comando abaixo.
chmod 755 config.inc.php
Capturando variáveis de ambiente do Linux no Nginx – Voltar ao início
Por que estou abordando isso aqui?
Você deve ter reparado que criamos várias variáveis de ambiente aqui no Linux, principalmente algumas relacionadas ao Oracle. Pois bem, se está utilizando Apache e sua aplicação PHP precisa acessar a variável ORACLE_HOME, provavelmente você fará este acesso por vias normais e não terá problema em se conectar no banco, mas caso esteja usando o Nginx, vou deixar aqui uma observação sobre o Nginx.
Enfim, li no stackoverflow(ruby on rails – How do I pass ImageMagick environment variables to nginx mongrels? – Stack Overflow) uma resposta de um post, dizendo que o Nginx não lida com variáveis de ambiente e não foi feito para isso, principalmente por causa de seu design, segurança e administração. Citou também que o modo passenger utilizado para o Ruby(utilizado para passar variáveis de ambiente) é um módulo feito por terceiros e que não respeita os padrões do Nginx e no final, ele argumenta que existem várias formas de resolver este problema sem que o Nginx tenha de lidar com isso.
Pois bem, no Nginx você tem de ir na configuração do seu site, mais precisamente na altura do código abaixo e enfiá-las lá!
location ~ .php$ {
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;fastcgi_param ORACLE_HOME “/usr/local/instantclient_19_3/network/admin”;
fastcgi_param LD_LIBRARY_PATH “/usr/local/instantclient_19_1”;fastcgi_param SCRIPT_FILENAME /srv/www/phpmyadmin$fastcgi_script_name;
include fastcgi_params;
}
Este método acima deve-se pelo fato de que o Nginx foi projeto até para ficar em outro servidor e isso é um dos motivos porque ele não lê as variáveis de ambiente do sistema operacional.
70º – Instalando o Xdebug a partir dos fontes – Voltar ao início
Para quem não sabe o Xdebug é uma extensão para utilizar o debug em seu PHP, inclusive nele estando em um servidor que não seja local.
Pois bem, vamos lá.
Vá na página de downloads do Xdebug e baixe o último fonte (virá num pacote estilo tarball(tar.gz)) no endereço:
https://xdebug.org/download.php
Agora, descompacte o pacote
tar -zxvf xdebug-2.7.2.tgz
Daí, entre na pasta descompactada.
cd xdebug-2.7.2/
E chame o comando phpize do PHP que instalamos.
/opt/php7/bin/phpize
Quando executar o comando acima será possível ver no terminal algo assim:
Configuring for: PHP Api Version: 20160303 Zend Module Api No: 20160303 Zend Extension Api No: 320160303
E agora que executamos o phpize iremos preparar a configuração para ser compilada.
./configure --enable-xdebug --with-php-config=/opt/php7/bin/php-config
Aqui já vai o script pronto para copiar e colar:
./configure --enable-xdebug --with-php-config=/opt/php7/bin/php-config
E compilar.
make && make install
Algo assim deverá aparecer:
Ainda dentro do diretório com os fontes copie o arquivo xdebug.so para dentro do diretório lib.
cp modules/xdebug.so /usr/lib/.
Agora, como nossa configuração foi feita para o FPM, iremos seguir os passos a seguir:
Tenha em mente que não executamos somente o comando make, mas também o make install e após efetuar este comando a biblioteca xdebug.so já foi adicionada dentro da instalação do PHP 7 (dentro do diretório /opt/php7/lib/php/20160303-debug/xdebug.so).
Execute as linhas abaixo para preencher o arquivo de configuração do Xdebug no PHP7 (muita atenção para o nome do diretório do xdebug porque ele muda de versão pra versão do php).
echo 'zend_extension="/opt/php7/lib/php/20180731-debug/xdebug.so"' >> /opt/php7/etc/php-fpm.d/20-xdebug.ini echo 'xdebug.remote_enable=1' >> /opt/php7/etc/php-fpm.d/20-xdebug.ini
Agora abra o arquivo php.ini da instalação do nosso PHP 7 e adicione a seguinte linha dentro dele. Eu adicionei logo após a referência do [soap], mas isso fica a seu critério.
[xdebug] zend_extension=/opt/php7/lib/php/20180731-debug/xdebug.so
Agora para finalizarmos, reinicie o seu PHP FPM.
/etc/init.d/php-fpm restart
E confira utilizando a função do phpinfo() está deste jeito.
Pronto. Agora é só integrar o seu Xdebug com seu Eclipse, Netbeans, PHP Storm ou outra ferramenta que preferir.
Para acessar o Xdebug remotamente do seu Windows com sua IDE
Abra o seu arquivo php.ini como feito anteriormente, vá até a linha onde você adicionou a configuração do seu Xdebug e acrescente o código logo abaixo das observações a seguir.
- O valor para xdebug.remote_host deve ser o endereço IP do host que vai acessar o servidor com a IDE (não o endereço IP do seu servidor!). Se você não tem um IP estático, você pode ter que atualizar isso e reiniciar o servidor web cada vez que você reiniciar seu pc! O ideal é que tanto o cliente quanto o servidor tenham IPs estáticos. No código abaixo coloquei o IP 192.168.1.72 somente para ilustrar.
- Certifique-se de que a porta xdebug.remote_port esteja aberta no seu host e no servidor (provavelmente por padrão estará, contudo ainda assim vou deixar (mais abaixo) dois comandos do Iptables para ser executado no Linux caso sua porta 9000 este bloqueada).
xdebug.remote_enable=1 xdebug.remote_handler=dbgp xdebug.remote_mode=req xdebug.remote_host=192.168.1.72 xdebug.remote_port=9000
E aqui a configuração do Iptables para caso sua porta estiver bloqueada no Linux (não vai estar, então só utilize para tira dúvida)
iptables -t filter -A INPUT -p tcp --dport 9000 -j ACCEPT
iptables -t filter -A INPUT -p udp --dport 9000 -j ACCEPT
Deixei também a configuração no Gist do Blog para caso preferirem: https://gist.github.com/blogmastigado/ee9e9e306e9ef4d22dd94ff76ce6cb8a
71º – Instalando o Webmin – Voltar ao início
Bem gente se eu não me engano nós baixamos a versão .deb do Webmin e a instalaremos aqui.
Uma breve definição do Webmin segundo o site da Wikipedia.
Webmin é um programa de gerenciamento de servidor, que roda em plataformas unix. Com ele você pode usar também o Usermin e o Virtualmin. O Webmin funciona como um centralizador de configurações do sistema, monitoração dos serviços e de servidores, fornecendo uma interface amigável, e que quando configurado com um servidor web, pode ser acessado de qualquer local, através de um navegador: https:(ip do servidor):(porta de utilização). Exemplo: https:172.168.5.12:10000
Para inslalar o Webmin
dpkg -i webmin_1.791_all.deb
E tentar acessar no navegador utilizando o protocolo https no seguinte endereço https://ip_do_seu_servidor:10000.
Sim. Com o Webmin você usa login e senha de root para entrar nele e depois você pode acessar deste terminal ssh via browser de onde estiver, passando por configurações de usuários e servidores de FTP, de backup, de correio até gerenciador quase todos os tipos de bancos de dados sem precisar fazer nada pelo terminal e claro, entre tantas outras coisas que você só vai saber quando se logar no Webmin.
Dica para alterar a linguagem
Repare que estou utilizando a linguagem Português-BR e para que você deixe o seu Webmin assim também vá no menu esquerdo onde está escrito Webmin > Change Language and Theme e altere para PORTUGUESE_BRAZILIAN (PT_BR). Vale a dica para não escolherem a opção com UTF-8 porque senão ficará com alguns “capetinhas” nos caracteres assim como o meu ficou.
Agora veja com com seus próprios olhos. Utilizando o Webmin você não vai precisar nem de atualizar mais os pacotes do seu Linux via terminal ou no próprio modo Desktop.
Mas claro sempre é bom lembrar que deixar algo assim exposto na web não é aconselhável para quem se preocupa com segurança, pois mesmo que você não passe sua senha de root para alguma pessoa, não é necessário nem que você tenha feito redirecionamento da porta SSH no seu modem para que alguém utilize o serviço de SSH, porque só o fato do cara se logar no Webmin ele estará logado como usuário local e não remoto. Portanto todo cuidado é muito pouco quando se tem o Webmin instalado.
Comandos (básicos) para gerenciar o Webmin (se você instalou o pacote com extensão dpkg):
Para iniciá-lo:
/etc/init.d/webmin start
Para pará-l0:
/etc/init.d/webmin stop
Para reiniciá-lo:
/etc/init.d/webmin restart
Configurando o PHP no Webmin
Alguns aplicativos você pode instalar no seu Linux via Webmin, assim como você fazer hoje com seu instalador de pacotes ou com a Play Store do Google. Você tem de saber que quando você instala o Webmin ele já detecta alguns dos apps que estão instalados no Linux e permite que você os gerencie a partir dele. Porém quando compilamos e instalamos manualmente estes pacotes ou apps é necessário que tenhamos de ir até o Webmin e dizer para ele onde estão estas configurações, como é o caso do PHP.
Para incluir o PHP em sua configuração clique na opção Módulos Não Utilizados em seu lado esquerdo, siga até PHP Configuration, clique em cima dela e irá aparecer a tela abaixo.
Apague as duas linhas marcadas com pontinhos vermelhos e na primeira linha altere o caminho:
/etc/php5/apache2/php.ini
Para:
/opt/php7/etc/php.ini
E ficará deste jeito abaixo. Depois é só clicar em Manage que você poderá gerenciar o seu PHP via browser.
72º – Instalando o Tomcat 6 – Voltar ao início
Baixamos anteriormente o Tomcat, que é utilizado para rodar aplicações Java feitas em JSP que a grosso modo será o PHP do Java ou ainda melhor, o Aspx do Java! Nossa! Que definição “maravilhosa”! Mas então, vamos precisar baixar a última versão do JDK e o JRE no site da Oracle (detalhe que quando eu comecei a escrever este tutorial o Java ainda era da Sun).
Baixe os dois em sua última versão. Você terá de clicar onde estão assinalados com os pontos vermelhos e escolher o que é compatível com sua plataforma Linux. No caso de nossa instalação utilizamos a versão 64 bit.
Eu baixei os pacotes jdk-8u66-linux-x64.tar.gz e jre-8u66-linux-x64.tar.gz e o arquivo do Tomcat que baixamos anteriormente apache-tomcat-6.0.45.tar.gz, mas você deve sempre baixar a versão mais atual.
Copie os dois pacotes para o diretório /usr/local
cp jre-8u66-linux-x64.tar.gz /usr/local cp jdk-8u66-linux-x64.tar.gz /usr/local cp apache-tomcat-6.0.45.tar.gz /usr/local
Vá até o diretório /usr/local e descompacte os dois lá dentro.
tar -zxvf jre-8u66-linux-x64.tar.gz tar -zxvf jdk-8u66-linux-x64.tar.gz tar -zxvf apache-tomcat-6.0.45.tar.gz
E agora remova os pacotes compactados
rm jre-8u66-linux-x64.tar.gz rm jdk-8u66-linux-x64.tar.gz rm apache-tomcat-6.0.45.tar.gz
Configurando o Apache Tomcat
Renomeie o diretório de instalação do Tomcat para apache-tomcat
mv /usr/local/apache-tomcat-6.0.55/ /usr/local/apache-tomcat/
Crie um diretório dentro do Apache-Tomcat chamado modules
mkdir /usr/local/apache-tomcat/modules
Vá na página do mod_jk e baixe a última versão (de 2010! Meu Deus, que vergonha!)
Copie o arquivo baixado para o diretório /usr/local/apache-tomcat/modules
cp mod_jk-1.2.31-httpd-2.0.x.so /usr/local/apache-tomcat/modules
Renomeie o arquivo para mod_jk.so
mv mod_jk-1.2.31-httpd-2.0.x.so mod_jk.so
Inserindo variáveis de Ambiente no Linux (Você pode consultar este post e este outro que fiz se desejar se aprofundar mais em variáveis de ambiente)
Abra o arquivo profile com o editor de texto Nano
nano /etc/profile
E lá no final do arquivo você vai inserir as informaçõs abaixo de acordo com os nomes dos diretórios que estão no seu servidor. Repare bem que as cinco primeiras linhas eu informei o caminho de acordo com o que está configurado aqui, por isso preste atenção que quando você estiver lendo este tutorial novas versões de bibliotecas já estarão sendo disponibilizadas para download e seus nomes deverão serem consequentemente alterados aqui neste arquivo você estará alterando.
export JRE_HOME=/usr/local/jre1.8.0_66 export JAVA_HOME=/usr/local/jdk1.8.0_66 export LD_LIBRARY_PATH=/usr/local/instantclient_19_3/ export ORACLE_HOME=/usr/local/instantclient_19_3/network/admin/ export TNS_ADMIN=/usr/local/instantclient_19_3/network/admin/ export CLASSPATH=$JAVA_HOME/lib:$CLASSPATH export PATH=$JAVA_HOME/bin:$PATH export MANPATH=$JAVA_HOME/man:$MANPATH export JAVA_OPTS=-Xms64m -Xmx512m;
Nas últimas quatro linhas acima estou definindo o classpath do meu Java, acrescentando a variável JAVA_HOME ao path de minha máquina, acrescentando a JAVA_HOME ao MANPATH e definindo quanto de memória o Java estará utilizando ao ser iniciado e até quanto de memória ele poderá utilizar.
Feita estas alterações, salve e feche o arquivo.
Alterando o usuário e senha de acesso do Tomcat
Para alterar o usuário e senha de acesso do Apache Tomcat acesse o arquivo tomcat-users.xml no caminho /usr/local/apache-tomcat/conf/tomcat-users.xml e altere suas informações conforme necessário.
73º – Configuração do freeTDS para acessar o SQL Server – Voltar ao início
É pessoal, devo ter explicado anteriormente que no PHP 7 foram retiradas algumas (várias) funções que os desenvolvedores podem ter considerado obsoletas ou desnecessárias e uma delas foi a biblioteca mssql. E era por esta biblioteca que conseguíamos acessar o SQL Server, mas pelo que andei lendo não sei quando esta biblioteca estará disponível e para retirar suas dúvidas sobre o que digo, acompanhem a discussão com o pessoal da Microsoft neste post.
E voltando ao FreeTDS, você ainda pode utilizá-lo com o Python ou com o PHP 5 já o que o PHP 7 te avacalha. Se você o instalou via apt-get como este tutorial lhe orientou, vá em /etc/freetds/freetds.conf e faça as seguintes alterações no arquivo, apague tudo o que tem lá dentro, salve e feche.
[global] host = xxx.xxx.xxx.xxx (host name or ip of the MSSQL server) port = 1433 client charset = UTF-8 tds version = 8.0 text size = 20971520
Repare que coloquei os xxx que não tem nada a haver com os xxx que nós conhecemos (e gostamos na maioria das vezes), é para você substituir para o seu ip do seu servidor que está instalado o SQL Server, a porta que o SQL Server está usando, a versão do Free TDS e o tamanho em bytes do texto. Perceba também que para várias conexões com SQL Server você repete este bloco de código alterando sempre onde está entre colchetes, e o ip e a porta se necessário.
74º – Scripts de Inicialização – Voltar ao início
Você pode se perguntar em algum momento se quando precisar reiniciar o seu servidor o Tomcat e o Nginx inicializarão automaticamente. Pois bem, quando você instala via apt-get ou a partir de um pacote dpkg estas configurações de inicialização são automáticas, mas quando você instala na mão isso não acontece ou não costuma a acontecer.
Vou deixar 2 scripts de inicialização disponíveis para download neste link (e se tiver alguma dúvida em relação ao scripts do Nginx você também pode consultar o site oficial). Um é o arquivo nginx_start.sh e o outro é o tomcat_start.sh. Portanto faça o download, decompacte o pacote e copie os dois para o diretório /etc/init.d.
cp tomcat_start.sh /etc/init.d/ cp nginx_start.sh /etc/init.d/
Em seguida vá até o diretório /etc/init.d e torne os scripts executáveis acrescentando sua permissão de execução.
chmod +x tomcat_start.sh chmod +x nginx_start.sh
E por fim, execute o comando insserv para torná-los “inicializáveis”.
insserv tomcat_start.sh insserv nginx_start.sh
Pronto. Agora você pode controlar tanto o Nginx, quanto o Apache Tomcat utilizando os comandos abaixo.
/etc/init.d/nginx_start.sh start Inicia o Nginx /etc/init.d/tomcat_start.sh start Inicia o Tomcat /etc/init.d/tomcat_start.sh stop Para o Tomcat /etc/init.d/tomcat_start.sh restart Reinicia o Tomcat
Você pode estar perguntando o porquê de eu não ter o comando para pelo parar o Nginx. Bem, não me interessava fazer isso porque já faço isso com o comando /usr/local/nginx/sbin/nginx -s stop e também porque eu não consegui enfiar isso neste script aí (na verdade eu tava desanimado pra fazer isso) e o fato de já iniciar sozinho já resolveu o meu problema e vai resolver o seu também.
RCConf – Voltar ao início
Bem no começo da parte onde informo que quais pacotes devem serem instalados, eu peço que para seja instalado um aplicativo chamado rcconf. Pois bem, ele lembra aquela área do Windows onde podemos desativar ou ativar seletivamente o que desejamos que seja inicializado junto no carregamento do sistema operacional. Pois bem, este cara aqui tem uma função similar. E quero que vocês observem que após termos devidamente inseridos os nossos scripts na inicialização do Debian (nginx_start.sh e tomcat_start.sh), vejam que eles já foram detectados por este aplicativo e portanto se em algum você quiser que estes scripts sejam desativados, basta você desmarcar qual deseja e em seguida clicar em ok. Para chamar o aplicativo RCConf basta abrir o terminal e digitar rcconf estando logado como root.
E este aqui é como você controlar o seu Apache Tomcat com os comandos citados anteriormente, caso deseje.
E para testar o seu Tomcat, digite no navegador http://ip_do_seu_servidor:8080.
Se você viu esta tela aí tá ok, senão aconselho refazer o processo.
Bem pessoal por aqui finalizo este tutorial que em breve terá sua versão com Apache no lugar do Nginx e portanto com algumas alterações. Se ainda assim existirem dúvidas fiquem a vontade para postar.
fonte: https://mastigado.wordpress.com
fonte: http://php.net/manual/pt_BR/install.fpm.php
fonte: http://stackoverflow.com/questions/37552307/mariadb-phpmyadmin-with-ngnix-on-ubuntu-14-04
fonte: https://gist.github.com/kamilZ/b11d1448e1479fe591f6
fonte: https://gist.github.com/blogmastigado/ee9e9e306e9ef4d22dd94ff76ce6cb8a
fonte: https://php-built.com/2016/01/20/installing-xdebug-for-php7/
fonte: http://www.dragonbe.com/2015/12/installing-php-7-with-xdebug-apache-and.html
fonte: https://howto.biapy.com/en/debian-gnu-linux/servers/php/install-the-php-extension-xdebug-on-debian
fonte: https://github.com/phpenv/phpenv/issues/37
–SQL Server
fonte: https://github.com/meet-bhagdev/phptekdemo/blob/master/test2.md
fonte: http://stackoverflow.com/questions/13887328/sqlgetprivateprofilestring-failed-with
fonte: https://github.com/meet-bhagdev/phptekdemo/blob/master/test2.md
fonte: https://github.com/Microsoft/msphpsql/tree/PHP-7.0-Linux
fonte: https://aur.archlinux.org/packages/php-sqlsrv/
fonte: http://pecl.php.net/package/sqlsrv
fonte: http://pecl.php.net/package/pdo_sqlsrv
fonte: https://github.com/Microsoft/msphpsql/wiki/Install-pdo_sqlsrv-for-PHP-7.0-on-Debian-in-3-ways
fonte: https://github.com/Microsoft/msphpsql/issues/58
fonte: https://github.com/Microsoft/msphpsql/
fonte: http://php.net/manual/pt_BR/ref.pdo-sqlsrv.php
— Xdebug
fonte: https://fairwaytech.com/2010/01/php-remote-debugging-with-xdebug-and-netbeans/
— Drivers SQL Server PHP 7 Linux (Releases)
Comentários