نصب و استقرار
سرور همزاد دیجیتال (بکاند، پایگاه داده و رابط وب) را روی ویندوز با IIS، لینوکس یا Docker نصب کنید، فایل لایسنس را درست قرار دهید و نخستین پروژه، کلید و حساب مدیر را آماده کنید.
بیرون از رابط وب (بستهٔ نصب و فایل تنظیمات)؛ سپس کنسول مدیریت سرور: «System Design» ← «Projects» و «Users»
استقرار همزاد دیجیتال سه جزء دارد: سرور (بکاند)، پایگاه دادهٔ PostgreSQL و رابط وب که پشت یک دروازهٔ وب (مثلاً IIS) قرار میگیرد. بیشتر کار این درس بیرون از رابط انجام میشود؛ پس از نصب، با کنسول سرور پروژه، کلید و حساب مدیر را میسازید.
پیشنیازها
| جزء | نیاز |
|---|---|
| Java | نسخهٔ ۱۷ یا جدیدتر (بستهٔ ویندوز نسخهٔ ۲۱ را پیشنهاد میکند) |
| پایگاه داده | PostgreSQL نسخهٔ ۱۴ یا جدیدتر؛ یک پایگاه دادهٔ خالی کافی است و جدولها را خود سرور در اولین اجرا میسازد |
| لایسنس | فایل argbms.license صادرشده از ARG |
| ویندوز / IIS | IIS 10، ماژول URL Rewrite، ماژول Application Request Routing با گزینهٔ «Enable proxy»، قابلیت WebSocket Protocol در IIS و ترجیحاً NSSM برای اجرای سرویس |
گامبهگام: ویندوز با IIS (روش پیشنهادی)
- آمادهسازی. PowerShell را با دسترسی Administrator باز کنید؛ اگر اجرای اسکریپت بسته است، فقط برای همان نشست
Set-ExecutionPolicy -Scope Process Bypassرا اجرا کنید. یک پایگاه دادهٔ خالی در PostgreSQL بسازید. اسکریپتهای بسته پیش از هر کاری درستی فایلها را با فهرست هش بسته میسنجند. - نصب سرور. در پوشهٔ
backendبسته، اسکریپتInstall-Backendرا با پوشهٔ نصب (-InstallDir)، رمز پایگاه داده (-DbPassword)، نشانی عمومی سایت دقیقاً همانطور که کاربر در مرورگر میزند (-PublicOrigin، باhttps://) و مسیر NSSM (-NssmPath) اجرا کنید. اسکریپت فایل تنظیمات تولید را از الگو میسازد، اگر نشانی با https شروع شود کوکی نشست را امن تنظیم میکند، فایل لایسنس را در صورت نبودن کپی میکند و یک سرویس ویندوز با راهاندازی خودکار میسازد. - نصب رابط وب. در پوشهٔ
frontendاسکریپتInstall-Frontendرا با نام سایت، مسیر سایت، نام میزبان، پورت و گزینهٔ-EnableArrProxyاجرا کنید. اگر سرور روی ماشین دیگری است، نشانی آن را با-BackendUrlبدهید. - HTTPS. در IIS Manager از Site ← Bindings گواهی معتبر و binding امن را اضافه کنید و تغییر مسیر http به https را در همانجا تنظیم کنید.
- تأیید نصب. سرویس باید Running باشد؛ سایت باز شود و ورود انجام شود؛ و در Console مرورگر (F12) خطای اتصال WebSocket دیده نشود. در کنسول سرور، زبانهٔ Overview باید RUNNING نشان دهد.

تأیید نصب · System Status برابر RUNNING و اتصال پایگاه داده Connected
لینوکس و Docker
- لینوکس (systemd): اسکریپت استقرار لینوکس با دسترسی root یک کاربر سرویس اختصاصی و سرویس systemd میسازد و پوشههای
logs،data،uploads،mapsوconfigرا آماده میکند. فایل تنظیمات تولید را ویرایش کنید (رمز پایگاه داده از متغیر محیطیDB_PASSWORDخوانده میشود)، فایل لایسنس را خودتان کنار فایل برنامه بگذارید و سرویس را start و enable کنید. سرویس با محدودیتهای امنیتی systemd و راهاندازی مجدد خودکار در صورت خطا ساخته میشود. - Docker: پیش از اجرا متغیر
POSTGRES_PASSWORDرا تنظیم کنید؛ Compose بدون آن اجرا نمیشود. دو سرویس بالا میآیند: PostgreSQL و سرور؛ دادهها (پایگاه داده، لاگ، فایلهای بارگذاریشده، نقشهها و تنظیمات) در volumeهای جدا میمانند و برنامه با کاربر غیر root اجرا میشود. رابط وب جزو Compose نیست و جداگانه پشت دروازهٔ وب مستقر میشود. فایل لایسنس داخل image نیست؛ روش قرار دادن آن در کانتینر را با تیم استقرار ARG هماهنگ کنید.
تنظیمات کلیدی فایل تولید
| تنظیم | کاربرد |
|---|---|
spring.datasource.url، username، password | اتصال پایگاه داده |
argbms.websocket.allowed-origins | نشانی عمومی سایت؛ بدون آن دادهٔ زنده پشت IIS رد میشود |
server.servlet.session.cookie.secure | روی سایت https باید true باشد |
argbms.media.upload-dir، maps.storage.path | محل فایلهای بارگذاریشده و نقشهها (در پشتیبانگیری لازماند) |
spring.jpa.hibernate.ddl-auto | پس از اولین اجرای موفق میتوانید آن را از update به validate تغییر دهید تا ساختار پایگاه داده خودکار عوض نشود |
سرویس فقط با فایل تنظیمات بیرونی اجرا میشود؛ هر تنظیمی که سرور لازم دارد باید در همین فایل باشد. تنظیمات عملیاتی دیگر (دستههای Security، Logging، Backup، Queue و …) پس از نصب از زبانهٔ Settings کنسول سرور دیده و تغییر داده میشوند (درس C4).

گامبهگام: راهاندازی اولیه پس از نصب
- ورود به کنسول. نشانی کنسول را باز کنید و با حساب مدیر وارد شوید. در نخستین راهاندازی، اگر هیچ کاربر سیستمی وجود نداشته باشد، زیرزبانهٔ Users پنجرهٔ System Setup - Create Administrator Account را نشان میدهد؛ دسترسی اولیه به کنسول را با تیم استقرار ARG هماهنگ کنید.
- ساخت پروژه. در «System Design» ← «Projects» دکمهٔ + Add Project را بزنید و پروژه را بسازید.
- کلید Master. در بخش API Key Management مطمئن شوید پروژه یک کلید فعال با سطح Master (Full Access) دارد؛ اگر ندارد با Generate New Key بسازید. بدون کلید فعال، ورود کاربران وب با پیام «کلید API برای پروژه یافت نشد» رد میشود.
- حساب مدیر. در پنجرهٔ ساخت مدیر، First Name *، Last Name *، Username *، Password * و Confirm Password * را پر کنید و Create Administrator Account را بزنید.
- تکمیل در رابط وب. با همین حساب وارد رابط وب شوید و از «تنظیمات» ← «تنظیمات پروژه» تنظیمات عمومی را کامل کنید (درس C3).
نکتهها و اشتباههای رایج
- خطای 500.19 روی همهٔ صفحهها یعنی URL Rewrite نصب نیست؛ 404 روی درخواستهای API یعنی proxy در ARR خاموش است؛ 502.3 یعنی سرور بالا نیست.
- صفحه باز میشود ولی مقدار زنده نمیآید: قابلیت WebSocket در IIS و برابری دقیق نشانی مجاز با نشانی مرورگر را بررسی و سرویس را restart کنید.
- ورود به کنسول نمیماند: روی سایت http، کوکی امن باید غیرفعال باشد.
- سرویسی که با ابزار داخلی ویندوز روی java ساخته شود پس از حدود ۳۰ ثانیه متوقف میشود؛ سرویس را با NSSM بسازید.
- فایل لایسنس را ویرایش نکنید؛ هر تغییری آن را نامعتبر میکند. تاریخ انقضا را در تقویم نگهداری ثبت کنید، چون انقضا در اولین راهاندازی مجدد (مثلاً پس از بهروزرسانی ویندوز) اثر میکند.
- تنظیمات ساخت رابط وب (مانند پروفایل محصول) هنگام build ثابت میشوند و تغییرشان build تازه میخواهد.
خلاصه
- Java 17+، PostgreSQL، فایل لایسنس و (در ویندوز) IIS با URL Rewrite، ARR و WebSocket.
- نشانی عمومی سایت باید دقیقاً در فهرست مبدأهای مجاز WebSocket باشد.
- لایسنس نامعتبر یعنی خاموشی کامل سرور در شروع.
- پس از نصب: پروژه ← کلید Master ← حساب مدیر ← تنظیمات پروژه.
تمرین عملی روی دموی زنده
روی دموی عمومی نمیتوان نصب کرد؛ این تمرین مشاهدهای و کاغذی است. در دمو (bms.argsrv.com، پروژهٔ «هولدینگ ارگ») چیزی را تغییر ندهید.
- وارد دمو شوید و شمارهٔ نسخهٔ رابط را از پایین صفحه یادداشت کنید.
- «تنظیمات» ← «تنظیمات پروژه» ← «اتصال سرور» را باز کنید و ببینید کدام اطلاعات اتصال در مرورگر نگه داشته میشود.
- Console مرورگر (F12) را باز کنید و بررسی کنید خطای اتصال WebSocket وجود ندارد؛ همان آزمونی که پس از نصب واقعی انجام میدهید.
- برای یک سرور ویندوزی فرضی فهرست پیشنیازها و مقدار پارامتر نشانی عمومی (مثلاً
https://twin.example.com) را بنویسید و ترتیب پنج گام راهاندازی اولیه را از حفظ بنویسید.
آزمون درس
برای گذراندن درس دستکم به ۳ پرسش از ۴ پرسش پاسخ درست بدهید.
- ۱. اگر فایل لایسنس پیدا نشود یا منقضی باشد، سرور چه میکند؟
- ۲. چرا نصبگر ویندوز نشانی عمومی سایت را میخواهد؟
- ۳. کدام موتور پایگاه داده در اسکریپتهای تولید استفاده میشود؟
- ۴. پس از ساخت پروژه، کاربران وارد رابط وب نمیشوند. محتملترین علت؟