{"id":19896,"date":"2025-08-27T14:23:54","date_gmt":"2025-08-27T17:23:54","guid":{"rendered":"https:\/\/king.host\/wiki\/?post_type=article&#038;p=19896"},"modified":"2025-08-27T14:23:55","modified_gmt":"2025-08-27T17:23:55","slug":"como-fazer-deploy-de-uma-aplicacao-django","status":"publish","type":"article","link":"https:\/\/king.host\/wiki\/artigo\/como-fazer-deploy-de-uma-aplicacao-django\/","title":{"rendered":"Como fazer deploy de sua aplica\u00e7\u00e3o Django"},"content":{"rendered":"\n<p><em>Precisando fazer o deploy de sua aplica\u00e7\u00e3o Django, veja nesse tutorial como fazer de uma maneira simples e r\u00e1pida.<\/em><\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><a href=\"https:\/\/king.host\/hospedagem-de-sites?utm_source=wiki&amp;utm_medium=banner-artigo-wiki&amp;utm_campaign=banner-artigo-wiki-como-fazer-deploy-de-uma-aplicacao-django\" target=\"_blank\" rel=\"noreferrer noopener\"><img data-original=\"https:\/\/king.host\/wiki\/wp-content\/uploads\/2025\/06\/Frame-1-1.png\" alt=\"banner hospedagem\" class=\"wp-image-26651\"\/><\/a><\/figure>\n\n\n\n<p>Django \u00e9 um framework web gratuito e de c\u00f3digo aberto para o Python que permite a cria\u00e7\u00e3o de sites de uma maneira r\u00e1pida. <br>Com esse tutorial vamos facilitar para que voc\u00ea consiga fazer o deploy de sua aplica\u00e7\u00e3o Django de uma maneira f\u00e1cil.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"Requisitos_para_deploy_da_aplicacao\"><\/span>Requisitos para deploy da aplica\u00e7\u00e3o<span class=\"ez-toc-section-end\"><\/span><\/h3>\n\n\n\n<p>Nesse tutorial vamos utilizar algumas vers\u00f5es espec\u00edficas para realizar o deploy da aplica\u00e7\u00e3o sendo elas:<\/p>\n\n\n\n<ul>\n<li>Python 3.7<\/li>\n\n\n\n<li>Django 3.0.2<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"Como_verificar_a_versao_do_Python\"><\/span>Como verificar a vers\u00e3o do Python<span class=\"ez-toc-section-end\"><\/span><\/h3>\n\n\n\n<p>Para verificar qual vers\u00e3o do Python est\u00e1 instalada no seu servidor, \u00e9 necess\u00e1rio acessar o seu FTP e rodar o comando <strong><em>python &#8211;version<\/em><\/strong> e a vers\u00e3o aparecer\u00e1 na primeira linha:<\/p>\n\n\n\n<div style=\"height:30px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"372\" height=\"55\" data-src=\"https:\/\/king.host\/wiki\/wp-content\/uploads\/2022\/05\/Captura-de-tela-de-2022-05-31-14-43-16.png\" alt=\"\" class=\"wp-image-22785 lazyload\" data-srcset=\"https:\/\/king.host\/wiki\/wp-content\/uploads\/2022\/05\/Captura-de-tela-de-2022-05-31-14-43-16.png 372w, https:\/\/king.host\/wiki\/wp-content\/uploads\/2022\/05\/Captura-de-tela-de-2022-05-31-14-43-16-300x44.png 300w\" data-sizes=\"(max-width: 372px) 100vw, 372px\" src=\"data:image\/gif;base64,R0lGODlhAQABAAAAACH5BAEKAAEALAAAAAABAAEAAAICTAEAOw==\" style=\"--smush-placeholder-width: 372px; --smush-placeholder-aspect-ratio: 372\/55;\" \/><noscript><img loading=\"lazy\" decoding=\"async\" width=\"372\" height=\"55\" src=\"https:\/\/king.host\/wiki\/wp-content\/uploads\/2022\/05\/Captura-de-tela-de-2022-05-31-14-43-16.png\" alt=\"\" class=\"wp-image-22785\" srcset=\"https:\/\/king.host\/wiki\/wp-content\/uploads\/2022\/05\/Captura-de-tela-de-2022-05-31-14-43-16.png 372w, https:\/\/king.host\/wiki\/wp-content\/uploads\/2022\/05\/Captura-de-tela-de-2022-05-31-14-43-16-300x44.png 300w\" sizes=\"(max-width: 372px) 100vw, 372px\" \/><\/noscript><\/figure><\/div>\n\n\n<div style=\"height:40px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<p>Quando ativamos o Python no painel, o padr\u00e3o \u00e9 que seu dom\u00ednio esteja em um servidor com Python 2. <\/p>\n\n\n\n<h3 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"Criando_a_aplicacao_no_painel\"><\/span>Criando a aplica\u00e7\u00e3o no painel  <span class=\"ez-toc-section-end\"><\/span><\/h3>\n\n\n\n<p>A cria\u00e7\u00e3o da aplica\u00e7\u00e3o do painel pode ser feita seguindo esse <a rel=\"noreferrer noopener\" aria-label=\"tutorial (abre numa nova aba)\" href=\"https:\/\/king.host\/wiki\/artigo\/como-criar-uma-aplicacao-django-na-kinghost\/\" target=\"_blank\">tutorial<\/a>.<br>Essa etapa \u00e9 necess\u00e1ria para que seja criado a estrutura de pastas para realizar o deploy da aplica\u00e7\u00e3o.<\/p>\n\n\n\n<p>Ap\u00f3s a cria\u00e7\u00e3o dever\u00e1 ter uma nova pasta dentro do seu FTP <strong>&#8220;\/apps_wsgi&#8221;<\/strong> e um novo arquivo com o nome <strong>nome-da-aplicacao.wsgi<\/strong>.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"Instalar_as_dependencias\"><\/span>Instalar as depend\u00eancias<span class=\"ez-toc-section-end\"><\/span><\/h3>\n\n\n\n<p>Para come\u00e7ar instalando as depend\u00eancias que vamos utilizar, podemos ver o que tem instalado no servidor, rodando o comando:<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">python -m pip freeze<\/pre>\n\n\n\n<p>Nesse tutorial vamos instalar apenas o Django 3.0.2, utilizando esse comando:<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\" lang=\"wp-block-preformatted\">python -m pip install Django==3.0.2 --user<\/pre>\n\n\n\n<p>Caso precise instalar outra depend\u00eancia pode utilizar desse comando:<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\" lang=\"wp-block-preformatted\"> python -m install <strong>nome_da_dependencia<\/strong> --user <\/pre>\n\n\n\n<p>Outra op\u00e7\u00e3o seria no seu ambiente de desenvolvimento rodar o seguinte comando para gerar um arquivo com suas depend\u00eancias:<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\" lang=\"wp-block-preformatted\">python -m pip freeze > requirements.txt<\/pre>\n\n\n\n<p>Assim quando voc\u00ea colocar os seus arquivos no FTP de produ\u00e7\u00e3o para instalar todas as depend\u00eancias de uma vez \u00e9 necess\u00e1rio rodar somente o comando:<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\" lang=\"wp-block-preformatted\">pip install -r requirements.txt<\/pre>\n\n\n\n<h3 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"Criando_a_static_e_a_media\"><\/span>Criando a static e a media<span class=\"ez-toc-section-end\"><\/span><\/h3>\n\n\n\n<p>Precisamos criar as pastas para guardar nossos arquivos est\u00e1ticos e midias do site. Para isso \u00e9 necess\u00e1rio acessar a <strong>www<\/strong> e fazer a cria\u00e7\u00e3o de duas pastas a <strong>media <\/strong>e a <strong>static<\/strong>, isso pode ser feito utilizando os comandos a seguir:<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\" lang=\"wp-block-preformatted\">cd www\nmkdir static\nmkdir media<\/pre>\n\n\n\n<p>Para que os arquivos <strong>est\u00e1ticos<\/strong> e de <strong>media<\/strong> sejam reconhecidos corretamente, na sua aplica\u00e7\u00e3o Python, ser\u00e1 necess\u00e1rio a cria\u00e7\u00e3o de um <em>alias<\/em> no <em>VHost<\/em> do dom\u00ednio.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"Arquivo_wsgi\"><\/span>Arquivo wsgi<span class=\"ez-toc-section-end\"><\/span><\/h3>\n\n\n\n<p>Na pasta <strong>apps_wsgi<\/strong> ser\u00e1 criado o arquivo <strong>nome-da-aplicacao.wsgi<\/strong> onde ficam as configura\u00e7\u00f5es iniciais, por padr\u00e3o ele vem com esse c\u00f3digo: <\/p>\n\n\n\n<pre class=\"wp-block-preformatted\" lang=\"wp-block-preformatted\"> import os, sys\n sys.path.append('\/home\/django-tutorial\/apps_wsgi')\n sys.path.append('\/home\/django-tutorial\/apps_wsgi\/adm')\n os.environ['PYTHON_EGG_CACHE'] = '\/home\/django-tutorial\/apps_wsgi\/.python-eggs'\n os.environ['DJANGO_SETTINGS_MODULE'] = 'adm.settings'\n from django.core.wsgi import get_wsgi_application\n application = get_wsgi_application() <\/pre>\n\n\n\n<p>Por\u00e9m dependendo da sua aplica\u00e7\u00e3o pode ser necess\u00e1rio realizar altera\u00e7\u00f5es no arquivo. Ent\u00e3o sempre que for realizada alguma altera\u00e7\u00e3o na sua aplica\u00e7\u00e3o \u00e9 necess\u00e1rio informar ao servidor que essa altera\u00e7\u00e3o foi realizada. Isso pode ser feito rodando esse comando no seu terminal: <\/p>\n\n\n\n<pre class=\"wp-block-preformatted\" lang=\"wp-block-preformatted\">touch <strong>nome-da-aplicacao.wsgi<\/strong><\/pre>\n\n\n\n<h2 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"Configuracoes_Finais\"><\/span>Configura\u00e7\u00f5es Finais<span class=\"ez-toc-section-end\"><\/span><\/h2>\n\n\n\n<p>Esse \u00e9 o momento onde voc\u00ea deve fazer o deploy dos arquivos da sua aplica\u00e7\u00e3o dentro da pasta <strong>apps_wsgi<\/strong>. Por\u00e9m se o conte\u00fado for ficar na raiz pode ser posto diretamente na raiz da apps_wsgi, caso o conte\u00fado for ficar em uma subpasta como <strong>\/app<\/strong> ou <strong>\/admin<\/strong> deve ser por numa pasta com o mesmo nome.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"Staticpy\"><\/span>Static.py<span class=\"ez-toc-section-end\"><\/span><\/h3>\n\n\n\n<p>Agora \u00e9 necess\u00e1rio configurar no seu <strong>static.py<\/strong> o caminho para as duas pastas que criamos mais acima.<\/p>\n\n\n\n<p>Para realizar essa configura\u00e7\u00e3o \u00e9 necess\u00e1rio adicionar 4 linhas no seu arquivo ou editar as existentes.<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\" lang=\"wp-block-preformatted\">STATIC_URL = '\/static\/'\nSTATIC_ROOT = '\/home\/dominio\/www\/static'\n\nMEDIA_URL = 'media\/'\nMEDIA_ROOT = '\/home\/dominio\/www\/media'<\/pre>\n\n\n\n<h3 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"managepy\"><\/span>manage.py<span class=\"ez-toc-section-end\"><\/span><\/h3>\n\n\n\n<p>Para finalizar precisamos informar ao Django onde ele ir\u00e1 guardar cada informa\u00e7\u00e3o, nesse caso precisaremos ir na pasta onde o arquivo <strong>manage.py<\/strong> se encontra e rodar os seguintes comandos:<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\" lang=\"wp-block-preformatted\">python manage.py collectstatic\npython manage.py makemigrations\npython manage.py migrate\npython manage.py createsuperuser <\/pre>\n\n\n\n<p>Rodando agora mais uma vez o <strong>touch aplicacao.wsgi<\/strong> o deploy de sua aplica\u00e7\u00e3o de Django vai estar conclu\u00eddo.<\/p>\n","protected":false},"author":9,"featured_media":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","format":"standard","article-category":[172,215],"article-tag":[],"aioseo_notices":[],"_links":{"self":[{"href":"https:\/\/king.host\/wiki\/wp-json\/wp\/v2\/article\/19896"}],"collection":[{"href":"https:\/\/king.host\/wiki\/wp-json\/wp\/v2\/article"}],"about":[{"href":"https:\/\/king.host\/wiki\/wp-json\/wp\/v2\/types\/article"}],"author":[{"embeddable":true,"href":"https:\/\/king.host\/wiki\/wp-json\/wp\/v2\/users\/9"}],"replies":[{"embeddable":true,"href":"https:\/\/king.host\/wiki\/wp-json\/wp\/v2\/comments?post=19896"}],"version-history":[{"count":6,"href":"https:\/\/king.host\/wiki\/wp-json\/wp\/v2\/article\/19896\/revisions"}],"predecessor-version":[{"id":26989,"href":"https:\/\/king.host\/wiki\/wp-json\/wp\/v2\/article\/19896\/revisions\/26989"}],"wp:attachment":[{"href":"https:\/\/king.host\/wiki\/wp-json\/wp\/v2\/media?parent=19896"}],"wp:term":[{"taxonomy":"article-category","embeddable":true,"href":"https:\/\/king.host\/wiki\/wp-json\/wp\/v2\/article-category?post=19896"},{"taxonomy":"article-tag","embeddable":true,"href":"https:\/\/king.host\/wiki\/wp-json\/wp\/v2\/article-tag?post=19896"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}