add persian note
This commit is contained in:
144
checklist.txt
Normal file
144
checklist.txt
Normal file
@@ -0,0 +1,144 @@
|
||||
================================================================================
|
||||
چکلیست کامل و ایمن راهاندازی Django + Gunicorn روی HestiaCP
|
||||
(نسخه نهایی - بهمن ۱۴۰۴ / فوریه ۲۰۲۶)
|
||||
================================================================================
|
||||
|
||||
پیشنیازها (قبل از شروع حتماً چک کن)
|
||||
────────────────────────────────────────
|
||||
□ دامنه در HestiaCP ساخته شده باشد (مثال: example.com)
|
||||
□ پروژه Django در مسیر زیر کپی شده باشد:
|
||||
/home/user/web/example.com/public_html/
|
||||
□ venv ساخته شده و deps نصب شده باشد:
|
||||
python3 -m venv venv
|
||||
source venv/bin/activate
|
||||
pip install -r requirements.txt # حتماً gunicorn داخلش باشه
|
||||
□ collectstatic و migrate اجرا شده باشد:
|
||||
python manage.py collectstatic --noinput
|
||||
python manage.py migrate
|
||||
□ در settings.py:
|
||||
- DEBUG = False (یا True برای تست اولیه)
|
||||
- ALLOWED_HOSTS شامل دامنه باشد (مثلاً ['example.com', '*'])
|
||||
- STATIC_URL = '/static/'
|
||||
- STATIC_ROOT درست تنظیم شده باشد (معمولاً BASE_DIR / 'staticfiles')
|
||||
□ کاربر و گروه db.sqlite3 درست باشد (بعد از مرحله ۳ دوباره چک میکنیم)
|
||||
|
||||
مرحله ۱ – قرار دادن تمپلیتهای سفارشی NGINX
|
||||
────────────────────────────────────────
|
||||
□ فایلهای زیر را مستقیماً در این مسیر کپی کن (نه داخل فولدر جدا!):
|
||||
/usr/local/hestia/data/templates/web/nginx/django-gunicorn.tpl
|
||||
/usr/local/hestia/data/templates/web/nginx/django-gunicorn.stpl
|
||||
|
||||
□ محتوای پیشنهادی (اگر هنوز نداری، جایگزین کن):
|
||||
|
||||
django-gunicorn.tpl (HTTP):
|
||||
server {
|
||||
listen %ip%:%proxy_port%;
|
||||
server_name %domain_idn% %alias_idn%;
|
||||
root %docroot%;
|
||||
index index.html;
|
||||
|
||||
access_log /var/log/%web_system%/domains/%domain%.log combined;
|
||||
error_log /var/log/%web_system%/domains/%domain%.error.log error;
|
||||
|
||||
location ~ /\.(?!well-known\/) {
|
||||
deny all;
|
||||
return 404;
|
||||
}
|
||||
|
||||
location / {
|
||||
proxy_pass http://unix:/home/%user%/web/%domain%/public_html/gunicorn.sock;
|
||||
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;
|
||||
proxy_set_header X-Forwarded-Host $host;
|
||||
proxy_set_header X-Forwarded-Url $request_uri;
|
||||
proxy_redirect off;
|
||||
}
|
||||
|
||||
location /static/ {
|
||||
alias %docroot%/staticfiles/;
|
||||
expires 30d;
|
||||
}
|
||||
|
||||
location /media/ {
|
||||
alias %docroot%/media/;
|
||||
expires 30d;
|
||||
}
|
||||
|
||||
include %home%/%user%/conf/web/%domain%/nginx.conf_*;
|
||||
}
|
||||
|
||||
(برای .stpl هم ssl_certificate و listen ssl http2 اضافه میشود)
|
||||
|
||||
□ مجوزها را درست کن:
|
||||
sudo chown root:root /usr/local/hestia/data/templates/web/nginx/django-gunicorn.*
|
||||
sudo chmod 644 /usr/local/hestia/data/templates/web/nginx/django-gunicorn.*
|
||||
|
||||
مرحله ۲ – اعمال تمپلیت در پنل HestiaCP
|
||||
────────────────────────────────────────
|
||||
□ وارد پنل شو[](https://IP:8083)
|
||||
□ Web → Edit دامنه (example.com)
|
||||
□ در بخش NGINX Template یا Proxy Template → django-gunicorn را انتخاب کن
|
||||
□ Save بزن
|
||||
□ (توصیه قوی) دامنه را force rebuild کن:
|
||||
sudo v-rebuild-web-domain user example.com yes
|
||||
sudo systemctl restart nginx
|
||||
|
||||
مرحله ۳ – ایجاد و راهاندازی سرویس Gunicorn
|
||||
────────────────────────────────────────
|
||||
□ اسکریپت را اجرا کن:
|
||||
add-gunicorn-service example.com user zamzam
|
||||
(یا sudo /path/to/add-gunicorn-service.sh ... اگر در PATH نیست)
|
||||
|
||||
□ سرویس را restart کن:
|
||||
sudo systemctl restart gunicorn-example.com
|
||||
|
||||
مرحله ۴ – چک وضعیت سرویس، سوکت و مجوزها
|
||||
────────────────────────────────────────
|
||||
□ وضعیت سرویس (باید active (running) باشد):
|
||||
sudo systemctl status gunicorn-example.com
|
||||
|
||||
□ وجود و مجوز سوکت:
|
||||
ls -l /home/user/web/example.com/public_html/gunicorn.sock
|
||||
# خروجی مورد انتظار: srw-rw---- 1 user www-data ...
|
||||
|
||||
□ اگر مجوز اشتباه بود:
|
||||
sudo chown user:www-data gunicorn.sock
|
||||
sudo chmod 660 gunicorn.sock
|
||||
sudo systemctl restart gunicorn-example.com
|
||||
|
||||
□ چک db.sqlite3 (برای جلوگیری از readonly database):
|
||||
ls -l db.sqlite3
|
||||
# باید -rw-rw-r-- 1 user www-data ...
|
||||
sudo chown user:www-data db.sqlite3
|
||||
sudo chmod 664 db.sqlite3
|
||||
|
||||
مرحله ۵ – تست نهایی سایت و لاگها
|
||||
────────────────────────────────────────
|
||||
□ سایت را در مرورگر باز کن: https://example.com
|
||||
□ تست لاگین و عملکرد
|
||||
|
||||
□ لاگ real-time Gunicorn:
|
||||
journalctl -u gunicorn-example.com -f
|
||||
|
||||
□ لاگ NGINX (اگر مشکلی بود):
|
||||
tail -f /var/log/nginx/error.log
|
||||
tail -f /home/user/web/example.com/logs/nginx.error.log # اگر وجود داشت
|
||||
|
||||
□ تست مستقیم سوکت (اختیاری):
|
||||
curl --unix-socket gunicorn.sock http://localhost/
|
||||
|
||||
نکات مهم بعد از راهاندازی
|
||||
────────────────────────────────────────
|
||||
□ DEBUG = False در production
|
||||
□ index.html را rename کن اگر صفحه پیشفرض میآید:
|
||||
mv index.html index.html.bak
|
||||
□ هر بار پروژه را آپدیت کردی:
|
||||
git pull → collectstatic → migrate → restart gunicorn
|
||||
□ برای دامنه جدید: فقط مراحل ۲، ۳، ۴ و ۵ را تکرار کن (تمپلیتها از قبل هست)
|
||||
|
||||
================================================================================
|
||||
تهیه شده توسط: محمدامین بارانزهی
|
||||
تاریخ: بهمن ۱۴۰۴ / فوریه ۲۰۲۶
|
||||
================================================================================
|
||||
Reference in New Issue
Block a user