Сейчас у меня проблемы с настройкой 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'},
}
}