آموزش نصب ERPNext روی Ubuntu 24.04 LTS

مقدمه

نرم‌افزار ERPNext یکی از محبوب‌ترین سیستم‌های متن‌باز ERP در دنیا است که امکانات کاملی برای مدیریت فرآیندهای سازمانی در اختیار کسب‌وکارها قرار می‌دهد. این نرم‌افزار ماژول‌هایی مانند حسابداری، فروش، خرید، انبار، منابع انسانی، CRM، تولید، پروژه، پشتیبانی و ده‌ها قابلیت دیگر را در قالب یک سامانه یکپارچه ارائه می‌کند.

ERPNext بر پایه فریم‌ورک Frappe توسعه داده شده و از فناوری‌هایی مانند Python، Node.js، MariaDB، Redis، NGINX و Supervisor استفاده می‌کند.

در این آموزش یاد می‌گیرید چگونه آخرین نسخه پایدار ERPNext را روی Ubuntu 24.04 LTS نصب و برای استفاده در محیط عملیاتی (Production) آماده کنید.

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


پیش‌نیازها

قبل از شروع، موارد زیر را آماده کنید:

  • یک سرور Ubuntu 24.04 LTS
  • حداقل ۴ گیگابایت RAM (برای محیط آزمایشی)
  • برای محیط Production حداقل ۸ گیگابایت RAM
  • کاربر دارای دسترسی sudo
  • دامنه‌ای که به IP سرور اشاره کند
  • دسترسی SSH به سرور

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

sudo apt update
sudo apt upgrade -y

همچنین بهتر است منطقه زمانی سرور را تنظیم کنید.

sudo timedatectl set-timezone Asia/Tehran

بررسی کنید:

timedatectl

معماری ERPNext

قبل از نصب، بهتر است با اجزای اصلی ERPNext آشنا شوید.

                 Internet
                     │
                NGINX Reverse Proxy
                     │
              Gunicorn (Python)
                     │
               Frappe Framework
                     │
        ┌────────────┴────────────┐
        │                         │
    MariaDB                   Redis
        │                         │
        └────────────┬────────────┘
                     │
                 ERPNext

هر بخش وظیفه مشخصی دارد:

  • NGINX مدیریت درخواست‌های کاربران را انجام می‌دهد.
  • Gunicorn برنامه Python را اجرا می‌کند.
  • Frappe هسته اصلی ERPNext است.
  • MariaDB اطلاعات سیستم را ذخیره می‌کند.
  • Redis کش، صف پردازش و Sessionها را مدیریت می‌کند.
  • Supervisor سرویس‌های ERPNext را همیشه در حال اجرا نگه می‌دارد.

گام اول — نصب وابستگی‌های موردنیاز

ابتدا بسته‌های پایه سیستم را نصب کنید.

sudo apt install -y \
git \
curl \
wget \
vim \
nano \
build-essential \
software-properties-common \
pkg-config \
libffi-dev \
libssl-dev \
python3-dev \
python3-pip \
python3-venv \
python3-setuptools \
python3-wheel \
redis-server \
mariadb-server \
mariadb-client \
nginx \
supervisor \
xfonts-75dpi \
xfonts-base

پس از پایان نصب، سرویس‌ها را فعال کنید.

sudo systemctl enable mariadb redis-server nginx supervisor

و آن‌ها را اجرا کنید.

sudo systemctl start mariadb redis-server nginx supervisor

سپس وضعیت سرویس‌ها را بررسی کنید.

systemctl status mariadb
systemctl status redis-server
systemctl status nginx

همه سرویس‌ها باید وضعیت زیر را نمایش دهند:

Active: active (running)

گام دوم — ایمن‌سازی MariaDB

پیش از نصب ERPNext بهتر است تنظیمات امنیتی اولیه MariaDB را انجام دهید.

sudo mysql_secure_installation

در طول مراحل:

  • رمز عبور برای کاربر root تعیین کنید.
  • کاربران ناشناس را حذف کنید.
  • ورود Root از راه دور را غیرفعال کنید.
  • پایگاه داده Test را حذف کنید.
  • مجوزها را Reload کنید.

در پایان، با دستور زیر وارد MariaDB شوید.

sudo mariadb

اگر بدون خطا وارد محیط MariaDB شدید، همه چیز آماده است.

SELECT VERSION();

نسخه MariaDB نمایش داده خواهد شد.


گام سوم — نصب Python، Node.js، Yarn و Frappe Bench

در این مرحله ابزارهایی را نصب می‌کنیم که هسته اصلی ERPNext برای اجرا به آن‌ها وابسته است.

در نسخه‌های جدید ERPNext (نسخه 15 و بالاتر)، استفاده از نسخه‌های به‌روز Python و Node.js اهمیت زیادی دارد؛ بنابراین از نسخه‌هایی استفاده می‌کنیم که با Ubuntu 24.04 LTS سازگار هستند.


نصب Python

ابتدا نسخه Python را بررسی کنید.

python3 --version

در Ubuntu 24.04 خروجی معمولاً چیزی مشابه زیر خواهد بود.

Python 3.12.x

سپس pip را به آخرین نسخه ارتقاء دهید.

python3 -m pip install --upgrade pip

نصب Node.js

ERPNext برای ساخت فایل‌های Frontend به Node.js نیاز دارد.

بهترین روش، استفاده از مخزن رسمی NodeSource است.

ابتدا کلید و مخزن را اضافه کنید.

curl -fsSL https://deb.nodesource.com/setup_20.x | sudo -E bash -

سپس Node.js را نصب کنید.

sudo apt install -y nodejs

نسخه را بررسی کنید.

node -v
npm -v

استفاده از Mirror پارمین کلود برای npm

برای افزایش سرعت دانلود پکیج‌ها، پیشنهاد می‌شود Registry مربوط به npm را روی Mirror پارمین کلود قرار دهید.

npm config set registry https://npm.parmincloud.ir

بررسی کنید.

npm config get registry

خروجی باید به شکل زیر باشد.

https://npm.parmincloud.ir/

نصب Yarn

ERPNext برای مدیریت وابستگی‌های Frontend از Yarn استفاده می‌کند.

sudo npm install -g yarn

سپس نسخه آن را بررسی کنید.

yarn --version

استفاده از Mirror پارمین کلود برای Python

قبل از نصب بسته‌های Python بهتر است Mirror مربوط به pip را نیز تنظیم کنید.

mkdir -p ~/.config/pip

سپس فایل تنظیمات را ایجاد کنید.

nano ~/.config/pip/pip.conf

محتوای فایل:

[global]
index-url = https://pypi.parmincloud.ir/simple/
trusted-host = pypi.parmincloud.ir

اکنون هر بار که pip اجرا شود از Mirror پارمین کلود استفاده خواهد کرد.


نصب Frappe Bench

Bench ابزار رسمی مدیریت ERPNext است و برای نصب، به‌روزرسانی و مدیریت سایت‌ها استفاده می‌شود.

ابتدا آن را نصب کنید.

pip3 install frappe-bench

اگر پیغام مربوط به محدودیت محیط پایتون (PEP 668) دریافت کردید که در Ubuntu 24.04 رایج است، از pipx استفاده کنید.

ابتدا:

sudo apt install -y pipx

سپس:

pipx ensurepath

ترمینال را یک‌بار باز و بسته کنید و Bench را نصب کنید.

pipx install frappe-bench

بررسی کنید.

bench --version

نصب wkhtmltopdf

ERPNext برای تولید فایل‌های PDF مانند فاکتور، سفارش خرید و گزارش‌ها از wkhtmltopdf استفاده می‌کند.

در Ubuntu 24.04 نسخه موجود در مخازن معمولاً کافی است.

sudo apt install -y wkhtmltopdf

بررسی نسخه:

wkhtmltopdf --version

بررسی ابزارهای نصب‌شده

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

python3 --version
node -v
npm -v
yarn --version
bench --version
wkhtmltopdf --version

اگر همه ابزارها بدون خطا اجرا شوند، زیرساخت لازم برای نصب Frappe و ERPNext آماده است.


نکته مهم برای Ubuntu 24.04

برخلاف آموزش‌های قدیمی که برای Ubuntu 20.04 نوشته شده‌اند، در Ubuntu 24.04 نصب ابزارها با pip ممکن است به دلیل سیاست Externally Managed Environment (PEP 668) با خطا مواجه شود. به همین دلیل، استفاده از pipx برای نصب ابزارهایی مانند frappe-bench روش پیشنهادی و پایدارتر است.


گام چهارم — ایجاد کاربر ERPNext و راه‌اندازی محیط Bench

برای افزایش امنیت، بهتر است ERPNext با کاربر اختصاصی خود اجرا شود و از حساب کاربری root استفاده نکند.


ایجاد کاربر جدید

ابتدا یک کاربر جدید ایجاد کنید.

sudo adduser frappe

در طول فرآیند، رمز عبور دلخواه خود را وارد کنید.

سپس این کاربر را به گروه sudo اضافه کنید.

sudo usermod -aG sudo frappe

ورود به کاربر جدید

su - frappe

یا

sudo -i -u frappe

از این مرحله به بعد، تمام دستورات Bench را با همین کاربر اجرا کنید.


ایجاد محیط Bench

ابتدا پوشه دلخواه را انتخاب کنید.

mkdir ~/frappe-bench

سپس وارد آن شوید.

cd ~

اکنون محیط Bench را ایجاد کنید.

برای نسخه 15:

bench init \
--frappe-branch version-15 \
frappe-bench

این مرحله ممکن است چند دقیقه زمان ببرد زیرا موارد زیر دانلود می‌شوند:

  • Frappe Framework
  • Python Packages
  • Node Modules
  • Yarn Packages

ساختار پوشه Bench

پس از پایان نصب، ساختاری مشابه زیر خواهید داشت.

frappe-bench/

├── apps/

├── sites/

├── config/

├── logs/

├── env/

└── Procfile

هر پوشه وظیفه مشخصی دارد.

پوشه توضیح
apps برنامه‌های نصب‌شده
sites سایت‌های ERPNext
logs فایل‌های لاگ
env محیط مجازی Python
config تنظیمات Bench

بررسی سلامت Bench

وارد پوشه شوید.

cd ~/frappe-bench

اجرای دستور زیر نباید خطایی تولید کند.

bench version

خروجی نمونه:

Frappe Framework: v15.x.x

نصب ERPNext

اکنون خود ERPNext را دانلود می‌کنیم.

bench get-app \
erpnext \
--branch version-15

Bench آخرین نسخه پایدار ERPNext را دریافت خواهد کرد.


بررسی Appهای نصب‌شده

bench list-apps

خروجی معمولاً مشابه زیر خواهد بود.

frappe

erpnext

ایجاد اولین Site

اکنون باید پایگاه داده و سایت ERPNext ایجاد شود.

ابتدا رمز عبور MariaDB را آماده داشته باشید.

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

bench new-site erp.parmincloud.local

در طول مراحل از شما پرسیده می‌شود:

MariaDB root password

رمز عبور MariaDB را وارد کنید.

سپس:

Administrator password

رمز عبور مدیر ERPNext را تعیین کنید.


نصب ERPNext روی سایت

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

bench --site erp.parmincloud.local install-app erpnext

این مرحله دیتابیس را مقداردهی اولیه کرده و تمام ماژول‌های ERPNext را نصب می‌کند.

ممکن است چند دقیقه زمان ببرد.


بررسی سایت

اکنون سایت ایجاد شده است.

bench --site erp.parmincloud.local list-apps

خروجی باید چیزی مشابه زیر باشد.

frappe

erpnext

اجرای آزمایشی ERPNext

برای تست اولیه، کافی است دستور زیر را اجرا کنید.

bench start

اگر همه چیز درست باشد، سرویس‌های مختلف ERPNext اجرا خواهند شد.

در خروجی خطوطی مشابه زیر مشاهده خواهید کرد.

redis_cache

redis_queue

web

worker

socketio

schedule

اکنون در مرورگر آدرس زیر را باز کنید.

http://SERVER_IP:8000

یا

http://erp.parmincloud.local:8000

صفحه ورود ERPNext نمایش داده خواهد شد.


نکته مهم

دستور bench start فقط برای محیط توسعه (Development) مناسب است. با بستن ترمینال، تمام سرویس‌ها متوقف می‌شوند.

برای راه‌اندازی در محیط Production باید از Supervisor و NGINX استفاده کنید تا سرویس‌ها به‌صورت دائمی اجرا شوند و از طریق پورت‌های استاندارد 80 و 443 در دسترس باشند.


گام پنجم — آماده‌سازی ERPNext برای محیط Production

تا اینجا ERPNext را نصب کرده‌ایم، اما هنوز با دستور bench start اجرا می‌شود که فقط برای توسعه (Development) مناسب است.

برای استفاده در محیط واقعی باید:

  • سرویس‌ها همیشه فعال باشند.
  • بعد از ریبوت سرور دوباره اجرا شوند.
  • از طریق NGINX در دسترس باشند.
  • HTTPS فعال باشد.
  • فایل‌های Static توسط NGINX سرو شوند.
  • Workerها توسط Supervisor مدیریت شوند.

فعال کردن حالت Production

داخل پوشه Bench دستور زیر را اجرا کنید.

cd ~/frappe-bench

سپس:

sudo bench setup production frappe

در این مرحله Bench به صورت خودکار:

  • Supervisor را پیکربندی می‌کند.
  • فایل‌های NGINX را ایجاد می‌کند.
  • سرویس‌های Systemd را می‌سازد.
  • دسترسی فایل‌ها را تنظیم می‌کند.

اگر در هنگام اجرا سؤال شد:

Do you want to setup Supervisor?

گزینه Yes را انتخاب کنید.


بارگذاری مجدد سرویس‌ها

sudo supervisorctl reread
sudo supervisorctl update

سپس:

sudo systemctl restart supervisor

بررسی وضعیت سرویس‌ها

sudo supervisorctl status

خروجی باید مشابه زیر باشد.

frappe-bench-frappe-web        RUNNING

frappe-bench-redis-cache       RUNNING

frappe-bench-redis-queue       RUNNING

frappe-bench-worker-short      RUNNING

frappe-bench-worker-long       RUNNING

frappe-bench-schedule          RUNNING

اگر همه سرویس‌ها RUNNING باشند یعنی ERPNext به درستی اجرا شده است.


بررسی NGINX

اکنون وضعیت NGINX را بررسی کنید.

sudo nginx -t

اگر خروجی زیر را مشاهده کردید:

syntax is ok

test is successful

سپس:

sudo systemctl restart nginx

باز کردن پورت‌های فایروال

اگر از UFW استفاده می‌کنید:

sudo ufw allow OpenSSH
sudo ufw allow 80/tcp
sudo ufw allow 443/tcp

در نهایت:

sudo ufw enable

بررسی کنید.

sudo ufw status

فعال کردن HTTPS

در Ubuntu 24.04 ساده‌ترین روش استفاده از Certbot است.

نصب:

sudo apt install certbot python3-certbot-nginx

سپس:

sudo certbot --nginx

دامنه خود را انتخاب کنید.

برای مثال:

erp.example.com

در پایان گزینه Redirect HTTP → HTTPS را فعال کنید.

پس از پایان عملیات، سایت فقط از طریق HTTPS در دسترس خواهد بود.


بررسی سرویس‌ها

تمام سرویس‌ها را بررسی کنید.

systemctl status nginx
systemctl status supervisor
systemctl status mariadb
systemctl status redis-server

همه باید وضعیت زیر را نمایش دهند.

Active: active (running)

بررسی نسخه ERPNext

bench version

نمونه خروجی:

Frappe Framework : v15.x

ERPNext : v15.x

ساخت کاربر Administrator

در اولین ورود از اطلاعات زیر استفاده کنید.

Username

Administrator

رمز عبوری که هنگام اجرای دستور

bench new-site

تعیین کرده بودید.

پس از ورود پیشنهاد می‌شود:

  • رمز عبور Administrator را تغییر دهید.
  • احراز هویت دومرحله‌ای (2FA) را فعال کنید.
  • یک کاربر مدیریتی جدید ایجاد کنید.
  • از حساب Administrator فقط برای مدیریت سیستم استفاده کنید.

نکات امنیتی

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

بروزرسانی منظم سیستم

sudo apt update
sudo apt upgrade

بروزرسانی ERPNext

bench update

تهیه نسخه پشتیبان

از دیتابیس و فایل‌ها به صورت روزانه Backup تهیه کنید.

bench backup

برای مشاهده فایل‌های Backup:

ls sites/*/private/backups/

فعال کردن Fail2ban

sudo apt install fail2ban

غیرفعال کردن ورود Root

در فایل:

/etc/ssh/sshd_config

مقدار زیر را قرار دهید.

PermitRootLogin no

سپس:

sudo systemctl restart ssh

محدود کردن دسترسی MariaDB

بهتر است MariaDB فقط روی localhost گوش دهد.

bind-address = 127.0.0.1

فعال کردن Backup خودکار

می‌توانید با Cron هر شب Backup بگیرید.

crontab -e

مثلاً:

0 2 * * * cd /home/frappe/frappe-bench && bench backup

تست نهایی

اکنون مرورگر را باز کنید.

https://erp.example.com

اگر صفحه ورود ERPNext نمایش داده شد، نصب با موفقیت انجام شده است.


جمع‌بندی

در این آموزش نحوه نصب و راه‌اندازی ERPNext روی Ubuntu 24.04 LTS را به‌صورت کامل بررسی کردیم. برخلاف بسیاری از آموزش‌های قدیمی که بر پایه Ubuntu 20.04 و نسخه‌های قدیمی ERPNext نوشته شده‌اند، در این راهنما از نسخه‌های جدید و پایدار نرم‌افزارها استفاده شد تا بتوانید یک محیط قابل اعتماد برای استفاده در پروژه‌های واقعی ایجاد کنید.

در طول این آموزش موارد زیر را انجام دادیم:

  • آماده‌سازی سرور Ubuntu 24.04
  • نصب وابستگی‌های موردنیاز مانند Python، Node.js، Redis و MariaDB
  • نصب Frappe Framework و Bench
  • نصب آخرین نسخه ERPNext
  • ایجاد اولین Site
  • راه‌اندازی محیط Production با Supervisor و NGINX
  • فعال‌سازی HTTPS با Let’s Encrypt
  • بررسی نکات امنیتی و تهیه نسخه پشتیبان

در پایان، اکنون یک سامانه ERPNext آماده دارید که می‌توانید آن را متناسب با نیاز سازمان خود توسعه داده و ماژول‌های مختلف آن را پیکربندی کنید.


بهترین روش‌ها (Best Practices)

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

از SSD استفاده کنید

ERPNext تعداد زیادی عملیات خواندن و نوشتن روی پایگاه داده انجام می‌دهد. استفاده از دیسک SSD یا NVMe تأثیر قابل توجهی بر عملکرد سیستم خواهد داشت.


حافظه RAM کافی اختصاص دهید

حداقل منابع پیشنهادی:

تعداد کاربران RAM پیشنهادی
تست و آموزش 4GB
تا ۲۰ کاربر 8GB
۲۰ تا ۵۰ کاربر 16GB
بیش از ۵۰ کاربر 32GB یا بیشتر

از Backup خودکار استفاده کنید

بهتر است نسخه پشتیبان را به یک فضای ذخیره‌سازی جداگانه ارسال کنید.

برای مثال:

  • Object Storage
  • NAS
  • سرور Backup مجزا

مانیتورینگ سرور

پیشنهاد می‌شود شاخص‌های زیر را همیشه مانیتور کنید:

  • مصرف CPU
  • مصرف RAM
  • فضای دیسک
  • وضعیت MariaDB
  • وضعیت Redis
  • وضعیت Queueها
  • وضعیت Workerها
  • Load Average

به‌روزرسانی دوره‌ای

به‌صورت منظم نسخه ERPNext و Frappe را بروزرسانی کنید.

bench update

قبل از هر بروزرسانی حتماً Backup تهیه کنید.


استفاده از Reverse Proxy

اگر چند سرویس روی یک سرور دارید، پیشنهاد می‌شود از NGINX به عنوان Reverse Proxy استفاده کنید.


فعال کردن HTTPS

هرگز ERPNext را بدون HTTPS در اینترنت منتشر نکنید.


فعال کردن احراز هویت دومرحله‌ای

برای حساب Administrator و سایر کاربران مدیریتی، قابلیت Two-Factor Authentication (2FA) را فعال کنید.


مانیتور کردن لاگ‌ها

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

logs/web.log
logs/worker.log
logs/schedule.log
logs/redis.log

بهینه‌سازی MariaDB

برای محیط‌های Production بهتر است فایل تنظیمات MariaDB را متناسب با میزان RAM سرور تنظیم کنید تا عملکرد ERPNext بهبود پیدا کند.


نتیجه‌گیری

ERPNext یکی از کامل‌ترین نرم‌افزارهای متن‌باز مدیریت منابع سازمانی است که امکانات گسترده‌ای برای مدیریت فروش، مالی، انبار، تولید، منابع انسانی و CRM ارائه می‌دهد. با استفاده از Ubuntu 24.04 LTS و نسخه‌های جدید Frappe و ERPNext، می‌توانید یک زیرساخت پایدار، امن و مقیاس‌پذیر برای کسب‌وکار خود راه‌اندازی کنید.

اگر به‌روزرسانی‌های منظم، تهیه نسخه پشتیبان و مانیتورینگ سرویس‌ها را در برنامه نگهداری سرور خود قرار دهید، ERPNext می‌تواند سال‌ها بدون مشکل در محیط Production فعالیت کند.

از همراهی شما با پارمین کلود سپاسگزاریم.

Click to rate this post!
[Total: 0 Average: 0]

نظرات کاربران

دیدگاهی بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *