OSSのローコード・ノーコードツール「プリザンター(Pleasanter)」をAWSのEC上でセットアップする手順を説明します。公式のマニュアル通りでは動かない部分もあるので補完してみました。利用するOS、ソフトウェアは以下の通りです。
OS | Red Hat Enterprise Linux 9 |
.NET | 8.0.410 |
DB | PostgreSQL17 |
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;
以上