تغییرات اخیر

در اینجا اطلاعیه‌ها، نسخه‌ها و تغییرات جدید لیارا فهرست می‌شوند.

چگونه Strapi را برای محیط تولید روی سرور مجازی اوبونتو 22.04 راه‌اندازی و نصب کنیم؟


۹ فروردین ۱۴۰۴

Strapi یک سیستم مدیریت محتوای بدون سر (headless) و متن‌باز است که با زبان برنامه‌نویسی جاوا اسکریپت ساخته شده است. مانند دیگر CMS های بدون سر، Strapi به صورت پیش‌فرض با یک فرانت‌اند ارائه نمی‌شود. در عوض، این سیستم به یک API متکی است که به شما این امکان را می‌دهد که ساختار محتوای خود را طراحی کنید. علاوه بر این، Strapi روش‌های مختلفی برای ساخت سایت ارائه می‌دهد که می‌تواند با فریم‌ورک‌های محبوبی مانند React و Next.js ادغام شود. همچنین، شما می‌توانید انتخاب کنید که API خود را از طریق REST API یا GraphQL مصرف کنید.

در این مقاله شما Strapi را نصب کرده و محیط تولید را راه‌اندازی خواهید کرد تا شروع به ایجاد محتوا کنید. درحالی که Strapi در حالت توسعه از SQLite استفاده می‌کند، شما آن را به صورتی پیکربندی خواهید کرد که از PostgreSQL استفاده کند. همچنین برنامه Strapi خود را پشت یک پروکسی معکوس Nginx خود با استفاده از Let’s Encrypt ایمن خواهید کرد.

در ادامه خواهید خواند:

  • پیش نیاز
  • راه اندازی دیتابیس Postgres
  • نصب Strapi روی سرور
  • نصب و پیکربندی PM2
  • ایمن سازی Strapi با Let’s Encrypt
  • جمع بندی

پیش نیاز

برای دنبال کردن این آموزش، شما به موارد زیر نیاز دارید.

  • یک سرور Ubuntu 22.04 که تنظیم شده باشد.
  • Strapi یک سرور با حداقل ۲ هسته CPU و ۴ گیگابایت RAM توصیه می‌کند. این آموزش فرض می‌کند که سرور شما حداقل مشخصات سخت‌افزاری پیشنهادی را دارد.
  • نسخه 16.xx از Node.js نصب شده روی سرور شما. برای نصب آن، نحوه نصب Node.js روی سرور مجازی اوبونتو Ubuntu دنبال کنید. اطمینان حاصل کنید که نسخه ۱۸.xx را با استفاده از گزینه PPA به نسخه ۱۶.xx تغییر دهید. در زمان نوشتن این آموزش، Strapi ممکن است با نسخه‌های Node بالاتر از ۱۶ به درستی کار نکند. به طور خاص، نسخه Node v16.18.1 در این آموزش استفاده شده است.
  • PostgreSQL نصب شده روی سرور مجازی اوبونتو.
  • Nginx نصب شده و به‌عنوان یک پروکسی معکوس پیکربندی شده باشد. هنگام پیکربندی آدرس سرور اپلیکیشن برای پروکسی کردن، از آدرس http://localhost:1337 به‌عنوان app_server_address استفاده کنید.
  • یک نام دامنه که به IP عمومی سرور شما اشاره داشته باشد. این دامنه با Nginx پیکربندی خواهد شد تا سرور اپلیکیشن شما را پروکسی کند.

مطالب پیشنهادی: PostgreSQL چیست؟

راه اندازی دیتابیس Postgres

برای هر پروژه Strapi، یک پایگاه داده نیاز است. در حال حاضر، Strapi از MySQL, MariaDB, SQLite , PostgreSQL پشتیبانی می‌کند. علاوه بر این، Strapi انتظار دارد که یک پایگاه داده تازه ایجاد شود. این به این معنا است که شما نمی‌توانید از یک پایگاه داده موجود برای اتصال به نمونه Strapi خود استفاده کنید.

 Strapi برای محیط تولید روی سرور مجازی اوبونتو

یک پایگاه داده ایجاد کنید.

sudo -i -u postgres createdb strapi-db

سپس یک کاربر برای پایگاه داده خود ایجاد کنید.

sudo -i -u postgres createuser --interactive
Output
Enter name of role to add: sammy
Shall the new role be a superuser? (y/n) y

به طور پیش‌فرض، در PostgreSQL، شما از روش شناسایی یا ident authentication برای احراز هویت به‌عنوان کاربران پایگاه داده استفاده می‌کنید. این یعنی PostgreSQL نام کاربری Ubuntu کلاینت را گرفته و از آن به‌عنوان نام کاربری پایگاه داده استفاده می‌کند. این روش در بسیاری از مواقع امنیت بیشتری ایجاد می‌کند، اما ممکن است در مواقعی که می‌خواهید یک برنامه خارجی مانند Strapi به یکی از پایگاه‌های داده شما متصل می‌شود، مشکلاتی ایجاد کند. برای حل این مشکل، باید یک رمز عبور برای این نقش PostgreSQL تنظیم کنید تا Strapi بتواند به پایگاه داده شما متصل شود.

از ترمینال خود، پرامپت PostgreSQL را باز کنید.

sudo -u postgres psql

از پرامپت PostgreSQL، پروفایل کاربری را به گونه‌ای به‌روز کنید که یک رمز عبور قوی انتخابی شما داشته باشد.

ALTER USER sammy PASSWORD 'postgres_password';

از حساب کاربری PostgreSQL خود خارج شوید با وارد کردن /q در ترمینال.

\q

با ایجاد پایگاه داده و اعتبارنامه‌های کاربری خود، شما آماده نصب Strapiهستید.

با پایگاه داده PostgreSQL لیارا، در کمترین زمان، یک دیتابیس پرسرعت و امن راه‌اندازی کنید.
پشتیبان‌گیری خودکار ✅ امنیت بالا ✅ عملکرد بهینه
خرید دیتابیس PostgreSQL لیارا

نصب Strapi روی سرور

برای نصب Strapi روی سرور خود، دستور زیر را وارد کنید.

npx create-strapi-app@latest my-project

برای ادامه نصب، با y تایید کنید.

پس از تایید، یک نصب تعاملی آغاز خواهد شد. گزینه‌های زیر را انتخاب کنید و مطمئن شوید که نام پایگاه داده، نام کاربری و رمز عبور به درستی تغییر کرده‌اند.

Output
? Choose your installation type Custom (manual settings)
? Choose your preferred language JavaScript
? Choose your default database client postgres
? Database name: strapi-db
? Host: 127.0.0.1
? Port: 5432
? Username: sammy
? Password: postgres_password
? Enable SSL connection: No

اتصال SSL فعال نشده است زیرا این تنظیمات بعدا در این آموزش با استفاده از گواهی Let’s Encrypt پیکربندی و دریافت خواهد شد. Strapi پی از انتخاب شما شروع به نصب می‌کند.

پس از کامل شدن نصب، شما آماده ساخت پروژه Strapi خود هستید.

ابتدا مطمئن شوید که دایرکتوری my-project هستید.

cd my-project

سپس دستور زیر را اجرا کنید.

NODE_ENV=production npm run build
Output
> my-project@0.1.0 build
> strapi build

Building your admin UI with production configuration...

✔ Webpack
  Compiled successfully in 35.44s

Admin UI built successfully

این دستور پروژه Strapi شما را می‌سازد، از جمله رابط کاربری مدیر Strapi.

حالا می‌توانید سرور Strapi خود ا آزمایش کنید. دستور زیر را برای شروع مستقیم سرور Strapi اجرا کنید.

node /home/sammy/my-project/node_modules/.bin/strapi start
Output
[2022-11-21 13:54:24.671] info: The Users & Permissions plugin automatically generated a jwt secret and stored it in .env under the name JWT_SECRET.

 Project information

┌────────────────────┬──────────────────────────────────────────────────┐
│ Time           	│ Mon Nov 21 2022 13:54:24 GMT+0000 (Coordinated … │
│ Launched in    	│ 1603 ms                                      	│
│ Environment    	│ development                                  	│
│ Process PID    	│ 4743                                         	│
│ Version        	│ 4.5.4 (node v16.18.1)                        	│
│ Edition        	│ Community                                    	│
└────────────────────┴──────────────────────────────────────────────────┘

 Actions available

One more thing...
Create your first administrator ? by going to the administration panel at:

┌─────────────────────────────┐
│ http://localhost:1337/admin │
└─────────────────────────────┘

اگر پیش‌نیازها را دنبال کرده‌اید، Nginx به عنوان یک پروکسی معکوس برای آدرس پیش‌فرض Strapi یعنی http://localhost:1337 تنظیم کرده‌اید. برای مشاهده صفحه فرود پیش‌فرض Strapi به http://your_domain در مرورگر خود بروید.

صفحه فرود Strapi پس از اجرای دستورات build و start.

این دستور با تنظیمات پیش‌فرض در حال حاضر از حالت توسعه Strapi استفاده می‌کند. این روش همچنین به یک فرآیند وابسته است که به دستور در ترمینال شما متصل است و برای محیط تولید مناسب نیست. در مرحله بعد، شما تنظیمات تولید را به یک مدیر فرآیند به نام PM2 اضافه خواهید کرد.

برای خروج از سرور خود، کلیدهای CTRL+c را فشار دهید.

با نصب Strapi، شما آماده‌اید تا PM2 را برای اجرای سرور خود در پس‌زمینه به عنوان یک سرویس پیکربندی کنید.

با برنامه آماده Strapi لیارا، سایت خود را در کمتر از چند دقیقه راه‌اندازی کنید!
نصب خودکار ✅ مدیریت آسان محتوا ✅ سازگاری کامل با API ✅ امنیت بالا
خرید و راه‌اندازی Strapi لیارا

نصب و پیکربندی PM2

به جای شروع دستی سرور، می‌توانید از PM2 برای مدیریت این فرآیند استفاده کنید. برای اطلاعات بیشتر در مورد PM2 و پیکربندی یک اپلیکیشن Node.js آماده برای تولید، راهنمای ما را بررسی کنید. PM2 به حفظ آنلاین بودن سرور شما کمک می‌کند بدون اینکه نیاز باشد آن را به صورت دستی راه‌اندازی کنید و از بروز مشکلات مربوط به قطع شدن سرور جلوگیری می‌کند.

ابتدا مطمئن شوید که در دایرکتوری اصلی قرار دارید.

cd ~

سپس، PM2 را با دستور زیر نصب کنید.

sudo npm install pm2@latest -g

در ادامه، یک فایل پیکربندی برای PM2 با ویرایشگر متن مورد نظر خود بسازید. در این مثال از nano استفاده شده است.

sudo nano ecosystem.config.js

محتوای زبر را به این فایل اضافه کنید، مطمئن شوید که نام دایرکتوری پروژه، مسیر، نام پایگاه داده، نام کاربری و رمز عبور را به درستی تغییر دهید.

module.exports = {
  apps: [
    {
      name: 'strapi',
      cwd: '/home/sammy/my-project',
      script: 'npm',
      args: 'start',
      env: {
        NODE_ENV: 'production',
        DATABASE_HOST: 'localhost',
        DATABASE_PORT: '5432',
        DATABASE_NAME: 'strapi-db',
        DATABASE_USERNAME: 'sammy',
        DATABASE_PASSWORD: 'postgres_password',
      },
    },
  ],
};

پس از ویرایش پیکربندی PM2، از فایل خارج شوید. اگر از nano استفاده می‌کنید، کلیدهای CTRL + X را فشار دهید و سپس y و ENTER را بزنید.

برای اجرای نمونه Strapi خود رد پس زمینه، دستور زیر را وارد کنید.

pm2 start ecosystem.config.js
Output
[PM2][WARN] Applications strapi not running, starting...
[PM2] App [strapi] launched (1 instances)
┌─────┬───────────┬─────────────┬─────────┬─────────┬──────────┬────────┬──────┬───────────┬──────────┬──────────┬──────────┬──────────┐
│ id  │ name      │ namespace   │ version │ mode    │ pid      │ uptime │ ↺    │ status    │ cpu      │ mem      │ user     │ watching │
├─────┼───────────┼─────────────┼─────────┼─────────┼──────────┼────────┼──────┼───────────┼──────────┼──────────┼──────────┼──────────┤
│ 0   │ strapi    │ default     │ N/A     │ fork    │ 22608    │ 0s     │ 0    │ online    │ 0%       │ 30.3mb   │ sammy    │ disabled │
└─────┴───────────┴─────────────┴─────────┴─────────┴──────────┴────────┴──────┴───────────┴──────────┴──────────┴──────────┴──────────┘

برنامه‌هایی که تحت مدیریت PM2 اجرا می‌شود، به صورت خودکار در صورت کرش یا متوقف شدن مجددا راه‌اندازی می‌شوند. می‌توانید نمونه Strapi خود را هنگام شروع سرور با اجرای زیر راه‌اندازی کنید.

pm2 startup
Output
[PM2] Init System found: systemd
[PM2] To setup the Startup Script, copy/paste the following command:
sudo env PATH=$PATH:/usr/bin /usr/lib/node_modules/pm2/bin/pm2 startup systemd -u sammy --hp /home/sammy

این اسکریپت راه‌اندازی را برای شروع PM2 و فرآیندهای مدیریت شده آن هنگام راه‌اندازی سرور ایجاد و پیکربندی می‌کند.

سپس دستور ارائه شده رد خروجی را کپی کرده و با استفاده از نام کاربری خود به جای sammy اجرا کنید.

sudo env PATH=$PATH:/usr/bin /usr/lib/node_modules/pm2/bin/pm2 startup systemd -u sammy --hp /home/sammy

بعد از آن، لیست فرآیندهای PM2 را ذخیره کنید.

pm2 save

حال سرویس PM2 روی سرور شما در حال اجرا است. اگر به http://your_domainبروید، متوجه می‌شوید که Strapi اکنون در حال تولید در حال اجرا است.

با اجرای PM2 در پس‌زمینه، سرور شما در حال اجرا است و حالا می‌توانید به تکمیل مراحل ایمن‌سازی نمونه Strapi خود بپردازید.

با سرور مجازی ابری لیارا، سرور خود را با بالاترین عملکرد و امنیت، به‌راحتی مدیریت کنید!
✅ مقیاس‌پذیری بالا ✅ منابع اختصاصی و قابل تنظیم ✅ پشتیبانی 24/7 ✅ هزینه به‌صرفه ✅ استقرار سریع
خرید سرور مجازی ابری لیارا

ایمن سازی Strapi با Let’s Encrypt

همانطور که ممکن است متوجه شده باشید، وقتی به دامنه خود رفتید تا صفحه فرود Strapi را مشاهده کنید. URL به صورت http:// (به جای https://) نمایش داده می‌شود که یک اتصال نا امن است.

برای ایمن‌سازی نمونه Strapi خود با Let’s Encrypt، دستور زیر را وارد کنید.

sudo snap install --classic certbot

سپس، دستور certbot را از دایرکتوری نصب snap به مسیر خود لینک کنید تا بتوانید آن را با تایپ certbot اجرا کنید.

sudo ln -s /snap/bin/certbot /usr/bin/certbot

در ادامه، اجازه دسترسی به ترافیک HTTPS و پروفایل کامل Nginx را بدهید.

sudo ufw allow 'Nginx Full'

پروفایل اضافی Nginx HTTP را حذف کنید.

sudo ufw delete allow 'Nginx HTTP'

سپس از پلاگین Nginx برای دریافت گواهی‌نامه استفاده کنید و آدرس دامنه خود را وارد کنید.

sudo certbot --nginx -d your_domain -d www.your_domain

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

Output
. . .
Successfully received certificate.
Certificate is saved at: /etc/letsencrypt/live/your_domain/fullchain.pem
Key is saved at: /etc/letsencrypt/live/your_domain/privkey.pem
This certificate expires on 2023-02-05.
These files will be updated when the certificate renews.
Certbot has set up a scheduled task to automatically renew this certificate in the background.

Deploying certificate
Successfully deployed certificate for your_domain to /etc/nginx/sites-enabled/your_domain
Successfully deployed certificate for www.your_domain /etc/nginx/sites-enabled/your_domain
Congratulations! You have successfully enabled HTTPS on https://your_domain and https://www.your_domain
. . .

حالا به http://your_domain بروید. به طور خودکار به نسخه HTTPS سایت شما ارجاع داده می‌شوید. همچنین، مشاهده خواهید کرد که Strapi در حالت تولید در حال اجرا است..

اکنون می‌توانید به https://your_domain/admin بروید تا حساب مدیر خود را در Strapi ایجاد کنید.

پس از وارد کردن اطلاعات جدید خود، می‌توانید به داشبورد مدیریتی وارد شوید.

از طریق داشبورد، می‌توانید شروع به ایجاد محتوا در Strapi کنید.

بیشتر بخوانید: استفاده از Fast API با دیتابیس رابطه ای در سرور مجازی اوبونتو Ubuntu

همچنین بخوانید: سرور مجازی چیست؟

جمع بندی

در این مقاله، شما محیط تولیدی برای Strapi با استفاده از پایگاه داده PostgreSQL راه‌اندازی کردید. همچنین، برنامه Strapi خود را پشت یک پروکسی معکوس Nginx قرار دادید و از مدیر فرآیند PM2 برای نگه داشتن سرور در حال اجرا استفاده کردید.

بعد از راه‌اندازی سرور Strapi خود، می‌توانید به ایجاد محتوا از طریق داشبورد مدیریتی Strapi کنید. برای یادگیری بیشتر در مورد راه‌اندازی و پیکربندی برنامه Strapi، می‌توانید به مستندات رسمی Strapi مراجعه کنید.