v0.3.2: minor push
CI / test (push) Canceled after 4s

This commit is contained in:
2026-08-08 22:19:23 +08:00
parent af3bee2609
commit 1f8822042f
5 changed files with 36 additions and 7 deletions
+1
View File
@@ -4,6 +4,7 @@
DJANGO_SETTINGS_MODULE=config.settings
DJANGO_SECRET_KEY='replace-with-at-least-50-random-characters'
DJANGO_DEBUG=false
DJANGO_USE_HTTPS=true
DJANGO_ALLOWED_HOSTS=math.example.com
DATABASE_URL='mysql://hulumath:replace-password@127.0.0.1:3307/hulumath'
+2
View File
@@ -130,6 +130,8 @@ celerybeat.pid
# Environments
.env
.env.production
.env.local
.venv
.venv-production/
env/
+12 -6
View File
@@ -10,6 +10,10 @@ PROJECT_ROOT = BASE_DIR.parent
SECRET_KEY = os.getenv("DJANGO_SECRET_KEY", "dev-only-change-before-production")
DEBUG = os.getenv("DJANGO_DEBUG", "true").lower() == "true"
USE_HTTPS = os.getenv(
"DJANGO_USE_HTTPS",
"false" if DEBUG else "true",
).lower() == "true"
if not DEBUG and SECRET_KEY == "dev-only-change-before-production":
raise ImproperlyConfigured("生产环境必须设置 DJANGO_SECRET_KEY")
ALLOWED_HOSTS = [
@@ -175,12 +179,14 @@ CSRF_COOKIE_SAMESITE = "Lax"
SECURE_PROXY_SSL_HEADER = ("HTTP_X_FORWARDED_PROTO", "https")
SECURE_CONTENT_TYPE_NOSNIFF = True
X_FRAME_OPTIONS = "DENY"
SECURE_SSL_REDIRECT = not DEBUG
SESSION_COOKIE_SECURE = not DEBUG
CSRF_COOKIE_SECURE = not DEBUG
SECURE_HSTS_SECONDS = int(os.getenv("SECURE_HSTS_SECONDS", "31536000" if not DEBUG else "0"))
SECURE_HSTS_INCLUDE_SUBDOMAINS = not DEBUG
SECURE_HSTS_PRELOAD = not DEBUG
SECURE_SSL_REDIRECT = USE_HTTPS
SESSION_COOKIE_SECURE = USE_HTTPS
CSRF_COOKIE_SECURE = USE_HTTPS
SECURE_HSTS_SECONDS = int(
os.getenv("SECURE_HSTS_SECONDS", "31536000" if USE_HTTPS else "0")
)
SECURE_HSTS_INCLUDE_SUBDOMAINS = USE_HTTPS
SECURE_HSTS_PRELOAD = USE_HTTPS
LOGGING = {
"version": 1,
+15
View File
@@ -252,6 +252,7 @@ nano .env.production
DJANGO_SETTINGS_MODULE=config.settings
DJANGO_SECRET_KEY='替换为 openssl 生成的密钥'
DJANGO_DEBUG=false
DJANGO_USE_HTTPS=true
DJANGO_ALLOWED_HOSTS=math.example.com
DATABASE_URL='mysql://hulumath:ReplaceWithStrongPassword@127.0.0.1:3307/hulumath'
@@ -278,6 +279,20 @@ chown root:root .env.production
chmod 600 .env.production
```
仅使用 IP、尚未配置域名和证书时,可临时改为:
```dotenv
DJANGO_USE_HTTPS=false
DJANGO_ALLOWED_HOSTS=117.72.28.96,127.0.0.1,localhost
CORS_ALLOWED_ORIGINS=http://117.72.28.96
CSRF_TRUSTED_ORIGINS=http://117.72.28.96
SECURE_HSTS_SECONDS=0
DEPLOY_HEALTH_HOST=117.72.28.96
```
绑定域名并申请 SSL 后,必须把 `DJANGO_USE_HTTPS` 改回 `true`,并将
Allowed Hosts、CORS、CSRF 和健康检查 Host 全部替换为正式域名。
## 9. 在宝塔创建网站
宝塔 `网站``添加站点`
+5
View File
@@ -231,7 +231,12 @@ if [ -d "$PROJECT_DIR/backend/staticfiles" ]; then
$SUDO chown -R "$DEPLOY_OWNER" "$PROJECT_DIR/backend/staticfiles"
fi
cd "$PROJECT_DIR/backend"
if [ "${DJANGO_USE_HTTPS:-true}" = "true" ]; then
"$VENV_DIR/bin/python" manage.py check --deploy --fail-level WARNING --database default
else
log "临时 HTTP 模式:部署安全检查只阻断 ERROR;绑定域名后应启用 HTTPS"
"$VENV_DIR/bin/python" manage.py check --deploy --fail-level ERROR --database default
fi
"$VENV_DIR/bin/python" manage.py check_mysql
"$VENV_DIR/bin/python" manage.py migrate --noinput
"$VENV_DIR/bin/python" manage.py collectstatic --noinput