strapi

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

(Strapi Apps)

Strapi یک CMS مبتنی بر Node.js است که با بسیاری از قابلیت‌ها مانند سادگی و تغییر‌پذیری ارائه می‌شود. حال شما می‌توانید برنامه‌ی Strapi خود را با ایجاد برنامه‌ی NodeJS در پنل کاربری لیارا و اجرای دستورliara deploy --port 3000در مسیر اصلی پروژه، بر روی لیارا مستقر کنید.

توجه داشته باشید که برای مواجه نشدن با خطای Read-only filesystem باید متغیرهای محیطی زیر را تنظیم کنید.

JWT_SECRET
API_TOKEN_SALT

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

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

استفاده از دیتابیس SQLite

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

{
    "platform": "node",
    "port": 8000,
    "disks": [
        {
            "name": "disk",
            "mountTo": "/app/.tmp"
        }
    ]
}

رفع خطای CORS

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

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

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

اتصال به ذخیره‌سازی ابری

برای اتصال برنامه‌های Strapi به ذخیره‌سازی ابری لیارا می‌توانید از پلاگین Amazon S3 استفاده کرده و به‌شکل زیر این پلاگین را در فایل config/plugins.js پیکربندی کنید:

module.exports = ({ env }) => ({
  // ...
  upload: {
    config: {
      provider: 'aws-s3',
      providerOptions: {
        accessKeyId: env('LIARA_ACCESS_KEY_ID'),
        secretAccessKey: env('LIARA_ACCESS_SECRET'),
        endpoint: env('LIARA_ENDPOINT'),
        params: {
          Bucket: env('LIARA_BUCKET'),
        },
      },
    },
  },
  // ...
});
;