• Tutorial
  • Tutorial instalação Novo SGA v2.0

Fiz esse tutorial para que outras pessoas que não tem muita experiência no LINUX (iguais a mim) possam instalar o Novo SGA v2.0. Fiz a instalação tanto no Debian quanto no Ubuntu e deram certo. Mesmo que não seja necessário ter conhecimentos mais avançados, eu acho importante estudar o que faz cada comando para ter soluções para outros problemas que possam ocorrer. Como citei anteriormente, esse foi o passo a passo que eu fiz sem ter conhecimento avançado em Linux então se eu postar alguma coisa errada ou se existir outro jeito mais prático de fazer, peço para que postem para ajudar o máximo de pessoas possíveis.

Espero que ajude!

Obs: No Debian, como eu estava como root no terminal, não foi necessário utilizar o comando sudo. E onde tiver o símbolo # é para ser digitado no terminal como root. Em algumas distros antigas é necessário digitar o comando apt-get mas nas novas basta o comando apt.

1 - Instalar Apache2

# apt install apache2

Permitir reescrita no Apache2

# a2enmod rewrite env

Permitir acesso do Diretório Apache2 (não está na documentação oficial mas só consegui instalar depois de permitir acesso).

# chmod -R 777 /etc/apache2/

2 - Instalar PHP 7.1 ou 7.2 (eu optei pelo 7.2 então onde estiver 7.1 substituir pelo 7.2)

Pelo que pesquisei, o PHP 7.x não é oficialmente suportado pelo Ubuntu então deve-se adicionar o repositório antes:

# apt install software-properties-common python-software-properties
# apt-add-repository ppa:ondrej/php
# apt update
# apt install php7.1 php7.1-mysql php7.1-curl php7.1-zip php7.1-intl php7.1-xml php7.1-mbstring php-gettext

Permitir acesso ao diretório PHP:

# chmod -R 777 /etc/php/

3 - Instalar Composer

# curl -fSL https://getcomposer.org/composer.phar -o composer.phar

Torná-lo executável (tive problemas pois sem esse comando o symphony não era listado como dependência do Composer)

# chmod +X composer.phar

Mover Composer para diretório raiz (opcional, eu não fiz)

# mv composer.phar /usr/local/bin/composer

Atualizar Composer

# composer self-update

4 - Instalar MySQL 5.7

Bati muita cabeça nesse ponto mas depois percebi que estava com a versão 5.6 que não funciona.

# apt-get update
# apt-get install mysql-server
# mysql_secure_installation

Como entendo pouco, eu estava instalando o mysql client mas tem que ser o mysql server (mysql-server). Nos 2 PC's que instalei tenho os 2 e não sei se ambos são necessários. Mas só com o client não deu certo.

Aconselho a dar uma estudada em outros sites para aprender a configurar o Mysql para não dar problemas depois.

Acessar o mysql

# mysql -u root -p

Não se esquecer que todo comando no mysql tem que terminar em ";". E eu utilizava os comandos exatamente como diziam, incluindo as maiúsculas e minúsculas.

Como teste eu criei uma database com o nome novosgadb , usuário novosga e senha 123456.

Criar database:

>CREATE DATABASE novosgadb;

Criar usuário:

>CREATE USER 'novosga'@'localhost' IDENTIFIED BY '123456';

Garantir privilégio do usuário ao banco de dados:

>GRANT ALL PRIVILEGES ON novosgadb.* TO 'novosga'@'localhost' IDENTIFIED BY '123456';

Não se esquecer de dar o comando

>FLUSH PRIVILEGES;
>exit;

5 - Baixar e criar o projeto Novo SGA

# php composer.phar create-project "novosga/novosga:v2.0.0-RC3" ~/novosga

Mover diretório NOVOSGA para /var/www/html/ (eu optei por instalar no diretório "html" entretanto na documentação oficial diz que pode ser instalado no diretório "www". Isso é importante pois vai alterar algumas configurações futuras).

# mv ~/novosga /var/www/html

Preparar o cache da aplicação para o ambiente de produção

# bin/console cache:clear --no-debug --no-warmup --env=prod
# bin/console cache:warmup --env=prod

Esse comando deve ser digitado no terminal mas já dentro da pasta do novosga. Se optar por digitar "fora" da pasta, deve ser o comando abaixo (lembrando que optei por instalar o Novo SGA na pasta /var/www/html):

# /var/www/html/novosga/bin/console cache:clear --no-debug --no-warmup --env=prod
# /var/www/html/novosga/bin/console cache:warmup --env=prod

Aqui deu o erro de pt_BR locale, é só dar o comando abaixo no terminal

# export LANGUAGE=pt_BR

Permitir acesso ao diretório NOVOSGA

# chown www-data:www-data -R /var/www/novosga
# chmod +w -R /var/www/novosga/var/

No meu caso (na pasta html):

# chown www-data:www-data -R /var/www/html/novosga
#chmod +w -R /var/www/html/novosga/var/

Alterar diretório e habilitar o .htaccess

# sed -i 's|/var/www/html|/var/www/novosga/public|g' /etc/apache2/sites-available/000-default.conf
# sed -i 's|AllowOverride None|AllowOverride All|g' /etc/apache2/apache2.conf

No meu caso (pasta html):

# sed -i 's|/var/www/html|/var/www/html/novosga/public|g' /etc/apache2/sites-available/000-default.conf
# sed -i 's|AllowOverride None|AllowOverride All|g' /etc/apache2/apache2.conf

Configurar o Timezone (lembrem-se que se mudar a versão do php alterar para 7.2)

# echo 'date.timezone = America/Sao_Paulo' > /etc/php/7.1/apache2/conf.d/datetimezone.ini

Criar e editar o arquivo .htaccess dentro da pasta public.Lembrem-se de editar o arquivo para colocar os dados do banco de dados que criou no mysql.No meu caso, eu criei um banco de dados teste com o nome novosgadb, usuário novosga e senha 123456. Então o SetEnv DATABASE_URL ficou assim: mysql://novosga:123456@localhost:3306/novosgadb.

Obs: O comando abaixo tem que ser inserido no terminal.Estava cometendo o erro de copiar e colar todo o texto abaixo no arquivo .htaccess.

# echo 'Options -MultiViews
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*)$ index.php [QSA,L]
SetEnv APP_ENV prod
SetEnv LANGUAGE pt_BR
SetEnv DATABASE_URL mysql://novosga:MySQL_App_P4ssW0rd@mysqldb:3306/novosga2?charset=utf8mb4&serverVersion=5.7
' > /var/www/novosga/public/.htaccess

No meu caso (pasta html e com meu banco de dados teste)

# echo 'Options -MultiViews
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*)$ index.php [QSA,L]
SetEnv APP_ENV prod
SetEnv LANGUAGE pt_BR
SetEnv DATABASE_URL mysql://novosga:123456@localhost:3306/novosgadb
' > /var/www/html/novosga/public/.htaccess

Reiniciar serviço do Apache2:

# service apache2 restart

Comando install do Novo SGA (como disse acima não se esqueça de editar o DATABASE_URL para ficar igual ao do .htaccess).

# APP_ENV=prod \
    LANGUAGE=pt_BR \
    DATABASE_URL="mysql://novosga:MySQL_App_P4ssW0rd@mysqldb:3306/novosga2?charset=utf8mb4&serverVersion=5.7" \
    bin/console novosga:install

No meu caso (meu banco de dados teste)

# APP_ENV=prod \
    LANGUAGE=pt_BR \
    DATABASE_URL="mysql://novosga:123456@localhost:3306/novosgadb"
    bin/console novosga:install

Acho o ideal digitar no terminal, "fora" da pasta do novosga:

# APP_ENV=prod \
    LANGUAGE=pt_BR \
    DATABASE_URL="mysql://novosga:123456@localhost:3306/novosgadb"
    /var/www/html/novosga/bin/console novosga:install

Diferentemente do SGA 1.5, temos que criar a conta do Administrador nesse passo então é importante anotar o username e password para o primeiro acesso.

Depois de instalado, é só ir no navegador e digitar:

ou

http://"ipdoservidor"/novosga/public

Se tudo deu certo, vai aparecer a tela de login.Para configurar, entrar com o login e senha do Administrador.

    rogeriolino alterou o título para Tutorial instalação Novo SGA v2.0 .
    8 dias depois

    Vou deixar algumas dica para quem tiver dificuldades na instalação

    Quem tiver problemas para abrir a pagina inicial verifique o PHP
    No meu caso quando instalei o apache2 ele instalou o php 5.6 por default
    Para trocar o PHP no apache execute os seguinte comandos

    Para desativar o PHP 5.6

    a2dismod php5.6

    Ativar o PHP 7.2

    a2enmod php7.2
    service apache2 restart

    Outra coisa que me bati um pouco foi esse comando

    sed -i 's|/var/www/html|/var/www/html/novosga/public|g' /etc/apache2/sites-available/000-default.conf

    Desta forma esta dizendo para o apache que o Raiz é o /var/www/html/novosga/public/ e não o /var/www/html/

    Se executar o comando acima na hora de acessar via browser e só digitar o IP

    http://IPDOSERVIDOR/

    ao invés

    http://IPDOSERVIDOR/novosga/public

    E para quem quer utilizar o POSTGRES ao invés do MYSQL segue as configuração
    apt-get install postgresql

    Esse pacote deve ser instalado no lugar php7.2-mysql na hora da instalação dos pacotes PHP*
    apt-get install php7.1-pgsql

    Criando e configurando o POSTGRES

    # su -l postgres
    $ psql

    Criando Banco

    Postgres=# CREATE DATABASE novosgadb;

    Criando User novosga

    Postgres=#  CREATE USER novosga;

    Atribuindo um senha ao User novosga

    Postgres=# ALTER USER novosga WITH ENCRYPTED PASSWORD ‘123456’;

    Dando Privilegios ao BANCO novosgadb ao USER novosga

    Postgres=# GRANT ALL PRIVILEGES ON DATABASE novosgadb TO novosga;

    O Comando para criar o arquivo .htaccess fica assim

    echo 'Options -MultiViews
    RewriteEngine On
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteRule ^(.*)$ index.php [QSA,L]
    SetEnv APP_ENV prod
    SetEnv LANGUAGE pt_BR
    SetEnv DATABASE_URL postgres://novosga:123456@localhost:5432/novosgadb
    ' > /var/www/html/novosga/public/.htaccess

    E comando para instalação assim

    APP_ENV=prod \
        LANGUAGE=pt_BR \
        DATABASE_URL="postgres://novosga:123456@localhost:5432/novosgadb" \
        /var/www/html/novosga/bin/console novosga:install

      Tive esse problema ao tentar instalar o novo SGA, pois o mysql 5.7 não aceita root sem senha:

      In AbstractMySQLDriver.php line 108:
      
        An exception occurred in driver: SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: NO)
      
      In PDOConnection.php line 47:
      
        SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: NO)
      
      In PDOConnection.php line 43:
      
        SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: NO)
      
      novosga:install [-h|--help] [-q|--quiet] [-v|vv|vvv|--verbose] [-V|--version] [--ansi] [--no-ansi] [-n|--no-interaction] [-e|--env ENV] [--no-debug] [--] <command>

      O que preciso modificar para corrigir o problema?

      Obrigado pela dica, mas consegui uma outra solução.
      Descobri que excluindo o plugin "validate_password" do mysql, consigo retirar a senha do root e o instalador do novosga funciona corretamente. Segue abaixo as linhas de comando para quem tiver o mesmo problema:

      # mysql -u root -p "senha_que_foi_criada"
      > uninstall plugin validate_password;
      > ALTER USER 'root'@'localhost' IDENTIFIED BY '';
      > quit

      Lembrando que a versão 5.7 do mysql cria uma senha aleatória no final da instalação e você descobre qual é através do comando abaixo:

      # grep 'temporary password' /var/log/mysqld.log
      2018-04-13T20:08:23.432149Z 1 [Note] A temporary password is generated for root@localhost: senha_aleatoria

      Depois disso é só dar o comando abaixo para definir a nova senha e alguns parâmetros de segurança

      [root@sprsga02 ~]# mysql_secure_installation

        Agora estou com esse problema...

        <?php
        
        use App\Kernel;
        use Symfony\Component\Debug\Debug;
        use Symfony\Component\Dotenv\Dotenv;
        use Symfony\Component\HttpFoundation\Request;
        
        require __DIR__.'/../vendor/autoload.php';
        
        // The check is to ensure we don't use .env in production
        if (!isset($_SERVER['APP_ENV'])) {
            if (!class_exists(Dotenv::class)) {
                throw new \RuntimeException('APP_ENV environment variable is not defined. You need to define environment variables for configuration or add "symfony/dotenv" as a Composer dependency to load variables from a .env file.');
            }
            (new Dotenv())->load(__DIR__.'/../.env');
        }
        
        $env = $_SERVER['APP_ENV'] ?? 'dev';
        $debug = $_SERVER['APP_DEBUG'] ?? ('prod' !== $env);
        
        if ($debug) {
            umask(0000);
        
            Debug::enable();
        }
        
        if ($trustedProxies = $_SERVER['TRUSTED_PROXIES'] ?? false) {
            Request::setTrustedProxies(explode(',', $trustedProxies), Request::HEADER_X_FORWARDED_ALL ^ Request::HEADER_X_FORWARDED_HOST);
        }
        
        if ($trustedHosts = $_SERVER['TRUSTED_HOSTS'] ?? false) {
            Request::setTrustedHosts(explode(',', $trustedHosts));
        }
        
        $kernel = new Kernel($env, $debug);
        $request = Request::createFromGlobals();
        $response = $kernel->handle($request);
        $response->send();
        $kernel->terminate($request, $response);

        Ao tentar acessar via navegador, aparece somente isso...

        @Nutel parece que esta faltando o php.
        Ele abre a pagina sem tratar o codigo como php.

        Em outro tópico um administrador verifcou que mesmo instalando o php 7.1 ele só estava reconhecendo o php 5.6 (que não é suportado pelo SGA).Eu verificaria a versão do PHP (acho que o comando é php -v no terminal) e se tiver a 7.1 ou 7.2 tentaria desinstalar as versões anteriores (sudo apt-get -y purge php.5.6) via terminal.

        5 dias depois
        um mês depois

        El tutorial esta muy bien!! Muchas gracias.

        Características da instalação:

        • S.O : Ubuntu 18
        • PHP 7.2
        • Apache2
        • Mysql 5.7

        Feita a instalação sem apresentar nenhum problema verificando o arquivo dev.log. Ao fazer a chamada pelo browser Mozilla (http://localhost/novosga/public/login), entrando com o usuário admin (default da instalação) e senha Teste.123 (seguindo a regra de formação do mysql).
        O sistema apresenta a seguinte mensagem:

        "A autenticação não pode ser concluída devido a um problema no sistema"

        E não permite a entrada inviabilizando o seu uso.

        Não sou conhecedor de PHP e Apache2, e sendo esta mensagem do próprio SGA. Não sei o que fazer para conseguir usar a nova versão 2.0-RC3.

        Creio que muitos podem está tendo a mesma dificuldade.

        Alguém poderia me ajudar. Ficarei muito grato.

          MarujoMagalhaes Ese mensaje suele presentarse por varios motivos.
          - El Servicio MySQL no esta activo. Prueba a entrar por http.//localhost/phpmyadmin usando los mismos datos de usuario y contraseña.
          - La base de datos no se ha creado correctamente: Entra a phpmyadmin y verifica que la base de datos se ha creado correctamente y tiene las tablas y los campos.
          La base de datos MySQL no esta en localhost sino en otra IP.

            juanzapatac Muchas gracias.

            Al entrar en phpmyqdmin con el root o con el usuario nuevo(novosga), las tablas están creadas, pero en especial la tabla de usuario está presentando el siguiente error.

            mysqli_real_connect(): (HY000/1045): Access denied for user 'phpmyadmin'@'localhost' (using password: YES)
            A ligação como utilizador de controlo definida na sua configuração falhou.
            Warning in ./libraries/sql.lib.php#613
            count(): Parameter must be an array or an object that implements Countable
            
            Backtrace
            
            ./libraries/sql.lib.php#2128: PMA_isRememberSortingOrder(array)
            ./libraries/sql.lib.php#2079: PMA_executeQueryAndGetQueryResponse(
            array,
            boolean true,
            string 'novosga',
            string 'usuarios',
            NULL,
            NULL,
            NULL,
            NULL,
            NULL,
            NULL,
            string '',
            string './themes/pmahomme/img/',
            NULL,
            NULL,
            NULL,
            string 'SELECT * FROM `usuarios`',
            NULL,
            NULL,
            )
            ./sql.php#221: PMA_executeQueryAndSendQueryResponse(
            array,
            boolean true,
            string 'novosga',
            string 'usuarios',
            NULL,
            NULL,
            NULL,
            NULL,
            NULL,
            NULL,
            string '',
            string './themes/pmahomme/img/',
            NULL,
            NULL,
            NULL,
            string 'SELECT * FROM `usuarios`',
            NULL,
            NULL, 

            Muchas gracias de nuevo por la ayuda

            Olá,

            A mensagem anterior relata um bug do Phpmyadmin que já foi consertado.

            Através do PHPMYadmin pude constatar que foram criadas 29 tabelas e abaixo listo o conteudo da tabela de usuários criada na instalação.

            SELECT * FROM `usuarios`
            1    admin    marcelo    magalhaes        $2y$12$/L2gqTJkMUH7i9PPFFF4eubQanZs8gc5qi7HPzB4J9A...    1                bcrypt    1        2018-05-30 14:41:23

            Não sei mais o que fazer para conseguir o login na aplicação com o usuário admin.

            Por favor poderia me ajudar.
            Obrigado.

            20 dias depois

            Como o amigo rarandrade comentou acima. E muito importante desabilitar com o comando a2dismod phpX.X qualquer versao antiga do PHP e deixar habilitado somente um. Tive varios problemas devido a isso, hoje na data que estou instalando o sistema requer o php7.2 (25/06/2018) a versao 7.1 nao funcionou.

              25 dias depois

              Boa Tarde a todos!

              Utilizando: Debian 9, php 7.2 e mysql.

              Fiz a instalação normalmente, consigo logar pela web, porém, quando tento adicionar um usuário, o campo "Lotação" não mostra nada quando clico para adicionar uma lotação, impossibilitando a criação do usuário.

              Esse campo lotação ta sendo relacionado com o que?
              Preenchi todos os campos em Administração: Unidades, Departamentos, Serviços, Perfis, Prioridades, Locais, Módulos.

              Alguém tem alguma ideia?
              Obrigado.