Notas detalladas de implementación del proyecto Django

Las notas de estudio personal, los artículos de referencia son los siguientes:
https://blog.csdn.net/tr_136163798/article/details/120901363
https://www.dusaiphoto.com/article/71/
https://docs.djangoproject.com /zh -hans/3.2/howto/static-files/
https://docs.djangoproject.com/zh-hans/3.2/howto/static-files/deployment/

Este artículo fue publicado en mi blog personal por primera vez, bienvenido a visitar:
https://sunguoqi.com/2021/12/15/Django_04/

  Siguiendo las pautas de la documentación oficial de Django, hemos realizado una aplicación de votación. Desarrollamos localmente, y el proyecto se implementará en el servidor cuando esté en línea. Esta nota registra todo el proceso de implementación del proyecto Django para mí, solo como referencia.

1. Nuevo sitio

1. Crea un sitio usando el panel de pagoda


站点创建成功!

2. Configurar certificado SSL (opcional)


配置成功

En segundo lugar, el programa de embalaje.

1. Dependencias de exportación

  Abra el proyecto localmente y ejecute el siguiente comando para exportar las dependencias del proyecto.

pip freeze > requirements.txt

2. Carga de paquetes

  Cierre pycharm, convierta el proyecto mysite en un paquete comprimido y cárguelo en el directorio del sitio web usando el panel de pagoda/www/wwwroot/django.sunguoqi.com

3. Descompresión

  El panel de la pagoda puede descomprimir directamente el archivo sin tener que operar en la línea de comandos.

3. Instalación del entorno

1. Instalar el entorno virtual

  Use el host remoto Xshell, ingrese al directorio del sitio web y ejecute el siguiente comando para instalar el entorno virtual.

pip3 install virtualenv

2. Crea un entorno virtual

  Ingrese al directorio del proyecto

  y ejecute el siguiente comando para crear un entorno virtual. venv es el nombre del entorno virtual, que se puede personalizar

virtualenv venv

3. Activar el entorno virtual

cd venv
source bin/activate

4. Instalar paquetes de dependencia

cd ..
 pip3 install -r requirements.txt

报错

ERROR: Failed building wheel for mysqlclient

解决方案

  Ejecute los siguientes comandos respectivamente

sudo apt-get install python3 python-dev python3-dev
sudo apt-get install build-essential libssl-dev libffi-dev
sudo apt-get install libxml2-dev libxslt1-dev zlib1g-dev

  Reinstalar el motor de la base de datos

pip3 install mysqlclient

成功

  Ejecute el comando de instalación del paquete

pip3 install -r requirements.txt

  Debido a que el programa finalizó al instalar el motor de la base de datos, los siguientes paquetes no se instalaron.

成功

Cuarto, configure la base de datos del proyecto.

1. Modificar la información de configuración de la base de datos del proyecto

2. Migrar la base de datos

python3 manage.py migrate

成功

5. Iniciar el proyecto

1. Modificar la configuración del proyecto

mysite/setting.py

ALLOWED_HOSTS = ['*']

2. Cree un superusuario de administración en segundo plano

  Debido a que los datos de la base de datos durante el desarrollo no se han importado, ahora no tenemos datos de cuenta en segundo plano. Ejecute el siguiente comando para crear un superusuario.

python manage.py createsuperuser

3. Iniciar el proyecto

  Abra el puerto 8000 de su host y ejecute el siguiente comando.

python3 manage.py runserver 0.0.0.0:8000

  ¡El proyecto se puede iniciar normalmente!

Seis, alojamiento de procesos de pantalla

  Cuando se cierra la sesión SSH, el servicio web también se cierra, lo que provoca que el sitio web no pueda conectarse. Necesitamos que el proceso funcione las 24 horas del día, aquí uso screen para lograrlo.

1. Pantalla de instalación

apt-get install screen

2. Crea una pantalla

screen -S django_study

3. Iniciar el proyecto

python3 manage.py runserver 0.0.0.0:8000

Siete, proxy inverso de Nginx

  De momento solo podemos utilizar IP:Portel método para acceder a la web, cuando se lanza el proyecto final se suele acceder por el nombre de dominio. La correspondencia del nombre de dominio de nuestro proyecto es django.sunguoqi.com
  utilizar el proxy inverso de Nginx para establecer una relación entre el nombre de dominio y el puerto.
在宝塔面板上配置

Ocho, el despliegue está completo.

  Acceso django.sunguoqi.com/polls/, no hay votos disponibles, porque no agregamos datos en segundo plano.

1. Inicie sesión en segundo plano

  visita django.sunguoqi.com/admin/,

2. Agregar voto

3. votar

  Visita django.sunguoqi.com/polls/para votar.

4. Enviar datos

九、DEBUG=Falso?

  En esencia, nuestro proyecto actual sigue usando el servidor web que viene con Django, y solo usamos Nginx como proxy inverso.
  Cuando implementamos formalmente el proyecto, debemos desactivar la depuración. Cuando iniciamos el proyecto sin realizar ningún cambio, aparecerá el siguiente error.

  En la etapa de desarrollo del proyecto, cuando DEBUG=True, Django utilizará su propio servicio web para procesar archivos estáticos, pero su rendimiento no es muy bueno. Entonces, en la fase de implementación del proyecto, cuando DEBUG=False, Django ya no administrará los archivos estáticos. Django quiere que entreguemos los archivos estáticos a Nginx (u otros servidores web) para su procesamiento.
  En este momento, tenemos que lidiar con archivos estáticos.

1. Configure la ruta del archivo estático

  Primero, cambiamos la configuración relevante en setting.py a esto.

import os

# 关闭调试模式
DEBUG = False

# 允许的服务器
ALLOWED_HOSTS = ['*']

# 静态文件收集目录
STATIC_ROOT = os.path.join(BASE_DIR, 'static')

2. Recopilar archivos estáticos

  Ejecute el siguiente comando para recopilar los archivos estáticos en el proyecto. La ubicación después de la recopilación es el directorio de recopilación de archivos estáticos que configuramos anteriormente.

python3 manage.py collectstatic

3. Configurar Nginx

  Agregue lo siguiente al archivo de configuración de su sitio.

    location ~ .*\.(gif|jpg|jpeg|png|bmp|swf|woff|woff2)$
    {
        expires      30d;
    }

    location ~ .*\.(js|css)?$
    {
        expires      12h;
    }

    location ~ /\.
    {
        deny all;
    }

4. Iniciar el proyecto

  ¡OK!

Supongo que te gusta

Origin blog.csdn.net/weixin_50915462/article/details/121953668
Recomendado
Clasificación