Hier installieren und konfigurieren wir eine PostgreSQL-Datenbank und ** Django ** mit ** Gunicorn ** auf einer ** Alibaba Cloud ECS-Instanz ** mit Ubuntu 16.04.
1, Alibaba Cloud Ubuntu 16.04 Instanz. 2. Eine feste IP-Adresse wird eingestellt. 3. Das Root-Passwort wird für die Instanz festgelegt.
Melden Sie sich zunächst bei der [Alibaba Cloud ECS Console] an (https://ecs.console.aliyun.com/?spm=a2c65.11461447.0.0.7dd84f51itlGPJ). Erstellen Sie eine neue ECS-Instanz und Ubuntu als Betriebssystem mit mindestens 2 GB RAM Wählen Sie 16.04. Stellen Sie eine Verbindung zur ECS-Instanz her (https://www.alibabacloud.com/help/doc-detail/25434.htm?spm=a2c65.11461447.0.0.7dd84f51itlGPJ) und melden Sie sich als Root an.
Führen Sie nach der Anmeldung bei Ihrer Ubuntu 16.04-Instanz den folgenden Befehl aus, um Ihr Basissystem mit den neuesten verfügbaren Paketen zu aktualisieren.
apt-get update -y
Bevor Sie beginnen, müssen Sie die Pakete Nginx, PostgreSQL und Python auf Ihrem System installieren. Sie können alles mit dem folgenden Befehl installieren.
apt-get install python3-pip python3-dev libpq-dev postgresql postgresql-contrib nginx -y
Sobald alle Pakete installiert sind, können Sie mit der Konfiguration der PostgreSQL-Datenbank fortfahren.
Als Nächstes müssen Sie eine PostgreSQL-Datenbank und einen Benutzer für Ihre Django-Anwendung erstellen.
Melden Sie sich zunächst bei der interaktiven PostgreSQL-Sitzung an, indem Sie den folgenden Befehl ausführen:
sudo -u postgres psql
Verwenden Sie dann den folgenden Befehl, um eine PostgreSQL-Datenbank und einen Benutzer für Ihr Django-Projekt zu erstellen.
postgres=# CREATE DATABASE testproject;
postgres=# CREATE USER testuser WITH PASSWORD 'password';
Setzen Sie dann die Standardcodierung auf UTF-8, das Standard-Transaktionsisolationsschema auf "Festgeschrieben lesen" und die Zeitzone auf UTC mit dem folgenden Befehl:
postgres=# ALTER ROLE testuser SET client_encoding TO 'utf8';
postgres=# ALTER ROLE testuser SET default_transaction_isolation TO 'read committed';
postgres=# ALTER ROLE testuser SET timezone TO 'UTC';
Gewähren Sie dann alle Berechtigungen für die Datenbank und beenden Sie die PostgreSQL-Sitzung mit dem folgenden Befehl:
postgres=# GRANT ALL PRIVILEGES ON DATABASE testproject TO testuser;
postgres=# \q
Als Nächstes müssen Sie eine virtuelle Python-Umgebung für Ihr Projekt erstellen. Sie können dies tun, indem Sie die erforderlichen Pakete in Python in Ihrer virtuellen Umgebung installieren.
Aktualisieren Sie zunächst pip und installieren Sie die virtuelle Umgebung mit dem folgenden Befehl.
sudo -H pip3 install --upgrade pip
sudo -H pip3 install virtualenv
Erstellen Sie als Nächstes ein Verzeichnis für Ihr Projekt.
mkdir ~/testproject
cd ~/testproject
Führen Sie als Nächstes den folgenden Befehl aus, um eine virtuelle Python-Umgebung zu erstellen.
virtualenv testprojectenv
Erstellen Sie mit dem obigen Befehl ein testprojectenv-Verzeichnis unter dem testproject-Verzeichnis und installieren Sie die lokale Version von Python und die lokale Version von pip.
Als Nächstes müssen Sie alle für Ihr Projekt erforderlichen Pakete installieren.
Starten Sie zunächst die virtuelle Umgebung mit dem folgenden Befehl.
source testprojectenv/bin/activate
Installieren Sie nach dem Aktivieren der virtuellen Umgebung den PostgreSQL-Adapter Django, Gunicorn, psycopg2 mit dem folgenden Befehl.
(testprojectenv) root@mail:~/testproject# pip install django gunicorn psycopg2
Ausgabe:
Installing collected packages: pytz, django, gunicorn, psycopg2
Successfully installed django-2.1.1 gunicorn-19.9.0 psycopg2-2.7.5 pytz-2018.5
Als nächstes müssen Sie Django anweisen, die Datensätze in Ihrem Projektverzeichnis zu installieren. Dies kann mit dem folgenden Befehl erfolgen:
(testprojectenv) root@mail:~/testproject# django-admin.py startproject testproject ~/testproject
Als Nächstes müssen Sie die Server-IP-Adresse, den Datenbank-Benutzernamen und das Kennwort in der Datei settings.py definieren.
(testprojectenv) root@mail:~/testproject# nano /root/testproject/testproject/settings.py
Nehmen Sie folgende Änderungen vor:
ALLOWED_HOSTS = ['192.168.43.192']
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.postgresql_psycopg2',
'NAME': 'testproject',
'USER' : 'testuser',
'PASSWORD' : 'password',
'HOST' : 'localhost',
'PORT' : '',
}
}
STATIC_ROOT = os.path.join(BASE_DIR, 'static/')
Speichern und schließen Sie die Datei, wenn Sie fertig sind.
Als Nächstes müssen Sie das ursprüngliche Datenbankschema in die PostgreSQL-Datenbank migrieren. Dies kann durch Ausführen des folgenden Skripts erfolgen.
(testprojectenv) root@mail:~/testproject# ~/testproject/manage.py makemigrations
(testprojectenv) root@mail:~/testproject# ~/testproject/manage.py migrate
Führen Sie dann den folgenden Befehl aus, um einen Administrator für Ihr Projekt zu erstellen.
(testprojectenv) root@mail:~/testproject# ~/testproject/manage.py createsuperuser
Ausgabe:
Username (leave blank to use 'root'):
Email address: [email protected]
Password:
Password (again):
Superuser created successfully.
Führen Sie dann den folgenden Befehl aus, um den gesamten statischen Inhalt in dem von Ihnen festgelegten Verzeichnis zu erfassen.
(testprojectenv) root@mail:~/testproject# ~/testproject/manage.py collectstatic
Sie können jetzt den Django-Entwicklungsserver starten und Ihr Projekt mit dem folgenden Befehl starten:
(testprojectenv) root@mail:~/testproject# ~/testproject/manage.py runserver 0.0.0.0.0:8000
Wenn der Server erfolgreich gestartet wurde, sollte eine Ausgabe ähnlich der folgenden angezeigt werden:
Systemprüfung ausführen ...
System check identified no issues (0 silenced).
September 10, 2018 - 15:06:07
Django version 2.1.1, using settings 'testproject.settings'
Starting development server at http://0.0.0.0:8000/
Quit the server with CONTROL-C.
Öffnen Sie nun einen Webbrowser und geben Sie die URL [http: // Ihre-Server-IP: 8000] ein (http: // Ihre-Server-IP: 8000 /? Spm = a2c65.11461447.0.0.7dd84f51ha1Xoz). Anschließend werden Sie wie unten gezeigt zur Django-Indexseite weitergeleitet.
Sie können auch die URL http: // your-server-ip: 8000 / admin in Ihren Browser eingeben, um auf die Administrationsoberfläche von Django zuzugreifen. Sie werden aufgefordert, den zuvor erstellten Administrator-Benutzernamen und das Kennwort wie folgt einzugeben:
Nachdem Sie Ihren Benutzernamen und Ihr Passwort eingegeben haben, klicken Sie auf die Anmeldeschaltfläche. Sie werden wie unten gezeigt zum Django-Verwaltungsbildschirm weitergeleitet.
Drücken Sie nun STRG + C im Terminalfenster, um den Entwicklungsserver herunterzufahren.
Wenn Sie Gunicorn testen möchten, um zu testen, ob es für Ihre Anwendung geeignet ist, laden Sie das WSGI-Modul Ihres Projekts mit dem folgenden Befehl:
(testprojectenv) root@mail:~/testproject# gunicorn --bind 0.0.0.0:8000 testproject.wsgi
Wenn Sie den obigen Befehl ausführen, wird Gunicorn auf derselben Schnittstelle gestartet, auf der der Django-Entwicklungsserver ausgeführt wurde. Sie können auf die URL [http: // Ihre-Server-IP: 8000] zugreifen und diese testen (http: // Ihre-Server-IP: 8000 /? Spm = a2c65.11461447.0.0.7dd84f51ha1Xoz).
Wenn der Test abgeschlossen ist, drücken Sie STRG + C im Terminal, um Gunicorn zu stoppen.
Führen Sie dann den folgenden Befehl aus, um die virtuelle Umgebung zu deaktivieren.
(testprojectenv) root@mail:~/testproject# deactivate
Erstellen Sie als Nächstes eine systemd-Servicedatei für Gunicorn. Jetzt können Sie den Anwendungsserver einfach starten und stoppen. Es ist in Ordnung, wenn Sie die folgende Datei erstellen.
nano /etc/systemd/system/gunicorn.service
Fügen Sie die folgende Zeile hinzu.
[Unit]
Description=gunicorn daemon
After=network.target
[Service]
User=root
Group=www-data
WorkingDirectory=/root/testproject
ExecStart=/root/testproject/testprojectenv/bin/gunicorn --access-logfile - --workers 3 --bind unix:/root/testproject/testproject.sock testproject.wsgi:application
[Install]
WantedBy=multi-user.target
Speichern und schließen Sie die Datei. Starten Sie danach den Gunicorn-Dienst mit dem folgenden Befehl, damit er beim Start gestartet werden kann.
systemctl start gunicorn
systemctl enable gunicorn
Sie können den Status von Gunicorn mit dem folgenden Befehl überprüfen.
systemctl status gunicorn
Ausgabe.
gunicorn.service - gunicorn daemon
Loaded: loaded (/etc/systemd/system/gunicorn.service; enabled; vendor preset: enabled)
Active: active (running) since Mon 2018-09-10 20:58:14 IST; 10s ago
Main PID: 2377 (gunicorn)
CGroup: /system.slice/gunicorn.service
├─2377 /root/testproject/testprojectenv/bin/python3 /root/testproject/testprojectenv/bin/gunicorn --access-logfile - --workers 3 --b
├─2384 /root/testproject/testprojectenv/bin/python3 /root/testproject/testprojectenv/bin/gunicorn --access-logfile - --workers 3 --b
├─2385 /root/testproject/testprojectenv/bin/python3 /root/testproject/testprojectenv/bin/gunicorn --access-logfile - --workers 3 --b
└─2386 /root/testproject/testprojectenv/bin/python3 /root/testproject/testprojectenv/bin/gunicorn --access-logfile - --workers 3 --b
Sep 10 20:58:14 mail.example.com systemd[1]: Started gunicorn daemon.
Sep 10 20:58:14 mail.example.com gunicorn[2377]: [2018-09-10 20:58:14 +0530] [2377] [INFO] Starting gunicorn 19.9.0
Sep 10 20:58:14 mail.example.com gunicorn[2377]: [2018-09-10 20:58:14 +0530] [2377] [INFO] Listening at: unix:/root/testproject/testproject.soc
Sep 10 20:58:14 mail.example.com gunicorn[2377]: [2018-09-10 20:58:14 +0530] [2377] [INFO] Using worker: sync
Sep 10 20:58:14 mail.example.com gunicorn[2377]: [2018-09-10 20:58:14 +0530] [2384] [INFO] Booting worker with pid: 2384
Sep 10 20:58:15 mail.example.com gunicorn[2377]: [2018-09-10 20:58:15 +0530] [2385] [INFO] Booting worker with pid: 2385
Sep 10 20:58:15 mail.example.com gunicorn[2377]: [2018-09-10 20:58:15 +0530] [2386] [INFO] Booting worker with pid: 2386
Gunicorn ist jetzt eingerichtet und funktioniert. Erstellen Sie eine neue Nginx-Konfigurationsdatei im Verzeichnis etc / nginx / sites-available /.
nano /etc/nginx/sites-available/gunicorn
Fügen Sie die folgende Zeile hinzu.
server {
listen 80;
server_name 192.168.43.192;
location = /favicon.ico { access_log off; log_not_found off; }
location /static/ {
root /root/testproject;
}
location / {
include proxy_params;
proxy_pass http://unix:/root/testproject/testproject.sock;
}
}
Speichern und schließen Sie die Datei. Erstellen Sie dann einen symbolischen Link, um den virtuellen Nginx-Host zu aktivieren.
ln -s /etc/nginx/sites-available/gunicorn /etc/nginx/sites-enabled/
Testen Sie dann Nginx mit dem folgenden Befehl auf Fehlkonfigurationen:
nginx -t
Es wird ausgegeben.
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful
Führen Sie abschließend den folgenden Befehl aus, um Nginx neu zu starten.
systemctl restart nginx
Nginx ist jetzt so konfiguriert, dass Datenverkehr an den Prozess weitergeleitet wird. Öffnen Sie zum Testen einen Webbrowser und geben Sie die URL [http://your-server-ip./?spm=a2c65.11461447.0.0.7dd84f51ha1Xoz] ein. Anschließend werden Sie wie auf der folgenden Seite gezeigt zur Anwendung weitergeleitet.
Recommended Posts