502 Отображается неверная ошибка шлюза, истекло время ожидания - PullRequest
0 голосов
/ 16 июня 2020

Сейчас у меня проблемы с настройкой nginx и Gunicorn. После того, как они оба включены и go на IP-адрес, установленный digitalocean, мне потребуется 5 минут, чтобы показать мне 502 Bad Gateway Nginx. После этого я получаю сообщение об ошибке:

«OperationalError не может подключиться к серверу: время ожидания соединения истекло. Сервер работает на хосте» myproject- postgres -staging-db-do-user-6482921-0 .db.ondigitalocean.com "(64.225.42.160) и принимать TCP / IP-соединения на порт 25060?"

Я пробовал разные вещи с моими конфигурациями nginx и Gunicorn, а также settings.py, но безрезультатно. Я не уверен, что я сделал что-то не так в отношении этих методов, поэтому я не получил никаких результатов, но у меня нет идей. Вот мой код для справки.

Nginx config:

# You should look at the following URL's in order to grasp a solid understanding
# of Nginx configuration files in order to fully unleash the power of Nginx.
# https://www.nginx.com/resources/wiki/start/
# https://www.nginx.com/resources/wiki/start/topics/tutorials/config_pitfalls/
# https://wiki.debian.org/Nginx/DirectoryStructure
#
server {

    listen 80 default_server;
    listen [::]:80 default_server;
    server_name myproject.app www.myproject.app IP ADDRESS;    
    error_log /home/myuser/nginxError.log warn;
    access_log /home/myuser/nginx.log ;

    server_tokens off;
    add_header X-Frame-Options SAMEORIGIN;
    add_header X-Content-Type-Options nosniff;
    add_header X-XSS-Protection "1; mode=block";
    add_header Strict-Transport-Security "max-age=31536000; includeSubdomains; preload";
    add_header Referrer-Policy: strict-origin-when-cross-origin;
    add_header Feature-Policy: *;
    add_header Content-Security-Policy: default-src ;


    location /static {
        alias /My-Project/backend/staticfiles;
    }

    location / {
        include proxy_params;
        proxy_pass http://unix:/My-Project/backend.sock;
        proxy_connect_timeout       300;
        proxy_send_timeout          300;
        proxy_read_timeout          300;
        send_timeout                300;
    }


    # listen 443 ssl; # managed by Certbot
    # ssl_certificate /etc/letsencrypt/live/myproject.app/fullchain.pem; # managed by Certbot
    # ssl_certificate_key /etc/letsencrypt/live/myproject.app/privkey.pem; # managed by Certbot
    # include /etc/letsencrypt/options-ssl-nginx.conf; # managed by Certbot
    # ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem; # managed by Certbot


}

server {
    if ($host = www.myproject.app) {
        return 301 http://$host$request_uri;
    } # managed by Certbot


    if ($host = myproject.app) {
        return 301 http://$host$request_uri;
    } # managed by Certbot

    if ($host = IP ADDRESS) {
        return 301 http://$host$request_uri;
    } # managed by Certbot



    server_name myproject.app www.myproject.app IP ADDRESS;
    listen 80;
    # return 404; # managed by Certbot




}

gunicorn.service

[Unit]
Description=gunicorn daemon
After=network.target
[Service]
User=root
Group=www-data
WorkingDirectory=/My-Project/backend
ExecStart=/usr/local/bin/gunicorn --log-file /home/myuser/gunicorn.log --log-level error --timeout 600 --workers 10 --threads 9 --bind unix:/My-Project/backend.sock main.wsgi
[Install]
WantedBy=multi-user.target

Ошибка при попытке миграции

root@mycontainer:/My-Project/backend# sudo python3 manage.py makemigrations
Traceback (most recent call last):
  File "/usr/local/lib/python3.6/dist-packages/django/db/backends/base/base.py", line 220, in ensure_connection
    self.connect()
  File "/usr/local/lib/python3.6/dist-packages/django/utils/asyncio.py", line 26, in inner
    return func(*args, **kwargs)
  File "/usr/local/lib/python3.6/dist-packages/django/db/backends/base/base.py", line 197, in connect
    self.connection = self.get_new_connection(conn_params)
  File "/usr/local/lib/python3.6/dist-packages/django/utils/asyncio.py", line 26, in inner
    return func(*args, **kwargs)
  File "/usr/local/lib/python3.6/dist-packages/django/db/backends/postgresql/base.py", line 185, in get_new_connection
    connection = Database.connect(**conn_params)
  File "/usr/local/lib/python3.6/dist-packages/psycopg2/__init__.py", line 127, in connect
    conn = _connect(dsn, connection_factory=connection_factory, **kwasync)
psycopg2.OperationalError: could not connect to server: Connection timed out
        Is the server running on host "myproject-postgres-staging-db-do-user-6482921-0.db.ondigitalocean.com" (64.225.42.160) and accepting
        TCP/IP connections on port 25060?
The above exception was the direct cause of the following exception:
Traceback (most recent call last):
  File "manage.py", line 21, in <module>
    main()
  File "manage.py", line 17, in main
    execute_from_command_line(sys.argv)
  File "/usr/local/lib/python3.6/dist-packages/django/core/management/__init__.py", line 401, in execute_from_command_line
    utility.execute()
  File "/usr/local/lib/python3.6/dist-packages/django/core/management/__init__.py", line 395, in execute
    self.fetch_command(subcommand).run_from_argv(self.argv)
  File "/usr/local/lib/python3.6/dist-packages/django/core/management/base.py", line 328, in run_from_argv
    self.execute(*args, **cmd_options)
  File "/usr/local/lib/python3.6/dist-packages/django/core/management/base.py", line 369, in execute
    output = self.handle(*args, **options)
  File "/usr/local/lib/python3.6/dist-packages/django/core/management/base.py", line 83, in wrapped
    res = handle_func(*args, **kwargs)
  File "/usr/local/lib/python3.6/dist-packages/django/core/management/commands/makemigrations.py", line 101, in handle
    loader.check_consistent_history(connection)
  File "/usr/local/lib/python3.6/dist-packages/django/db/migrations/loader.py", line 283, in check_consistent_history
    applied = recorder.applied_migrations()
  File "/usr/local/lib/python3.6/dist-packages/django/db/migrations/recorder.py", line 76, in applied_migrations
    if self.has_table():
  File "/usr/local/lib/python3.6/dist-packages/django/db/migrations/recorder.py", line 56, in has_table
    return self.Migration._meta.db_table in self.connection.introspection.table_names(self.connection.cursor())
  File "/usr/local/lib/python3.6/dist-packages/django/utils/asyncio.py", line 26, in inner
    return func(*args, **kwargs)
  File "/usr/local/lib/python3.6/dist-packages/django/db/backends/base/base.py", line 260, in cursor
    return self._cursor()
  File "/usr/local/lib/python3.6/dist-packages/django/db/backends/base/base.py", line 236, in _cursor
    self.ensure_connection()
  File "/usr/local/lib/python3.6/dist-packages/django/utils/asyncio.py", line 26, in inner
    return func(*args, **kwargs)
  File "/usr/local/lib/python3.6/dist-packages/django/db/backends/base/base.py", line 220, in ensure_connection
    self.connect()
  File "/usr/local/lib/python3.6/dist-packages/django/db/utils.py", line 90, in __exit__
    raise dj_exc_value.with_traceback(traceback) from exc_value
  File "/usr/local/lib/python3.6/dist-packages/django/db/backends/base/base.py", line 220, in ensure_connection
    self.connect()
  File "/usr/local/lib/python3.6/dist-packages/django/utils/asyncio.py", line 26, in inner
    return func(*args, **kwargs)
  File "/usr/local/lib/python3.6/dist-packages/django/db/backends/base/base.py", line 197, in connect
    self.connection = self.get_new_connection(conn_params)
  File "/usr/local/lib/python3.6/dist-packages/django/utils/asyncio.py", line 26, in inner
    return func(*args, **kwargs)
  File "/usr/local/lib/python3.6/dist-packages/django/db/backends/postgresql/base.py", line 185, in get_new_connection
    connection = Database.connect(**conn_params)
  File "/usr/local/lib/python3.6/dist-packages/psycopg2/__init__.py", line 127, in connect
    conn = _connect(dsn, connection_factory=connection_factory, **kwasync)
django.db.utils.OperationalError: could not connect to server: Connection timed out
        Is the server running on host "myproject-postgres-staging-db-do-user-6482921-0.db.ondigitalocean.com" (64.225.42.160) and accepting
        TCP/IP connections on port 25060?
Sentry is attempting to send 0 pending error messages
Waiting up to 2 seconds
Press Ctrl-C to quit

Конфигурация базы данных из settings.py:

DATABASES = {
            'default': {
                'ENGINE': os.getenv("DB_ENGINE"),
                'NAME': os.getenv("DB_NAME"),
                'USER': os.getenv("DB_USER"),
                'PASSWORD': os.getenv("DB_PASSWORD"),
                'HOST': os.getenv("DB_HOST"),
                'PORT': os.getenv("DB_PORT"),
                'OPTIONS': {'sslmode': 'require'},
            }
        }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...