Da ich ein Anfänger war, habe ich vor, es für Anfänger zu schreiben. Wenn Sie Fragen oder Fehler haben, hinterlassen Sie bitte einen Kommentar.
Ich sagte, es ist eine vollständige Version, aber im Gegensatz zu den meisten Artikeln werde ich sie bei der Erstellung eines Projekts nicht erklären.
Es fühlt sich an, als wäre Django 3.0 gerade veröffentlicht worden, aber ich denke nicht, dass sich mit Django 3.0 so viel ändern wird. Es funktionierte gut in dem Bereich, den ich tat.
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
Es kann genauer sein, es neu zu erstellen, als es neu zu schreiben.
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'),
}
}
Details werden später hinzugefügt.
Ich werde später sehen warum.
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
Beim Verschieben von Daten aus der Entwicklungsumgebung in die Produktionsumgebung verwenden wir GitHub im Hinblick auf die zukünftige Entwicklung. Es wird empfohlen, . \ \ Pychache \ _ \ _, db.sqlite3, collect_static / * in .gitignore anzugeben, um es vom Ziel von git auszuschließen.
Ich denke, es war schwierig, sich vorzubereiten, aber jetzt ist es Zeit, live zu gehen. Ich werde es vorerst schreiben, aber von nun an wird es eine Operation auf dem Server sein.
Bitte öffnen Sie Port 80. Stellen Sie sicher, dass Sie den Firewall-Dienst mit sudo systemctl restart neu starten.
sudo apt install nginx
Geben Sie zu diesem Zeitpunkt die Domain in Ihrem Browser ein und Sie sollten Willkommen bei nginx! Sehen. Wenn dies nicht angezeigt wird, ist die Installation möglicherweise fehlgeschlagen, die Firewall-Einstellungen sind möglicherweise nicht korrekt oder die Einstellungen für die Domäne oder den Nameserver sind möglicherweise nicht korrekt.
Bearbeiten Sie zunächst den folgenden Teil.
/etc/nginx/nginx.conf
# user www-data;
user webmaster;
Bitte erstellen Sie unten eine neue Datei.
/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
Klonen Sie das Projekt, das Sie gerade lokal auf GitHub verschoben haben. Wichtig hierbei ist, dass Sie es in das Benutzerverzeichnis (/ home / webmaster /) des gerade erstellten Benutzers (webmaster) klonen.
Oft gibt es viele Artikel über das Erstellen virtueller Umgebungen, was vorzuziehen ist, aber es ist ärgerlich und aus irgendeinem Grund hat es nicht funktioniert, also mache ich es normal.
sudo apt install python3.8 python3.8-dev python3-pip
Was Sie hier brauchen, ist ein Paket namens Gunicorn sowie Django.
sudo python3.8 -m pip install django gunicorn
Stellen Sie sicher, dass Sie alle anderen Pakete installieren, die für das erstellte Projekt erforderlich sind.
Diesmal entfällt die Funktionsprüfung von Gunicorn.
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
Bitte erstellen Sie unten eine neue Datei.
/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
Geben Sie YourHostName in Ihren Browser ein und Sie sollten es sehen.
sudo apt install certbot python-certbot-nginx
sudo certbot --nginx
sudo certbot renew --dry-run
Alles was Sie tun müssen, ist den Anweisungen zu folgen. Nur hier ist es wirklich einfach.
Für Anfänger ist es ziemlich schwierig, aber selbst wenn Sie geistig in die Enge getrieben sind, bevor Sie es tun können, können Sie es definitiv eins nach dem anderen tun, ohne es unterwegs wegzuwerfen. Ich konnte es auch tun. Bitte gib dein bestes!! Wie ich am Anfang schrieb, fehlt möglicherweise etwas. Wenn Sie also Fragen haben oder einen Fehler finden, hinterlassen Sie bitte einen Kommentar.
Recommended Posts