Ir para o conteúdo

Ubuntu + Nginx + PHP + PHP-fpm + Oracle

Primeiro vale lembrar que esse é mais um guia do que um tutorial!

Revisado e testado em 2017-12-06

Preparando servidor

Criando usuário

Revisado e testado em 2017-12-06

useradd -m -d /home/deploy -G adm,www-data,sudo -s /bin/bash deploy
passwd deploy

Para confirmar as pemissões, verifique o arquivo /etc/passwd

deploy:x:1001:1001::/home/deploy:/bin/bash

Verifique se o arquivo /home/deploy/.profile está com as seguintes informações

# ~/.profile: executed by the command interpreter for login shells.
# This file is not read by bash(1), if ~/.bash_profile or ~/.bash_login
# exists.
# see /usr/share/doc/bash/examples/startup-files for examples.
# the files are located in the bash-doc package.

# the default umask is set in /etc/profile; for setting the umask
# for ssh logins, install and configure the libpam-umask package.
#umask 022

# if running bash
if [ -n "$BASH_VERSION" ]; then
    # include .bashrc if it exists
    if [ -f "$HOME/.bashrc" ]; then
        . "$HOME/.bashrc"
    fi
fi

# set PATH so it includes user's private bin directories
PATH="$HOME/bin:$HOME/.local/bin:$PATH"

Rede

Troque o usuário

As configurações abaixo poderão ser feitas com usuário deploy pois o mesmo foi criado como adminitrador!!!

Adicionando dns e dominio de busca

sudo nano /etc/resolvconf/resolv.conf.d/tail

-- Add
nameserver 192.168.0.16
search gruposcheffer.com

Git

Primeiro vamo configurar o git. Para isso vamos criar a chave ssh e configurar o usuário e email global

Vamos Gerar a Chave

ssh-keygen -t rsa -C "email@dominio.com"

Generating public/private rsa key pair.
Enter file in which to save the key (/home/deploy/.ssh/id_rsa):[Enter]
Created directory '/home/deploy/.ssh'.
Enter passphrase (empty for no passphrase):[Senha]
Enter same passphrase again:[Repete a Senha]
Your identification has been saved in /home/deploy/.ssh/id_rsa.
Your public key has been saved in /home/deploy/.ssh/id_rsa.pub.
The key fingerprint is:
SHA256:***************************** ti@gruposcheffer.com.br

Aplique a chave no seu servidor de versões (gitlab, ou github)

Configurando usuário global

git config --global user.name "Seu Nome"
git config --global user.email "email@dominio.com"

Oracle

Obs

Essa foi a forma mais rapida de instalar e configurar o oracle no ubuntu!!!

Referência https://help.ubuntu.com/community/Oracle%20Instant%20Client

Baixe os rpm's do site http://www.oracle.com/technetwork/topics/linuxx86-64soft-092277.html e de permissão de execução nos mesmos.

PS: basic, sqlplus, devel

Para efetuar a instalação, vamos usar o alien

sudo apt-get install alien libaio1 libaio1:i386

sudo alien -i oracle-instantclient12.2-basic-12.2.0.1.0-1.x86_64.rpm
sudo alien -i oracle-instantclient12.2-devel-12.2.0.1.0-1.x86_64.rpm
sudo alien -i oracle-instantclient12.2-sqlplus-12.2.0.1.0-1.x86_64.rpm

 echo 'export LD_LIBRARY_PATH=/usr/lib/oracle/12.2/client64/lib/${LD_LIBRARY_PATH:+:$LD_LIBRARY_PATH}' >> ~/.profile

 sudo vi /etc/ld.so.conf.d/oracle.conf && sudo chmod o+r /etc/ld.so.conf.d/oracle.conf

# Add This on /etc/ld.so.conf.d/oracle.conf
 /usr/lib/oracle/12.2/client64/lib/
sudo ldconfig

echo 'export ORACLE_HOME=/usr/lib/oracle/12.2/client64' >> ~/.profile
echo 'export TNS_ADMIN=$ORACLE_HOME/network/admin' >> ~/.profile
echo 'export PATH=$PATH:$ORACLE_HOME/bin' >> ~/.profile

source ~/.profile

mkdir -p $TNS_ADMIN
sudo touch $TNS_ADMIN/tnsnames.ora
sudo chmod o+r $TNS_ADMIN/tnsnames.ora

LDConfig

sudo vi /etc/ld.so.conf.d/oracle.conf
Adicione o camino /usr/lib/oracle/12.2/client64/lib e salve o arquivo. Após isso, recarregue as configurações com sudo ldconfig

Adicione os tns no arquivo tnsnames.ora e feito!

Backend

Dependencias

sudo add-apt-repository ppa:ondrej/php
sudo apt-get install software-properties-common
sudo apt-get update

PHP 5.6

Instalando o PHP

sudo apt-get install php5.6 php5.6-dev php5.6-dev php5.6-fpm php5.6-xml

Vamos deixar o serviço do fpm para inicializar junto com o SO

sudo chkconfig php-fpm on

Agora vamos instalar o oci8

Recomentação da pecl

Use the OCI8 extension to access Oracle Database. Use 'pecl install oci8' to install for PHP 7. Use 'pecl install oci8-2.0.12' to install for PHP 5.2 - PHP 5.6. Use pecl install oci8-1.4.10' to install for PHP 4.3.9 - PHP 5.1. The OCI8 extension can be linked with Oracle client libraries from Oracle Database 12, 11, or 10.2. These libraries are found in your database installation, or in the free Oracle Instant Client from http://www.oracle.com/technetwork/database/features/instant-client/.
Oracle's standard cross-version connectivity applies. For example, PHP OCI8 linked with Instant Client 11.2 can connect to Oracle Database 9.2 onward. See Oracle's note "Oracle Client / Server Interoperability Support" (ID 207303.1) for details.

sudo pecl download oci8-1.4.10
tar zxvf oci8-1.4.10.tgz
cd oci8-1.4.10
phpize
./configure --with-oci8=instantclient,$ORACLE_HOME/lib
sudo make install

Caso tudo correto, vamos habilitar a lib no php-cli e php-fpm

Primeiro, vamos criar a configuração da lib

cd /etc/php/5.6/mods-available
sudo vi oci.ini

Dentro do arquivo, informe o conteudo:

extension=oci8.so

Salve o arquivo e vamos ativar as extensões

PHP-Cli
cd /etc/php/5.6/cli/conf.d/
sudo ln -s /etc/php/5.6/mods-available/oci.ini 20-oci.ini

Teste com o comando para verificar se a extensão esta ativa

php -i | grep oci8
PHP-Fpm
cd /etc/php/5.6/fpm/conf.d/
sudo ln -s /etc/php/5.6/mods-available/oci.ini 20-oci.ini

nginx

Vamos instalar o servidor nginx:

sudo apt-get install nginx

Após instalado, acesse o diretorio cd /etc/nginx/sites-avaliable

Vamos criar a configuração touch php.conf

PHP

Importante ter o dns configurado para utilização de nomes (exemplo: php.seudominio.com)

# php.conf

server {
    listen 80;
    server_name php.seudominio.com;

    root /home/deploy/projects/php;

    index index.php index.html;

    location ~ \.php$ {
        fastcgi_pass unix:/var/run/php/php5.6-fpm.sock;
        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
        include fastcgi_params;                
    }
}
CODEIGNITER

Importante ter o dns configurado para utilização de nomes (exemplo: php.seudominio.com)

# php.conf

server {
    listen 80;
    server_name php.seudominio.com;

    root /home/deploy/projects/php;

    index index.php index.html;

    location / {
        try_files $uri $uri/ /index.php;

        location = /index.php {

            fastcgi_pass unix:/var/run/php/php5.6-fpm.sock;
            fastcgi_param SCRIPT_FILENAME /home/deploy/projects/php$fastcgi_script_name;
            include fastcgi_params;
        }
    }

}

Feito isso vamos ativar o site e reiniciar o nginx

sudo ln -s /etc/nginx/sites-avaliable/php.conf /etc/nginx/sites-enable/
sudo /etc/init.d/nginx restart

Para testar, abra o navegador e acesse o endereço php.seudominio.com