CentOSにPleasanterをインストールしてみた
投稿日: / 更新日:
はじめに
HinemosとPleasanterを連携するために、Pleasanter環境を用意した時、
いくつか詰まったところがあったので、備忘録も兼ねてまとめてみました。
環境情報
Centos 7.9 にPleasanterを入れていきます。
目的としては単なる動作確認なので、FirewallやSELinuxは特に設定していません。
なお、SELinuxに関しては、無効化して構築しました。
今回構築する環境の概要は以下の通りです。
対象 | 内容 |
OS | CentOS 7.9 |
DB | PostgreSQL 15 |
Webサーバ | nginx 1.25.3 |
Platform | .NET 6.0 |
Pleasanter | Pleasanter 1.3.49.0 |
構築するにあたって、以下のパッケージを利用します。予め入れておきます。
- wget
- unzip
また、実行ユーザはすべてrootとなっています。
ユーザ所有者の変更とかは飛ばしているので、ご了承ください。
Pleasanterの導入
それでは、Pleasanterを導入していきたいと思います。
1 .NETのセットアップ
1 2 3 |
# rpm -Uvh https://packages.microsoft.com/config/centos/7/packages-microsoft-prod.rpm # yum install dotnet-sdk-6.0 # dotnet --version |
dotnet-install.shで、.NETをインストールすることもできますが、
必要な依存関係のパッケージまでインストールされず、個別で入れる必要があります。
また、バージョンを指定しないと最新の.NETがインストールされてしまうため注意が必要です。
ということで、用意するのが少し手間なので、特に理由がなければdotnet-install.shは使わず
yumで.NETをセットアップすることを勧めします。
dotnet-install.shの扱い方は、以下に記載されています。
https://learn.microsoft.com/ja-jp/dotnet/core/install/linux-scripted-manual#scripted-install
yumで入れるにあたって、以下のドキュメントを参考にしました。
https://learn.microsoft.com/ja-jp/dotnet/core/install/linux-centos
2 GDI+のインストール
1 2 |
# yum install -y epel-release # yum install -y libgdiplus |
3 PostgreSQLのセットアップ
● PostgreSQLのインストール
1 2 3 |
# yum install -y https://download.postgresql.org/pub/repos/yum/reporpms/EL-7-x86_64/pgdg-redhat-repo-latest.noarch.rpm # yum update -y # yum install -y postgresql15-server postgresql15-contrib |
● データベースの初期化
以下のコマンドを実行します。
パスワードを求められるので、適宜設定します。
1 |
# su - postgres -c '/usr/pgsql-15/bin/initdb -E UTF8 --locale=C -A scram-sha-256 -W' |
● PostgreSQLのログ出力設定
/var/lib/pgsql/15/data/postgresql.confにある各パラメータのうち、以下のパラメータを修正します。
1 2 3 |
log_destination = 'stderr' logging_collector = on log_line_prefix = '[%t]%u %d %p[%l]' |
上記パラメータのうち、log_destinationとlogging_collectorは基本的に上記と同じ内容になっているはずです。
log_line_prefixは、デフォルト値が上記と異なるので、修正します。
● PostgreSQLのサービス再起動、サービス化
1 2 |
# systemctl restart postgresql-15 # systemctl enable postgresql-15 |
4 Pleasanterのセットアップ
● パッケージの用意
Pleasaneterをここから取得します。
https://github.com/Implem/Implem.Pleasanter/releases
Pleasanterのマニュアルに沿って、ここでもルートディレクトリにwebディレクトリを作って
Pleasanterを構築していきたいと思います。
以下のコマンドを実行し、取得したファイルを展開します。
1 2 |
# mkdir /web # unzip Pleasanter_1.3.49.0.zip -d /web |
● データベースの構成
/web/pleasanter/Implem.Pleasanter/App_Data/Parameters/Rds.jsonを設定します。
4行目にあるPWDには、データベースを初期化した際に設定したパスワードを設定します。
1 2 3 4 5 6 7 8 9 10 11 12 13 |
{ "Dbms": "PostgreSQL", "Provider": "Local", "SaConnectionString": "Server=localhost;Port=5432;Database=postgres;UID=postgres;PWD=<設定したパスワード>, "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の実行
1 2 |
# cd /web/pleasanter/Implem.CodeDefiner # dotnet Implem.CodeDefiner.dll _rds |
● Pleasanter起動確認
まず、以下のコマンドを実行します。
1 2 |
# cd /web/pleasanter/Implem.Pleasanter # dotnet Implem.Pleasanter.dll |
実行後、別途ターミナルを開いて、以下のコマンドを実行し、起動を確認します。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 |
# curl -v http://localhost:5000/ * About to connect() to localhost port 5000 (#0) * Trying ::1... * Connected to localhost (::1) port 5000 (#0) > GET / HTTP/1.1 > User-Agent: curl/7.29.0 > Host: localhost:5000 > Accept: */* > < HTTP/1.1 302 Found < Content-Length: 0 < Date: Tue, 25 Jul 2023 05:49:41 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 |
起動の確認ができたら、作業していたターミナルに戻り、「Ctrl + C」でプロセスを終了します。
● サービススクリプトの作成
以下の内容で/etc/systemd/system/pleasanter.serviceを作成します。
Userのパラメータは、適宜修正してください。
今回は、rootユーザで起動するため、rootと設定します。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 |
[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 = <プリザンターを起動するユーザ> Group = root Environment=ASPNETCORE_ENVIRONMENT=Production Environment=DOTNET_PRINT_TELEMETRY_MESSAGE=false [Install] WantedBy = multi-user.target |
● サービスの登録・起動
1 2 3 |
# systemctl daemon-reload # systemctl enable pleasanter # systemctl start pleasanter |
5 nginxのセットアップ
リバースプロキシの設定をします。
portは80番を使います。
● nginxのインストール
まず、nginxをリポジトリに追加します。
1 |
# vi /etc/yum.repos.d/nginx.repo |
以下の内容を記載します。
1 2 3 4 5 |
[nginx] name=nginx repo baseurl=http://nginx.org/packages/mainline/centos/7/$basearch/ gpgcheck=0 enabled=1 |
以下のコマンドでインストールします。
1 |
# yum -y --enablerepo=nginx install nginx |
起動させます。
1 2 |
# systemctl enable nginx # systemctl start nginx |
● リバースプロキシの設定
/etc/nginx/conf.d/配下に、pleasanter.confというファイルを作成します。
ファイルには、以下の内容を記載します。
server_nameには、アクセスするときのホスト名、IPアドレスを設定します。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
server { listen 80; server_name <ホスト名>; 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を再起動させます。
1 |
# systemctl restart nginx |
以上で、Pleasanterの構築は完了です。
サーバに接続するとPleasanterのログイン画面が表示されるようになります。
接続後、以下の情報でログインします。
- ログインID:Administrator
- 初期パスワード:pleasanter
ログイン後、パスワードを再設定して、完了です。
トラブルシュート
Pleasanterに接続すると502エラー
SELinuxによってnginxからpleasanterへのアクセスが制御されている可能性があります。
無効化するか、ポリシー設定すると接続できます。
おわりに
弊社で扱っているHinemosはjavaで動くのですが、同じような感覚で「プラットフォームが最新版でも動くでしょ!」
なんて軽い気持ちで、最新版の.NET8を入れたのですが…(dotnet-install.shで入れたので少し苦労しました)
CodeDefinerの実行の際に、以下のエラーがでてしまい利用できなかったです。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
# dotnet Implem.CodeDefiner.dll _rds You must install or update .NET to run this application. App: /web/pleasanter/Implem.CodeDefiner/Implem.CodeDefiner.dll Architecture: x64 Framework: 'Microsoft.NETCore.App', version '6.0.0' (x64) .NET location: /usr/local/bin/ The following frameworks were found: 8.0.0 at [/usr/local/bin/shared/Microsoft.NETCore.App] Learn more: https://aka.ms/dotnet/app-launch-failed To install missing framework, download: |
Pleasanterの環境用件にある通り、最初から.NET6をセットアップするべきだったなと後悔しました。
FAQ:プリザンターの動作環境や推奨スペックが知りたい
https://pleasanter.org/manual/faq-recommended-specifications
今後もPleasanterを勉強していきたいと思います。
ではまた。