Watch
1
0
Fork
You've already forked Seyyed_arc
0
forked from hesabix/arc
Seyyed_arc/hesabixAPI/deployment/systemd/hesabix-api.service

57 lines
2.2 KiB
Desktop File
Executable file

[Unit]
Description=Hesabix API (FastAPI/Uvicorn)
Documentation=https://hesabix.com/docs/api
After=network.target postgresql.service redis.service
Requires=postgresql.service
Wants=redis.service
[Service]
Type=simple
User=www-data
Group=www-data
WorkingDirectory=/var/www/arc/hesabixAPI
# Environment
Environment="PYTHONUNBUFFERED=1"
Environment="TZ=UTC"
Environment="PYTHONPATH=/var/www/arc/hesabixAPI"
Environment="PATH=/var/www/arc/hesabixAPI/.venv/bin:/usr/local/bin:/usr/bin:/bin"
# Python Optimization Flags برای بیشترین کارایی
Environment="PYTHONOPTIMIZE=1" # حذف assertions (نه docstrings - برای سازگاری با pycparser)
Environment="PYTHONDONTWRITEBYTECODE=1" # جلوگیری از نوشتن .pyc files
Environment="PYTHONHASHSEED=0" # استفاده از hash randomization برای امنیت
# اجرای API با uvicorn
# تعداد workers: 2x تعداد CPU cores برای استفاده حداکثری از منابع
# با 12 هسته CPU: 24 worker برای بهینه‌سازی عملکرد و کاهش تاخیر
# ! = اجرا با root: daemon-reload + در صورت نبود وابستگی، نصب از آینه (مثل deploy.sh)
TimeoutStartSec=300
ExecStartPre=!/var/www/arc/hesabixAPI/deployment/systemd/hesabix-api-prestart.sh
ExecStartPre=/var/www/arc/hesabixAPI/.venv/bin/python -m alembic -c /var/www/arc/hesabixAPI/alembic.ini upgrade head
ExecStart=/var/www/arc/hesabixAPI/.venv/bin/uvicorn app.main:app --host 0.0.0.0 --port 8000 --workers 24 --log-level warning
# Restart settings
Restart=always
RestartSec=10
StartLimitInterval=5min
StartLimitBurst=3
# Logging (حداقل خروجی؛ برای دیباگ موقت LOG_LEVEL=DEBUG و --log-level debug)
Environment="LOG_LEVEL=WARNING"
Environment="LOG_FORMAT=json"
StandardOutput=journal
StandardError=journal
SyslogIdentifier=hesabix-api
# Security
NoNewPrivileges=true
PrivateTmp=true
# Resource limits - حذف محدودیت‌ها برای استفاده حداکثری از منابع
# MemoryMax: حذف شده - استفاده از تمام RAM موجود
# CPUQuota: حذف شده - استفاده از تمام CPU cores
# برای سرور با 22GB RAM و 12 CPU cores، این تنظیمات بهینه است
[Install]
WantedBy=multi-user.target