Loading repository data…
Loading repository data…
vinigracindo / repository
Sistema Gerenciador de Certificados Eletrônicos (Projeto em Python/Django) - Django 2.0+ e Python3
Live demo: https://sgce-app.herokuapp.com/ https://sgce-app.herokuapp.com/login/ (User: admin | Password: adm11200)
O SGCE está sendo desenvolvido baseado no SGCE criado pela Universidade Federal de Pampa.

git clone https://github.com/vinigracindo/sgce.git sgce
cd sgce
python -m venv .sgce
source .sgce/bin/activate
pip install -r requirements.txt
cp contrib/ini-sample settings.ini
python manage.py migrate
python manage.py loaddata Group
python manage.py test
python manage.py createsuperuser
python manage.py runserver
git clone https://github.com/vinigracindo/sgce.git sgce
cd sgce
python -m venv .sgce
.sgce\Scripts\activate
pip install -r requirements.txt
copy contrib\ini-sample settings.ini
python manage.py migrate
python manage.py loaddata Group
python manage.py test
python manage.py createsuperuser
python manage.py runserver
DEBUG=0
SECRET_KEY=<Gere uma chave única>
DJANGO_ALLOWED_HOSTS=localhost 127.0.0.1 [::1]
SQL_DATABASE=<db_name>
SQL_USER=<db_user>
SQL_PASSWORD=<db_password>
SQL_HOST=<db_host>
SQL_PORT=5432
DEBUG: 0 = False. 1 = True
SECRET_KEY: Gere uma secret key utilizando o contrib/secret_gen.py ou utilizando o site https://djecrety.ir/
Remova as variáveis SQL_DATABASE, SQL_USER, SQL_PASSWORD, SQL_HOST e SQL_PORT para utilizar os valores defaults do settings.py
docker-compose -f docker-compose.yml up -d --build
docker-compose -f docker-compose.prod.yml exec web python manage.py migrate --noinput
docker-compose -f docker-compose.prod.yml exec web python manage.py collectstatic --no-input --clear
docker-compose -f docker-compose.prod.yml exec web python manage.py loaddata Group
docker-compose -f docker-compose.prod.yml exec web python manage.py createsuperuser
Deploy realizado na porta 1337. Acesse http://localhost:1337/
Caso queira mudar a porta, basta alterar o serviço do nginx no docker-compose.yml e alterar a variável ports.
sudo apt-get updatesudo apt install python3-pip python3-dev libpq-dev postgresql postgresql-contrib nginx curlsudo -u postgres psqlCREATE DATABASE my_postgres_db;CREATE USER meu_usuario WITH PASSWORD 'password';GRANT ALL PRIVILEGES ON DATABASE my_postgres_db TO meu_usuario;ALTER ROLE meu_usuario SET client_encoding TO 'utf8';
ALTER ROLE meu_usuario SET default_transaction_isolation TO 'read committed';
ALTER ROLE meu_usuario SET timezone TO 'UTC';
cd /home/meu_usuario/ // Você pode escolher qualquer pasta dentro do sistema de arquivo.mkdir sgce e cd sgcepython3 -m venv .sgcesource .sgce/bin/activatecd /home/meu_usuario/sgcegit clone --branch v1.3.2 https://github.com/vinigracindo/sgce.git . (é muito importante o ponto no final para não criar uma outra pasta).pip3 install -r requirements.txt'default': {
'ENGINE': 'django.db.backends.postgresql',
'NAME': 'my_postgres_db',
'USER': 'meu_usuario',
'PASSWORD': '.....',
'HOST': 'localhost',
'PORT': '',
}
STATIC_ROOT = os.path.join(BASE_DIR, "static/")
copy contrib\ini-sample settings.inipython contib/secret_get.py. Copie a chave gerada pelo comando e coloque em SECRET_KEY;python manage.py migratepython manage.py testpython manage.py createsuperuserpython manage.py collectstaticpython manage.py loaddata Grouppython manage.py runserver 0.0.0.0:8000 e verifique se está funcionando.pip3 install gunicorngunicorn -b 0.0.0.0:8000 sgce.wsgi (wsgi é um arquivo do SGCE. Esteja na mesma pasta que ela para executar o comando).Nós testamos que o Gunicorn pode interagir com nosso aplicativo Django, mas devemos implementar uma maneira mais robusta de começar e parar o servidor do aplicativo. Para isso, vamos fazer arquivos de serviço e de socket do systemd.
O socket Gunicorn será criado no boot e escutará as conexões. Quando ocorrer uma conexão, o systemd irá iniciar o processo Gunicorn automaticamente para lidar com a conexão.
Comece criando e abrindo um arquivo de socket do systemd para o Gunicorn com privilégios sudo:
sudo nano /etc/systemd/system/gunicorn.socket
Dentro, vamos criar uma seção [Unit] para descrever o socket, uma seção [Socket] para definir a localização do socket e uma seção [Install] para garantir que o socket seja criado no momento certo:
[Unit]
Description=gunicorn socket
[Socket]
ListenStream=/run/gunicorn.sock
[Install]
WantedBy=sockets.target
Salve e feche o arquivo quando você terminar.
Em seguida, crie e abra um arquivo de serviço do systemd para o Gunicorn com privilégios sudo no seu editor de texto. O nome do arquivo de serviço deve corresponder ao nome do arquivo do socket com exceção da extensão:
sudo nano /etc/systemd/system/gunicorn.service
Comece com a seção [Unit], que é usada para especificar os metadados e dependências. Vamos colocar uma descrição do nosso serviço aqui e dizer ao sistema init para iniciar isso somente após o objetivo da rede ter sido alcançado. Uma vez que nosso serviço se baseia no socket do arquivo do socket, precisamos incluir uma diretriz Requires para indicar essa relação:
[Unit]
Description=gunicorn daemon
Requires=gunicorn.socket
After=network.target
Em seguida, vamos abrir a seção [Service]. Nós especificaremos o usuário e o grupo em que queremos que o processo seja executado. Vamos dar à nossa conta de usuário regular a posse do processo uma vez que ela possui todos os arquivos relevantes. Vamos atribuir a posse do grupo ao grupo www-data para que o Nginx possa se comunicar facilmente com o Gunicorn.
Então, vamos mapear o diretório em funcionamento e especificar o comando a ser usado para iniciar o serviço. Neste caso, precisaremos especificar o caminho completo para o executável do Gunicorn, que está instalado dentro do nosso ambiente virtual. Vamos ligar o processo ao socket Unix que criamos dentro do diretório /run para que o processo possa se comunicar com o Nginx. Nós registramos todos os dados na saída padrão para que o processo journald possa recolher os registros do Gunicorn. Também podemos especificar quaisquer ajustes opcionais no Gunicorn aqui. Por exemplo, especificamos 3 processos de trabalho neste caso:
[Unit]
Description=gunicorn daemon
Requires=gunicorn.socket
After=network.target
[Service]
User=meu_usuario
Group=www-data
WorkingDirectory=/home/meu_usuario/sgce
ExecStart=/home/meu_usuario/sgce/.sgce/bin/gunicorn \
--access-logfile - \
--workers 3 \
--bind unix:/run/gunicorn.sock \
sgce.wsgi:application
ATENÇÃO: .sgce É O NOME DO AMBIENTE VIRTUAL PYTHON QUE FOI CRIADO.
Finalmente, adicionaremos uma seção [Install]. Isso dirá ao systemd o que ligar a este serviço se nós habilitarmos que ele seja iniciado no boot. Queremos que este serviço comece quando o sistema regular de vários usuários estiver funcionando:
[Unit]
Description=gunicorn daemon
Requires=gunicorn.socket
After=network.target
[Service]
User=sammy
Group=www-data
WorkingDirectory=/home/sammy/myprojectdir
ExecStart=/home/sammy/myprojectdir/myprojectenv/bin/gunicorn \
--access-logfile - \
--workers 3 \
--bind unix:/run/gunicorn.sock \
myproject.wsgi:application
[Install]
WantedBy=multi-user.target
Com isso, nosso arquivo de serviço systemd está completo. Salve e feche-o agora.
Agora, podemos iniciar e habilitar o socket do Gunicorn. Isso criará o arquivo do socket em /run/gunicorn.sock agora e no boot. Quando uma conexão for feita no socket, o systemd irá iniciar o gunicorn.service automaticamente para lidar com ela:
sudo systemctl start gunicorn.socket
sudo systemctl enable gunicorn.socket
Podemos confirmar que a operação foi bem sucedida verificando o arquivo do socket.
Verifique o status do processo para descobrir se ele foi capaz de iniciar:
sudo systemctl status gunicorn.socket
Em seguida, verifique a existência do arquivo gunicorn.sock dentro do diretório /run:
file /run/gunicorn.sock
Se o comando systemctl status indicou que um erro ocorreu ou se você não encontrou o arquivo gunicorn.sock no diretório, é uma indicação de que o socket do Gunicorn não foi criado corretamente. Verifique os registros do socket do Gunicorn digitando:
sudo journalctl -u gunicorn.socket
Veja novamente o seu arquivo /etc/systemd/system/gunicorn.socket para corrigir qualquer problema antes de continuar.
Se tiver iniciado apenas a unidade gunicorn.socket, o gunicorn.service ainda não estará ativo, já que o socket ainda não recebeu nenhuma conexão. Você pode verific