From 0d66a332435723d74c00a2a08b89ca3c93576973 Mon Sep 17 00:00:00 2001 From: "oleg.vodyanov91@gmail.com" Date: Sat, 12 Apr 2025 23:53:39 +0400 Subject: [PATCH] change location --- .gitignore | 4 +++- Dockerfile.app | 20 ++++++++++++---- Dockerfile.db | 6 ++--- instalinks/{instalinks => }/__init__.py | 0 instalinks/{instalinks => }/asgi.py | 2 +- instalinks/{ => instalinks}/requirements.txt | 0 .../{ => links}/templates/links/index.html | 2 +- instalinks/{instalinks => }/settings.py | 24 ++++++++++++++----- instalinks/{instalinks => }/urls.py | 0 instalinks/{instalinks => }/wsgi.py | 8 ++++++- instalinks/manage.py => manage.py | 2 +- nginx/etc/nginx/sites-available/default | 16 +++++++++++++ nginx/etc/nginx/sites-available/instalinks | 14 ----------- running.sh | 3 +++ 14 files changed, 68 insertions(+), 33 deletions(-) rename instalinks/{instalinks => }/__init__.py (100%) rename instalinks/{instalinks => }/asgi.py (82%) rename instalinks/{ => instalinks}/requirements.txt (100%) rename instalinks/{ => links}/templates/links/index.html (97%) rename instalinks/{instalinks => }/settings.py (87%) rename instalinks/{instalinks => }/urls.py (100%) rename instalinks/{instalinks => }/wsgi.py (57%) rename instalinks/manage.py => manage.py (88%) create mode 100644 nginx/etc/nginx/sites-available/default delete mode 100644 nginx/etc/nginx/sites-available/instalinks create mode 100755 running.sh diff --git a/.gitignore b/.gitignore index cdb80ae..1037f7f 100644 --- a/.gitignore +++ b/.gitignore @@ -13,4 +13,6 @@ __pycache__/ *$py.class **/migrations/ -!*/migrations/__init__.py # Keep the init file if you ignore migrations \ No newline at end of file +!*/migrations/__init__.py # Keep the init file if you ignore migrations +instalinks/myapp.log +myapp.log \ No newline at end of file diff --git a/Dockerfile.app b/Dockerfile.app index 82d51d4..a538cb5 100644 --- a/Dockerfile.app +++ b/Dockerfile.app @@ -6,20 +6,30 @@ FROM python:3.12.9-slim-bookworm WORKDIR /app # Copy requirements first, to leverage Docker's layer caching -COPY instalinks/requirements.txt /app/ +COPY instalinks/instalinks/requirements.txt /app/ # Install dependencies -RUN pip install --no-cache-dir -r requirements.txt +RUN pip install --no-cache-dir -r requirements.txt && \ + apt update && apt install -y nginx uwsgi which gcc # Copy the rest of the source code COPY instalinks/ /app/ +COPY static /app/static +COPY nginx/etc/nginx/sites-available /etc/nginx/sites-available +COPY running.sh /app/ +COPY manage.py /app/ + +ENV DB_USER=/run/secrets/DB_USER +ENV DB_PASSWORD=/run/secrets/DB_PASSWORD +ENV DB_NAME=/run/secrets/DB_NAME # Set environment variables for Django ENV PYTHONUNBUFFERED 1 -ENV DJANGO_SETTINGS_MODULE instagram_links.settings +ENV DJANGO_SETTINGS_MODULE settings # Expose the port Django runs on -EXPOSE 8000 +# EXPOSE 8000 +EXPOSE 8080 # Default command: run the Django dev server -CMD ["gunicorn", "instalinks.wsgi:application"] \ No newline at end of file +CMD /app/running.sh \ No newline at end of file diff --git a/Dockerfile.db b/Dockerfile.db index b768647..66ac94a 100644 --- a/Dockerfile.db +++ b/Dockerfile.db @@ -4,9 +4,9 @@ FROM bitnami/postgresql:17.4.0-debian-12-r12 # Set environment variables to override default credentials -ENV POSTGRES_USER=/run/secrets/DB_USER -ENV POSTGRES_PASSWORD=/run/secrets/DB_PASSWORD -ENV POSTGRES_DB=/run/secrets/DB_NAME +#ENV POSTGRES_USER=DB_USER +#ENV POSTGRES_PASSWORD=DB_PASSWORD +#ENV POSTGRES_DB=DB_NAME # Copy the SQL init script into the entrypoint directory COPY init.sql /docker-entrypoint-initdb.d/init.sql diff --git a/instalinks/instalinks/__init__.py b/instalinks/__init__.py similarity index 100% rename from instalinks/instalinks/__init__.py rename to instalinks/__init__.py diff --git a/instalinks/instalinks/asgi.py b/instalinks/asgi.py similarity index 82% rename from instalinks/instalinks/asgi.py rename to instalinks/asgi.py index 8e90972..9517a72 100644 --- a/instalinks/instalinks/asgi.py +++ b/instalinks/asgi.py @@ -11,6 +11,6 @@ import os from django.core.asgi import get_asgi_application -os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'instalinks.settings') +os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'asettings') application = get_asgi_application() diff --git a/instalinks/requirements.txt b/instalinks/instalinks/requirements.txt similarity index 100% rename from instalinks/requirements.txt rename to instalinks/instalinks/requirements.txt diff --git a/instalinks/templates/links/index.html b/instalinks/links/templates/links/index.html similarity index 97% rename from instalinks/templates/links/index.html rename to instalinks/links/templates/links/index.html index 2f75038..5bd5d32 100644 --- a/instalinks/templates/links/index.html +++ b/instalinks/links/templates/links/index.html @@ -63,6 +63,6 @@ - + diff --git a/instalinks/instalinks/settings.py b/instalinks/settings.py similarity index 87% rename from instalinks/instalinks/settings.py rename to instalinks/settings.py index 80704eb..fe6cb5d 100644 --- a/instalinks/instalinks/settings.py +++ b/instalinks/settings.py @@ -27,7 +27,7 @@ SECRET_KEY = 'django-insecure--6^d01urjvdon#5(lf+-1qm385!$82j^q@6*&=xkm^0f@0s(h- # SECURITY WARNING: don't run with debug turned on in production! DEBUG = True -ALLOWED_HOSTS = [] +ALLOWED_HOSTS = ['.localhost', '127.0.0.1', '[::1]'] # Application definition @@ -52,7 +52,7 @@ MIDDLEWARE = [ 'django.middleware.clickjacking.XFrameOptionsMiddleware', ] -ROOT_URLCONF = 'instalinks.urls' +ROOT_URLCONF = 'urls' TEMPLATES = [ { @@ -69,10 +69,19 @@ TEMPLATES = [ }, ] +{ + "default": { + "BACKEND": "django.core.files.storage.FileSystemStorage", + }, + "staticfiles": { + "BACKEND": "django.contrib.staticfiles.storage.StaticFilesStorage", + }, +} + SETTINGS_PATH = os.path.normpath(os.path.dirname(__file__)) -WSGI_APPLICATION = 'instalinks.wsgi.application' +WSGI_APPLICATION = 'wsgi.application' # Database @@ -84,7 +93,7 @@ DATABASES = { 'NAME': os.environ.get('DB_NAME'), 'USER': os.environ.get('DB_USER'), 'PASSWORD': os.environ.get('DB_PASSWORD'), - 'HOST': 'localhost', + 'HOST': 'instagram_links_db', 'PORT': '5432', } } @@ -124,11 +133,14 @@ USE_TZ = True # Static files (CSS, JavaScript, Images) # https://docs.djangoproject.com/en/5.2/howto/static-files/ -STATIC_URL = '/static/' +STATIC_URL = 'static/' STATICFILES_DIRS = [ - os.path.join(BASE_DIR, 'static') + os.path.join(BASE_DIR, 'app/static') ] +STATIC_ROOT = os.path.join(BASE_DIR, 'staticFiles') + + # Default primary key field type # https://docs.djangoproject.com/en/5.2/ref/settings/#default-auto-field diff --git a/instalinks/instalinks/urls.py b/instalinks/urls.py similarity index 100% rename from instalinks/instalinks/urls.py rename to instalinks/urls.py diff --git a/instalinks/instalinks/wsgi.py b/instalinks/wsgi.py similarity index 57% rename from instalinks/instalinks/wsgi.py rename to instalinks/wsgi.py index 61b7853..9fad0df 100644 --- a/instalinks/instalinks/wsgi.py +++ b/instalinks/wsgi.py @@ -10,7 +10,13 @@ https://docs.djangoproject.com/en/5.2/howto/deployment/wsgi/ import os from django.core.wsgi import get_wsgi_application +from settings import BASE_DIR +import logging +logger = logging.getLogger(__name__) -os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'instalinks.settings') +os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'settings') + +logging.basicConfig(filename='myapp.log', level=logging.INFO) +logger.info(f'BASE_DIR {BASE_DIR}') application = get_wsgi_application() diff --git a/instalinks/manage.py b/manage.py similarity index 88% rename from instalinks/manage.py rename to manage.py index e548eed..1b243ab 100755 --- a/instalinks/manage.py +++ b/manage.py @@ -6,7 +6,7 @@ import sys def main(): """Run administrative tasks.""" - os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'instalinks.settings') + os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'settings') try: from django.core.management import execute_from_command_line except ImportError as exc: diff --git a/nginx/etc/nginx/sites-available/default b/nginx/etc/nginx/sites-available/default new file mode 100644 index 0000000..c43ce34 --- /dev/null +++ b/nginx/etc/nginx/sites-available/default @@ -0,0 +1,16 @@ +server { + listen 8080; + server_name myinstalinks.ru; + access_log /var/log/nginx/instalinks-acces.log; + error_log /var/log/nginx/instalinks-error.log; + + location /static/ { + alias /staticFiles/; + } + + location / { + proxy_pass http://127.0.0.1:8000; + proxy_set_header Host $host; + proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; + } + } \ No newline at end of file diff --git a/nginx/etc/nginx/sites-available/instalinks b/nginx/etc/nginx/sites-available/instalinks deleted file mode 100644 index e94d587..0000000 --- a/nginx/etc/nginx/sites-available/instalinks +++ /dev/null @@ -1,14 +0,0 @@ -server { - listen 80; - server_name instalinks.ru; - - location = /favicon.ico { access_log off; log_not_found off; } - location /static/ { - root /home/youruser/myproject; - } - - location / { - include proxy_params; - proxy_pass http://<>; - } -} \ No newline at end of file diff --git a/running.sh b/running.sh new file mode 100755 index 0000000..8c2d6ad --- /dev/null +++ b/running.sh @@ -0,0 +1,3 @@ +#!/usr/bin/env bash + +python manage.py collectstatic && service nginx start && gunicorn wsgi:application \ No newline at end of file