strapi

استقرار برنامه‌های Strapi

(Strapi Apps)

Strapi یک headless CMS متن‌باز است که برای توسعه وب‌سایت‌ها، برنامه‌های موبایل، سایت‌های تجاری و حتی APIها به کار می‌رود. Strapi به شما این امکان را می‌دهد که بدون دانستن چیزخاصی در مورد بک‌اند یا دیتابیس‌ها، APIهای خود را خلق کنید. این سیستم APIها را بر اساس مدل‌های محتوایی، به صورت خودکار می‌سازد و در نهایت داده را بیش از پیش، ساده‌تر به نمایش می‌گذارد.

فهرست عناوین:

استقرار برنامه Strapi با دیتابیس SQLite

در صورتی که تمایلی به خواندن آموزش متنی ندارید می‌توانید ویدیوی آموزشی زیر ‌را مشاهده کنید.

پروژه و کدهای مورد استفاده در ویدیوی فوق در اینجا قابل مشاهده و دسترسی هستند.

شما می‌توانید برنامه‌ی Strapi خود را با ایجاد برنامه‌ی NodeJS در پنل کاربری لیارا و اجرای دستورliara deploy --port 3000در مسیر اصلی پروژه، بر روی لیارا مستقر کنید.

در ابتدا، باید متغیرهای محیطی موجود در فایل .env برنامه Strapi خود را طبق مستندات متغیرهای محیطی به برنامه NodeJS اضافه کنید. به عنوان مثال، متغیرهای زیر با مقادیر فرضی زیر، حتماً باید به برنامه اضافه شوند:

APP_KEYS=qDSFzezRjBb9CWRgYTNKAQ==,a425msyZKCQLciHemU5XjA==,nRmH9IqqkiKahdd9wE+AXg==,szU9KUlV56pzOVDYynbdKA==
API_TOKEN_SALT=KHPr2aDzbEhFe56iBRLa6w==
ADMIN_JWT_SECRET=thazfV/lEGoPPZAqlJGsJg==
TRANSFER_TOKEN_SALT=X7FvBRJ+T4ddz3yM2ZMv8g==
# Database
DATABASE_CLIENT=sqlite
DATABASE_FILENAME=.tmp/data.db
JWT_SECRET=qvyu4YsbaS03suqri3sZVQ==

برای دیپلوی برنامه‌های Strapi نیازی به ایجاد تغییر در فایل package.json نیست و لیارا به‌طور کامل از این CMS پشتیبانی می‌کند بنابراین تغییری در بخش scripts ایجاد نکنید.

"scripts": {
    "develop": "strapi develop",
    "start": "strapi start",
    "build": "strapi build",
    "strapi": "strapi"
},

برای استفاده از دیتابیس SQLite باید در نظر داشته باشید که فایل سیستم برنامه‌های لیارا، به صورت پیش‌فرض، Read-Only است بنابراین پس از اتمام عملیات استقرار امکان ذخیره‌سازی فایل‌های جدید در کنار فایل‌های پروژه وجود ندارد. حال برای استفاده از دیتابیس SQLite باید طبق مستندات استفاده از دیسک‌ها، یک دیسک جدید ایجاد کرده و دیسک ایجاد شده را به مسیر نگهداری داده‌های دیتابیس مونت کنید. همچنین برای آپلود media به دیسک دومی نیز، نیاز دارید که باید آن را نیز مانند دیسک اول، ایجاد کنید:

{
    "disks": [
        {
            "name": "database",
            "mountTo": "/app/.tmp"
        },
        {
            "name": "media",
            "mountTo": "/app/public/uploads"
        }
    ]
}

در نهایت پس از ثبت متغیرهای محیطی و اتصال دیسک‌ها، می‌توانید با اجرای دستور liara deploy --port 3000 برنامه Strapi خود را بدون هیچ مشکلی، در لیارا مستقر کنید.

اتصال برنامه Strapi به دیتابیس MongoDB

در صورتی که تمایلی به خواندن آموزش متنی ندارید می‌توانید ویدیوی آموزشی زیر ‌را مشاهده کنید.

پروژه و کدهای مورد استفاده در ویدیوی فوق در اینجا قابل مشاهده و دسترسی هستند.

برای اتصال برنامه Strapi خود، فقط کافیست تا در کنار برنامه NodeJS، یک دیتابیس MongoDB نیز، ایجاد کنید. سپس می‌توانید با استفاده از نرم‌افزار MongoDB Compass (یا هر ابزار دیگری) به MongoDB متصل شوید و یک دیتابیس جدید به نام strapi ایجاد کنید. در نهایت، محتوای config/database.js برنامه Strapiتان، باید مانند قطعه کد زیر باشد:

module.exports = ({ env }) => ({
  defaultConnection: 'default',
  connections: {
    default: {
      connector: 'mongoose',
      settings: {
        host: env('DATABASE_HOST', 'localhost'),
        srv: env.bool('DATABASE_SRV', false),
        port: env.int('DATABASE_PORT', 27017),
        database: env('DATABASE_NAME', 'strapi'),
        username: env('DATABASE_USERNAME', 'root'),
        password: env('DATABASE_PASSWORD', ''),
      },
      options: {
        authenticationDatabase: env('AUTHENTICATION_DATABASE', null),
        ssl: env.bool('DATABASE_SSL', false),
      },
    },
  },
});

در ادامه، باید متغیرهای محیطی مربوط به دیتابیس را به برنامه NodeJS اضافه کنید؛ بهتر است که هم دیتابیس و هم برنامه NodeJS در یک شبکه خصوصی قرار داده شوند تا از طریق اطلاعات شبکه خصوصی به دیتابیس متصل شوید؛ مثلاً:

DATABASE_HOST=mongodb
DATABASE_PORT=27017
DATABASE_NAME=strapi
DATABASE_USERNAME=root
DATABASE_PASSWORD=YDwHkbMjooP62S5Q5msD563s

پس از اتمام کارهای فوق، می‌توانید برنامه خود را با اجرای دستور liara deploy --port 3000 در لیارا مستقر کنید.

توجه داشته باشید که Strapi v4 از دیتابیس MongoDB پشتیبانی نمی‌کند و شما می‌توانید تنها در Strapi v3 از این دیتابیس استفاده کنید.

اتصال برنامه Strapi به فضای ذخیره‌سازی ابری لیارا

در صورتی که تمایلی به خواندن آموزش متنی ندارید می‌توانید ویدیوی آموزشی زیر ‌را مشاهده کنید.

پروژه و کدهای مورد استفاده در ویدیوی فوق در اینجا قابل مشاهده و دسترسی هستند.

برای اتصال برنامه Strapi خود به فضای ذخیره‌سازی ابری لیارا در ابتدا باید پکیج زیر را با استفاده از npm نصب کنید:

npm install @strapi/provider-upload-aws-s3

در ادامه، بایستی قطعه کد زیر را به فایل config/plugins.js اضافه کنید:

module.exports = ({ env }) => ({
    upload: {
      config: {
        provider: 'aws-s3',
        providerOptions: {
          accessKeyId: env('LIARA_ACCESS_KEY_ID'),
          secretAccessKey: env('LIARA_ACCESS_SECRET'),
          region: env('LIARA_REGION'),
          endpoint: env('LIARA_ENDPOINT'), // Add endpoint variable here
          params: {
            ACL: env('AWS_ACL', 'public-read'),
            signedUrlExpires: env('AWS_SIGNED_URL_EXPIRES', 15 * 60),
            Bucket: env('LIARA_BUCKET'),
          },
        },
        actionOptions: {
          upload: {},
          uploadStream: {},
          delete: {},
        },
      },
    },
  });

همچنین بایستی در فایل config/middlewares.js قطعه کد زیر را به آرایه‌های img-src و media-src اضافه کنید:

'NAME.storage.iran.liara.space',

در کد فوق، به جای NAME باید نام باکت خود را وارد کنید. در نهایت کافیست تا متغیرهای محیطی مربوط به باکت را به برنامه NodeJS که Strapi روی آن مستقر است، اضافه کنید؛ به عنوان مثال:

LIARA_ACCESS_KEY_ID=73f8u0nhgrseognt
LIARA_ACCESS_SECRET=bea78f17-904e-4e64-8d2e-f009834e41f1
LIARA_REGION=us-east-1
LIARA_ENDPOINT=https://storage.iran.liara.space
LIARA_BUCKET=strapi-bucket

سپس، می‌توانید با استفاده از دستور liara deploy --port 3000 برنامه Strapi خود را در لیارا مستقر کنید.

رفع خطای CORS

CORS به‌صورت پیش‌فرض در برنامه‌های Strapi فعال است اما درصورتی که تغییراتی در پیکربندی این برنامه به‌وجود آورده باشید باید از صحیح بودن origin وارد شده نیز اطمینان حاصل کنید:

// config/middleware.js
module.exports = {
  settings: {
    cors: {
      origin: ["https://example.com", 'https://subdomain.example.com'],
    },
  },
};

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

;