Skip to content

gusgewehr/casa_de_cultura

Repository files navigation

Case de Cultura

Trabalho do curso de Ciência da Computação na Matéria Projeto e Desenvolvimento de Sistemas

Atualização

Para atualizar a aplicação basta seguir estes passos

Desloca-se para a pasta raiz do projeto, ativa o ambiente virtual e

cd /opt/casa_de_cultura

source venv/bin/activate

Puxa o projeto do git e instala qualquer biblioteca nova que fora adicionada aos requisitos

git pull

pip install -r requirements.txt

Cria as tabelas do banco, movimenta os arquivos estáticos para a pasta padrão e reinicia a aplicação

python manage.py makemigrations

python manage.py migrate

python manage.py collectstatic

systemctl restart casa_de_cultura

Locais padrões

Arquivos Caminhos
Program files /opt/casa_de_cultura
Virtualenv /opt/casa_de_cultura/venv
Nginx /etc/nginx/sites-available
Media files /var/opt/casa_de_cultura/media
Static files /var/cache/casa_de_cultura/static
Logs /var/log/casa_de_cultura
Nginx Logs /var/log/nginx/

Instalação

Criar o usuário

Cria o usuario e o grupo dele, sem criar a pasta home dele

adduser --system --home=/var/opt/casa_de_cultura --no-create-home --shell=/bin/bash casa_de_cultura

Desabilita o acesso por senha

passwd -d casa_de_cultura
Clonar o projeto
cd ../opt

git clone http://corisco.dcstara.com.br/analytics/casa_de_cultura.git

cd casa_de_cultura
Criar o ambiente virtual
python3 -m venv --system-site-packages /opt/casa_de_cultura/venv
Instalar as bibliotecas dos requisitos
source /opt/casa_de_cultura/venv/bin/activate

/opt/casa_de_cultura/venv/bin/pip install -r /opt/casa_de_cultura/requirements.txt

Permite que o usuario escreva nos arquivos compilados do python

/opt/casa_de_cultura/venv/bin/python -m compileall -x /opt/casa_de_cultura/venv/ /opt/casa_de_cultura
Criar os diretórios

Diretório de mídia

mkdir -p /var/opt/casa_de_cultura

chown casa_de_cultura: /var/opt/casa_de_cultura

Diretório de log

mkdir -p /var/log/casa_de_cultura

chown casa_de_cultura: /var/log/casa_de_cultura
Instalar o NGINX
yum install nginx

Cria as pastas que serão utilizadas para guardar os arquivos de configuração do nginx

mkdir /etc/nginx/sites-available

mkdir /etc/nginx/sites-enabled

Edita o arquivo de configuração do nginx para adicionar o diretório criado

vim /etc/nginx/nginx.conf

Inserir a seguinte linha dentro do bloco HTTP

include /etc/nginx/sites-enabled/*;

Criar a configuração que redirecionará para o gunicorn

vim /etc/nginx/sites-available/casa_de_cultura

Inserir o código abaixo no arquivo

server {
    listen 80;
    listen [::]:80;
    server_name casadecultura.gusgewehr.com;
    root /var/www/casadecultura.gusgewehr.com;
    location / {
        location / {
            proxy_pass http://localhost:8080;
            proxy_set_header Host $http_host;
            proxy_redirect off;
            proxy_set_header X-Forwarded-For $remote_addr;
            proxy_set_header X-Forwarded-Proto $scheme;
            client_max_body_size 20m;
        }
    }
    location /static/ {
        alias /var/cache/casa_de_cultura/static/;
    }
    location /media/ {
        alias /var/opt/casa_de_cultura/media/;
    }
}

Cria um link no diretório sites-enabled marcado dentro do .conf com o arquivo criado na pasta sites-available

cd /etc/nginx/sites-enabled
ln -s ../sites-available/casa_de_cultura

Reinicia o serviço do nginx

systemctl restart nginx
Python Application Server

Instalar o gunicorn dentro do ambiente virtual

/opt/casa_de_cultura/venv/bin/pip install gunicorn

Configurar o systemd para inciar o serviço do gunicorn referente ao aplicativo automaticamente

vim /etc/systemd/system/casa_de_cultura.service

Inserir o seguinte código dentro do arquivo

[Unit]
Description=casa_de_cultura
[Service]
User=casa_de_cultura
Group=casa_de_cultura
Environment="PYTHONPATH=/opt/casa_de_cultura/casa_de_cultura:/opt/casa_de_cultura"
Environment="DJANGO_SETTINGS_MODULE=settings"
ExecStart=/opt/casa_de_cultura/venv/bin/gunicorn \
--workers=4 \
--log-file=/var/log/casa_de_cultura/gunicorn.log \
--bind=127.0.0.1:8080 --bind=[::1]:8080 \
casa_de_cultura.wsgi:application
[Install]
WantedBy=multi-user.target

Habilita e inicia o serviço

systemctl enable casa_de_cultura

service casa_de_cultura start
Instalar o Postgres

O gerenciador de pacotes do CentOS7 instala até o Postgres9, mas a bilbioteca psycopg2 utilizada só funciona com o Postgres acima do 10. Por isso instala-se o Postgres14.

# Install the repository RPM:
sudo yum install -y https://download.postgresql.org/pub/repos/yum/reporpms/EL-7-x86_64/pgdg-redhat-repo-latest.noarch.rpm

# Install PostgreSQL:
sudo yum install -y postgresql14-server

# Optionally initialize the database and enable automatic start:
sudo /usr/pgsql-14/bin/postgresql-14-setup initdb
sudo systemctl enable postgresql-14
sudo systemctl start postgresql-14

Cria o usuario e o banco que serão utilizados pela aplicação

su postgres -c 'psql template1'

    CREATE USER casa_de_cultura PASSWORD '$SENHA_DO_DB';
    CREATE DATABASE casa_de_cultura OWNER casa_de_cultura;

    /q

Instala o pacote utilizado no django para conectar com o postgres

yum install postgresql-devel python-psycopg2 python3-psycopg2 

pip install psycopg2

Altera o método de autenticação do postgres

sudo vi /var/lib/pgsql/14/data/pg_hba.conf

Procure por "IPv4 local connections:" e "IPv4 local connections:" e altere de ident para md5

Alterar as variáveis de ambiente
vim /opt/casa_de_cultura/.env

Inserir as variáveis e seus valores no arquivo

DJANGO_DEBUG=True #alterar para False ao subir para produção
DJANGO_SECRET_KEY= 
DJANGO_DB=
DJANGO_DB_USER=
DJANGO_DB_PASSWORD=

Rodar a aplicação

cd /opt/casa_de_cultura

source venv/bin/activate

python3 manage.py makemigrations

python3 manage.py migrate

python3 manage.py collectstatic

systemctl restart casa_de_cultura

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published