در قسمت قبلی از این سری پست‌های آموزشی سکو، در رابطه با برنامه‌های JAR و نحوه‌ی اجرای اون‌ها در سکو صحبت کردیم. توی این پست قصد داریم نحوه‌ی قرار دادن فایل‌های WAR در سکو رو به شما آموزش بدیم.

اما قبلش با هم بررسی می‌کنیم که فایل‌های WAR چه نوع فایل‌هایی هستن و قرار دادن اون‌ها توی برنامه چه اهمیتی داره.

برنامه WAR چیست؟

اکثرمون اسم فایل‌های JAR به گوشمون خورده و اگر کسی از ما بپرسه فایل JAR چیه با یک مقدار فکر کردن می‌تونیم یک توضیحی بهش بدیم. اما ممکنه این فکر کردن در مورد فایل‌ها و برنامه‌های WAR یک مقداری بیشتر طول بکشه.

برنامه WAR‌ در واقع به برنامه‌هایی گفته میشه که پسوند .war داشته باشن، مثلا Sample.war یک فایل یا برنامه WAR به حساب میاد.

WAR مخفف عبارت Web Application Resource یا Web Application ARchive هست. همونطور که از معنی این دو عبارت هم میشه برداشت کرد، فایل‌های WAR تمامی منابع و قسمت‌های یک برنامه‌ی وب شامل کلاس‌های جاوا، JSP‌ها، صفحات HTML، تصاویر و سایر منابع مرتبط با برنامه‌ی وب رو در بردارن.

اگر بخوایم خیلی ساده بگیم، این فایل‌ها مثل فایل‌های JAR هستن با این تفاوت که داخل اون‌ها دایرکتوری‌های مشخصی برای کدهای جاوا وجود داره. همچنین یک فایل پیکربندی به نام web.xml دارن که اکثر جزئیات مرتبط با برنامه داخل این فایل وجود داره. برای مثال web.xml به سرور برنامه میگه چه چیزی و چگونه باید اجرا بشه، مقادیر اولیه‌ی پارامترها باید چی باشن و همچنین جزئیات استقرار برنامه شامل مجوزها و امنیت به چه صورت باید باشه.

        index.html
        purchase.html
        receipt.html
        images/happybunny.gif
        WEB-INF/web.xml
        WEB-INF/classes/com/mycompany/PurchaseServlet.class
        WEB-INF/classes/com/mycompany/ReturnServlet.class
        WEB-INF/lib/thirdparty.jar

محتوای موجود توی یک فایل WAR معمولی می‌تونه شامل موارد زیر باشه:

دایرکتوری WEB-INF همون دایرکتوری مخصوصی هست که تمامی اطلاعات استقرار و کد برنامه داخلش وجود داره. این دایرکتوری توسط وب‌سرور کاملا محافظت میشه و محتوای اون برای کاربرهای خارجی برنامه قابل مشاهده نیست.

همونطور که می‌بینین، داخل همین دایرکتوری، فایل web.xml هم وجود داره.

خب پس با این تفاسیر می‌تونیم بگیم WAR یک فایل مهم برای اجرای برنامه‌های وب هست.

به همین خاطر تصمیم گرفتیم در ادامه‌ی این پست نحوه‌ی قرار دادن و اجرای برنامه WAR در سکو رو به شما آموزش بدیم.

اجرای برنامه‌ی WAR در سکو

برای این کار شما باید ۵ مرحله‌ی زیر رو به ترتیب انجام بدین:

۱. نصب داکر

با استفاده از این صفحه، ورژن داکر مورد نظر خودتون رو انتخاب و نصب کنین. 

  • توجه: که اگر داخل ایران هستین باید از روش‌های گذر از تحریم‌ها استفاده کنین!

۲. نوشتن کد برنامه

خب! حالا برنامه‌ی مورد نظرتون رو بنویسین.

 برای مثال ما اینجا یک برنامه‌ی ساده با استفاده از Spring نوشتیم:

۳.ایجاد و نوشتن داکر‌فایل

یک فایل به اسمِ Dockerfile، داخل پوشه‌ی Root پروژه ایجاد کنین و کدهای زیر رو داخلش قرار بدین:

خب اجازه بدین این دو خط کد رو یه توضیحی بدیم:

FROM tomcat:9.0-jdk8-adoptopenjdk-hotspot: 

یک نکته‌ای که باید اینجا بگیم اینه که، برای اجرای برنامه‌های WAR به Tomcat احتیاج داریم. برای همین ایمیج Tomcat رو اینجا آوردیم.

ما توی مثالمون از Tomcat، ورژنِ 9.0-jdk8-adoptopenjdk-hotspot استفاده کردیم. شما می‌تونین هر ورژنی که مورد نظر خودتون هست رو مورد استفاده قرار بدین.

پیشنهاد می‌کنیم اگر تمایل دارین اطلاعات بیشتری در مورد ایمیج‌های Tomcat به دست بیارین، به این صفحه یه سری بزنین.

/COPY target/example-0.0.1-SNAPSHOT.war  /usr/local/tomcat/webapps: 

این خط کد هم فایل WAR تولید شده توسط Maven برنامه رو (که اینجا اسمش example-0.0.1-SNAPSHOT.war هست)، داخل مسیر usr/local/tomcat/webapps کانتینر قرار می‌ده.

به همین راحتی!

برای اطلاعات بیشتر در مورد داکر‌فایل می‌تونین از این صفحه استفاده کنین.

۴. قرار دادن کدهای پروژه در Git

توی این مرحله باید کدهای پروژه رو همراه با داکرفایل در Git قرار بدین. 

فقط دقت کنین که اگر Repository شما از نوع Private هست، حتما باید Access Token بسازین.

۵. ایجاد برنامه در سکو

بعد از اینکه چهار مرحله‌ی قبلی رو انجام دادین، به مرحله‌ی آخر و جذاب ماجرا می‌رسیم.

توی این مرحله باید:

۱-  وارد پنل سکو بشین.

۲- از داخل منو، گزینه‌ی "برنامه جدید" رو انتخاب کنین. 

۳- Deploy Type برنامه رو روی Source Code قرار بدین.

۴- اطلاعات خواسته شده رو به صورت زیر وارد کنین.

  • Docker file: آدرس داکر فایل به همراه نام داکر‌فایل (در اینجا با توجه به اینکه داکر‌فایل توی پوشه‌ی اصلی پروژه قرار داره، کافیه فقط "Dockerfile" رو داخلش بنویسیم.)
  • Url: آدرس Git
  • branch: نام شاخه‌ای که تمایل دارین برنامه از اون ساخته بشه.
  • Username: در صورتی که  Repository از نوع Private باشه، لازمه نام کاربری Git خودتون رو وارد کنین.
  • Access Token:  در صورتی که  Repository از نوع Private باشه، لازمه این فیلد پر بشه.

بقیه فیلدهای برنامه‌تون رو هم با توجه به نیاز وارد کنین و بعد از اون روی "بارگذاری" کلیک کنین.

و تمام…

تبریک می‌گیم، شما موفق شدین یک برنامه WAR‌ رو، با سکو اجرا کنین.

اگر تمایل دارین با برنامه‌های JAR و نحوه‌ی اجرای اون‌ها در سکو آشنا بشین، خوندن این پست سکو رو بهتون پیشنهاد می‌کنیم.