Allow production.py to load site config; update default port to 5500

This commit is contained in:
ComputerTech 2026-03-27 16:12:08 +00:00
parent 53b908e651
commit 3e724a5974
3 changed files with 73 additions and 3 deletions

40
bastebin.nginx.conf Normal file
View File

@ -0,0 +1,40 @@
server {
listen 80;
server_name bastebin.com www.bastebin.com;
# Static files serving - offload from Flask/Gunicorn
location /static/ {
alias /home/colby/projects/bastebin/static/;
expires 30d;
add_header Cache-Control "public, no-transform";
}
# Proxy all other requests to Gunicorn
location / {
proxy_pass http://127.0.0.1:5500;
# Standard proxy headers
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
# Timeouts and keeping connections alive
proxy_http_version 1.1;
proxy_set_header Connection "";
proxy_connect_timeout 90;
proxy_send_timeout 90;
proxy_read_timeout 90;
# Max payload size (matching 2MB config or slightly above)
client_max_body_size 5M;
# Buffer settings
proxy_buffers 16 16k;
proxy_buffer_size 32k;
}
# Log files - ensure these directories exist or use /var/log/nginx
access_log /var/log/nginx/bastebin.access.log;
error_log /var/log/nginx/bastebin.error.log;
}

View File

@ -11,7 +11,7 @@
"server": {
"host": "0.0.0.0",
"port": 5000,
"port": 5500,
"debug": false,
"secret_key": "ce81867ddcc16729b42d7ae0564140e6bcc83bcf5dbbe77b7e5b6c5aa4199347"
},

View File

@ -10,6 +10,7 @@ Usage:
"""
import argparse
import json
import multiprocessing
import os
import signal
@ -168,13 +169,42 @@ def _build_parser() -> argparse.ArgumentParser:
def main() -> None:
# 1. Load config for defaults
config_path = os.path.join(BASE_DIR, 'config.json')
config = {}
if os.path.exists(config_path):
try:
with open(config_path, 'r') as f:
config = json.load(f)
except (json.JSONDecodeError, IOError):
pass
server_cfg = config.get('server', {})
default_host = server_cfg.get('host', '0.0.0.0')
default_port = server_cfg.get('port', 5000)
# 2. Parse arguments
parser = _build_parser()
args = parser.parse_args()
# 3. Resolve merge (CLI > config > absolute defaults)
default_workers = max(2, multiprocessing.cpu_count() + 1)
# Check if user provided CLI arguments.
# args.host and args.port always have values because of 'default' in ArgumentParser.
# We'll re-parse or check the sys.argv.
host = default_host
port = default_port
# Simple check: if '--host' or '--port' is in sys.argv, use the arg value.
# Otherwise, use the config value.
if '--host' in sys.argv:
host = args.host
if '--port' in sys.argv:
port = args.port
workers = getattr(args, 'workers', None) or default_workers
host = getattr(args, 'host', '0.0.0.0')
port = getattr(args, 'port', 5000)
if args.command == 'start':
cmd_start(host, port, workers)