-
Notifications
You must be signed in to change notification settings - Fork 22
Configuração e instalação (ambiente de produção) Circus
- S.O. CentOS versão 7 (x64)
- Circus instalado e configurado no python da maquina, como indicado no Modelo de Implantação para Apps SciELO
No terminal como root, digitar:
yum install epel-release
para ativar EPEL (Extra Packages for Enterprise Linux).
yum install python-pip python-devel gcc gcc-c++ nginx git libxslt-devel libxml2-devel
- executar:
pip install virtualenv virtualenvwrapper
- criar um diretorio:
mkdir -p /var/www/.virtualenvs
- adicionar estas linhas no final do ~/.bashrc
export WORKON_HOME=/var/www/.virtualenvs
. /usr/bin/virtualenvwrapper.sh
- recarregar arquivo:
source ~/.bashrc
- criar e destruir um virtualenv:
mkvirtualenv test
&&deactivate
&&rmvirtualenv test
Ter acesso a uma instância de mongo, caso não tenha consulte documentação oficial para instalação
IMPORTANTE: a instalação do MongoDB pode ser em outro host, nesse caso tenha por perto as credenciais para configurar a conexão ao banco.
Obs: caso o servidor já tiver configurado circus para outras apps, as seguintes instruções não serão necessárias, de qualquer forma é bom verificar.
Executar:
mkdir -p /etc/circus/apps/
mkdir -p /etc/scieloapps/
Na descrição do Modelo de Implantação para Apps SciELO, indica que deve ser criada uma pasta /etc/init
, entretanto nunca é utilizada.
Obs: caso o servidor já tiver configurado circus para outras apps, as seguintes instruções não serão necessárias, de qualquer forma é bom verificar.
- Criar o arquivo de configuração do Circus:
vi /etc/circus/circusd.ini
- Conteúdo:
[circus]
include_dir = apps
logoutput = /var/log/circusd.log
loglevel = debug
statsd = True
httpd = True
httpd_host = 0.0.0.0
httpd_port = 11000
[env]
STDERR_CLASS = TimedRotatingFileStream
STDERR_TIME_FORMAT = %Y-%m-%d %H:%M:%S
STDERR_UTC = True
STDERR_ROTATE_WHEN = D
STDERR_ROTATE_INTERVAL = 1
SOCK_DIR = /var/run
LOG_DIR = /var/log
Obs: caso o servidor já tiver configurado circus para outras apps, as seguintes instruções não serão necessárias, de qualquer forma é bom verificar.
- Criar o arquivo:
vi /etc/systemd/system/circus.service
- Conteúdo:
[Unit]
Description=Circus process manager
After=syslog.target network.target nss-lookup.target
[Service]
Type=simple
ExecReload=/root/local/bin/circusctl reload
ExecStart=/root/local/bin/circusd /etc/circus/circusd.ini
Restart=always
RestartSec=5
Environment="PYTHONPATH=/usr/lib64/python27.zip:/usr/lib64/python2.7:/usr/lib64/python2.7/plat-linux2:/usr/lib64/python2.7/lib-tk:/usr/lib64/python2.7/lib-old:/usr/lib64/python2.7/lib-dynload:/root/local/lib/python2.7/site-packages:/usr/lib64/python2.7/site-packages:/usr/lib/python2.7/site-packages"
[Install]
WantedBy=default.target
Obs: caso o servidor já tiver configurado circus para outras apps, as seguintes instruções não serão necessárias, de qualquer forma é bom verificar.
systemctl --system daemon-reload
systemctl start circus
Se tudo ocorreu como deveria, à partir deste momento é possível acessar http://host_do_servidor:11000 para acessar a interface de administração remota de processos, caso não consiga visualizar/acessar, considere listar/limpar as regras de firewall.
Criar arquivo de configuração para o processo: vi /etc/circus/apps/opac.ini
Adicionar o conteúdo:
[watcher:opac]
name = opac
cmd = chaussette
args = --fd $(circus.sockets.opacwebapp) --backend gevent opac.manager.app
use_sockets = True
numprocesses = 3
virtualenv = /var/www/.virtualenvs/opac/
copy_env = True
uid = nginx
gid = nginx
stderr_stream.class = $(circus.env.STDERR_CLASS)
stderr_stream.filename = $(circus.env.LOG_DIR)/opac.log
stderr_stream.time_format = $(circus.env.STDERR_TIME_FORMAT)
stderr_stream.utc = $(circus.env.STDERR_UTC)
stderr_stream.rotate_when = $(circus.env.STDERR_ROTATE_WHEN)
stderr_stream.rotate_interval = $(circus.env.STDERR_ROTATE_INTERVAL)
[socket:opacwebapp]
path = $(circus.env.SOCK_DIR)/opac.sock
family = AF_UNIX
umask = 000
[env:opacwebapp]
OPAC_CONFIG = /etc/scieloapps/opac_config.py
- executar:
mkvirtualenv opac
Nos próximos pasos para ativar ou desativar o ambiente, utilize:
- para ativar o ambiente:
workon opac
- para desativar o ambiente:
deactivate
- ativar o virtualenv:
workon opac
- baixar o arquivo de requirements:
curl -fsSL https://raw.githubusercontent.com/scieloorg/opac/master/requirements.txt -o /tmp/opac_requirements.txt
- instalar os requirements:
pip install -r /tmp/opac_requirements.txt
- copiar arquivo de configuração a partir do template:
cp /var/www/.virtualenvs/opac/src/opac/opac/webapp/config/default.py /etc/scieloapps/opac_config.py
-
editar as configurações (ver abaixo)
-
Modificar as permissões para que o usuário nginx consiga acessar os estáticos e outro arquivos:
chown nginx:nginx -R /var/www/.virtualenvs/opac/src/opac/
Editar o arquivo /etc/scieloapps/opac_config.py
, configurar as seções:
- setar/verificar o modo debug em falso:
DEBUG=False
- Ajustar as credenciais de envio de email.
- Ajustar as credenciais da conexão com mongodb e nome do banco (Ex.: db name = homolog_prod_opac)
- Ajustar o caminho para criar o banco de dados SQLite (Ex.: /var/www/.virtualenvs/opac/src/opac/data)
- Gerar um novo valor para SECRET_KEY, seguindo este script: https://gist.github.com/jfunez/873c78890d55354739c8
- ativamos o ambiente:
workon opac
- executamos o chaussette:
chaussette opac.manager:app --port 8000 --host 0.0.0.0
- acessar ao IP/host do servidor na porta indicada acima:
http://SERVER_NAME_OR_IP:8000/
- criamos o arquivo de configuração:
vi /etc/nginx/conf.d/opac.conf
- criar/verificar as pastas para armazenamento dos logs, e a permissão para escrita do usuário nginx:
mkdir -p /var/log/opac
chown nginx:nginx /var/log/opac
- conteúdo do arquivo:
upstream opac {
server unix:/var/run/opac.sock fail_timeout=20;
}
server {
listen 8000;
server_name SERVER_NAME;
access_log /var/log/opac/access.log;
error_log /var/log/opac/error.log;
location ^~ /static/ {
root /var/www/.virtualenvs/opac/src/opac/opac/webapp;
}
location / {
proxy_set_header Host $http_host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_pass http://opac;
}
}
- para aplicar a nova configuração, executar:
nginx -s reload
Caso não consiga acessar ao site:
- verifique/reinicie que o circus esta gerenciando o processo para servir a app:
circusctl restart opac
- verifique as permissões no arquivo do socket:
/var/run/opac.sock
aonde o usuário:nginx
. - verifique que o usuário nginx seja o proprietário do diretorio da app:
chown -R nginx:nginx /var/www/.virtualenvs/opac/src/opac/