Skip to content

Latest commit

 

History

History
179 lines (130 loc) · 4.56 KB

deploy.md

File metadata and controls

179 lines (130 loc) · 4.56 KB

Deploy da Aplicação Django

Deploy usando o Gunicorn e Apache

Passo 0: Grupo e Usuário Específico de Acesso

Criamos um grupo e um usuário específico para ter permissão somente na pasta da sua aplicação.

mkdir webapps
cd webapps
sudo groupadd --system webapps
sudo useradd --system --gid webapps --shell /bin/bash --home /home/redmine/webapps python-app
sudo chown python-app:webapps -R /home/redmine/webapps
sudo addgroup redmine webapps

Teste a aplicação com runserver do ambiente virtual:

env/bin/python3 manage.py runserver 0.0.0.0:8000

Gunicorn

env/bin/pip3 install gunicorn
cd webapps/suggestclasses
env/bin/gunicorn --bind 0.0.0.0:8000 suggestclasses.wsgi

Supervisor

sudo apt install supervisor
sudo nano /etc/supervisor/conf.d/suggestclasses.conf

Conteúdo do arquivo suggestclasses.conf:

[program:suggestclasses]
command=/home/redmine/webapps/suggestclasses/env/bin/gunicorn --access-logfile - --workers 3 --bind 0.0.0.0:8000 suggestclasses.wsgi:application
directory=/home/redmine/webapps/suggestclasses
user=python-app
group=www-data
autostart=true
autorestart=true
killasgroup=true
stdout_logfile=/home/redmine/webapps/suggestclasses/supervisor.log
redirect_stderr=True
environment=DJANGO_SETTINGS_MODULE="suggestclasses.settings", LANG="pt_BR.utf8", LC_ALL="pt_BR.UTF-8", LC_LANG="pt_BR.UTF-8"

Iniciar o serviço e habilitar para que ele inicie junto do boot:

sudo supervisorctl reread
sudo supervisorctl update

Podemos verificar se o serviço foi corretamente implantado:

sudo supervisorctl status suggestclasses

Fonte: Deploy App Django com Gunicorn

Deploy diretamente no Apache

Tutorial de Deploy da Aplicação Django em Servidor Apache2 no Ubuntu.

Baseado no vídeo: Python Django Tutorial: Deploying Your Application (Option #1) - Deploy to a Linux Server

Passo 1: Copiar Arquivos Estáticos

Configuração das pastas de arquivos estáticos:

STATIC_ROOT = os.path.join(BASE_DIR, 'static')
STATIC_URL = '/static/'

# User_Uploaded_Files
MEDIA_URL = '/media/'
MEDIA_ROOT = os.path.join(BASE_DIR, 'media')

Copiar os arquivos estáticos para a pasta STATIC_ROOT:

python manage.py collectstatic

Passo 2: Módulo WSGI no Apache2

Instalar Apache2 se necessário.

sudo apt install apache2

Instalar Módulo do WSGI para Python 3.

sudo apt install libapache2-mod-wsgi-py3

Passo 3: Configuração do Virtual Host no Apache

cd /etc/apache2/sites-available/
sudo cp 000-default.conf suggestclasses.conf

Edite o arquivo suggestclasses.conf Arquivo completo aqui e acrescente no final do arquivo dentro da tag <VirtualHost *:80>.

    Alias /static /home/taciano/dev/workspace/suggestclasses/static
    <Directory /home/taciano/dev/workspace/suggestclasses/static>
        Require all granted
    </Directory>

    Alias /media /home/taciano/dev/workspace/suggestclasses/media
    <Directory /home/taciano/dev/workspace/suggestclasses/media>
        Require all granted
    </Directory>

    <Directory /home/taciano/dev/workspace/suggestclasses/suggestclasses>
        <Files wsgi.py>
            Require all granted
        </Files>
    </Directory>

    WSGIScriptAlias / /home/taciano/dev/workspace/suggestclasses/suggestclasses/wsgi.py
    WSGIDaemonProcess sc_app python-path=/home/taciano/dev/workspace/suggestclasses:/home/taciano/dev/python/envP38/lib/python3.8/site-packages python-home=/home/taciano/dev/python/envP38
    WSGIProcessGroup sc_app
sudo a2ensite suggestclasses
sudo a2dissite 000-default.conf

Passo 4: Adicionando Permissões nos arquivos do projeto

Devemos adicionar permissões em arquivos que o sistema vai manipular. No nosso caso, não temos o db.sqlite3, mas isso deve ser feito em arquivos manipulados.

sudo chown :www-data suggestclasses/db.sqlite3
sudo chmod 664 suggestclasses/db.sqlite3
sudo chown :www-data suggestclasses/
sudo chmod 775 suggestclasses/

sudo chown -R :www-data suggestclasses/media/
sudo chmod -R 775 suggestclasses/media
sudo chown :www-data suggestclasses/static/

Passo 5: Permissões no Firewall do Servidor

sudo ufw allow http/tcp
sudo ufw allow 80

Passo 6: Restart Apache Server

sudo service apache2 restart