Cách cài đặt ERPNext trên Rocky Linux 9

theanh

Administrator
Nhân viên
ERPNext là hệ thống ERP (Lập kế hoạch nguồn lực doanh nghiệp) nguồn mở có thể được triển khai trong doanh nghiệp của bạn. ERPNext có thể được triển khai trong nhiều loại ngành công nghiệp, chẳng hạn như sản xuất, phân phối, bán lẻ, thương mại, dịch vụ, giáo dục, phi lợi nhuận và chăm sóc sức khỏe. Ngoài ra, nó cung cấp các mô-đun như kế toán, CRM, bán hàng, mua hàng, trang web, thương mại điện tử, điểm bán hàng, sản xuất, kho, quản lý dự án, hàng tồn kho và dịch vụ.

ERPNext là nền tảng ERP doanh nghiệp được cấp phép theo Giấy phép công cộng GNU v3. Nó chủ yếu được viết bằng Python và JavaScript, được phát triển bởi Frappe Technologies Pvt. ERPNext là một ứng dụng được viết theo khuôn khổ frappe, một khuôn khổ web nguồn mở bằng Python và Javascript.

ERPNext được tạo ra như một giải pháp thay thế cho các dịch vụ như NetSuite từ oracle, QAD, Tython, OpenBrave và Odoo. Về chức năng, ERPNext tương tự như Odoo (trước đây là OpenERP).

Trong hướng dẫn này, bạn sẽ cài đặt ERPNext trên máy chủ Rocky Linux 9 và sau đó bảo mật cài đặt của mình bằng chứng chỉ SSL/TLS thông qua Certbot và Letsencrypt. Bạn cũng sẽ học cách cài đặt các phụ thuộc cho ERPNext như Python 3.10 từ nguồn, Redis sẽ được sử dụng làm trình quản lý phiên, Nginx làm máy chủ web và proxy ngược, Supervisor làm trình quản lý quy trình, Fail2ban để bảo vệ chống lại tấn công bằng vũ lực, MariaDB làm máy chủ cơ sở dữ liệu, Node.js và Yarn để xây dựng và biên dịch các tệp tĩnh.

ERPNext là một ứng dụng được xây dựng trên nền tảng frappe, vì vậy bạn cũng sẽ cài đặt nền tảng frappe trong quy trình thông qua frappe-bench.

Điều kiện tiên quyết​

Bạn sẽ cần một số yêu cầu sau để hoàn thành hướng dẫn này:
  • Một máy chủ Debian 11 - Ví dụ này sử dụng máy chủ Debian có tên máy chủ 'erpnext-rocky'.
  • Một người dùng không phải root có quyền quản trị viên sudo/root. Bạn sẽ chạy tất cả các lệnh trong hướng dẫn này với tư cách là người dùng không phải root.
  • Tên miền trỏ đến địa chỉ IP của máy chủ.
  • SELinux chạy ở chế độ cho phép.
Bây giờ chúng ta hãy bắt đầu và cài đặt ERPNext.

Thiết lập người dùng​

Nhiệm vụ đầu tiên trong hướng dẫn này là tạo một người dùng chuyên dụng mới sẽ được sử dụng để chạy ứng dụng ERPNext. Bạn cũng sẽ sử dụng người dùng mới này để chạy tất cả các lệnh để cài đặt và cấu hình gói.

Chạy lệnh bên dưới để tạo người dùng mới 'frappe'. Sau đó, thiết lập mật khẩu cho người dùng 'frappe', nhập mật khẩu mạnh mới và nhập lại mật khẩu.
Mã:
sudo useradd -m -s /bin/bash frappe
sudo passwd frappe
Bây giờ hãy chạy lệnh bên dưới để thêm người dùng 'frappe' vào nhóm 'wheel'. Thao tác này sẽ cho phép người dùng 'frappe' thực thi lệnh sudo với tư cách là người dùng root hoặc chạy lệnh với tư cách là người dùng root.
Mã:
sudo usermod -aG wheel frappe
Cuối cùng, hãy đăng nhập với tư cách là người dùng 'frappe' để xác minh và đảm bảo rằng người dùng của bạn đã được tạo. Sau đó, chạy lệnh sudo su để có được quyền root.
Mã:
sudo - frappe
sudo su
Nhập mật khẩu cho người dùng 'frappe'. Nếu thành công, lời nhắc của bạn sẽ trở thành 'root@hostname:/home/frappe...'.


data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22638%22%20height=%22546%22%3E%3C/svg%3E


Bây giờ hãy nhập exit hoặc nhấn Ctrl+d để thoát khỏi root shell.

Cài đặt Python 3.10​

ERPNext là một ứng dụng web được tạo bằng nền tảng web frappe dựa trên Python. Vào thời điểm viết bài này, phiên bản mới nhất của frappe framework và ERPNext yêu cầu ít nhất Python 3.10.

Trong bước này, bạn sẽ cài đặt Python 3.10 theo cách thủ công từ nguồn trên máy chủ Rocky Linux 9.

Để bắt đầu, hãy chạy lệnh dnf bên dưới để cài đặt một số phụ thuộc cơ bản để biên dịch Python 3.10.
Mã:
sudo dnf install gcc openssl-devel bzip2-devel libffi-devel zlib-devel wget make
Nhập y khi được nhắc và nhấn ENTER để tiếp tục.


data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22750%22%20height=%22247%22%3E%3C/svg%3E


Tiếp theo, tải xuống mã nguồn Python 3.10 thông qua lệnh wget bên dưới.
Mã:
wget https://www.python.org/ftp/python/3.10.9/Python-3.10.9.tgz
Sau khi tải xuống Python 3.10, hãy giải nén mã nguồn Python và di chuyển thư mục làm việc của bạn vào it.
Mã:
tar xzf Python-3.10.9.tgz
cd Python-*/
Tiếp theo, chạy lệnh bên dưới để bắt đầu biên dịch Python 3.10. Sau đó cài đặt nó vào hệ thống của bạn. Thao tác này sẽ cài đặt các tệp nhị phân Python 3.10 vào thư mục '/usr/local/bin'.
Mã:
./configure --enable-optimizations
nproc
sudo make -j2
sudo make altinstall

data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22681%22%20height=%22341%22%3E%3C/svg%3E


Chạy lệnh bên dưới để xác minh tệp nhị phân Python 3.10. Bạn sẽ thấy nhiều tệp nhị phân Python, bao gồm Pip3.10.
Mã:
ls /usr/local/bin
Tiếp theo, để đảm bảo rằng bạn có thể chạy phiên bản lệnh Python mới, bạn nên thêm thư mục '/usr/local/bin' vào PATH của hệ thống và secure_path của visudo.

Chạy lệnh trình chỉnh sửa nano bên dưới để mở tệp mới '/etc/bashrc'.
Mã:
sudo nano /etc/bashrc
Thêm dòng sau vào tệp.
Mã:
export PATH=$PATH:/usr/local/bin/
Lưu và thoát khi hoàn tất.

Bây giờ hãy chạy lệnh bên dưới để tải lại tệp cấu hình '/etc/bashrc'. Sau đó, hãy xác minh hệ thống PATH.
Mã:
source /etc/bashrc
echo $PATH
Bây giờ bạn sẽ thấy thư mục '/usr/local/bin' được thêm vào biến môi trường PATH của hệ thống.

Tiếp theo, hãy chạy lệnh bên dưới để thêm và sửa đổi tệp cấu hình sudoers.
Mã:
sudo visudo
Thêm thư mục '/usr/local/bin' vào Tùy chọn 'Defaults secure_path:' như bên dưới.
Mã:
Defaults secure_path=....:/usr/local/bin
Lưu tệp và thoát khỏi trình chỉnh sửa khi hoàn tất.

Bây giờ hãy chạy tệp nhị phân Python3.10 và Pip3.10 thông qua lệnh sudo như bên dưới.
Mã:
sudo python3.10 --version
sudo pip3.10 --version
Bạn sẽ nhận được đầu ra tương tự như thế này - Python 3.10 được cài đặt từ mã nguồn cho máy chủ Rocky Linux của bạn.


data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22750%22%20height=%22258%22%3E%3C/svg%3E


Trong bước tiếp theo, bạn sẽ cài đặt và cấu hình Máy chủ MariaDB cho ERPNext.

Cài đặt và cấu hình Máy chủ MariaDB​

Trong cài đặt mặc định, ERPNext sẽ sử dụng MySQL/MariaDB làm máy chủ cơ sở dữ liệu. ERPNext yêu cầu một phiên bản MySQL/MariaDB cụ thể để cài đặt. Vào thời điểm viết bài này, phiên bản ERPNext mới nhất yêu cầu MariaDB 10.6.

Trong bước này, bạn sẽ cài đặt MariaDB Server 10.6 từ kho lưu trữ MariaDB chính thức. Sau đó, bạn sẽ thêm cấu hình vào MariaDB Server và bảo mật triển khai MariaDB Server.

Chạy lệnh bên dưới để thêm kho lưu trữ MariaDB v10.6.
Mã:
sudo curl -LsS https://r.mariadb.com/downloads/mariadb_repo_setup | sudo bash -s -- --mariadb-server-version="mariadb-10.6"
Bạn sẽ nhận được kết quả đầu ra tương tự như thế này.


data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22750%22%20height=%22140%22%3E%3C/svg%3E


Tiếp theo, chạy lệnh dnf bên dưới để cài đặt các gói MariaDB. Nhập y khi được nhắc xác nhận và nhấn ENTER để tiếp tục.
Mã:
sudo dnf install MariaDB-server MariaDB-client

data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22750%22%20height=%22303%22%3E%3C/svg%3E


Ngoài ra, khi được yêu cầu chấp nhận khóa GPG của kho lưu trữ MariaDB, hãy nhập y và nhấn ENTER.

Sau khi MariaDB Server được cài đặt, hãy chạy tiện ích lệnh systemctl bên dưới để bắt đầu và bật dịch vụ MariaDB.
Mã:
sudo systemctl start mariadb
sudo systemctl enable mariadb
Bây giờ hãy xác minh dịch vụ MariaDB thông qua lệnh bên dưới. Bạn sẽ thấy dịch vụ MariaDB đang chạy và được bật, nghĩa là dịch vụ này sẽ tự động khởi động khi khởi động.
Mã:
sudo systemctl status mariadb

data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22750%22%20height=%22223%22%3E%3C/svg%3E


Khi Máy chủ MariaDB đang chạy, bạn sẽ bắt đầu cấu hình MariaDB theo yêu cầu của ERPNext.

Mở MariaDB tệp cấu hình '/etc/my.cnf.d/server.cnf' bằng lệnh trình chỉnh sửa nano bên dưới.
Mã:
sudo nano /etc/my.cnf.d/server.cnf
Thêm các dòng sau vào phần '[mysqld]'. Thao tác này sẽ kích hoạt định dạng barracuda trên MariaDB của bạn. Ngoài ra, bạn sẽ thiết lập bộ ký tự mặc định thành utf8mb4.
Mã:
[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
Lưu và thoát tệp khi hoàn tất.

Tiếp theo, mở tệp cấu hình MariaDB khác '/etc/my.cnf.d/mysql-clients.cnf' bằng trình chỉnh sửa nano bên dưới lệnh.
Mã:
sudo nano /etc/my.cnf.d/mysql-clients.cnf
Thêm dòng sau vào phần '[mysql]'. Điều này sẽ luôn đặt bộ ký tự cho máy khách thành utf8mb4.
Mã:
[mysql]
default-character-set = utf8mb4
Lưu tệp và thoát khỏi trình chỉnh sửa.

Bây giờ hãy chạy lệnh systemctl bên dưới để khởi động lại dịch vụ MariaDB và áp dụng các thay đổi.
Mã:
sudo systemctl restart mariadb
Chạy lệnh bên dưới 'mariadb-secure-installation' để bảo mật triển khai MariaDB của bạn. Sau đó, bạn sẽ được yêu cầu cấu hình mật khẩu gốc MariaDB, vì vậy hãy đảm bảo nhập và lặp lại mật khẩu mới. Đối với các cấu hình còn lại, hãy nhập Y để xác nhận và nhấn ENTER.
Mã:
sudo mariadb-secure-installation
Với điều này, bạn đã hoàn tất cài đặt và cấu hình MariaDB Server. Ở bước tiếp theo, bạn sẽ cài đặt Redis, Nginx và Supervisor trên máy Rocky Linux của mình.

Cài đặt các dependency từ Rocky Linux Repository​

Ở bước này, bạn sẽ cài đặt một số dependency cho quá trình cài đặt ERPNxt, bao gồm cài đặt Redis sẽ được sử dụng làm quản lý phiên, Nginx làm máy chủ web, Supervisor làm quản lý quy trình và Fail2ban bảo vệ ERPNext của bạn khỏi các cuộc tấn công bằng cách dùng vũ lực.

Hầu hết các gói mà bạn sẽ cài đặt ở đây đều có sẵn theo mặc định trên kho lưu trữ AppStream của Rocky Linux. Nhưng bạn cũng phải đảm bảo rằng kho lưu trữ của bên thứ ba như EPEL có sẵn trên hệ thống của bạn.

Chạy lệnh dnf bên dưới để cài đặt Redis, Nginx, SupervisorFail2ban vào hệ thống Rocky Linux của bạn.
Mã:
sudo dnf install redis nginx supervisor fail2ban
Khi được nhắc xác nhận, hãy nhập Y và nhấn ENTER để tiếp tục.

Bây giờ sau khi quá trình cài đặt gói hoàn tất, hãy chạy các lệnh systemctl bên dưới để khởi động và kích hoạt các dịch vụ. Sau đó, hãy xác minh từng dịch vụ để đảm bảo rằng dịch vụ đó đang chạy.

Khởi động và kích hoạt dịch vụ Redis, sau đó xác minh Redis để đảm bảo dịch vụ đó đang chạy.
Mã:
sudo systemctl start redis
sudo systemctl enable redis

sudo systemctl status redis
Bạn sẽ nhận được kết quả tương tự như thế này.


data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22750%22%20height=%22266%22%3E%3C/svg%3E


Tiếp theo, hãy khởi động và kích hoạt dịch vụ Nginx, sau đó xác minh Nginx để đảm bảo rằng dịch vụ đang chạy.
Mã:
sudo systemctl start nginx
sudo systemctl enable nginx

sudo systemctl status nginx
Bạn sẽ nhận được đầu ra tương tự như thế này.


data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22750%22%20height=%22183%22%3E%3C/svg%3E


Sau đó, hãy khởi động dịch vụ Supervisor và bật dịch vụ này. Sau đó, hãy xác minh dịch vụ Supervisor để đảm bảo rằng dịch vụ này đang chạy.
Mã:
sudo systemctl start supervisord
sudo systemctl enable supervisord

sudo systemctl status supervisord
Dưới đây là kết quả đầu ra mà bạn sẽ nhận được trên màn hình thiết bị đầu cuối của mình.


data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22750%22%20height=%22182%22%3E%3C/svg%3E


Và cuối cùng, đối với dịch vụ Fail2ban, hãy khởi động và kích hoạt dịch vụ này thông qua tiện ích lệnh systemctl bên dưới. Sau đó, hãy xác minh dịch vụ Fail2ban để đảm bảo rằng dịch vụ đang chạy.
Mã:
sudo systemctl start fail2ban
sudo systemctl enable fail2ban

sudo systemctl status fail2ban
Bây giờ bạn sẽ thấy trạng thái dịch vụ Fail2ban đang chạy.


data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22750%22%20height=%22186%22%3E%3C/svg%3E


Bây giờ sau khi hoàn thành phần này và xác minh rằng Redis, Nginx, Supervisor và Dịch vụ Fail2ban đang chạy. Chuyển đến phần tiếp theo để cài đặt trình quản lý gói Node.js và Yarn.

Cài đặt Nodejs 16 và Yarn​

Phiên bản mới nhất của ERPNext là v14, yêu cầu ít nhất trình quản lý gói Node.js 16 và Yarn. Trong bước này, bạn sẽ thiết lập kho lưu trữ Nodesource cho Node.js v16 và thêm kho lưu trữ Yarn để phân phối RHEL. Sau đó, bạn sẽ cài đặt cả Node.js và yarn thông qua DNF.

Đầu tiên, hãy chạy lệnh bên dưới để thêm kho lưu trữ Nodesource cho Node.js v16 cho các bản phân phối RHEL.
Mã:
curl -fsSL https://rpm.nodesource.com/setup_16.x | sudo bash -
Bạn sẽ nhận được kết quả đầu ra tương tự như thế này - Tập lệnh sẽ tự động phát hiện phiên bản của bản phân phối RHEL hiện tại và thêm kho lưu trữ Nodesource.





Đối với kho lưu trữ Yarn, hãy chạy lệnh bên dưới để tải kho lưu trữ xuống và thêm vào hệ thống của bạn.
Mã:
curl -sL https://dl.yarnpkg.com/rpm/yarn.repo | sudo tee /etc/yum.repos.d/yarn.repo
Dưới đây là kết quả đầu ra mà bạn sẽ nhận được trên thiết bị đầu cuối của mình.


data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22750%22%20height=%22159%22%3E%3C/svg%3E


Bây giờ cả kho lưu trữ Nodesource và Yarn đều đã được thêm vào hệ thống Rocky Linux của bạn, đã đến lúc để cài đặt trình quản lý gói Node.js và Yarn thông qua DNF.

Chạy lệnh dnf bên dưới để cài đặt Node.js và Yarn vào hệ thống của bạn. Nhập y khi được nhắc xác nhận và nhấn ENTER để tiếp tục.
Mã:
sudo dnf install gcc-c++ make nodejs yarn
Quá trình cài đặt Node.js và Yarn sẽ bắt đầu.


data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22750%22%20height=%22173%22%3E%3C/svg%3E


Ngoài ra, khi được nhắc về khóa GPG cho cả hai kho lưu trữ, hãy nhập y và nhấn ENTER để thêm khóa GPG vào hệ thống của bạn.


data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22643%22%20height=%22319%22%3E%3C/svg%3E


Bây giờ trình quản lý gói Node.js và Yarn đã được cài đặt, tiếp theo bạn sẽ cài đặt gói Wkhtmltopdf thông qua tệp RPM.

Cài đặt Wkhtmltopdf​

Trong bước này, bạn sẽ cài đặt gói Wkhtmltopdf sẽ được ERPNext sử dụng để tạo báo cáo PDF. Wkhtmltopdf có thể tải xuống và cài đặt thủ công thông qua tệp .deb hoặc tệp .rpm.

Đầu tiên, hãy chạy lệnh dnf bên dưới để cài đặt các phần phụ thuộc cho gói Wkhtmltopdf.
Mã:
sudo dnf install fontconfig freetype libX11 libXext libXrender libjpeg libpng xorg-x11-fonts-75dpi xorg-x11-fonts-Type1
Nhập y khi được nhắc và nhấn ENTER để tiếp tục.


data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22750%22%20height=%22361%22%3E%3C/svg%3E


Tiếp theo, chạy lệnh rpm bên dưới để tải xuống và cài đặt gói Wkhtmltopdf vào hệ thống Rocky Linux của bạn.
Mã:
sudo rpm -Uvh https://github.com/wkhtmltopdf/packaging/releases/download/0.12.6.1-2/wkhtmltox-0.12.6.1-2.almalinux9.x86_64.rpm
Sau khi Wkhtmltopdf được cài đặt, hãy chạy các lệnh bên dưới để xác minh cài đặt.

Gói Wkhtmltopdf cung cấp hai công cụ dòng lệnh, Lệnh wkhtmltopdf được sử dụng để chuyển đổi một trang HTML sang PDF, trong khi lệnh wkhtmltoimage chuyển đổi trang HTML sang nhiều định dạng hình ảnh khác nhau.
Mã:
which wkhtmltopdf
which wkhtmltoimage
Mã:
wkhtmltopdf --version
wkhtmltoimage --version
Bạn sẽ nhận được kết quả tương tự như sau - Gói Wkhtmltopdf v0.12 được cài đặt trên hệ thống Rocky Linux của bạn.


data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22750%22%20height=%22205%22%3E%3C/svg%3E


Tại thời điểm này, bạn đã hoàn tất việc cài đặt các gói phụ thuộc cho ERPNext và frappeframework. Bao gồm Python3.10, Redis, Nginx, Supervisor, Fail2ban, MariaDB Server và các gói Wkhtmltopdf.

Trong phần tiếp theo, bạn sẽ bắt đầu cài đặt ERPNext. Nhưng trước tiên, bạn sẽ cài đặt và thiết lập frappeframework.

Cài đặt Frappeframework thông qua bench​

ERPNext là phần mềm ERP nguồn mở được tạo bằng frappeframework, được viết bằng Python và JavaScript. ERPNext sẽ chạy trong frappeframework, vì vậy bạn phải cài đặt frappeframework trên hệ thống của mình, sau đó bạn có thể cài đặt ERPNext.

Vì vậy, trước tiên, bạn phải cài đặt bench. Sau đó, cài đặt frappeframework thông qua bench. Cuối cùng, bạn sẽ cài đặt ứng dụng ERPNext trong frappeframework.

Chạy lệnh pip3.10 bên dưới để cài đặt 'bench' từ kho lưu trữ PyPI.
Mã:
sudo pip3.10 install frappe-bench
Bạn sẽ nhận được kết quả tương tự như thế này trong quá trình cài đặt bench.


data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22750%22%20height=%22438%22%3E%3C/svg%3E


Sau khi bench được cài đặt, hãy chạy lệnh bên dưới để xác minh.
Mã:
which bench
bench --version
Bạn sẽ nhận được lệnh đường dẫn nhị phân 'bench' và phiên bản hiện tại của bench mà bạn đã cài đặt.


data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22450%22%20height=%22163%22%3E%3C/svg%3E


Sau khi cài đặt bench, bạn sẽ cài đặt frappe framework thông qua lệnh bench.

Chạy lệnh 'bench' bên dưới để cài đặt frappe framework vào thư mục làm việc hiện tại của bạn. Ngoài ra, bạn sẽ chỉ định phiên bản Python sẽ được sử dụng cho Python 3.10, chỉ định phiên bản frappe framework là v14. Thư mục cài đặt đích là 'frappe-bench'.
Mã:
bench init --python python3.10 --frappe-branch version-14 frappe-bench
Bạn sẽ nhận được kết quả tương tự như thế này trong quá trình cài đặt frappeframework.


data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22750%22%20height=%22281%22%3E%3C/svg%3E


Sau khi quá trình cài đặt frappe framework hoàn tất, bạn sẽ nhận được thông báo sau đầu ra.


data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22737%22%20height=%22592%22%3E%3C/svg%3E


Cuối cùng, hãy chạy lệnh bên dưới để cho phép những người dùng khác đọc và thực thi vào thư mục cài đặt frappe framework '/home/frappe/frappe-bench'. Điều này là cần thiết để máy chủ web Nginx có thể đọc và thực thi khung flap.
Mã:
sudo chmod -R o+rx /home/frappe/frappe-bench
or
sudo chmod -R o+rx /home/frappe
Sau khi cài đặt khung frappe, bạn sẽ sẵn sàng cài đặt và thiết lập ERPNext.

Thiết lập ứng dụng mới trong Frappe​

Trước khi cài đặt ERPNext, bạn phải tạo một trang web/dự án mới trên khung frappe. Trong bước này, bạn sẽ tạo một site/project mới và chuyển môi trường vào project mới thông qua bench.

Đầu tiên, di chuyển thư mục làm việc của bạn đến 'frappe-bench' thông qua lệnh cd.
Mã:
cd ~/frappe-bench
Chạy lệnh bench bên dưới để tạo site/project mới cho ERPNext. Trong ví dụ này, bạn sẽ tạo site mới 'erp.howtoforge.local', đây là tên miền mục tiêu của cài đặt ERPNext. Ngoài ra, trong quá trình thiết lập, bạn sẽ được yêu cầu cấu hình mật khẩu Administrator cho project của mình, vì vậy hãy nhập mật khẩu và lặp lại. Mật khẩu này sẽ được sử dụng để đăng nhập vào ứng dụng ERPNext của bạn.
Mã:
bench new-site erp.howtoforge.local
Cuối cùng, chạy lệnh bên dưới để chuyển sang trang web/dự án mới 'erp.howtoforge.local'.
Mã:
bench use erp.howtoforge.local
Dưới đây là kết quả trong quá trình tạo trang web/dự án và sau khi bạn chuyển sang trang web/dự án mới site/project.


data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22750%22%20height=%22298%22%3E%3C/svg%3E

Cài đặt ERPNext qua bench​

Trong bước này, bạn sẽ bắt đầu cài đặt ERPNext bên trong dự án frappe framework mà bạn đã tạo.

Đầu tiên, hãy chạy lệnh bên dưới để tải xuống ứng dụng 'payments' và 'erpnext'. Trong ví dụ này, bạn sẽ tải xuống ERPNexxt v14.
Mã:
bench get-app payments
bench get-app --branch version-14 erpnext
Dưới đây là kết quả tương tự mà bạn sẽ nhận được trong quá trình tải xuống 'thanh toán'.


data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22750%22%20height=%22222%22%3E%3C/svg%3E


Dưới đây là quá trình tải xuống ERPNext ứng dụng.


data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22750%22%20height=%22231%22%3E%3C/svg%3E


Tiếp theo, chạy lệnh bên dưới để cài đặt ứng dụng ERPNext vào trang web/dự án 'erp.howtoforge.local'.
Mã:
bench --site erp.howtoforge.local install-app erpnext
Bạn sẽ nhận được kết quả tương tự như thế này - Bạn cũng sẽ thấy ứng dụng 'payments' được tự động cài đặt làm phần phụ thuộc cho ứng dụng ERPNext.


data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22750%22%20height=%22286%22%3E%3C/svg%3E


Cuối cùng, chạy lệnh bench bên dưới để bật trình lập lịch và tắt chế độ bảo trì trên site/dự án ERPNext 'erp.howtoforge.local'.
Mã:
bench --site erp.howtoforge.local enable-scheduler
bench --site erp.howtoforge.local set-maintenance-mode off

data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22750%22%20height=%22122%22%3E%3C/svg%3E


Tại thời điểm này, quá trình cài đặt ERPNext đã hoàn tất. Trong các bước tiếp theo, bạn sẽ thiết lập máy chủ web Nginx và Supervisor cho triển khai ERPNext trong môi trường sản xuất, có thể được cấu hình thông qua lệnh bench.

Thiết lập triển khai cho ERPNext​

Trước tiên, hãy chạy lệnh bên dưới để bắt đầu cấu hình frappe framework và ERPNext cho môi trường sản xuất. Lệnh này sẽ cài đặt Ansible và thiết lập triển khai ERPNext tự động thông qua Ansible.
Mã:
sudo bench setup production frappe
Dưới đây là kết quả đầu ra trong quá trình cài đặt Ansible.


data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22750%22%20height=%22419%22%3E%3C/svg%3E


Dưới đây là kết quả đầu ra khi cấu hình hoàn tất.


data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22675%22%20height=%22268%22%3E%3C/svg%3E


Tiếp theo, chạy lệnh bench bên dưới để thiết lập Nginx và Supervisor cho ERPNext. Khi được yêu cầu ghi đè các thiết lập hiện tại, hãy nhập y để xác nhận và nhấn ENTER.
Mã:
sudo bench setup supervisor
sudo bench setup nginx
Sau đó, hãy chạy lại lệnh bench bên dưới để đảm bảo rằng các cấu hình của Supervisor và Nginx đã được cài đặt.
Mã:
sudo bench setup production frappe
Nhập y để ghi đè các thiết lập hiện tại và nhấn ENTR để tiếp tục.


data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22750%22%20height=%22505%22%3E%3C/svg%3E


Tiếp theo, mở cấu hình Giám sát '/etc/supervisor.conf' thông qua lệnh trình chỉnh sửa nano sau.
Mã:
sudo nano /etc/supervisor.conf
Đảm bảo bạn có dòng sau trong phần '[include]'. Nếu không, bạn có thể thay đổi định dạng thành '*.conf' như bên dưới.
Mã:
[include]
file = /etc/supervisord.d/*.conf
Lưu và thoát tệp khi hoàn tất.

Bây giờ hãy chạy tiện ích lệnh systemctl bên dưới để khởi động lại dịch vụ Supervisor và áp dụng các thay đổi.
Mã:
sudo systemctl restart supervisord
Cuối cùng, hãy chạy lệnh bên dưới Lệnh 'supervisorctl' với quyền sudo. Thao tác này sẽ xác minh tất cả các quy trình và dịch vụ được sử dụng bởi frappe framework và ERPNext.
Mã:
sudo supervisorctl status
Nếu quá trình cài đặt ERPNext của bạn thành công, bạn sẽ nhận được kết quả tương tự như sau - Tất cả các dịch vụ cho ERPNext đang chạy.


data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22750%22%20height=%22342%22%3E%3C/svg%3E


Tại thời điểm này, quá trình cài đặt ERPNext của bạn đã hoàn tất và nó đang chạy với Nginx làm máy chủ web và Supervisor cho trình quản lý quy trình. Bây giờ bạn có thể truy cập cài đặt ERPNext của mình thông qua tên miền và trình duyệt web.

Cấu hình ERPNext​

Mở trình duyệt web của bạn và truy cập tên miền cài đặt ERPNext của bạn (ví dụ: http://erp.howtoforge.local/). Sau đó, bạn sẽ thấy trang đăng nhập của frappe framework.

Nhập người dùng mặc định là 'Quản trị viên' và nhập mật khẩu bạn đã sử dụng khi tạo trang web/dự án.


data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22750%22%20height=%22607%22%3E%3C/svg%3E


Bây giờ, hãy chọn ngôn ngữ, múi giờ và tiền tệ mặc định. Sau đó nhấp vào Tiếp theo.


data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22750%22%20height=%22589%22%3E%3C/svg%3E


Nhập người dùng quản trị mới cho cài đặt ERPNext của bạn. Nhập tên đầy đủ, địa chỉ email và mật khẩu của bạn, sau đó nhấp vào Tiếp theo.


data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22750%22%20height=%22656%22%3E%3C/svg%3E


Nhập tên công ty và tải logo công ty của bạn lên, sau đó nhấp vào Tiếp theo.


data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22750%22%20height=%22604%22%3E%3C/svg%3E


Nhập thông tin chi tiết về tổ chức của bạn và nhấp vào Hoàn tất thiết lập.


data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22750%22%20height=%22708%22%3E%3C/svg%3E


Bây giờ bạn sẽ thấy bảng điều khiển quản trị cài đặt ERPNext của mình.


data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22750%22%20height=%22565%22%3E%3C/svg%3E

Bảo mật bằng chứng chỉ SSL/TLS thông qua Certbot và Letsencrypt​

Trong bước cuối cùng này, bạn sẽ bảo mật ERPNext bằng chứng chỉ SSL/TLS thông qua công cụ Certbot và Letsencrypt. Trước khi bắt đầu, hãy đảm bảo rằng tên miền của bạn được trỏ đến địa chỉ IP máy chủ của bạn và đảm bảo rằng bạn có địa chỉ email hợp lệ sẽ được sử dụng để đăng ký Letsencrypt.

Cài đặt công cụ Certbot và plugin Certbot Nginx thông qua lệnh dnf bên dưới. Khi được nhắc, hãy nhập y để xác nhận và nhấn ENTER để tiếp tục.
Mã:
sudo dnf install certbot python3-certbot-nginx
Sau khi certbot được cài đặt, hãy chạy lệnh certbot bên dưới để tạo chứng chỉ SSL cho tên miền ERPNext của bạn. Hãy đảm bảo thay đổi tên miền và địa chỉ email trong lệnh bên dưới.
Mã:
sudo certbot --nginx --agree-tos --no-eff-email --redirect --hsts --staple-ocsp --email [emailprotected] -d erp.howtoforge.local
Với điều này, cài đặt ERPNext hiện được bảo mật bằng chứng chỉ SSL/TLS thông qua Certbot và Letsencrypt. Bạn cũng đã cấu hình tự động chuyển hướng HTTP sang HTTPS trên tên miền ERPNext của mình, Certbot sẽ tự động xử lý.

Kết luận​

Trong hướng dẫn này, bạn đã học cách cài đặt ERPNext, một phần mềm ERP nguồn mở, trên máy chủ Rocky Linux 9. Bạn cũng đã học cách cài đặt một số phần phụ thuộc như Python 3.10, được cài đặt thủ công bằng cách biên dịch mã nguồn và cài đặt. Các phụ thuộc khác mà bạn cũng đã cài đặt là MariaDB Server, Nginx, Supervisor, Redis và Fail2ban.

Bạn cũng đã học cách cài đặt frappe framework và cài đặt ERPNext trên đó. Sau đó, bạn đã học cách cấu hình cơ bản của ERPNext như phần mềm ERP.

Cuối cùng, bạn cũng đã triển khai ERPNext cho sản xuất bằng cách cấu hình Nginx làm máy chủ web và Supervisor làm trình quản lý quy trình. Bạn cũng đã bảo mật triển khai ERPNext thông qua Certbot và Letsencrypt.
 
Back
Bên trên