configure nginx and front
This commit is contained in:
parent
a29095b68b
commit
0ffd513a2f
|
@ -4,4 +4,5 @@
|
|||
# Запуск локального сайта
|
||||
1. Создайте `.env` файл, рекомендуем использовать для этого шаблон `.env.example`
|
||||
2. Сгенерируйте ключи `genkeys.sh`
|
||||
3. Постройте статичные файлы `build.sh`
|
||||
3. Поднимите контейнеры `docker-compose up -d`
|
|
@ -0,0 +1,74 @@
|
|||
#!/bin/sh
|
||||
|
||||
# ----- Start commands -----
|
||||
|
||||
fatal_err() {
|
||||
echo -e "\033[31mFatal error $*\033[0m"
|
||||
}
|
||||
|
||||
# ----- End commands -----
|
||||
|
||||
|
||||
|
||||
# ----- Start safeguards -----
|
||||
|
||||
if [[ "$1" != '-a' ]]; then
|
||||
fatal_err
|
||||
echo " This script will potentially break any existing instance of Pairent."
|
||||
echo " To execute this script, re-run it with option -a as first argument."
|
||||
exit -1
|
||||
fi
|
||||
|
||||
if ! [ -f .env ]; then
|
||||
fatal_err
|
||||
echo -e " No .env file was found."
|
||||
echo -e " Please use the \033[32m.env.example\033[0m to create a dotenv file:"
|
||||
echo -e " 1. \033[34mcp .env.example .env\033[0m"
|
||||
echo -e " 2. Edit your \033[32m.env\033[0m in your favourite editor"
|
||||
exit -1
|
||||
fi
|
||||
|
||||
# ----- End safeguards -----
|
||||
|
||||
|
||||
|
||||
# ----- Start bootstrap front -----
|
||||
|
||||
echo Building frontend static files...
|
||||
|
||||
cd pairent_frontend_react
|
||||
|
||||
NPMS=('npm' 'pnpm' 'yarn')
|
||||
NPM='None'
|
||||
|
||||
for n in ${NPMS[@]}; do
|
||||
if [ -x "$(command -v "$n")" ]; then
|
||||
NPM=$n
|
||||
fi
|
||||
done
|
||||
|
||||
if [[ "$NPM" == 'None' ]]; then
|
||||
fatal_err
|
||||
echo ' No node package manager was found in your system.'
|
||||
echo ' Please install one of the following:'
|
||||
for n in ${NPMS[@]}; do
|
||||
echo -e " $n"
|
||||
done
|
||||
exit -1
|
||||
fi
|
||||
|
||||
rm -rf node_modules
|
||||
|
||||
$NPM install
|
||||
$NPM run build
|
||||
|
||||
DIST_FOLDER=$(realpath dist)
|
||||
|
||||
cd ..
|
||||
cp -r $DIST_FOLDER/* static
|
||||
cp $DIST_FOLDER/index.html pairent_backend/pairent_app/templates
|
||||
cp $DIST_FOLDER/../public/* static -r
|
||||
|
||||
echo Done building frontend static files
|
||||
|
||||
# ----- End bootstrap front -----
|
|
@ -26,13 +26,17 @@ http {
|
|||
server {
|
||||
listen 80;
|
||||
|
||||
location / {
|
||||
location ~ ^/(api|admin|index.html|/)$ {
|
||||
proxy_pass http://back;
|
||||
}
|
||||
|
||||
location /static {
|
||||
root /var/www/static;
|
||||
location / {
|
||||
root /var/www/html;
|
||||
try_files $uri $uri/ index.html;
|
||||
}
|
||||
|
||||
location ~ ^/\. {
|
||||
deny all;
|
||||
}
|
||||
}
|
||||
}
|
39
genkeys.sh
39
genkeys.sh
|
@ -56,42 +56,3 @@ ln -s .env pairent_backend/.env
|
|||
# ----- End bootstrap back -----
|
||||
|
||||
exit
|
||||
|
||||
# ----- Start bootstrap front -----
|
||||
|
||||
echo Building frontend static files...
|
||||
|
||||
cd pairent_frontend_react
|
||||
|
||||
NPMS=('npm' 'pnpm' 'yarn')
|
||||
NPM='None'
|
||||
|
||||
for n in ${NPMS[@]}; do
|
||||
if [ -x "$(command -v "$n")" ]; then
|
||||
NPM=$n
|
||||
fi
|
||||
done
|
||||
|
||||
if [[ "$NPM" == 'None' ]]; then
|
||||
fatal_err
|
||||
echo ' No node package manager was found in your system.'
|
||||
echo ' Please install one of the following:'
|
||||
for n in ${NPMS[@]}; do
|
||||
echo -e " $n"
|
||||
done
|
||||
exit -1
|
||||
fi
|
||||
|
||||
rm -rf node_modules
|
||||
|
||||
$NPM install
|
||||
$NPM run build
|
||||
|
||||
DIST_FOLDER=$(realpath dist)
|
||||
|
||||
cd ..
|
||||
cp -r $DIST_FOLDER/* static
|
||||
|
||||
echo Done building frontend static files
|
||||
|
||||
# ----- End bootstrap front -----
|
|
@ -3,4 +3,4 @@
|
|||
PYTHON='/usr/bin/env python3'
|
||||
|
||||
$PYTHON manage.py migrate
|
||||
$PYTHON manage.py runserver 0.0.0.0:80
|
||||
$PYTHON -m gunicorn -w 3 -b 0.0.0.0:80 pairent_backend.wsgi
|
|
@ -0,0 +1 @@
|
|||
templates/index.html
|
|
@ -21,7 +21,7 @@ from .serializer import (ApartamentListSerializer,
|
|||
|
||||
from .authlib import *
|
||||
|
||||
import json, math, random, re, requests, oidc_client, base64, uuid, time, ipware as iplib
|
||||
import json, math, random, re, requests, base64, uuid, time, ipware as iplib
|
||||
ipware = iplib.IpWare();
|
||||
|
||||
class ApartamentViewSet(viewsets.ReadOnlyModelViewSet):
|
||||
|
|
|
@ -20,12 +20,12 @@ BASE_DIR = Path(__file__).resolve().parent.parent
|
|||
# Quick-start development settings - unsuitable for production
|
||||
# See https://docs.djangoproject.com/en/4.1/howto/deployment/checklist/
|
||||
|
||||
DOTENV = dotenv_values(BASE_DIR / '..' / '.env');
|
||||
DOTENV = dotenv_values(BASE_DIR / '.env');
|
||||
|
||||
# SECURITY WARNING: keep the secret key used in production secret!
|
||||
SECRET_KEY = DOTENV['DJANGO_KEY']
|
||||
# SECURITY WARNING: don't run with debug turned on in production!
|
||||
DEBUG = DOTENV['APP_DEBUG'] == 'true'
|
||||
DEBUG = True#DOTENV['APP_DEBUG'] == 'true'
|
||||
|
||||
ALLOWED_HOSTS = ['*']
|
||||
|
||||
|
@ -74,7 +74,9 @@ ROOT_URLCONF = 'pairent_backend.urls'
|
|||
TEMPLATES = [
|
||||
{
|
||||
'BACKEND': 'django.template.backends.django.DjangoTemplates',
|
||||
'DIRS': [],
|
||||
'DIRS': [
|
||||
'templates/'
|
||||
],
|
||||
'APP_DIRS': True,
|
||||
'OPTIONS': {
|
||||
'context_processors': [
|
||||
|
@ -97,10 +99,10 @@ DATABASES = {
|
|||
'default': {
|
||||
'ENGINE': 'django.db.backends.mysql',
|
||||
'NAME': 'pairent_db',
|
||||
'USER': 'django',
|
||||
'PASSWORD': 'Budnya1924$',
|
||||
'HOST': '178.20.44.123',
|
||||
'PORT': '3306',
|
||||
'USER': DOTENV['DB_USER'],
|
||||
'PASSWORD': DOTENV['DB_PASSWORD'],
|
||||
'HOST': DOTENV['DB_HOST'],
|
||||
'PORT': DOTENV['DB_PORT'],
|
||||
'OPTIONS': {
|
||||
'init_command': "SET sql_mode='STRICT_TRANS_TABLES'"
|
||||
}
|
||||
|
|
|
@ -1,20 +0,0 @@
|
|||
<!DOCTYPE html>
|
||||
<html lang="en">
|
||||
<head>
|
||||
<meta charset="utf-8" />
|
||||
<title>Pairent</title>
|
||||
<link rel="preconnect" href="https://fonts.googleapis.com" />
|
||||
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin />
|
||||
<link
|
||||
href="https://fonts.googleapis.com/css2?family=Inter:wght@400;500;600;700&display=swap"
|
||||
rel="stylesheet"
|
||||
/>
|
||||
<script type="module" crossorigin src="/assets/index-dc786e36.js"></script>
|
||||
<link rel="stylesheet" href="/assets/index-b130f2c5.css">
|
||||
</head>
|
||||
<body>
|
||||
<noscript>You need to enable JavaScript to run this app.</noscript>
|
||||
<div id="root"></div>
|
||||
|
||||
</body>
|
||||
</html>
|
|
@ -16,9 +16,10 @@ Including another URLconf
|
|||
from django.template import loader
|
||||
from django.contrib import admin
|
||||
from django.urls import path, include
|
||||
from django.http import HttpResponse
|
||||
|
||||
def root_url(req):
|
||||
return loader.get_template('index.html').render()
|
||||
return HttpResponse(loader.get_template('index.html').render())
|
||||
|
||||
urlpatterns = [
|
||||
path('admin/', admin.site.urls),
|
||||
|
|
|
@ -5,4 +5,5 @@ django-cors-headers
|
|||
Pillow
|
||||
requests
|
||||
python-ipware
|
||||
python-dotenv
|
||||
python-dotenv
|
||||
gunicorn
|
|
@ -3,6 +3,7 @@
|
|||
"version": "0.1.0",
|
||||
"private": true,
|
||||
"type": "module",
|
||||
"homepage": "/static/dist",
|
||||
"dependencies": {
|
||||
"axios": "^1.4.0",
|
||||
"bootstrap": "^5.2.3",
|
||||
|
|
|
@ -5,6 +5,6 @@ export default {
|
|||
plugins: [
|
||||
react()
|
||||
],
|
||||
publicDir: '/static/dist'
|
||||
publicDir: 'static/dist',
|
||||
|
||||
}
|
|
@ -0,0 +1,2 @@
|
|||
*
|
||||
!.gitignore
|
Loading…
Reference in New Issue