مقدمه
نرمافزار 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 فعالیت کند.
از همراهی شما با پارمین کلود سپاسگزاریم.
نظرات کاربران