Richten Sie Django mit PostgreSQL und Gunicorn auf ECS unter Ubuntu 16.04 ein

Hier installieren und konfigurieren wir eine PostgreSQL-Datenbank und ** Django ** mit ** Gunicorn ** auf einer ** Alibaba Cloud ECS-Instanz ** mit Ubuntu 16.04.

Voraussetzungen

1, Alibaba Cloud Ubuntu 16.04 Instanz. 2. Eine feste IP-Adresse wird eingestellt. 3. Das Root-Passwort wird für die Instanz festgelegt.

Starten Sie eine ECS-Instanz

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

Installation der erforderlichen Pakete

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.

PostgreSQL-Einstellungen

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

Erstellen Sie eine virtuelle Python-Umgebung

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

Richten Sie ein neues Django-Projekt ein

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.

image.png

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:

image.png

Nachdem Sie Ihren Benutzernamen und Ihr Passwort eingegeben haben, klicken Sie auf die Anmeldeschaltfläche. Sie werden wie unten gezeigt zum Django-Verwaltungsbildschirm weitergeleitet.

image.png

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 eine Systemd-Servicedatei für Gunicorn

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

Setzen Sie Nginx auf Proxy Pass to Gunicorn

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.

image.png

Recommended Posts

Richten Sie Django mit PostgreSQL und Gunicorn auf ECS unter Ubuntu 16.04 ein
Richten Sie ansible-playbook unter Ubuntu 20.04 ein
Installieren Sie Docker unter Ubuntu und richten Sie die Remoteverbindung mit tls ein
Richten Sie unter Ubuntu 20.04 einen SSH-Server ein, nämlich WSL2
Installieren Sie rbenv mit apt auf Ubuntu und setzen Sie Ruby
Kontinuierliche Integration in Alibaba Cloud ECS Ubuntu-Instanzen mit Jenkins
Richten Sie GitLab mit Docker ein
Richten Sie Gitolite unter CentOS 7 ein
Richten Sie einen MineCraft Paper-Server mit Ubuntu 20.04.1 LTS ② Update ein
Hinweis: Installieren Sie PostgreSQL 9.5 unter Ubuntu 18.04
So installieren und verwenden Sie Composer auf einer ECS-Instanz unter Ubuntu 16.04
Installieren Sie Ubuntu Server 20.04 in VirtualBox auf einem Mac und stellen Sie eine SSH-Verbindung her
Installieren Sie JDK und JRE unter Ubuntu 16.10
[Ubuntu] Richten Sie einen Nukkit-Server ein
Aktivieren Sie Java 8- und Java 11-SDKs unter Ubuntu
Installieren Sie SonarQube auf der ECS-Instanz unter Ubuntu 16.04
Installieren Sie Ruby unter Ubuntu 20.04 mit rbenv
Setzen Sie Zabbix mit Docker in Ubuntu ein und überwachen Sie Docker auf demselben Host
Analysieren und visualisieren Sie CSV-Protokolle mit Excel Elastic Stack (Docker-Compose) - Richten Sie Docker-Compose ein
Hinweise zur Vorgehensweise bei der Einrichtung von EC2 mit t2.micro
Erstellen einer Rails 6- und PostgreSQL-Umgebung mit Docker
DNS über HTTPS mit Cloudflared unter Ubuntu
So richten Sie kapt ein und verwenden es
Verwenden Sie cljstyle mit Spacemacs unter Ubuntu unter WSL2
Richten Sie die Docker-Registrierung lokal unter CentOS 7 ein
Erstellen Sie OpenCV mit Java Wrapper unter Ubuntu 18.04
Führen Sie Ubuntu + ROS mit Docker auf dem Mac aus
Zusammenfassung der Umgebungskonstruktion mit rvm und postgresql
Richten Sie den Metabasisdienst unter Windows Server 2012 ein
Überwachen Sie den Docker-Container und den SystemD-Prozess auf demselben Host mit Zabbix unter Ubuntu.
Einführung eines dunklen Jupyter-Notebooks mit Pyenv- und Vim-Tastenkombinationen unter Ubuntu unter WSL 2
So richten Sie Computer Vision für die Verfolgung von Bildern und Videos mit TrackingJs ein