From a1b018d52c54da81ac0d1c888702a00e766e472b Mon Sep 17 00:00:00 2001 From: Bossanyi Tibor Date: Thu, 23 Jul 2020 22:09:55 +0200 Subject: [PATCH] changes for production --- Docker/,key | 3 ++ Docker/Dockerfile | 17 ++++++++ Docker/docker-compose.yml | 38 ++++++++++++++++++ Docker/key.env | 2 + Docker/requirements.txt | 13 ++++++ Docker/uwsgi_params | 13 ++++++ .../aitrainer_backoffice/admin.py | 2 + .../aitrainer_backoffice/apps.py | 6 --- .../aitrainer_backoffice/settings/dev.py | 2 +- .../aitrainer_backoffice/settings/prod.py | 40 +++++++++---------- .../aitrainer_backoffice/urls.py | 2 +- aitrainer_backoffice/manage.py | 2 +- aitrainer_backoffice/start_dev.bat | 1 + 13 files changed, 110 insertions(+), 31 deletions(-) create mode 100644 Docker/,key create mode 100644 Docker/Dockerfile create mode 100644 Docker/docker-compose.yml create mode 100644 Docker/key.env create mode 100644 Docker/requirements.txt create mode 100644 Docker/uwsgi_params delete mode 100644 aitrainer_backoffice/aitrainer_backoffice/apps.py create mode 100644 aitrainer_backoffice/start_dev.bat diff --git a/Docker/,key b/Docker/,key new file mode 100644 index 0000000..718bbd4 --- /dev/null +++ b/Docker/,key @@ -0,0 +1,3 @@ +DJANGO_SETTINGS_MODULE=aitrainer_backoffice/aitrainer_backoffice/settings/prod.py +MYSQL_ROOT_PASSWORD=andio2009 +MYSQL_USER=root \ No newline at end of file diff --git a/Docker/Dockerfile b/Docker/Dockerfile new file mode 100644 index 0000000..ac65c89 --- /dev/null +++ b/Docker/Dockerfile @@ -0,0 +1,17 @@ +FROM python:3.7 +WORKDIR /aitrainer_backoffice +ADD . /aitrainer_backoffice/ +RUN apt-get update && apt-get install vim -y +RUN pip3 install uwsgi +COPY requirements.txt ./ +RUN pip install --no-cache-dir -r requirements.txt + + +COPY uwsgi_params /var/www/aitrainer.info/ +COPY .key ./ +ENV DJANGO_KEY=45u49283495j2435294234 +ENV DJANGO_SETTINGS_MODULE=aitrainer_backoffice/aitrainer_backoffice/settings/prod.py + + +ENV PORT=8000 +EXPOSE 8000 diff --git a/Docker/docker-compose.yml b/Docker/docker-compose.yml new file mode 100644 index 0000000..a192f8e --- /dev/null +++ b/Docker/docker-compose.yml @@ -0,0 +1,38 @@ +version: "3.7" +services: + web: + build: . + container_name: backoffice + environment: + - DJANGO_KEY + volumes: + - .:/aitrainer_backoffice + - media:/aitrainer_backoffice/aitrainer_backoffice/media + depends_on: + - mysql-server + ports: + - "8002:8000" + command: gunicorn aitrainer_backoffice.aitrainer_backoffice.wsgi --env DJANGO_SETTINGS_MODULE=aitrainer_backoffice.aitrainer_backoffice.settings.prod --bind 0.0.0.0:8000 --workers 3 + + mysql-server: + image: mysql:8.0.20 + restart: always + environment: + MYSQL_ROOT_PASSWORD: $MYSQL_ROOT_PASSWORD + volumes: + - mysql-data-backoffice:/var/lib/mysql + ports: + - "33060:3306" + + phpmyadmin: + image: phpmyadmin/phpmyadmin:latest + restart: always + environment: + PMA_HOST: mysql-server + PMA_USER: $MYSQL_USER + PMA_PASSWORD: $MYSQL_ROOT_PASSWORD + ports: + - "8085:80" +volumes: + mysql-data-backoffice: + media: \ No newline at end of file diff --git a/Docker/key.env b/Docker/key.env new file mode 100644 index 0000000..146ccc7 --- /dev/null +++ b/Docker/key.env @@ -0,0 +1,2 @@ +DBPASS=268ZQx9usTrvQ18kkMzpM7LwS5g7 +DBROOT=rUBDFvzlLVdVpST7c9qtFfCULvAb \ No newline at end of file diff --git a/Docker/requirements.txt b/Docker/requirements.txt new file mode 100644 index 0000000..489ab8e --- /dev/null +++ b/Docker/requirements.txt @@ -0,0 +1,13 @@ +django==3.0.8 +asgiref==3.2.10 +certifi==2020.6.20 +chardet==3.0.4 +idna==2.10 +pytz==2020.1 +sqlparse==0.3.1 +urllib3==1.25.9 +setuptools==49.2.0 +mysqlclient==2.0.1 +requests==2.24.0 +pillow==7.2.0 +gunicorn==20.0.4 \ No newline at end of file diff --git a/Docker/uwsgi_params b/Docker/uwsgi_params new file mode 100644 index 0000000..4f3b520 --- /dev/null +++ b/Docker/uwsgi_params @@ -0,0 +1,13 @@ +uwsgi_param QUERY_STRING $query_string; +uwsgi_param REQUEST_METHOD $request_method; +uwsgi_param CONTENT_TYPE $content_type; +uwsgi_param CONTENT_LENGTH $content_length; +uwsgi_param REQUEST_URI $request_uri; +uwsgi_param PATH_INFO $document_uri; +uwsgi_param DOCUMENT_ROOT $document_root; +uwsgi_param SERVER_PROTOCOL $server_protocol; +uwsgi_param REMOTE_ADDR $remote_addr; +uwsgi_param REMOTE_PORT $remote_port; +uwsgi_param SERVER_ADDR $server_addr; +uwsgi_param SERVER_PORT $server_port; +uwsgi_param SERVER_NAME $server_name; \ No newline at end of file diff --git a/aitrainer_backoffice/aitrainer_backoffice/admin.py b/aitrainer_backoffice/aitrainer_backoffice/admin.py index c096131..82e5025 100644 --- a/aitrainer_backoffice/aitrainer_backoffice/admin.py +++ b/aitrainer_backoffice/aitrainer_backoffice/admin.py @@ -89,3 +89,5 @@ class ExerciseTreeAdmin(admin.ModelAdmin): admin.site.register(ExerciseType, ExerciseTypeAdmin) admin.site.register(ExerciseTree, ExerciseTreeAdmin) +admin.autodiscover() + diff --git a/aitrainer_backoffice/aitrainer_backoffice/apps.py b/aitrainer_backoffice/aitrainer_backoffice/apps.py deleted file mode 100644 index 96c2b5b..0000000 --- a/aitrainer_backoffice/aitrainer_backoffice/apps.py +++ /dev/null @@ -1,6 +0,0 @@ -from django.apps import AppConfig - - -class BackofficeConfig(AppConfig): - name = "aitrainer_backoffice" - diff --git a/aitrainer_backoffice/aitrainer_backoffice/settings/dev.py b/aitrainer_backoffice/aitrainer_backoffice/settings/dev.py index 9ac12dc..9fec1d5 100644 --- a/aitrainer_backoffice/aitrainer_backoffice/settings/dev.py +++ b/aitrainer_backoffice/aitrainer_backoffice/settings/dev.py @@ -29,7 +29,7 @@ ALLOWED_HOSTS = ['localhost'] # Application definition INSTALLED_APPS = [ - 'aitrainer_backoffice.apps.BackofficeConfig', + 'aitrainer_backoffice', 'django.contrib.admin', 'django.contrib.auth', 'django.contrib.contenttypes', diff --git a/aitrainer_backoffice/aitrainer_backoffice/settings/prod.py b/aitrainer_backoffice/aitrainer_backoffice/settings/prod.py index dc35358..1ba4946 100644 --- a/aitrainer_backoffice/aitrainer_backoffice/settings/prod.py +++ b/aitrainer_backoffice/aitrainer_backoffice/settings/prod.py @@ -19,17 +19,17 @@ BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__))) # See https://docs.djangoproject.com/en/3.0/howto/deployment/checklist/ # SECURITY WARNING: keep the secret key used in production secret! -SECRET_KEY = os.environ['DJANGO_KEY'] ++SECRET_KEY = '9874959872==9847588jkklnkln$asdf' #os.environ['DJANGO_KEY'] # SECURITY WARNING: don't run with debug turned on in production! -DEBUG = False +DEBUG = True -ALLOWED_HOSTS = ['localhost', 'andio.eu', 'aitrainer.*'] ++ALLOWED_HOSTS = ['62.171.188.119', 'localhost', 'andio.eu', 'aitrainer.info','aitrainer.app'] # Application definition INSTALLED_APPS = [ - 'aitrainer_backoffice.apps.BackofficeConfig', + #'aitrainer_backoffice', 'django.contrib.admin', 'django.contrib.auth', 'django.contrib.contenttypes', @@ -77,8 +77,8 @@ DATABASES = { 'NAME': 'aitrainer', 'USER': 'aitrainer', 'PASSWORD': 'andio2009', - 'HOST': '127.0.0.1', - 'PORT': 3306 + 'HOST': '62.171.188.119', + 'PORT': 33060 } } @@ -117,6 +117,7 @@ USE_TZ = True # https://docs.djangoproject.com/en/3.0/howto/static-files/ STATIC_URL = '/static/' +STATIC_ROOT = os.path.join(BASE_DIR, "static") MEDIA_URL = '/media/' MEDIA_ROOT = os.path.join(BASE_DIR, 'media') @@ -130,30 +131,25 @@ LOGGING = { }, }, 'handlers': { - 'console': { - 'class': 'logging.StreamHandler', - 'filters': ['require_debug_true'], - }, + 'file': { + 'level': 'ERROR', + 'class': 'logging.FileHandler', + 'filename': '/var/log/django_error.log', + } }, 'loggers': { - 'mylogger': { - 'handlers': { - 'file': { - 'level': 'ERROR', - 'class': 'logging.FileHandler', - 'filename': '/var/log/django_error.log', - }, - }, - 'level': os.getenv('DJANGO_LOG_LEVEL', 'ERROR'), + 'django': { + 'handlers': ['file'], + 'level': 'DEBUG', 'propagate': True, }, }, } # deployment settings -SECURE_SSL_REDIRECT = False -SESSION_COOKIE_SECURE = True -CSRF_COOKIE_SECURE = True +#SECURE_SSL_REDIRECT = False +#SESSION_COOKIE_SECURE = True +#CSRF_COOKIE_SECURE = True CACHES = { 'default': { diff --git a/aitrainer_backoffice/aitrainer_backoffice/urls.py b/aitrainer_backoffice/aitrainer_backoffice/urls.py index c8dcbf5..317ca0c 100644 --- a/aitrainer_backoffice/aitrainer_backoffice/urls.py +++ b/aitrainer_backoffice/aitrainer_backoffice/urls.py @@ -18,10 +18,10 @@ Including another URLconf from django.contrib import admin from django.urls import path, include -from . import views from django.conf import settings # from django.conf.urls.static import static # n urlpatterns = [ path('admin/', admin.site.urls), ] + static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT) + diff --git a/aitrainer_backoffice/manage.py b/aitrainer_backoffice/manage.py index 30dfef0..c56b98a 100644 --- a/aitrainer_backoffice/manage.py +++ b/aitrainer_backoffice/manage.py @@ -5,7 +5,7 @@ import sys def main(): - os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'aitrainer_backoffice.settings') + os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'aitrainer_backoffice.settings.dev') try: from django.core.management import execute_from_command_line except ImportError as exc: diff --git a/aitrainer_backoffice/start_dev.bat b/aitrainer_backoffice/start_dev.bat new file mode 100644 index 0000000..da95fc0 --- /dev/null +++ b/aitrainer_backoffice/start_dev.bat @@ -0,0 +1 @@ +python manage.py runserver --settings aitrainer_backoffice.settings.dev \ No newline at end of file