خطوات تركيب نظام ERPNext الاصدار 12 على Linux
يتوجب على المؤسسات والمنشآت في القطاع العام والخاص الاعتماد على أنظمة التخطيط لموارد المؤسسات، أو ERP بالاختصار، والتي تعني باللغة الإنجليزية Enterprise resource planning. يعتبر ERP مجموعة من البرامج الضرورية التي تستخدمها المؤسسات لإدارة أنشطتها اليومية وفي هذه المقالة سنشرح خطوات تركيب نظام ERPNext الاصدار 12 على Linux.
خطوات تركيب نظام ERPNext الاصدار 12 على Linux
ERPNext الاصدار 12 يعتبر نظامًا مفتوح المصدر وغير مرتبط بأي إجراءات ترخيص لتركيبه وتشغيله في مؤسستك الخاصة. عليك فقط حجز خادم للمضيف (Server) بنظام Ubuntu 18.04 واتباع التعليمات التالية:
متطلبات قبل البدء:
- تأكد من أن مستخدم الاتصال بالخادم الخاص بك هو root أو لديه صلاحيات sudo لتنفيذ الأوامر.
- قم باستخدام Terminal للاتصال بالخادم، ولتنفيذ ذلك، يجب على مستخدمي نظام التشغيل ويندوز تثبيت عميل SSH مثل Putty او Bitvise SSH Client .
- ينبغي امتلاك دومين متصل بعنوان IP الخاص بالخادم، وللتحقق من ذلك قبل البدء يمكن استخدام امر ping أو nslookup.
تحديث النظام:
عادة ما نبدأ بتحديث جميع البرامج الموجودة عند تثبيت أي نظام تشغيل، حيث يتم إضافة بعض الميزات الجديدة أو إصلاح بعض المشاكل الموجودة. وبما أنها خطوة هامة، سنقوم الآن بتحديث قائمة البرامج بشكل كامل في النظام ومن ثم تثبيتها.
apt -y update
apt -y upgrade
سوف نحدد منطقة الرياض كمنظقة زمنية للنظام.
timedatectl set-timezone Asia/Riyadh
مرحلة تركيب متطلبات النظام:
سوف نقوم حاليًا بتركيب أدوات التطوير المخصصة للغة Python3.
apt -y install git build-essential python3 python3-setuptools python3-dev python3-pip wkhtmltopdf supervisor
تثبيت نظام إدارة الحزم pip الخاص بلغة python3.
wget https://bootstrap.pypa.io/get-pip.py
python3 get-pip.py --force-reinstall
تحديث بعض الحزم عن طريق نظام إدارة الحزم pip.
pip install --upgrade setuptools cryptography ansible pip
مرحلة خادم الكاش Redis و Node.js:
تركيب خادم الكاش Redis و Node.js:
curl --silent --location https://deb.nodesource.com/setup_10.x | bash -
apt -y install gcc g++ make nodejs redis-server
npm install -g yarn
تشغيل خادم الكاش Redis وتفعيلة ليبدأ مع تشغيل النظام:
systemctl start redis-server
systemctl enable redis-server
مرحلة إدارة الخادم Nginx لخدمات الويب و قاعدة بيانات Mariadb:
تثبيت خادم الويب Nginx وقاعدة بيانات Mariadb.
apt -y install nginx
apt -y install mariadb-server mariadb-client libmysqlclient-dev
إعادة تشغيل خادم الويب Nginx وتفعيله للعمل مباشرة عند بدء تشغيل النظام.
systemctl start nginx
systemctl enable nginx
مرحلة إعداد قواعد البيانات Mariadb:
اعداد قواعد البيانات Mariadb
nano /etc/mysql/mariadb.conf.d/50-server.cnf
اضافة المحتويات التالية او تعديلها اذا كانت موجودة وتخص طريقة تخزين الجدوال من نوع innodb و الترميز utf8mb4
[mysqld]
innodb-file-format=barracuda
innodb-file-per-table=1
innodb-large-prefix=1
character-set-client-handshake = FALSE
character-set-server = utf8mb4
collation-server = utf8mb4_unicode_ci
اعداد عميل قواعد البيانات Mariadb
nano /etc/mysql/mariadb.conf.d/50-client.cnf
اضافة المحتويات التالية او تعديلها اذا كانت موجودة ليستخدم ترميز utf8mb4 عند الاتصال بالخادم
[mysql]
default-character-set = utf8mb4
اعادة تشغيل خادم قواعد البيانات Mariadb وتفعيل ليبدأ مع تشغيل النظام:
systemctl restart mariadb
systemctl enable mariadb
تأمين قواعد البيانات عن طريق تنفيذ أمر mysql_secure_installation:
mysql_secure_installation
انشاء مستخدم خاص بنظام erpnext:
mysql -u root -p
السماح بتسجيل الدخول للمستخدم root باستخدام كلمة المرور :
UPDATE mysql.user SET plugin = 'mysql_native_password' WHERE user = 'root'
يُمكن كذلك إنشاء مستخدم آخر يحمل اسم “erpnext” لاستخدامه فيما بعد بدلاً من استخدام “root” عن طريق تنفيذ بعض التعليمات البرمجية في SQL.
- إنشاء قاعدة بيانات باسم erpnext
- تكوين مُستخدِم يحمل الاسم “erpnext” ويَعمل حصريًا على الـ”localhost”.
- يتعلق الأمر بمنح المستخدم erpnext الصلاحيات اللازمة للوصول إلى قاعدة بيانات erpnext.
- يإعطاء المستخدم erpnext الصلاحيات للوصول جميع قواعد البيانات , استخدم هذا الامر اذا كنت تريد استخدام erpnext بدلا من root
- اعادة تحميل الصلاحيات لتصبح فعال.
- خروج.
CREATE DATABASE erpnext;
CREATE USER erpnext@localhost IDENTIFIED BY 'erpnext-password';
GRANT ALL ON erpnext.* TO 'erpnext'@'localhost' with grant option;
GRANT ALL ON *.* TO 'erpnext'@'localhost' with grant option; // إعطاء صلاحيات كاملة
FLUSH PRIVILEGES;
QUIT;
مرحلة Bench و ERPNext:
سنقوم بإنشاء حساب مستخدم داخل نظام ERPNext وتفعيل صلاحيته لتنفيذ أوامر sudo.
useradd -m -s /bin/bash erpnext
passwd erpnext
usermod -aG sudo erpnext
استخدم اسم المستخدم erpnext لتنفيذ الأوامر.
su erpnext
cd /home/erpnext/
تنزيل نسخة من مخزن bench ثم تركيبه عبر نظام ادارة الحزم pip
git clone https://github.com/frappe/bench bench-repo
pip install --user -e bench-repo
انشاء اختصار لبعض البرمجيات لتكون متوفرة في سطر الاوامر:
sudo ln -s /home/erpnext/.local/bin/virtualenv /usr/local/bin/virtualenv
sudo ln -s /home/erpnext/.local/bin/honcho /usr/local/bin/honcho
sudo ln -s /home/erpnext/.local/bin/bench /usr/local/bin/bench
تركيب بيئة العمل frappe :
bench init frappe-bench
الدخول الى مسار بيئة العمل frappe:
cd frappe-bench
تكوين الملفات الخاصة بإعدادات المشرف ونجنكس.
bench setup supervisor --yes
bench setup nginx --yes
إنشاء اختصار لإعدادات المشرف و Nginx.
sudo ln -s `pwd`/config/nginx.conf /etc/nginx/conf.d/frappe-bench.conf
sudo ln -s `pwd`/config/supervisor.conf /etc/supervisor/conf.d/frappe-bench.conf
اعادة تشغيل خدمات bench:
sudo supervisorctl reread
sudo supervisorctl restart all
sudo service supervisor restart
bench restart
تمكين خدمة تعدد الأنظمة على الخادم الواحد، ما يمكّن إنشاء نظام منفصل لكل نطاق أو نطاق فرعي.
bench config dns_multitenant on
إضافة نظام ERPNext الاصدار 12 الى قائمة الأنظمة ثم تركيب المتطلبات, حتى نقوم بتركيبها في اي موقع نحدده:
bench get-app --branch version-12 erpnext https://github.com/frappe/erpnext
مرحلة انشاء موقع جديد:
انشاء موقع جديد باسم site1.local :
bench new-site site1.local
تركيب نظام ERPNext على موقع site1.local :
bench --site site1.local install-app erpnext
اعادة انشاء ملف اعدادات Nginx ثم اعادة تشغيلة لتفعيل الموقع الجديد :
bench setup nginx --yes
sudo service nginx reload
لتفعيل https تأكد من اضافة سجل DNS يؤشر الى الموقع الخاص بك ويكون مختلف عن site1.local
sudo bench setup lets-encrypt site1.local # عنوان الموقع الخاص بك مختلف عن site1.local
sudo service nginx reload
الخلاصة:
تم تدوين جميع الأوامر السابقة على شكل ملف، الذي يتم تنفيذه بواسطة المستخدم الجذر (root) في خادم الإنترنت الجديد.
بالإمكان تنزيل الملف وتنفيذه بهذه الطريقة، ولكن تأكد من تعديل البيانات الموجودة في الملف وفقًا لنطاقك الخاص (domain).
wget https://gist.githubusercontent.com/daif/8f0eac798a289b140f9fa39d90e5335f/raw/c342ace3c59974a2a43eb069375b0ff396b7e1ed/erpnext-installer.sh
chmod +x erpnext-installer.sh
./erpnext-installer.sh