Depuis que je suis débutant, j'ai l'intention de l'écrire pour les débutants. Si vous avez des questions ou des erreurs, veuillez laisser un commentaire.
J'ai dit que c'était une version complète, mais contrairement à la plupart des articles, je ne l'expliquerai pas à partir de la création d'un projet.
On a l'impression que Django 3.0 vient de sortir, mais je ne pense pas que cela changera autant avec Django 3.0. Cela a bien fonctionné dans la fourchette que j'ai faite.
YourProjekutName
├ YourProjectName
│ ├ __init__.py
│ ├ settings
│ │ ├ __init__.py
│ │ ├ base.py
│ │ ├ local.py
│ │ └ production.py
│ ├ urls.py
│ └ wsgi.py
├ YourAppName
│ ├ migrations
│ │ └ __init__.py
│ ├ __init__.py
│ ├ admin.py
│ ├ apps.py
│ ├ models.py
│ ├ tests.py
│ ├ urls.py
│ └ views.py
├ collected_static
├ media
├ static
│ ├ css
│ ├ images
│ └ js
└ templates
Il peut être plus précis de le refaire que de le réécrire.
YourProjectName/settings/base.py
import os
BASE_DIR = os.path.dirname(os.path.dirname(os.path.dirname(os.path.abspath(__file__))))
INSTALLED_APPS = [
'YourAppName',
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
]
MIDDLEWARE = [
'django.middleware.security.SecurityMiddleware',
'django.contrib.sessions.middleware.SessionMiddleware',
'django.middleware.common.CommonMiddleware',
'django.middleware.csrf.CsrfViewMiddleware',
'django.contrib.auth.middleware.AuthenticationMiddleware',
'django.contrib.messages.middleware.MessageMiddleware',
'django.middleware.clickjacking.XFrameOptionsMiddleware',
]
ROOT_URLCONF = 'YourProjectName.urls'
TEMPLATES = [
{
'BACKEND': 'django.template.backends.django.DjangoTemplates',
'DIRS': [os.path.join(BASE_DIR, 'templates')],
'APP_DIRS': True,
'OPTIONS': {
'context_processors': [
'django.template.context_processors.debug',
'django.template.context_processors.request',
'django.contrib.auth.context_processors.auth',
'django.contrib.messages.context_processors.messages',
'django.template.context_processors.static',
],
},
},
]
WSGI_APPLICATION = 'YourProjectName.wsgi.application'
AUTH_PASSWORD_VALIDATORS = [
{
'NAME': 'django.contrib.auth.password_validation.UserAttributeSimilarityValidator',
},
{
'NAME': 'django.contrib.auth.password_validation.MinimumLengthValidator',
},
{
'NAME': 'django.contrib.auth.password_validation.CommonPasswordValidator',
},
{
'NAME': 'django.contrib.auth.password_validation.NumericPasswordValidator',
},
]
LANGUAGE_CODE = 'en-us'
TIME_ZONE = 'Asia/Tokyo'
USE_I18N = True
USE_L10N = True
USE_TZ = True
STATIC_URL = '/static/'
STATICFILES_DIRS = [os.path.join(BASE_DIR, 'static')]
STATIC_ROOT = os.path.join(BASE_DIR, 'collected_static')
MEDIA_URL = '/media/'
MEDIA_ROOT = os.path.join(BASE_DIR, 'media')
YourProjectName/settings/local.py
from .base import *
SECRET_KEY = 'Secret Key Written on settings.py'
DEBUG = True
ALLOWED_HOSTS = []
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.sqlite3',
'NAME': os.path.join(BASE_DIR, 'db.sqlite3'),
}
}
YoutProjectName/settings/production.py
from .base import *
SECRET_KEY = 'Secret Key Written on settings.py'
DEBUG = False
ALLOWED_HOSTS = ['YourHostName']
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.sqlite3',
'NAME': os.path.join(BASE_DIR, 'db.sqlite3'),
}
}
Les détails seront ajoutés plus tard.
Je verrai pourquoi plus tard.
YourProjekutName
├ YourProjectName
│ ├ __init__.py
│ ├ settings
│ │ ├ __init__.py
│ │ ├ base.py
│ │ ├ local.py
│ │ └ production.py
│ ├ urls.py
│ └ wsgi.py
├ YourAppName
│ ├ migrations
│ │ └ __init__.py
│ ├ __init__.py
│ ├ admin.py
│ ├ apps.py
│ ├ models.py
│ ├ tests.py
│ ├ urls.py
│ └ views.py
├ collected_static
├ media
├ static
│ ├ css
│ ├ images
│ └ js
└ templates
Lors du transfert de données de l'environnement de développement vers l'environnement de production, nous utiliserons GitHub en tenant compte du développement futur. Il est recommandé de spécifier \ _ \ _ pychache \ _ \ _, db.sqlite3, collect_static / * dans .gitignore pour l'exclure de la cible de git.
Je pense que c'était difficile à préparer, mais maintenant il est temps de passer en direct. Je vais l'écrire pour le moment, mais à partir de maintenant, ce sera une opération sur le serveur.
Veuillez ouvrir le port 80. Assurez-vous de redémarrer le service de pare-feu avec le redémarrage sudo systemctl.
sudo apt install nginx
À ce stade, saisissez le domaine dans votre navigateur et vous devriez voir Welcome to nginx!. S'il n'apparaît pas, l'installation peut avoir échoué, les paramètres du pare-feu peuvent ne pas être corrects ou les paramètres autour du domaine ou du serveur de noms peuvent ne pas être corrects.
Tout d'abord, modifiez la partie suivante.
/etc/nginx/nginx.conf
# user www-data;
user webmaster;
Veuillez créer un nouveau fichier ci-dessous.
/etc/nginx/sites-available/YourProjectName
server {
server_name YourHostName;
location /static {
alias /home/webmaster/YourProjectName/collected_static;
}
location /media {
alias /home/webmaster/YourProjectName/media;
}
location / {
proxy_pass http://127.0.0.1:8080;
proxy_set_header X-Forwarded_For $proxy_add_x_forwarded_for;
proxy_set_header Host $http_host;
proxy_redirect off;
proxy_set_header X-Forwarded-Proto $scheme;
}
}
sudo ln -s /etc/nginx/sites-available/YourProjectName /etc/nginx/sites-enabled/YourProjectName
sudo adduser webmaster
Clonez le projet que vous venez de pousser localement sur GitHub. La chose importante à noter ici est de le cloner sur le répertoire utilisateur (/ home / webmaster /) de l'utilisateur (webmaster) que vous venez de créer.
Souvent, il existe de nombreux articles sur la création d'environnements virtuels, ce qui est préférable, mais c'est ennuyeux et pour une raison quelconque, cela n'a pas fonctionné, alors je vais le faire normalement.
sudo apt install python3.8 python3.8-dev python3-pip
Ce dont vous avez besoin ici est un package appelé Gunicorn ainsi que Django.
sudo python3.8 -m pip install django gunicorn
Assurez-vous d'installer tous les autres packages requis pour le projet créé.
Cette fois, le contrôle de fonctionnement de Gunicorn est omis.
python3.8 manage.py makemigrations --settings YourProjectsName.settings.production
python3.8 manage.py migrate --settings YourProjectsName.settings.production
python3.8 manage.py collectstatic --settings YourProjectsName.settings.production
sudo gunicorn --daemon --bind 127.0.0.1:8080 YourProjectName.wsgi:application
Veuillez créer un nouveau fichier ci-dessous.
/etc/systemd/system/YourProjectName.service
[Unit]
Description=gunicorn
After=network.target
[Service]
WorkingDirectory=/home/webmaster/YourProjectName
ExecStart=/usr/local/bin/gunicorn --bind 127.0.0.1:8080 YourProjectName.wsgi:application
[Install]
WantedBy=multi-user.target
sudo systemctl daemon-reload
sudo systemctl restart nginx
sudo systemctl restart YourProjectName
Tapez YourHostName dans votre navigateur et vous devriez le voir.
sudo apt install certbot python-certbot-nginx
sudo certbot --nginx
sudo certbot renew --dry-run
Tout ce que vous avez à faire est de suivre les instructions. Seulement ici, c'est vraiment facile.
C'est assez difficile pour les débutants, mais même si vous êtes mentalement coincé avant de pouvoir le faire, vous pouvez certainement le faire un par un sans le jeter en chemin. J'ai pu le faire aussi. S'il vous plaît faites de votre mieux!! Comme je l'ai écrit au début, il se peut qu'il manque quelque chose, donc si vous avez des questions ou si vous trouvez une erreur, laissez un commentaire.
Recommended Posts