プリザンターをEC2(Red Hat Enterprise Linux 9)へインストールする

AWS

OSSのローコード・ノーコードツール「プリザンター(Pleasanter)」をAWSのEC上でセットアップする手順を説明します。公式のマニュアル通りでは動かない部分もあるので補完してみました。利用するOS、ソフトウェアは以下の通りです。

OSRed Hat Enterprise Linux 9
.NET8.0.410
DBPostgreSQL17
Webサーバーnginx 1.20.1
Pleasanterプリザンター 1.4.0.0以降

事前準備

OSのロケール設定

デフォルトのロケールは英語なので日本語に変更します。まずは日本語ロケールをインストールします。

sudo yum install glibc-langpack-ja

ロケールを日本語に設定します。

sudo localectl set-locale LANG=ja_JP.utf8

タイムゾーンをJST(アジア/東京)へ変更します。

sudo timedatectl set-timezone Asia/Tokyo

日本語のキーマップをリストします。

localectl list-keymaps | grep jp
jp
jp-OADG109A
jp-dvorak
jp-kana86
jp106

リストアップされたものから日本語のキーマップを設定します。

sudo localectl set-keymap jp106

ロケールの設定を確認します。

localectl
System Locale: LANG=ja_JP.utf-8
    VC Keymap: jp106
   X11 Layout: jp
    X11 Model: jp106
  X11 Options: terminate:ctrl_alt_bksp

タイムゾーンがJSTに変更されていることを確認します。

date
Fri May 30 12:21:07 AM JST 2025

インストールに必要なコマンドの準備

ソフトウェアのダウンロードに利用するコマンドをインストールしておきます。

yum install wget
sudo dnf install unzip

firewalldサービスをインストールし、有効化します。

sudo dnf install firewalld
sudo systemctl start firewalld
sudo systemctl enable firewalld

以下のコマンドで起動状態を確認します。runningと表示されれば、firewalldは正常に動作しています。

firewall-cmd --state

プリザンター用ユーザー追加

プリザンターのサービス起動用ユーザーを作成します。ユーザー名は任意でOKです。ここでは「pleasanter」という名前で作成します。サービス起動に利用するユーザーであるため以下のオプションを付与しています。
-r : システムユーザーとして作成(ログイン不要)
-s /bin/false : シェルを無効化(ログイン不可

sudo useradd -r -s /bin/false pleasanter

.NETのインストール

.NETのグローバリゼーション機能を有効にするために「libicu」パッケージをインストールします。

sudo dnf install libicu

.NETをインストールします。

sudo wget https://dot.net/v1/dotnet-install.sh -O dotnet-install.sh
sudo chmod +x ./dotnet-install.sh
sudo ./dotnet-install.sh -c 8.0 -i /usr/local/bin
dotnet --version

PostgreSQLのインストール

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

sudo dnf install -y https://download.postgresql.org/pub/repos/yum/reporpms/EL-9-x86_64/pgdg-redhat-repo-latest.noarch.rpm
sudo dnf install -y postgresql17-server postgresql17-contrib

データベースを初期化します。管理者のパスワード入力を求めれるので任意のパスワードを設定してください。

sudo su - postgres -c '/usr/pgsql-17/bin/initdb -E UTF8 -A scram-sha-256 -W'

ログの出力設定をします。/var/lib/pgsql/17/data/postgresql.conf のログ設定を以下の内容に変更します。

log_destination = 'stderr'
logging_collector = on
log_line_prefix = '[%t]%u %d %p[%l]'

PostgreSQLのサービスを再起動して設定を反映し、サービスの自動起動を有効にします。

sudo systemctl restart postgresql-17
sudo systemctl enable postgresql-17

「/var/lib/pgsql/17/data/postgresql.conf 」を編集し、外部からのDBアクセス設定を行います。ここでは簡易的にするため全てのIPアドレスからの接続を許可しています。

# - Connection Settings -
listen_addresses = '*'  # what IP address(es) to listen on;
port = 5432             # (change requires restart)

/var/lib/pgsql/17/data/pg_hba.conf に以下の行を追加します。ADDRESSには接続を許可するクライアントのIPアドレス範囲を指定します。

# TYPE  DATABASE        USER            ADDRESS                 METHOD
host    all             all             192.168.1.0/24          scram-sha-256

PostgreSQLサービスを再起動します。

sudo systemctl restart postgresql-17

プリザンターのセットアップ

アプリケーションの準備

ルートディレクトリ(”/”)に “web” ディレクトリを作成します。

sudo mkdir /web

ダウンロードセンターから、プリザンター最新バージョンをダウンロードし、/tmpフォルダに配置します。以下のコマンドでZIPファイルを「/web」フォルダに展開します。ZIPファイルは不要なので削除します。

sudo unzip Pleasanter_1.4.16.3.zip -d /web
rm /tmp/Pleasanter_1.4.16.3.zip

作成された「/web/Pleasanter」フォルダの所有者をプリザンター実行用ユーザーに変更します。

sudo chown -R pleasanter /web/pleasanter

データベースの構成設定

/web/pleasanter/Implem.Pleasanter/App_Data/Parameters/Rds.json を以下のように設定します。<Postgres管理者のパスワード>の部分はインストール時に設定した管理者パスワードを指定してください。

{
    "Dbms": "PostgreSQL",
    "Provider": "Local",
    "SaConnectionString": "Server=localhost;Port=5432;Database=postgres;UID=postgres;PWD=<Postgres管理者のパスワード>",
    "OwnerConnectionString": "Server=localhost;Port=5432;Database=#ServiceName#;UID=#ServiceName#_Owner;PWD=SetAdminsPWD",
    "UserConnectionString": "Server=localhost;Port=5432;Database=#ServiceName#;UID=#ServiceName#_User;PWD=SetUsersPWD",
    "SqlCommandTimeOut": 600,
    "MinimumTime": 3,
    "DeadlockRetryCount": 4,
    "DeadlockRetryInterval": 1000,
    "DisableIndexChangeDetection": true,
    "SysLogsSchemaVersion": 1
}

CodeDefinerの実行

CodeDefinerは、ユーザがプリザンターを利用するために必要なデータベースの構造を作成・更新するためにプリザンターのCommunity Editionに同梱されたプログラムです。新規インストール時にはデータベースを新規に作成し、バージョンアップ時にはデータベース構造を更新するため、どちらの場合もCodeDefinerの実行が必要となります。

本手順では.NETを /usr/local/bin にインストールしているものとして説明します。同一環境に複数バージョンの.NETが必要などの理由で.NETを異なるディレクトリにインストールする場合は、CodeDefinerの実行時に指定するディレクトリをインストール先に合わせて変更してください。
<プリザンターを起動するユーザー>:ここでは「pleasanter」を指定します。
<言語>:日本語を指定する場合は”ja”を指定
<タイムゾーン>:日本の場合は”Asia/Tokyo”をします。
指定可能なパラメータはFAQ:プリザンターでサポートしている言語とタイムゾーンのパラメータの設定値を知りたいで確認できます。

cd /web/pleasanter/Implem.CodeDefiner
sudo -u <プリザンターを起動するユーザ> /usr/local/bin/dotnet Implem.CodeDefiner.dll _rds /l "<言語>" /z "<タイムゾーン>"

今回は以下のように指定しました。

sudo -u  pleasanter /usr/local/bin/dotnet Implem.CodeDefiner.dll rds /l "ja" /z "Asia/Tokyo"

途中で 「Type “y” (yes) if the license is correct, otherwise type “n” (no).」 と表示されたら y を入力してください。

プリザンターの起動

いよいよプリザンターを起動します。以下のコマンドで起動します。

cd /web/pleasanter/Implem.Pleasanter
sudo -u pleasanter /usr/local/bin/dotnet Implem.Pleasanter.dll

以下のような出力がされていれば起動OKです。

info: Microsoft.Hosting.Lifetime[14]
      Now listening on: http://localhost:5000
info: Microsoft.Hosting.Lifetime[0]
      Application started. Press Ctrl+C to shut down.
info: Microsoft.Hosting.Lifetime[0]
      Hosting environment: Production
info: Microsoft.Hosting.Lifetime[0]
      Content root path: /web/pleasanter/Implem.Pleasanter

別のターミナルを起動し、接続確認を行います。

curl -v http://localhost:5000/

接続が成功すれば以下のような応答があります。

*   Trying ::1:5000...
* Connected to localhost (::1) port 5000 (#0)
> GET / HTTP/1.1
> Host: localhost:5000
> User-Agent: curl/7.76.1
> Accept: */*
>
* Mark bundle as not supporting multiuse
< HTTP/1.1 302 Found
< Content-Length: 0
< Date: Tue, 25 Jul 2023 02:42:19 GMT
< Server: Kestrel
< Location: http://localhost:5000/users/login?ReturnUrl=%2F
< X-Frame-Options: SAMEORIGIN
< X-XSS-Protection: 1; mode=block
< X-Content-Type-Options: nosniff
<
* Connection #0 to host localhost left intact

Pleasanterサービス用スクリプトの作成

/etc/systemd/system/pleasanter.service を以下の内容で新規作成します。下記の User にはあらかじめ決めたプリザンターを起動するユーザを指定します。ここでは「pleasanter」を指定しています。

[Unit]
Description = Pleasanter
Documentation =
Wants=network.target
After=network.target

[Service]
ExecStart = /usr/local/bin/dotnet Implem.Pleasanter.dll
WorkingDirectory = /web/pleasanter/Implem.Pleasanter
Restart = always
RestartSec = 10
KillSignal=SIGINT
SyslogIdentifier=dotnet-pleasanter
User = pleasanter
Group = root
Environment=ASPNETCORE_ENVIRONMENT=Production
Environment=DOTNET_PRINT_TELEMETRY_MESSAGE=false

[Install]
WantedBy = multi-user.target

サービスの自動起動を有効化

以下コマンドを実行してプリザンターサービスの自動起動を有効化します。

sudo systemctl daemon-reload
sudo systemctl enable pleasanter
sudo systemctl start pleasanter

リバースプロキシ(nginx)のセットアップ

通常のwebサーバと同じ Port80 でアクセスできるようにリバースプロキシの設定を行います。

 SELinuxの設定変更

getenforce コマンドを利用し、SELinux (Security-Enhanced Linux) の現在の動作モードを確認します。

getenforce 

「Enforcing」が表示された場合は以下のコマンドを実行し、httpd が外部ネットワークへの接続を許可できるようにします。

sudo setsebool -P httpd_can_network_connect on

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

sudo dnf install -y nginx
sudo systemctl enable nginx

リバースプロキシの設定

/etc/nginx/conf.d/pleasanter.conf を以下の内容で作成します。 server_name 行には実際にアクセスするサーバのホスト名またはIPアドレスを指定します。

server {
    listen  80;
    server_name   192.168.1.100;
    client_max_body_size 100M;
    location / {
       proxy_pass         http://localhost:5000;
       proxy_http_version 1.1;
       proxy_set_header   Upgrade $http_upgrade;
       proxy_set_header   Connection keep-alive;
       proxy_set_header   Host $host;
       proxy_cache_bypass $http_upgrade;
       proxy_set_header   X-Forwarded-For $proxy_add_x_forwarded_for;
       proxy_set_header   X-Forwarded-Proto $scheme;
    }
}

上記ファイルを作成後、nginxサービスを再起動します。

sudo systemctl restart nginx

http(80)のポート開放

以下コマンドを実行して、クライアントからWebサービスへアクセスさせるために http(80)ポートを開放します。

sudo firewall-cmd --permanent --add-port=80/tcp
sudo firewall-cmd --reload

プリザンターをインストールしたEC2インスタンスのインバウンドルールでもhttp(80)ポートを開放する必要があるのでセキュリティグループで許可してください。

プリザンターの起動確認

プリザンターを起動し、ブラウザで「http://<IPアドレス またはホスト名>」にアクセスします。プリザンターのログイン画面が表示されるので「ログインID: Administrator」、「初期パスワード: pleasanter」を入力し、ログインします。パスワードの変更画面が表示されるので任意のパスワードに変更してください。

これでセットアップは完了です!お疲れ様でした!

(再掲)サービスの再起動、IPアドレスの変更

プリザンター、nginxの設定変更などを行い、サービスを再起動したい場合は systemctl コマンドで行います。

sudo systemctl restart nginx
sudo systemctl restart pleasanter

EC2のIPアドレスが変更になった場合は「/etc/nginx/conf.d/pleasanter.conf」の「server_name」を修正してください。

server_name   192.168.1.100;

以上

タイトルとURLをコピーしました