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.
Directorio de artículos
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:Port
el 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!