۴۸صنعت
+۵۰۰زیرسیستم
+۱۰۰۰پروژه
۱۸سال
شرکتصنایعسامانه‌ها و APIتماسدانلود
درس ۵ از ۸۱۸ دقیقه

نصب و استقرار

هدف درس

سرور همزاد دیجیتال (بک‌اند، پایگاه داده و رابط وب) را روی ویندوز با IIS، لینوکس یا Docker نصب کنید، فایل لایسنس را درست قرار دهید و نخستین پروژه، کلید و حساب مدیر را آماده کنید.

کجای نرم‌افزار

بیرون از رابط وب (بستهٔ نصب و فایل تنظیمات)؛ سپس کنسول مدیریت سرور: «System Design» ← «Projects» و «Users»

استقرار همزاد دیجیتال سه جزء دارد: سرور (بک‌اند)، پایگاه دادهٔ PostgreSQL و رابط وب که پشت یک دروازهٔ وب (مثلاً IIS) قرار می‌گیرد. بیشتر کار این درس بیرون از رابط انجام می‌شود؛ پس از نصب، با کنسول سرور پروژه، کلید و حساب مدیر را می‌سازید.

پیش‌نیازها

جزءنیاز
Javaنسخهٔ ۱۷ یا جدیدتر (بستهٔ ویندوز نسخهٔ ۲۱ را پیشنهاد می‌کند)
پایگاه دادهPostgreSQL نسخهٔ ۱۴ یا جدیدتر؛ یک پایگاه دادهٔ خالی کافی است و جدول‌ها را خود سرور در اولین اجرا می‌سازد
لایسنسفایل argbms.license صادرشده از ARG
ویندوز / IISIIS 10، ماژول URL Rewrite، ماژول Application Request Routing با گزینهٔ «Enable proxy»، قابلیت WebSocket Protocol در IIS و ترجیحاً NSSM برای اجرای سرویس

گام‌به‌گام: ویندوز با IIS (روش پیشنهادی)

  1. آماده‌سازی. PowerShell را با دسترسی Administrator باز کنید؛ اگر اجرای اسکریپت بسته است، فقط برای همان نشست Set-ExecutionPolicy -Scope Process Bypass را اجرا کنید. یک پایگاه دادهٔ خالی در PostgreSQL بسازید. اسکریپت‌های بسته پیش از هر کاری درستی فایل‌ها را با فهرست هش بسته می‌سنجند.
  2. نصب سرور. در پوشهٔ backend بسته، اسکریپت Install-Backend را با پوشهٔ نصب (-InstallDir)، رمز پایگاه داده (-DbPassword)، نشانی عمومی سایت دقیقاً همان‌طور که کاربر در مرورگر می‌زند (-PublicOrigin، با https://) و مسیر NSSM (-NssmPath) اجرا کنید. اسکریپت فایل تنظیمات تولید را از الگو می‌سازد، اگر نشانی با https شروع شود کوکی نشست را امن تنظیم می‌کند، فایل لایسنس را در صورت نبودن کپی می‌کند و یک سرویس ویندوز با راه‌اندازی خودکار می‌سازد.
  3. نصب رابط وب. در پوشهٔ frontend اسکریپت Install-Frontend را با نام سایت، مسیر سایت، نام میزبان، پورت و گزینهٔ -EnableArrProxy اجرا کنید. اگر سرور روی ماشین دیگری است، نشانی آن را با -BackendUrl بدهید.
  4. HTTPS. در IIS Manager از Site ← Bindings گواهی معتبر و binding امن را اضافه کنید و تغییر مسیر http به https را در همان‌جا تنظیم کنید.
  5. تأیید نصب. سرویس باید 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).

زبانهٔ Settings کنسول سرور
تنظیمات سرور پس از نصب · دسته‌های تنظیمات و نشان‌های Read Only و Requires Restart

گام‌به‌گام: راه‌اندازی اولیه پس از نصب

  1. ورود به کنسول. نشانی کنسول را باز کنید و با حساب مدیر وارد شوید. در نخستین راه‌اندازی، اگر هیچ کاربر سیستمی وجود نداشته باشد، زیرزبانهٔ Users پنجرهٔ System Setup - Create Administrator Account را نشان می‌دهد؛ دسترسی اولیه به کنسول را با تیم استقرار ARG هماهنگ کنید.
  2. ساخت پروژه. در «System Design» ← «Projects» دکمهٔ + Add Project را بزنید و پروژه را بسازید.
  3. کلید Master. در بخش API Key Management مطمئن شوید پروژه یک کلید فعال با سطح Master (Full Access) دارد؛ اگر ندارد با Generate New Key بسازید. بدون کلید فعال، ورود کاربران وب با پیام «کلید API برای پروژه یافت نشد» رد می‌شود.
  4. حساب مدیر. در پنجرهٔ ساخت مدیر، First Name *، Last Name *، Username *، Password * و Confirm Password * را پر کنید و Create Administrator Account را بزنید.
  5. تکمیل در رابط وب. با همین حساب وارد رابط وب شوید و از «تنظیمات» ← «تنظیمات پروژه» تنظیمات عمومی را کامل کنید (درس C3).
پشت صحنه: لایسنس فقط در شروع برنامه بررسی می‌شود. اگر فایل پیدا نشود، ناقص باشد یا تاریخش گذشته باشد، پیام «LICENSE FILE NOT FOUND OR INVALID!» در لاگ ثبت و برنامه پس از چند ثانیه کاملاً خاموش می‌شود؛ در حالت درست «License validated successfully» ثبت می‌شود. لایسنس ماژول، تعداد تجهیز یا کاربر را محدود نمی‌کند. برای هر پروژه یک پایگاه دادهٔ تاریخچهٔ جداگانه در همان سرور PostgreSQL خودکار ساخته می‌شود.

نکته‌ها و اشتباه‌های رایج

  • خطای 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، پروژهٔ «هولدینگ ارگ») چیزی را تغییر ندهید.

  1. وارد دمو شوید و شمارهٔ نسخهٔ رابط را از پایین صفحه یادداشت کنید.
  2. «تنظیمات» ← «تنظیمات پروژه» ← «اتصال سرور» را باز کنید و ببینید کدام اطلاعات اتصال در مرورگر نگه داشته می‌شود.
  3. Console مرورگر (F12) را باز کنید و بررسی کنید خطای اتصال WebSocket وجود ندارد؛ همان آزمونی که پس از نصب واقعی انجام می‌دهید.
  4. برای یک سرور ویندوزی فرضی فهرست پیش‌نیازها و مقدار پارامتر نشانی عمومی (مثلاً https://twin.example.com) را بنویسید و ترتیب پنج گام راه‌اندازی اولیه را از حفظ بنویسید.
باز کردن دموی زنده

آزمون درس

برای گذراندن درس دست‌کم به ۳ پرسش از ۴ پرسش پاسخ درست بدهید.

  1. ۱. اگر فایل لایسنس پیدا نشود یا منقضی باشد، سرور چه می‌کند؟
  2. ۲. چرا نصب‌گر ویندوز نشانی عمومی سایت را می‌خواهد؟
  3. ۳. کدام موتور پایگاه داده در اسکریپت‌های تولید استفاده می‌شود؟
  4. ۴. پس از ساخت پروژه، کاربران وارد رابط وب نمی‌شوند. محتمل‌ترین علت؟