Ubuntu20.04にERPNextスタックをインストールする方法

提供:Dev Guides
移動先:案内検索

著者は、 Write for DOnations プログラムの一環として、 Software in the PublicInterestを選択して寄付を受け取りました。

序章

ERPNext は、オープンソーステクノロジーのパワーと柔軟性を活用するエンタープライズリソースプランニング(ERP)スイートです。 財務、販売、人材、製造、購入、サービス、ヘルプデスクのニーズなどのコアビジネスプロセスの管理に優れています。 ERPNextのようなシステムを実装する利点には次のものがあります。

  • 反復的なビジネスプロセスを自動化することによる生産性の向上
  • 社内のすべての部門のデータベースを共有することにより、IT効率が向上しました
  • ビジネスユニットが互いにどのように関連しているかという統合されたビジョンのおかげで、より良い意思決定が可能になります

ERPNextは、[X13X] Node / JavaScriptランタイム環境を最大限に活用し、を使用するPythonで記述されたフルスタックWebアプリケーションフレームワークであるFrappeに基づいています。データベースバックエンドとしてのMariaDB。 ERPNextのようなFrappeベースのアプリケーションの多くの利点の1つは、ベンチコマンドラインユーティリティです。 ベンチCLIは、複数のFrappe / ERPNextサイトのインストール、更新、構成、管理などのタスクを自動化することにより、管理者の時間を節約します。

このチュートリアルでは、Ubuntu20.04を実行している1台のサーバーにERPNextスタックをインストールして構成します。 これにより、ニーズに応じてさまざまな開発環境または本番環境用にスタックを構成でき、より複雑でフォールトトレラントなアーキテクチャを構築する準備が整います。

前提条件

注:サーバーの仕様を選択するときは、ERPシステムはリソースを大量に消費することに注意してください。 このガイドでは、基本的な使用例には十分な4 GBのRAMを搭載した1台のサーバーが必要ですが、特定のハードウェア要件は、ユーザー数やビジネスの規模によって異なる場合があります。


ステップ1—ファイアウォールの構成

開発用にファイアウォールを構成することはオプションですが、本番用にファイアウォールを構成することは必須のセキュリティ慣行です。

ERPNextサーバーで次のポートを開く必要があります。

  • HTTPおよびHTTPSの場合はそれぞれ80/tcpおよび443/tcp
  • 3306/tcp MariaDB接続用(データベースへのリモートアクセスが必要な場合にのみ推奨)
  • IMAPとSTMPの場合はそれぞれ143/tcp25/tcp
  • SSH用の22/tcp(UFW設定でOpenSSHをまだ有効にしていない場合)
  • 8000/tcpは、本番環境にデプロイする前にプラットフォームをテストします

一度に複数のポートを開くには、次のコマンドを使用できます。

sudo ufw allow 22,25,143,80,443,3306,8000/tcp

または、次のコマンドを使用して、特定のポートの特定のIPアドレスからの接続を許可できます。

sudo ufw allow from server_IP to any port port_number

必要なすべてのポートを開いた後、ファイアウォールを有効にします。

sudo ufw enable

次に、ファイアウォールのステータスを確認します。

sudo ufw status

UFWは有効なルールのリストを出力します。 ERPNextの必要なポートが開いていることを確認してください。

OutputStatus: active

To                         Action      From
--                         ------      ----
22,25,80,143,443,3306,8000/tcp  ALLOW       Anywhere
22,25,80,143,443,3306,8000/tcp (v6) ALLOW       Anywhere (v6)

UFWの構成の詳細については、 Ubuntu20.04でUFWを使用してファイアウォールを設定する方法についてのガイドを参照してください。

適切なファイアウォールの設定は、2つの準備手順の最初のステップです。 次に、サーバーでキーボードマッピングと文字エンコードを構成します。

ステップ2—ロケールの構成

コンソールのキーボードマッピング、およびホストの言語と文字エンコードを構成することを強くお勧めします。 これは、ERPNext12のインストールプロセス中に発生する可能性のある問題を回避するために必要です。 この構成は、実際のERPNextプラットフォームのUI言語とは関係がなく、システムロケール構成と関係があることに注意してください。

まず、サーバーを更新します。

sudo apt update

次に、キーマップ、言語、および文字エンコードを構成します。

sudo localectl set-keymap us && sudo localectl set-locale LANG=en_US.utf8

localectlユーティリティは、Ubuntu 20.04およびその他のLinuxディストリビューションで使用され、ユーザーがログインする前にシステム全体のロケールとキーボードレイアウトの設定を制御および変更します。これは、ERPNext12がまさに必要とするものです。

また、/etc/environmentファイルに次の行を追加する必要があります。 nanoまたはお好みのテキストエディタを使用して、ファイルを開きます。

sudo nano /etc/environment

次に、次のコンテンツを追加します。

/ etc / environment

LC_ALL=en_US.UTF-8
LC_CTYPE=en_US.UTF-8
LANG=en_US.UTF-8

ファイルを保存して閉じます。

サーバーを再起動して、すべての変更を適用します。

sudo reboot

サーバーを数分待ってから再起動してから、sshを使用してインスタンスを再起動します。 これで、データベースをインストールする準備が整いました。

ステップ3—MariaDBをインストールする

次に、MariaDBをサーバースタックに追加します。 ERPNext 12を正しく動作させるには、MariaDB10.2+が必要です。 Ubuntu20.04の公式リポジトリにはMariaDB10.3が含まれているため、aptコマンドを使用してこのバージョンをインストールできます。

sudo apt install mariadb-server

または、新しいMariaDBバージョンが必要な場合は、Ubuntu18.04にERPNextスタックをインストールする方法に関するガイドのステップ3に従うことができます。 これにより、MariaDBのオンラインリポジトリウィザードがガイドされ、最新バージョンであるMariaDB10.5のインストールに役立ちます。

mariadb-serverをインストールした後、次のパッケージをインストールします。

sudo apt install python3-mysqldb libmysqlclient-dev 

ERPNext 12はPythonアプリケーションであるため、データベース管理にはpython3-mysqldbライブラリが必要です。 libmysqlclient-devは、特定のMariaDB開発者機能にアクセスするために必要です。

次に、mysql_secure_installationスクリプトを実行して、MariaDBサーバーにセキュリティのレイヤーを追加します。

sudo mysql_secure_installation

mysql_secure_installationスクリプトは、いくつかの質問を表示します。

  • 最初のプロンプトでrootパスワードについて尋ねられますが、パスワードがまだ構成されていないため、ENTERを押します。
  • 次に、MariaDB root パスワードの変更について尋ねられたら、Nと答えます。 root アカウントは自動化されたシステム保守タスクと密接に関連しているため、Unix認証とともにデフォルトのパスワードを使用することをUbuntuベースのシステムに推奨するセットアップです。
  • 残りの質問は、匿名データベースユーザーの削除、ローカルホストにリモートでログインするための root アカウントの制限、テストデータベースの削除、および特権テーブルの再読み込みに関係しています。 これらすべての質問にYと答えても安全です。

mysql_secure_installationスクリプトを完了すると、MariaDBはデフォルト構成を使用して実行を開始します。 標準のERPNextインストールでは、すべてのデータベース操作にMariaDBのrootユーザーが使用されます。 このアプローチは単一サーバーのセットアップでは便利な場合がありますが、適切なセキュリティプラクティスとは見なされません。 したがって、次のセクションでは、特別な権限を持つ新しいユーザーを作成することにより、この問題を回避する方法を学習します。

MariaDBスーパー管理者ユーザーの作成

ERPNextは、データベース接続の管理にMariaDBの root ユーザーを使用することを想定していますが、これは必ずしも理想的ではありません。 この制限を克服し、root以外のユーザーにMariaDBを管理させるために、ユーザーにちなんで名付けられたデータベースを手動で作成します。 次に、新しいユーザーに特別な特権を割り当てて、ERPNextデータベース操作を実行できるようになります。

MariaDBプロンプトを開きます。

sudo mysql

次に、MariaDB接続に割り当てるユーザーにちなんで名付けられた新しいデータベースを作成します。 このチュートリアルではsammyを使用しますが、別の名前を選択できます。

CREATE DATABASE sammy;

次のSQLステートメントを使用してデータベースが作成されたことを確認します。

SHOW DATABASES;

次のような出力が表示されます。

Output+--------------------+
| Database           |
+--------------------+
| information_schema |
| mysql              |
| performance_schema |
| sammy              |
+--------------------+

次に、 root と同様の権限を持つMariaDBユーザーsammyを作成し、ユーザーに選択した強力なパスワードを与えます。 パスワードは安全な場所に保管してください。 後で必要になります:

GRANT ALL PRIVILEGES ON *.* TO 'sammy'@'%' IDENTIFIED BY 'mariadb_password' WITH GRANT OPTION;

次に、ユーザーの作成と新しいユーザーの特権の両方を確認します。

SELECT host, user, Super_priv FROM mysql.user;

次のような出力が表示されます。

Output+-----------+-------+------------+
| Host      | User  | Super_priv |
+-----------+-------+------------+
| localhost | root  | Y          |
| localhost | mysql | Y          |
| %         | sammy| Y         |
+-----------+-------+------------+
3 rows in set (0.001 sec)

次に、特権をフラッシュしてすべての変更を適用します。

FLUSH PRIVILEGES;

終了したら、セッションを終了します。

exit

データベースユーザーを作成したので、MariaDBを微調整するだけで、ERPNext12が適切に動作するようになります。 幸い、ERPNextチームは、実装の開始点として使用する優れた構成テンプレートを提供します。 次のセクションでは、そのテンプレートを使用してMariaDBデータベースを適切に構成する方法を学習します。

ステップ4—ERPNext用のMariaDBの構成

MariaDBをインストールして保護したら、ERPNext接続用に微調整します。

まず、mariadb.serviceを停止します。

sudo systemctl stop mariadb

次に、nanoまたはお気に入りのテキストエディターを使用して、mariadb.cnfという名前のMariaDB構成ファイルを作成します。

sudo nano /etc/mysql/mariadb.conf.d/mariadb.cnf

次に、ERPNextの公式構成テンプレートを追加します。

/etc/mysql/mariadb.conf.d/mariadb.cnf

[mysqld]

# GENERAL #
user                           = mysql
default-storage-engine         = InnoDB
socket                         = /var/lib/mysql/mysql.sock
pid-file                       = /var/lib/mysql/mysql.pid

# MyISAM #
key-buffer-size                = 32M
myisam-recover                 = FORCE,BACKUP

# SAFETY #
max-allowed-packet             = 256M
max-connect-errors             = 1000000
innodb                         = FORCE

# DATA STORAGE #
datadir                        = /var/lib/mysql/

# BINARY LOGGING #
log-bin                        = /var/lib/mysql/mysql-bin
expire-logs-days               = 14
sync-binlog                    = 1

# REPLICATION #
server-id                      = 1

# CACHES AND LIMITS #
tmp-table-size                 = 32M
max-heap-table-size            = 32M
query-cache-type               = 0
query-cache-size               = 0
max-connections                = 500
thread-cache-size              = 50
open-files-limit               = 65535
table-definition-cache         = 4096
table-open-cache               = 10240

# INNODB #
innodb-flush-method            = O_DIRECT
innodb-log-files-in-group      = 2
innodb-log-file-size           = 512M
innodb-flush-log-at-trx-commit = 1
innodb-file-per-table          = 1
innodb-buffer-pool-size        = 5462M
innodb-file-format             = barracuda
innodb-large-prefix            = 1
collation-server               = utf8mb4_unicode_ci
character-set-server           = utf8mb4
character-set-client-handshake = FALSE
max_allowed_packet             = 256M

# LOGGING #
log-error                      = /var/lib/mysql/mysql-error.log
log-queries-not-using-indexes  = 0
slow-query-log                 = 1
slow-query-log-file            = /var/lib/mysql/mysql-slow.log

# CONNECTIONS #

pid-file        = /var/run/mysqld/mysqld.pid
socket          = /var/run/mysqld/mysqld.sock
bind-address    = 0.0.0.0

[mysql]
default-character-set = utf8mb4

[mysqldump]
max_allowed_packet=256M

ファイルを保存して閉じます。 これらの構成の詳細については、ERPNextのGithubリポジトリでこのテンプレートファイルを確認してください。 これは、これらのオプションを検討するための便利な出発点です。

構成ファイル/etc/mysql/mariadb.conf.d/mariadb.cnfは、/etc/mysql/my.cnfにあるデフォルトのMariaDB構成に含まれるいくつかの値を補完し、オーバーライドします。 このファイルは、ERPNextのデータベースパフォーマンスを大幅に向上させる厳選されたテンプレートを提供します。 ただし、このテンプレートは優れた出発点ですが、ニーズに合わせてこれらのパラメーターを調整することで、MariaDBのパフォーマンスをさらに向上させることを妨げるものは何もないことに注意してください。

MariaDB接続のテスト

ERPNextは、ほとんどすべての内部操作をデータベース接続に依存しているため、続行する前に接続をテストすることをお勧めします。

mariadb.serviceを開始します:

sudo systemctl start mariadb

接続をテストするには、次のコマンドを使用できます。 sammymariadb_passwordを自分の資格情報に置き換えることを忘れないでください。

mysql --user sammy --password mariadb_password --host=localhost --protocol=tcp --port=3306 test

MariaDBの基本的なヘルプコンテンツといくつかのパラメーターを示す出力が表示されます。 これは、接続が成功したことを意味します。

Outputmysql  Ver 15.1 Distrib 10.4.13-MariaDB, for debian-linux-gnu (x86_64) using readline 5.2
Copyright (c) 2000, 2018, Oracle, MariaDB Corporation Ab and others.

Usage: mysql [OPTIONS] [database]

Default options are read from the following files in the given order:
/etc/my.cnf /etc/mysql/my.cnf ~/.my.cnf

...

  --ssl-verify-server-cert
                      Verify server's "Common Name" in its cert against
                      hostname used when connecting. This option is disabled by
                      default.
  -t, --table         Output in table format.
  --tee=name          Append everything into outfile. See interactive help (\h)
                      also. Does not work in batch mode. Disable with
                      --disable-tee. This option is disabled by default.
  -u, --user=name     User for login if not current user.
  -U, --safe-updates  Only allow UPDATE and DELETE that uses keys.
  -U, --i-am-a-dummy  Synonym for option --safe-updates, -U.
  -v, --verbose       Write more. (-v -v -v gives the table output format).

...

max-join-size                     1000000
secure-auth                       FALSE
show-warnings                     FALSE
plugin-dir                        (No default value)
default-auth                      (No default value)
binary-mode                       FALSE
connect-expired-password          FALSE

MariaDBの設定を調整したり、エラーを修正したりする必要がある場合は、次のコマンドを使用してサービスをリロードすることを忘れないでください。

sudo systemctl restart mariadb

完了したら、MariaDBを有効にします。

sudo systemctl enable mariadb

データベース接続をテストしたので、ERPNextアプリケーションのインストールを続行できます。

ステップ5—ERPNextの設定12

データベースバックエンドの準備ができたので、ERPNextWebアプリケーションのセットアップを続行できます。 このセクションでは、ERPNext 12に必要なすべてのコンポーネントをインストールおよび構成してから、アプリケーション自体をインストールする方法を学習します。

ERPNext12に必要なすべてのシステムパッケージを使用してサーバーを準備することから始めます。 次のコマンドを使用して、システム全体の依存関係をインストールします。

sudo DEBIAN_FRONTEND=noninteractive apt install -y curl build-essential python3-testresources python3-setuptools python3-dev libffi-dev python3-pip libcurl4 dnsmasq fontconfig git htop libcrypto++-dev libfreetype6-dev liblcms2-dev libwebp-dev libxext6 libxrender1 libxslt1-dev libxslt1.1 libffi-dev ntpdate postfix python3-dev python-tk screen vim xfonts-75dpi xfonts-base zlib1g-dev apt-transport-https libsasl2-dev libldap2-dev libcups2-dev pv libjpeg8-dev libtiff5-dev tcl8.6-dev tk8.6-dev libdate-manip-perl logwatch

Postfixプロンプトを回避するために、DEBIAN_FRONTEND=noninteractive変数がインストールコマンドに渡されました。 Postfix設定の詳細については、 Ubuntu20.04にPostfixをインストールして設定する方法に関するガイドをお読みください。

次に、Pythonの標準パッケージマネージャーであるpip3を更新してから、3つの追加のPythonモジュールの最新バージョンをインストールします。

 sudo -H python3 -m pip install --upgrade setuptools cryptography psutil

setuptoolsはPythonパッケージのインストールとアップグレードを容易にし暗号化はスタックに暗号化機能を追加しpsutilはシステム監視を支援します。 必要なすべてのグローバル依存関係をインストールしたので、ERPNext12に必要なすべてのサービスとライブラリをインストールします。

Node.jsとYarnの設定

ERPNext 12は、Node.jsサーバー環境のバージョン8以降で動作します。 実際、この記事の執筆時点では、公式のERPNexteasy_installスクリプトはノード8を使用しています。 ただし、セキュリティの観点から、ノード8は2020年に保守終了(EOL)に達し、セキュリティパッチをこれ以上受け取らないため、新しいバージョンをインストールすることをお勧めします。 この記事の執筆時点では、Ubuntu20.04にはNode.jsのバージョン10.19が含まれています。 このバージョンはまだ維持されていますが、同様の理由(1年以内にEOL)のため、使用を避けることを強くお勧めします。 このガイドでは、Node.jsバージョン12 LTSが、対応するnpmおよびyarnパッケージマネージャーとともにインストールされます。 Frappeフレームワークはyarnを使用して依存関係をインストールすることに注意してください。 別のインストール方法を使用する場合は、システムでバージョン1.12+のyarnが実行されていることを確認してください。

NodeSourceリポジトリをシステムに追加します。

curl -sL https://deb.nodesource.com/setup_12.x -o nodesource_setup.sh

これで、ダウンロードしたスクリプトの内容を調べることができます。

sudo nano nodesurce_setup.sh

スクリプトの内容に満足したら、スクリプトを実行できます。

sudo bash nodesource_setup.sh

このスクリプトは、aptリストを自動的に更新します。 これで、サーバーにnodejsをインストールできます。

sudo apt install nodejs

次に、npmパッケージマネージャーを使用してyarnをグローバルにインストールします。

sudo npm install -g yarn

Nodeをインストールしたので、引き続きプラットフォーム用にwkhtmltopdfを構成できます。

ERPNextは、wkhtmltopdfオープンソースツールを使用して、QtWebKitレンダリングエンジンを使用してHTMLコンテンツをPDFに変換します。 この機能は主に、請求書、見積もり、およびその他のレポートの印刷に使用されます。 ERPNext 12の場合、wkhtmltopdfの特定のバージョン、0.12.5にパッチが適用されたQtが必要です。

wkhtmltopdfをインストールするには、適切なディレクトリに切り替えてパッケージをダウンロードすることから始めます。この場合は/tmpです。

cd /tmp

プロジェクトのページから、Ubuntu20.04に適したwkhtmltopdfバージョンとパッケージをダウンロードします。

wget https://github.com/wkhtmltopdf/wkhtmltopdf/releases/download/0.12.5/wkhtmltox_0.12.5-1.bionic_amd64.deb

次に、dpkgツールを使用してパッケージをインストールします。

sudo dpkg -i wkhtmltox_0.12.5-1.bionic_amd64.deb

次に、関連するすべての実行可能ファイルを/usr/bin/ディレクトリにコピーします。

sudo cp /usr/local/bin/wkhtmlto* /usr/bin/

ファイルを配置したら、アクセス許可を変更して実行可能にします。

sudo chmod a+x /usr/bin/wk*

wkhtmltopdfが正しくインストールされたので、データベーススタックにRedisを追加します。

Redisのインストール

ERPNext 12は、Redisを使用してMariaDBのパフォーマンスを強化します。 具体的には、Redisはキャッシングを支援します。

まず、公式のUbuntu20.04リポジトリからRedisをインストールします。

sudo apt install redis-server

次に、起動時にRedisを有効にします。

sudo systemctl enable redis-server

スタックにRedisを追加したので、これまでに達成したことを要約してみましょう。 これまでに、ERPNext12に必要なすべての主要コンポーネントをインストールしました。これには次のものが含まれます。

  • MariaDBデータベースバックエンド
  • Node.jsJavaScriptサーバー環境
  • ヤーンパッケージマネージャー
  • Redisデータベースキャッシュ
  • wkhtmltopdfPDFドキュメントジェネレーター

ERPシステムを開発用にインストールする場合でも、本番用にインストールする場合でも、次のステップであるFrappeフルスタックフレームワークと実際のERPNext12Webアプリケーションをインストールする準備が整いました。

ステップ6— FrappeBenchCLIのインストール

ERPNextのスタック要件をすべてインストールしたので、Frappeのbenchコマンドラインユーティリティの柔軟性を解き放つことができます。 bench CLIは、Frappe Frameworkに基づくERPNextなどのアプリケーションのインストール、セットアップ、および管理のプロセスでユーザーを支援することを目的として設計されました。 次のセクションでは、bench CLIをインストールし、それを使用してERPNext12のセットアッププロセスを完了します。

Frappeユーザー(この場合はsammy)がhomeディレクトリに対して適切な権限を持っていることを確認してください。

sudo chown sammy -R /home/sammy

次に、frappe/benchリポジトリをホームディレクトリに複製します。 sammyをシステムユーザー名に置き換えることを忘れないでください。

git clone https://github.com/frappe/bench /home/sammy/.bench --depth 1 --branch master

benchCLIをインストールします。

sudo pip3 install -e /home/sammy/.bench

このガイドでは、テスト/実稼働シナリオ用にERPNext 12をインストールしているため、masterブランチを使用していることを前提としています。 ただし、アプリケーションまたはカスタムERPNextモジュールを開発する場合は、developブランチの方が適している可能性があります。 いずれの場合も、これでFrappeFrameworkをインストールする準備が整いました。 これは、ERPNext自体をインストールする前の最後のステップになります。

Frappeフレームワーク環境のセットアップ

このセクションでは、benchCLIを使用してFrappe環境を作成します。

Frappeのインストール中に、Ubuntuのファイル監視制限(デフォルトでは8192に設定されている)を超える場合があります。 この問題を回避するには、次のコマンドを使用して上限を設定します。

echo fs.inotify.max_user_watches=524288 | sudo tee -a /etc/sysctl.conf && sudo sysctl -p

teeコマンドは、echoコマンドの内容を呼び出されたファイルに追加すると同時に、出力をコンソールに出力します。

次に、FrappeFramework12を初期化します。 Sammyをシステムユーザー名に置き換えます。

bench init /home/sammy/frappe-bench --frappe-path https://github.com/frappe/frappe --frappe-branch version-12 --python python3

実行中に、いくつかの警告とともに、パスに関する1つのエラーが表示される場合があります。 プロセスを最後まで続けましょう。 完了すると、次のような出力が表示され、環境が正常に作成されたことを示します。

Output...
Done in 82.23s.
INFO:bench.utils:setting up backups
no crontab for sammy
SUCCESS: Bench /home/sammy/frappe-bench initialized

注: spawn ENOMEMエラーが発生すると、bench initプロセスが停止する可能性があります。 このエラーは、システムのメモリが不足した場合に発生します。 続行する前に、物理メモリを増設するか、SWAPスペースを割り当てることにより、問題を修正する必要があります。


環境の作成に使用されるコマンドを詳しく見てみましょう。

  • /home/sammy/frappe-benchは、Frappe Framework、Webサイト、および関連するアプリケーションがインストールされるパスです。 この例ではfrappe-benchと呼ばれる新しいディレクトリが作成され、必要なすべてのファイルを収容します。
  • --frappe-pathは、Frappeリポジトリを指します。この場合は、公式のGithubリポジトリです。
  • --frappe-branchは、インストールするFrappeバージョンです。 ERPNext 12をインストールするため、選択したバージョンはFrappe12です。
  • --pythonは、使用されるPythonバージョンです。 ERPNext12にはPython3.6以降が必要です。 ただし、以前のバージョンでは引き続きPython2.7を使用しています。

bench CLIコマンドの詳細については、ベンチコマンドのチートシートを参照してください。

Frappeフレームワークによって提供される柔軟性は、分離された環境を使用することをはるかに超えています。 また、さまざまなWebサイトを作成して、それらにアプリケーションをインストールすることもできます。

ステップ7— ERPNext12Webアプリケーションのインストール

このセクションでは、Frappeベースのサイトをセットアップしてから、ERPNext12アプリケーションをインストールします。

Frappeが初期化されたディレクトリに移動します。

cd /home/sammy/frappe-bench

続行する前に、特定のバージョンのPythonライブラリnumpyおよびpandasをFrappe仮想環境にインストールする必要があります。 次のコマンドを使用して、これらのパッケージをインストールします。

./env/bin/pip install numpy==1.18.5 && ./env/bin/pip install pandas==0.24.2

この時点で、次のメッセージが表示されている間、インストールが約10〜20分間停止する場合があります。

Output...
Building wheel for pandas (setup.py) ... -

これは、pandasおよびUbuntu20.04に関連するバグと関係があります。これらは、執筆時点ではまだかなり新しいものです。 それでもパッケージはビルドされ、完了すると次のような出力が表示されます。

Output...
Successfully built pandas
Installing collected packages: pandas
Successfully installed pandas-0.24.2

これで、インストールを続行できます。 benchCLIを使用してリポジトリからERPNext12をダウンロードします。

bench get-app erpnext https://github.com/frappe/erpnext --branch version-12

次に、新しいサイトを作成し、your_domainをこのサーバーのIPに関連付けたドメインに置き換えます。

bench new-site your_domain --admin-password 'erpnext_admin_password' --mariadb-root-username sammy --mariadb-root-password 'mariadb_password'

上記のコマンドで使用されているオプションを確認してみましょう。

  • bench new-siteは、FrappeFrameworkに基づいて新しいサイトを作成します。
  • your_domainは新しいサイトの名前です。 ドメインのDNSにサーバーのIPを指すAレコードがあることを確認してください。
  • erpnext_admin_passwordは、ERPNextのAdministratorユーザーに必要なパスワードです。 このパスワードは安全な場所に保管してください。まもなく必要になります。
  • mariadb_passwordは、MariaDBユーザーsammyのガイドの冒頭で作成したパスワードです。

これに続いて、ERPNextアプリケーションをサイトにインストールします。

bench --site your_domain install-app erpnext

インストールが完了すると、ERPNext12アプリケーションが機能するようになります。 次に、benchコマンドを使用してテストしてみましょう。

bench start

上記は、Webサーバーやその他のサービスに関するさまざまなメッセージを表示するリアルタイム監視コンソールを開始します。 Webブラウザーを開き、localhost:8000(ローカルインストールの場合)またはyour_domain:8000(リモートサーバーを使用している場合)に移動します。 ERPNextログイン画面が表示されます(サイトの運用準備が整ったら、後のステップでログインとセットアップを続行します)。

テスト展開にアクセスした後、ターミナルに戻り、CTRL+Cを押します。 これにより、ERPNextが停止し、監視コンソールが終了します。

主な目標がモジュールの作成またはERPNext12の変更である場合は、この時点で停止できます。 開発目的でこれ以上のコンポーネントは必要ありません。 ただし、手動で初期化する必要のない本番環境に対応したシステムが必要な場合は、いくつかの追加コンポーネントをインストールして構成する必要があります。 これがあなたの次のステップです。

ステップ8—本番用にERPNext12をセットアップする

ERPNext 12アプリケーションの準備はできていますが、システム全体はまだ実稼働の準備ができていません。 ERPNextの信頼性とセキュリティを確保するには、いくつかの追加サービスを有効にする必要があります。

  • Fail2ban は、悪意のあるユーザーやボットからのブルートフォース攻撃に対する保護の追加レイヤーを提供します。
  • Nginx は主にWebプロキシとして機能し、すべてのトラフィックをポート8000からポート80(HTTP)またはポート443(HTTPS)にリダイレクトします
  • スーパーバイザーは、ERPNextの主要なプロセスが常に稼働していることを確認し、必要に応じてそれらを再起動します。

ここまでは、ERPNext 12を手動でインストールして構成しました。これにより、特定のユースケースに合わせてプロセスをカスタマイズできます。 それでも、残りの本番セットアップでは、bench CLIの利便性を活用して、これらの残りのサービスのインストールと構成を自動化できます。

Frappe作業ディレクトリにいることを確認します。

cd /home/sammy/frappe-bench

次に、次のコマンドを使用して、本番用のERPNext12のセットアップを完了します。

sudo bench setup production sammy --yes

上記では、Nginx、Supervisor、Fail2Banをインストールして構成し、sammyを本番環境の所有者として設定します。

benchコマンドによって作成される構成ファイルは次のとおりです。

  • /etc/nginx/nginx.conf/etc/nginx/conf.d/frappe-bench.confにある2つのNginx構成ファイル
  • /etc/fail2ban/jail.d/nginx-proxy.confにある1つのFail2Banプロキシジェイルと/etc/fail2ban/filter.d/nginx-proxy.confにある1つのフィルター

このチュートリアルでは、これらのデフォルト構成で十分ですが、要件に合わせてこれらのファイルを自由に調べて調整する必要があります。 次のコマンドを実行すると、すべてのサービスを停止できます。

sudo supervisorctl stop all

そして、準備ができたら、サービスを再開できます。

sudo supervisorctl start all

これで、インストールをテストする準備が整いました。

ERPNext12インストールのテスト

まず、主要な本番サービスが実行されていることを確認します。 次のsystemctlコマンドを使用して、grepにパイプします。

systemctl list-unit-files | grep 'fail2ban\|nginx\|supervisor'

次のような出力が表示されます。

Outputfail2ban.service                       enabled
nginx.service                          enabled
supervisor.service                     enabled

すべてが期待どおりに機能していることを確認したら、サーバー上でERPNext12をライブでテストできます。 お気に入りのブラウザを開き、 your_domain 、またはERPNext12アプリケーションをホストしている場所に移動します。

数秒後、ERPNext12ログイン画面が表示されます。 ユーザー名(メール)には Administrator を使用し、パスワードには以前に作成したerpnext_admin_passwordを使用します。

次の画面に、アプリケーションのUI言語を選択できるドロップダウンメニューが表示されます。

言語の選択に続いて、ERPNextはあなたの国、タイムゾーン、および通貨についてプロンプトを表示します。

地域情報を入力すると、最初のERPNextユーザーを作成できるようになります。 指定した情報は、ユーザーのログイン資格情報として使用されます。

次の画面で、ERPNextがDomainsと呼ぶものについて尋ねられます。 ドメインがわからない場合は、配信を選択し、次へボタンをクリックしてください。

次に、会社名と略語を入力する必要があります。

最後の画面で、ERPNextはあなたの会社が何をしているのか、銀行名、勘定科目表の種類、そして会計年度の期間を尋ねます。 後で追加の銀行に入ることができます。 今のところ、必要に応じてすべてのフィールドに入力し、セットアップの完了ボタンをクリックします。

次に、プログレスバーが表示されます。

セットアッププロセスが完了すると、ERPNext12のメインダッシュボードが表示されます。

これで、ERPNext12アプリケーションが完全にインストールおよび構成されました。

結論

ERPNext 12アプリケーションが適切にインストールされたので、ビジネスニーズに合わせてシステムの実装を開始することをお勧めします。 良い出発点は、ERPNextダッシュボードのはじめにボタンをクリックすることです。 ERPNextは、すべてのビジネスおよびeコマースのニーズに合わせてプラットフォームを構成するのに役立ちます。

また、ERPNextの速度を向上させることもできます。 その場合は、 ERPNextパフォーマンスチューニングについて読むことができます。これは、ベストプラクティスとパフォーマンス関連の問題をデバッグする方法をガイドします。