<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="fa">
	<id>https://wiki.hesabix.ir/index.php?action=history&amp;feed=atom&amp;title=%D8%B1%D8%A7%D9%87%D9%86%D9%85%D8%A7%DB%8C_Hesabix_CLI</id>
	<title>راهنمای Hesabix CLI - تاریخچهٔ نسخه‌ها</title>
	<link rel="self" type="application/atom+xml" href="https://wiki.hesabix.ir/index.php?action=history&amp;feed=atom&amp;title=%D8%B1%D8%A7%D9%87%D9%86%D9%85%D8%A7%DB%8C_Hesabix_CLI"/>
	<link rel="alternate" type="text/html" href="https://wiki.hesabix.ir/index.php?title=%D8%B1%D8%A7%D9%87%D9%86%D9%85%D8%A7%DB%8C_Hesabix_CLI&amp;action=history"/>
	<updated>2026-05-25T21:50:10Z</updated>
	<subtitle>تاریخچهٔ نسخه‌ها برای این صفحه در ویکی</subtitle>
	<generator>MediaWiki 1.45.1</generator>
	<entry>
		<id>https://wiki.hesabix.ir/index.php?title=%D8%B1%D8%A7%D9%87%D9%86%D9%85%D8%A7%DB%8C_Hesabix_CLI&amp;diff=38&amp;oldid=prev</id>
		<title>Morrning: صفحه‌ای تازه حاوی «این راهنما برای سروری است که Hesabix با &#039;&#039;&#039;deploy.sh&#039;&#039;&#039; نصب شده و دستور &#039;&#039;&#039;hesabix&#039;&#039;&#039; در مسیر سیستم (معمولاً &lt;code&gt;/usr/local/bin/hesabix&lt;/code&gt;) در دسترس است. همهٔ دستورات &#039;&#039;&#039;باید با کاربر ریشه&#039;&#039;&#039; اجرا شوند (مثلاً &lt;code&gt;sudo hesabix ...&lt;/code&gt;).  == پیش‌نیازها و مفاهیم ==  * &#039;&#039;&#039;مسیر ریشهٔ نصب (APP_ROOT)...» ایجاد کرد</title>
		<link rel="alternate" type="text/html" href="https://wiki.hesabix.ir/index.php?title=%D8%B1%D8%A7%D9%87%D9%86%D9%85%D8%A7%DB%8C_Hesabix_CLI&amp;diff=38&amp;oldid=prev"/>
		<updated>2026-05-15T10:10:07Z</updated>

		<summary type="html">&lt;p&gt;صفحه‌ای تازه حاوی «این راهنما برای سروری است که Hesabix با &amp;#039;&amp;#039;&amp;#039;deploy.sh&amp;#039;&amp;#039;&amp;#039; نصب شده و دستور &amp;#039;&amp;#039;&amp;#039;hesabix&amp;#039;&amp;#039;&amp;#039; در مسیر سیستم (معمولاً &amp;lt;code&amp;gt;/usr/local/bin/hesabix&amp;lt;/code&amp;gt;) در دسترس است. همهٔ دستورات &amp;#039;&amp;#039;&amp;#039;باید با کاربر ریشه&amp;#039;&amp;#039;&amp;#039; اجرا شوند (مثلاً &amp;lt;code&amp;gt;sudo hesabix ...&amp;lt;/code&amp;gt;).  == پیش‌نیازها و مفاهیم ==  * &amp;#039;&amp;#039;&amp;#039;مسیر ریشهٔ نصب (APP_ROOT)...» ایجاد کرد&lt;/p&gt;
&lt;p&gt;&lt;b&gt;صفحهٔ تازه&lt;/b&gt;&lt;/p&gt;&lt;div&gt;این راهنما برای سروری است که Hesabix با &amp;#039;&amp;#039;&amp;#039;deploy.sh&amp;#039;&amp;#039;&amp;#039; نصب شده و دستور &amp;#039;&amp;#039;&amp;#039;hesabix&amp;#039;&amp;#039;&amp;#039; در مسیر سیستم (معمولاً &amp;lt;code&amp;gt;/usr/local/bin/hesabix&amp;lt;/code&amp;gt;) در دسترس است. همهٔ دستورات &amp;#039;&amp;#039;&amp;#039;باید با کاربر ریشه&amp;#039;&amp;#039;&amp;#039; اجرا شوند (مثلاً &amp;lt;code&amp;gt;sudo hesabix ...&amp;lt;/code&amp;gt;).&lt;br /&gt;
&lt;br /&gt;
== پیش‌نیازها و مفاهیم ==&lt;br /&gt;
&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;مسیر ریشهٔ نصب (APP_ROOT)&amp;#039;&amp;#039;&amp;#039; به‌طور پیش‌فرض &amp;lt;code&amp;gt;/opt/hesabix&amp;lt;/code&amp;gt; است. اگر متغیر محیطی &amp;lt;code&amp;gt;APP_ROOT&amp;lt;/code&amp;gt; روی سرور شما متفاوت است، اسکریپت از همان مقدار استفاده می‌کند.&lt;br /&gt;
* فایل &amp;#039;&amp;#039;&amp;#039;&amp;lt;code&amp;gt;${APP_ROOT}/.deploy_env&amp;lt;/code&amp;gt;&amp;#039;&amp;#039;&amp;#039; پس از اولین deploy ساخته می‌شود و شامل تنظیماتی مانند آدرس مخزن Git، نام شاخه، دامنهٔ API و UI است. برای دستورات &amp;lt;code&amp;gt;-update&amp;lt;/code&amp;gt; و &amp;lt;code&amp;gt;-services&amp;lt;/code&amp;gt; وجود این فایل &amp;#039;&amp;#039;&amp;#039;ضروری&amp;#039;&amp;#039;&amp;#039; است.&lt;br /&gt;
* منبع رسمی اسکریپت CLI در مخزن: &amp;lt;code&amp;gt;${APP_ROOT}/app/scripts/hesabix&amp;lt;/code&amp;gt; (معادل &amp;lt;code&amp;gt;app/scripts/hesabix&amp;lt;/code&amp;gt; در checkout).&lt;br /&gt;
* اگر بدون ریشه اجرا کنید، پیام خطا می‌گیرید و اسکریپت متوقف می‌شود.&lt;br /&gt;
&lt;br /&gt;
== خلاصهٔ دستورات ==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!دستور&lt;br /&gt;
!کاربرد&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;sudo hesabix -update&amp;lt;/code&amp;gt;&lt;br /&gt;
|به‌روزرسانی کامل از مخزن، مایگریشن، ری‌استارت سرویس‌ها، بیلد وب Flutter، همگام‌سازی فایل‌های UI و reload nginx&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;sudo hesabix -update -source URL -branch NAME&amp;lt;/code&amp;gt;&lt;br /&gt;
|همان به‌روزرسانی با &amp;#039;&amp;#039;&amp;#039;یک‌بار&amp;#039;&amp;#039;&amp;#039; نادیده گرفتن آدرس مخزن و نام شاخهٔ ذخیره‌شده در &amp;lt;code&amp;gt;.deploy_env&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;nowiki&amp;gt;stop|restart|status}&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
|کنترل واحدهای systemd هسابیکس (و در صورت نصب، pgAdmin4)&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;sudo hesabix -cli reload&amp;lt;/code&amp;gt;&lt;br /&gt;
|کپی مجدد اسکریپت CLI از مخزن به &amp;lt;code&amp;gt;/usr/local/bin/hesabix&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;sudo hesabix -h&amp;lt;/code&amp;gt; یا &amp;lt;code&amp;gt;sudo hesabix --help&amp;lt;/code&amp;gt;&lt;br /&gt;
|نمایش راهنمای کوتاه&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== hesabix -update (به‌روزرسانی سرور) ==&lt;br /&gt;
&lt;br /&gt;
=== هدف ===&lt;br /&gt;
اجرای &amp;#039;&amp;#039;&amp;#039;pipeline کامل به‌روزرسانی&amp;#039;&amp;#039;&amp;#039; که در فایل &amp;lt;code&amp;gt;${APP_ROOT}/app/update.sh&amp;lt;/code&amp;gt; پیاده‌سازی شده است: گرفتن آخرین کد از Git، نصب/به‌روزرسانی وابستگی‌های Python، اجرای مایگریشن Alembic، ری‌استارت سرویس‌های بک‌اند، بیلد release وب Flutter، کپی خروجی به وب‌سرور و در نهایت &amp;#039;&amp;#039;&amp;#039;reload&amp;#039;&amp;#039;&amp;#039; nginx.&lt;br /&gt;
&lt;br /&gt;
=== نحوهٔ اجرا ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sudo hesabix -update&lt;br /&gt;
sudo hesabix -update -source https://example.com/your-repo.git -branch main&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;&amp;lt;code&amp;gt;-source REPO_URL&amp;lt;/code&amp;gt;&amp;#039;&amp;#039;&amp;#039; (اختیاری): برای &amp;#039;&amp;#039;&amp;#039;همان اجرا&amp;#039;&amp;#039;&amp;#039; مقدار &amp;lt;code&amp;gt;REPO_URL&amp;lt;/code&amp;gt; را override می‌کند (قبل از فراخوانی &amp;lt;code&amp;gt;update.sh&amp;lt;/code&amp;gt; به صورت &amp;lt;code&amp;gt;export REPO_URL=...&amp;lt;/code&amp;gt;).&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;&amp;lt;code&amp;gt;-branch NAME&amp;lt;/code&amp;gt;&amp;#039;&amp;#039;&amp;#039; (اختیاری): برای همان اجرا نام شاخهٔ Git را override می‌کند (&amp;lt;code&amp;gt;export BRANCH=...&amp;lt;/code&amp;gt;).&lt;br /&gt;
* اگر هر دو را ندهید، مقادیر از &amp;lt;code&amp;gt;.deploy_env&amp;lt;/code&amp;gt; (پس از &amp;lt;code&amp;gt;source&amp;lt;/code&amp;gt; شدن) خوانده می‌شوند.&lt;br /&gt;
&lt;br /&gt;
=== گام‌های اصلی (خلاصهٔ فنی) ===&lt;br /&gt;
&lt;br /&gt;
# &amp;#039;&amp;#039;&amp;#039;Git:&amp;#039;&amp;#039;&amp;#039; رفتن به &amp;lt;code&amp;gt;${APP_ROOT}/app&amp;lt;/code&amp;gt;، هم‌راستا کردن remote با &amp;lt;code&amp;gt;REPO_URL&amp;lt;/code&amp;gt; در صورت تفاوت، &amp;lt;code&amp;gt;fetch&amp;lt;/code&amp;gt;، checkout شاخه روی &amp;lt;code&amp;gt;origin/&amp;amp;#x3C;BRANCH&amp;amp;#x3E;&amp;lt;/code&amp;gt; و &amp;lt;code&amp;gt;pull --ff-only&amp;lt;/code&amp;gt;. اگر pull معمولی به‌دلیل تغییرات محلی یا عدم fast-forward شکست بخورد، اسکریپت با &amp;#039;&amp;#039;&amp;#039;&amp;lt;code&amp;gt;git reset --hard origin/&amp;amp;#x3C;BRANCH&amp;amp;#x3E;&amp;lt;/code&amp;gt;&amp;#039;&amp;#039;&amp;#039; سعی در هم‌راستاسازی اجباری می‌کند (تغییرات و commitهای محلی روی آن clone از بین می‌روند).&lt;br /&gt;
# &amp;#039;&amp;#039;&amp;#039;بک‌اند:&amp;#039;&amp;#039;&amp;#039; فعال‌سازی venv در &amp;lt;code&amp;gt;hesabixAPI&amp;lt;/code&amp;gt;، تنظیم آینهٔ pip هسابیکس، نصب editable با pip، اطمینان از سازگاری جدول &amp;lt;code&amp;gt;alembic_version&amp;lt;/code&amp;gt;، اجرای &amp;lt;code&amp;gt;alembic upgrade head&amp;lt;/code&amp;gt;، &amp;lt;code&amp;gt;chown&amp;lt;/code&amp;gt; به &amp;lt;code&amp;gt;www-data&amp;lt;/code&amp;gt;، &amp;lt;code&amp;gt;systemctl restart&amp;lt;/code&amp;gt; برای &amp;lt;code&amp;gt;hesabix-api&amp;lt;/code&amp;gt;، &amp;lt;code&amp;gt;hesabix-rq-worker&amp;lt;/code&amp;gt; و &amp;lt;code&amp;gt;hesabix-notification-moderation&amp;lt;/code&amp;gt; و بررسی فعال بودن API.&lt;br /&gt;
# &amp;#039;&amp;#039;&amp;#039;فرانت (Flutter web):&amp;#039;&amp;#039;&amp;#039; به‌روزرسانی اختیاری SDK در &amp;lt;code&amp;gt;/opt/flutter&amp;lt;/code&amp;gt;، بیلد با &amp;lt;code&amp;gt;build_web.sh&amp;lt;/code&amp;gt; (حالت release، تمیز کردن، نصب وابستگی‌ها)، آدرس پایهٔ API از روی دامنه و در صورت وجود گواهی Let&amp;#039;s Encrypt (یا &amp;lt;code&amp;gt;API_PUBLIC_SCHEME&amp;lt;/code&amp;gt;)، rsync خروجی به &amp;lt;code&amp;gt;/var/www/&amp;amp;#x3C;UI_DOMAIN&amp;amp;#x3E;/&amp;lt;/code&amp;gt;.&lt;br /&gt;
# &amp;#039;&amp;#039;&amp;#039;Nginx:&amp;#039;&amp;#039;&amp;#039; تنظیم &amp;lt;code&amp;gt;client_max_body_size&amp;lt;/code&amp;gt; برای API در صورت وجود فایل کانفیگ، اجرای اسکریپت اختیاری برای قوانین کش UI، &amp;lt;code&amp;gt;nginx -t&amp;lt;/code&amp;gt; و &amp;lt;code&amp;gt;systemctl reload nginx&amp;lt;/code&amp;gt;.&lt;br /&gt;
# &amp;#039;&amp;#039;&amp;#039;سلامت API (اختیاری):&amp;#039;&amp;#039;&amp;#039; در صورت وجود &amp;lt;code&amp;gt;curl&amp;lt;/code&amp;gt;، تلاش برای فراخوانی health endpoint (خطا در این مرحله &amp;#039;&amp;#039;&amp;#039;مرگبار&amp;#039;&amp;#039;&amp;#039; نیست).&lt;br /&gt;
&lt;br /&gt;
=== لاگ ===&lt;br /&gt;
خروجیٔ زمانی به فایل &amp;#039;&amp;#039;&amp;#039;&amp;lt;code&amp;gt;${APP_ROOT}/update.log&amp;lt;/code&amp;gt;&amp;#039;&amp;#039;&amp;#039; نیز append می‌شود؛ برای عیب‌یابی پس از به‌روزرسانی این فایل را بررسی کنید.&lt;br /&gt;
&lt;br /&gt;
=== پیش‌نیازهای مهم ===&lt;br /&gt;
&lt;br /&gt;
* وجود &amp;lt;code&amp;gt;${APP_ROOT}/app/.git&amp;lt;/code&amp;gt; و متغیرهای &amp;#039;&amp;#039;&amp;#039;&amp;lt;code&amp;gt;API_DOMAIN&amp;lt;/code&amp;gt;&amp;#039;&amp;#039;&amp;#039;، &amp;#039;&amp;#039;&amp;#039;&amp;lt;code&amp;gt;UI_DOMAIN&amp;lt;/code&amp;gt;&amp;#039;&amp;#039;&amp;#039;، &amp;#039;&amp;#039;&amp;#039;&amp;lt;code&amp;gt;BRANCH&amp;lt;/code&amp;gt;&amp;#039;&amp;#039;&amp;#039;، &amp;#039;&amp;#039;&amp;#039;&amp;lt;code&amp;gt;REPO_URL&amp;lt;/code&amp;gt;&amp;#039;&amp;#039;&amp;#039; (در env یا &amp;lt;code&amp;gt;.deploy_env&amp;lt;/code&amp;gt;).&lt;br /&gt;
* وجود &amp;lt;code&amp;gt;${APP_ROOT}/.db_password&amp;lt;/code&amp;gt; برای اتصال PostgreSQL در مراحل مایگریشن.&lt;br /&gt;
* وجود venv بک‌اند: &amp;lt;code&amp;gt;hesabixAPI/.venv&amp;lt;/code&amp;gt; (در غیر این صورت باید یک بار deploy کامل انجام شده باشد).&lt;br /&gt;
* نصب Flutter در PATH سرور (طبق deploy).&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;نکتهٔ امنیتی:&amp;#039;&amp;#039;&amp;#039; اگر روی سرور تغییرات محلی در مخزن دارید که نمی‌خواهید از دست بروند، قبل از &amp;lt;code&amp;gt;-update&amp;lt;/code&amp;gt; از آن‌ها &amp;#039;&amp;#039;&amp;#039;پشتیبان&amp;#039;&amp;#039;&amp;#039; بگیرید؛ مسیر بازیابی خودکار ممکن است با reset سخت، تاریخچهٔ محلی را حذف کند.&lt;br /&gt;
&lt;br /&gt;
== hesabix -services (مدیریت سرویس‌های systemd) ==&lt;br /&gt;
&lt;br /&gt;
=== واحدهای هدف ===&lt;br /&gt;
&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;هسته (اجباری):&amp;#039;&amp;#039;&amp;#039; &amp;lt;code&amp;gt;hesabix-api&amp;lt;/code&amp;gt;، &amp;lt;code&amp;gt;hesabix-rq-worker&amp;lt;/code&amp;gt;، &amp;lt;code&amp;gt;hesabix-notification-moderation&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;اختیاری:&amp;#039;&amp;#039;&amp;#039; اگر واحد &amp;lt;code&amp;gt;pgadmin4.service&amp;lt;/code&amp;gt; روی سیستم &amp;#039;&amp;#039;&amp;#039;loaded&amp;#039;&amp;#039;&amp;#039; باشد، در start/restart/stop/status لحاظ می‌شود.&lt;br /&gt;
&lt;br /&gt;
=== اعمال‌ها ===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!عمل&lt;br /&gt;
!توضیح&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;start&amp;lt;/code&amp;gt;&lt;br /&gt;
|روشن کردن سرویس‌های هسته به ترتیب، سپس pgAdmin4 (در صورت وجود)&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;stop&amp;lt;/code&amp;gt;&lt;br /&gt;
|خاموش کردن به ترتیب &amp;#039;&amp;#039;&amp;#039;معکوس&amp;#039;&amp;#039;&amp;#039; (ابتدا pgAdmin4 در صورت وجود، سپس هسته)&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;restart&amp;lt;/code&amp;gt;&lt;br /&gt;
|تنظیم drop-in محیطی برای API (&amp;lt;code&amp;gt;HESABIX_ALLOW_SUDO_JOURNALCTL=1&amp;lt;/code&amp;gt;)، &amp;lt;code&amp;gt;daemon-reload&amp;lt;/code&amp;gt; و ری‌استارت همه&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;status&amp;lt;/code&amp;gt;&lt;br /&gt;
|نمایش وضعیت هر واحد با &amp;lt;code&amp;gt;systemctl status&amp;lt;/code&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sudo hesabix -services status&lt;br /&gt;
sudo hesabix -services restart&lt;br /&gt;
&amp;lt;/pre&amp;gt;اگر یکی از واحدهای هسته روی میزبان نصب/loaded نباشد، اسکریپت با پیام خطا خارج می‌شود و از شما می‌خواهد مرحلهٔ backend در deploy را دوباره اجرا کنید.&lt;br /&gt;
&lt;br /&gt;
== hesabix -cli reload (به‌روزرسانی خودِ دستور hesabix) ==&lt;br /&gt;
گاهی پس از &amp;lt;code&amp;gt;git pull&amp;lt;/code&amp;gt; دستی یا deploy، نسخهٔ نصب‌شده در &amp;lt;code&amp;gt;/usr/local/bin/hesabix&amp;lt;/code&amp;gt; با نسخهٔ داخل مخزن (&amp;lt;code&amp;gt;${APP_ROOT}/app/scripts/hesabix&amp;lt;/code&amp;gt;) یکی نیست. این دستور:&lt;br /&gt;
&lt;br /&gt;
* فایل منبع را از مخزن می‌خواند، در یک فایل موقت کپی می‌کند، با &amp;#039;&amp;#039;&amp;#039;sha256sum&amp;#039;&amp;#039;&amp;#039; یا &amp;#039;&amp;#039;&amp;#039;cmp&amp;#039;&amp;#039;&amp;#039; با مقصد مقایسه می‌کند؛&lt;br /&gt;
* اگر یکسان باشد: پیام «hesabix CLI is already up-to-date.» و خروج بدون تغییر؛&lt;br /&gt;
* اگر متفاوت باشد: جایگزینی اتمی با &amp;lt;code&amp;gt;mv&amp;lt;/code&amp;gt; و &amp;lt;code&amp;gt;chmod 755&amp;lt;/code&amp;gt; روی &amp;lt;code&amp;gt;/usr/local/bin/hesabix&amp;lt;/code&amp;gt;.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sudo hesabix -cli reload&lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;#039;&amp;#039;&amp;#039;مهم:&amp;#039;&amp;#039;&amp;#039; &amp;lt;code&amp;gt;-cli&amp;lt;/code&amp;gt; را &amp;#039;&amp;#039;&amp;#039;نباید&amp;#039;&amp;#039;&amp;#039; هم‌زمان با &amp;lt;code&amp;gt;-update&amp;lt;/code&amp;gt; یا &amp;lt;code&amp;gt;-services&amp;lt;/code&amp;gt; ترکیب کنید؛ اسکریپت خطا می‌دهد. همچنین &amp;lt;code&amp;gt;-update&amp;lt;/code&amp;gt; و &amp;lt;code&amp;gt;-services&amp;lt;/code&amp;gt; را &amp;#039;&amp;#039;&amp;#039;نمی‌توان&amp;#039;&amp;#039;&amp;#039; در یک خط با هم زد.&lt;br /&gt;
&lt;br /&gt;
تنها action پشتیبانی‌شده برای &amp;lt;code&amp;gt;-cli&amp;lt;/code&amp;gt; در حال حاضر &amp;#039;&amp;#039;&amp;#039;reload&amp;#039;&amp;#039;&amp;#039; است.&lt;br /&gt;
&lt;br /&gt;
== محدودیت‌های ترکیب آرگومان‌ها ==&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;code&amp;gt;-cli ...&amp;lt;/code&amp;gt; &amp;#039;&amp;#039;&amp;#039;فقط به تنهایی&amp;#039;&amp;#039;&amp;#039;.&lt;br /&gt;
* یا &amp;lt;code&amp;gt;-update&amp;lt;/code&amp;gt; &amp;#039;&amp;#039;&amp;#039;یا&amp;#039;&amp;#039;&amp;#039; &amp;lt;code&amp;gt;-services ACTION&amp;lt;/code&amp;gt; — نه هر دو.&lt;br /&gt;
* بدون آرگومان (و بدون حالت خاص): در صورت وجود deploy، رفتار پیش‌فرض نمایش usage است (بسته به اینکه آیا فقط CLI خالی فراخوانی شده یا نه؛ برای دیدن قطعی، &amp;lt;code&amp;gt;-h&amp;lt;/code&amp;gt; بزنید).&lt;br /&gt;
&lt;br /&gt;
== رفع اشکال سریع ==&lt;br /&gt;
&lt;br /&gt;
* API بالا نمی‌آید پس از update: &amp;lt;code&amp;gt;journalctl -u hesabix-api -n 100 --no-pager&amp;lt;/code&amp;gt;&lt;br /&gt;
* مایگریشن خطا داد: لاگ &amp;lt;code&amp;gt;update.log&amp;lt;/code&amp;gt; و خروجی Alembic در همان اجرا&lt;br /&gt;
* Nginx reload نشد: خروجی &amp;lt;code&amp;gt;nginx -t&amp;lt;/code&amp;gt; در مرحلهٔ ۴ اسکریپت update&lt;br /&gt;
&lt;br /&gt;
----&amp;#039;&amp;#039;این صفحه از رفتار اسکریپت‌های &amp;lt;code&amp;gt;app/scripts/hesabix&amp;lt;/code&amp;gt; و &amp;lt;code&amp;gt;app/update.sh&amp;lt;/code&amp;gt; در مخزن Hesabix استخراج شده است؛ در صورت تغییر نسخه، متن را با همان فایل‌ها تطبیق دهید.&amp;#039;&amp;#039;&lt;/div&gt;</summary>
		<author><name>Morrning</name></author>
	</entry>
</feed>