transparencia-mg / ckan-source-code-installation

0 stars 0 forks source link

Passos para instalação CKAN via Código Fonte

Passos seguidos conforme documentação do CKAN.

sudo apt-get update
sudo apt-get install python3-dev postgresql libpq-dev python3-pip python3-venv git-core openjdk-8-jdk redis-server graphviz
mkdir -p ~/ckan/lib
sudo ln -s ~/ckan/lib /usr/lib/ckan
mkdir -p ~/ckan/etc
sudo ln -s ~/ckan/etc /etc/ckan

# Create a Virtual Env
sudo mkdir -p /usr/lib/ckan/default
sudo chown `whoami` /usr/lib/ckan/default

# Check python version
python3 --version
# Install the required dependencies for pyenv
sudo apt-get update
sudo apt-get install -y make build-essential libssl-dev zlib1g-dev libbz2-dev libreadline-dev libsqlite3-dev wget curl llvm libncurses5-dev xz-utils tk-dev libxml2-dev libxmlsec1-dev libffi-dev liblzma-dev

# Install pyenv using the official installation script
curl https://pyenv.run | bash

# Configure your shell to use pyenv
export PATH="$HOME/.pyenv/bin:$PATH"
eval "$(pyenv init -)"

# Restart your shell to apply the changes
source ~/.bashrc

# Use pyenv to install a version of Python and set it as global
pyenv install 3.6
pyenv global 3.6

# Check python3 version
python3 --version

Use pyenv to manage your Python versions. You can use the pyenv versions command to list all of the Python versions installed on your system, and the pyenv which command to see which version is currently being used. You can also use the pyenv local command to set the Python version for a specific project, and the pyenv shell command to temporarily switch to a different Python version for the current shell session.

pip install --proxy http://<ip_usuariocamg>:<porta>

(igual ao proxy do git config)

python3 -m venv /usr/lib/ckan/default
. /usr/lib/ckan/default/bin/activate
pip install setuptools==44.1.0
pip install --upgrade pip

You can tell when the virtualenv is active because its name appears in front of your shell prompt

(default) @gabrielbdornas ➜ ~ $ pip list
Package    Version
---------- -------
pip        21.3.1
setuptools 44.1.0

Instalação CKAN versão 2.10-dev:

Postgres:

sudo service postgresql start
sudo su postgres
createuser -S -D -R -P ckan_default
# irá solicitar senha, utilizamos: ckan_default
createdb -O ckan_default ckan_default -E utf-8

- Para sair do usuario postgres:
exit
sudo mkdir -p /etc/ckan/default
sudo chown -R `whoami` /etc/ckan/
ckan generate config /etc/ckan/default/ckan.ini

Setup Solr

Baixar a versão binária: https://solr.apache.org/downloads.html

wget https://www.apache.org/dyn/closer.lua/solr/solr/9.1.0/solr-9.1.0.tgz?action=download
tar -xvzf 'solr-9.1.0.tgz?action=download'
./solr-9.1.0/bin/solr start
./solr-9.1.0/bin/solr create -c ckan

caso apareça a msg de erro abaixo no start do solr

# Your current version of Java is too old to run this version of Solr.
# We found major version 8, using command 'java -version', with response:
# openjdk version "1.8.0_352"
# OpenJDK Runtime Environment (build 1.8.0_352-8u352-ga-1~18.04-b08)
# OpenJDK 64-Bit Server VM (build 25.352-b08, mixed mode)

Please install latest version of Java 11 or set JAVA_HOME properly`:

*comandos para atualizar o JAVA

$ sudo apt update
$ sudo apt install default-jdk
$ sudo apt update
$ sudo apt install default-jre
$ sudo add-apt-repository ppa:webupd8team/java
$ sudo apt update
$ sudo apt install oracle-java11-installer
# https://phoenixnap.com/kb/how-to-install-java-ubuntu
# usar o comando abaixo se o último acima não funcionar (`$ Package oracle-java11-installer is not available, but is referred to by another package.
This may mean that the package is missing, has been obsoleted, or is only available from another source`)
$ sudo apt-get install openjdk-11-jdk
# https://stackoverflow.com/questions/52504825/how-to-install-jdk-11-under-ubuntu
cp /usr/lib/ckan/default/src/ckan/ckan/config/solr/schema.xml solr-9.1.0/server/solr/ckan/conf/managed-schema.xml
./solr-9.1.0/bin/solr restart

Inicializar Redis

sudo service redis-server start
cd /usr/lib/ckan/default/src/ckan
vi /etc/ckan/default/ckan.ini

Alterar a linha com o sqlalchemy.url para ficar como abaixo:

sqlalchemy.url = postgresql://ckan_default:ckan_default@localhost/ckan_default
ckan -c /etc/ckan/default/ckan.ini db init
$ NO_PROXY="*" ckan -c /etc/ckan/default/ckan.ini db init
mkdir /etc/ckan/default/storage
vi /etc/ckan/default/ckan.ini

Alterar a senha ckan.storage_path para ficar assim:

ckan.storage_path = /etc/ckan/default/storage
$ NO_PROXY="*" ckan -c /etc/ckan/default/ckan.ini db init
$ ckan -c /etc/ckan/default/ckan.ini sysadmin add admin

Instalar o plugin datapackage-creator

pip install --proxy http://<ip_usuariocamg>:<porta> ckanext-datapackage-creator
vi /etc/ckan/default/ckan.ini

Alterar a configuração ckan.plugins adicionando no fim o seguinte:

ckan.plugins = ... datapackage_creator
datapackage_creator = /etc/ckan/default/datapackage_creator.json

The plugin allows you to configure which fields of the resource and package are mandatory and/or 'readonly', for this you just need to add a configuration in your INI file.

datapackage_creator = /path/to/datapackage_creator.json We suggest that the file path would be /etc/ckan/default/datapackage_creator.json or in the same folder as ckan.ini file.

Configuration example file:

{ "package": { "required": [], "readonly": [] }, "resource": { "required": [], "readonly": [] } }

$ NO_PROXY="*" ckan -c /etc/ckan/default/ckan.ini db init
$ ckan -c /etc/ckan/default/ckan.ini datapackage-creator-init-db

Para testar basta rodar:

ckan -c /etc/ckan/default/ckan.ini run

Instale o supervisor

sudo apt install supervisor

`

sudo vi /etc/supervisor/conf.d/ckan.conf

Colocar o seguinte conteúdo neste arquivo:

[program:ckan]
command= usr/lib/ckan/default/bin/ckan -c /etc/ckan/default/ckan.ini run
environment=NO_PROXY="*"
directory=/usr/lib/ckan/default/src/ckan
user=<user>
stdout_logfile=/usr/lib/ckan/default/gunicorn_supervisor_ckan.log
redirect_stderr=true

se utilizando o Vagrant:

[program:ckan]
command=/usr/lib/ckan/default/bin/ckan -c /etc/ckan/default/ckan.ini run
environment=NO_PROXY="*"
directory=/usr/lib/ckan/default/src/ckan
user=vagrant
stdout_logfile=/usr/lib/ckan/default/gunicorn_supervisor_ckan.log
redirect_stderr=true

Em seguida se faz necessário inicializar o supervisor e carregar o processo do ckan

sudo service supervisor start
sudo supervisorctl reread
sudo supervisorctl reload
sudo apt install nginx
sudo rm /etc/nginx/sites-enabled/default
sudo vi /etc/nginx/sites-enabled/ckan.conf

Neste arquivo do nginx coloque:

server {
    listen 80;
    server_name projetockan.cge.mg.gov.br;
    client_max_body_size 200m;
    access_log /usr/lib/ckan/default/src/ckan/nginx-access-ckan.log;
    error_log /usr/lib/ckan/default/src/ckan/nginx-error-ckan.log;
    location / {
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header Host $http_host;
        proxy_redirect off;
        if (!-f $request_filename) {
            proxy_pass http://127.0.0.1:5000;
            break;
        }
    }
}
$ sudo supervisorctl status

depois

$ sudo supervisorctl reload
$ sudo supervisorctl status
$ sudo supervisorctl restart ckan
sudo service nginx restart

Reiniciar a máquina

# Ativar ambiente
. /usr/lib/ckan/default/bin/activate

# Atualizar pacote ckanext-datapackage-creator (caso necessário)
# Atualiza para versão mais atual disponível no Pypi 
pip install --proxy http://<ip_usuariocamg>:<porta> -U ckanext-datapackage-creator

# Iniciar postgres
sudo service postgresql start

# Iniciar Solr
./solr-9.1.0/bin/solr start

# Iniciar Redis
sudo service redis-server start

# Iniciar Supervisor
sudo service supervisor start

# Reiniciar CKAN (Caso alguma biblioteca seja atualizada/modificada no ambiente)
sudo supervisorctl restart ckan

# Iniciar nginx
sudo service nginx start

when the CSRF Token is missing

CSRF Protection

WTF_CSRF_ENABLED = false