プリザンターを CentOS にインストールする
## 概要
本マニュアルは以下に示す環境にプリザンターの動作環境を構築するための手順を示したものです。
|対象|内容|
|---|---|
|OS|CentOS 7.9|
|DB|PostgreSQL 15|
|Webサーバ|nginx 1.20.1|
|Platform|.NET 6.0|
|Pleasanter|プリザンター 1.3|
## 制限事項
1. CentOS7は.NET8がサポート対象外となったため、プリザンターバージョン1.4.0.0以降は動作いたしません。
## 前提条件
1. OSのセットアップ方法については記載しません。予めOSはセットアップされていることとします。
1. 動作環境やスペックについての詳細はこちらをご確認ください。
[FAQ:プリザンターの動作環境や推奨スペックが知りたい](/manual/faq-recommended-specifications)
1. プリザンターを起動するユーザを予め決めておいてください。手順の中で記載している **<プリザンターを起動するユーザ>** はこのユーザを指します。
## 注意事項
1. CentOS7は.NET8のサポート対象外となっております。詳細につきましては下記のMicrosoft公式ページの**サポートされているディストリビューション**をご参照ください。
- https://learn.microsoft.com/ja-jp/dotnet/core/install/linux-centos#supported-distributions
1. プリザンター 1.4につきましては別ディストリビューション(Ubuntu、RHEL8/9、AlmaLinux)でのインストールをご検討ください。
- [プリザンターを AlmaLinux にインストールする](/manual/getting-started-pleasanter-almalinux)
- [プリザンターを Red Hat Enterprise Linux 8 にインストールする](/manual/getting-started-pleasanter-rhel-8)
- [プリザンターを Red Hat Enterprise Linux 9 にインストールする](/manual/getting-started-pleasanter-rhel)
- [プリザンターを Ubuntu にインストールする](/manual/getting-started-pleasanter-ubuntu)
## .NET6.0 のセットアップ
.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 6.0 -i /usr/local/bin
dotnet --version
```
詳細につきましては下記公式ページの **スクリプトでのインストール** をご参照ください。
https://learn.microsoft.com/ja-jp/dotnet/core/install/linux-scripted-manual#scripted-install
また、dotnetコマンドを実行した際に特定のファイルに関するエラーが発生するケースがございます。その際は下記ページをご参照ください。
https://learn.microsoft.com/ja-jp/dotnet/core/install/linux-package-mixup?pivots=os-linux-redhat
### GDI+のインストール
```
sudo yum install -y epel-release
sudo yum install -y libgdiplus
```
## PostgreSQLのセットアップ
### PostgreSQLのインストール
```
sudo yum install -y https://download.postgresql.org/pub/repos/yum/reporpms/EL-7-x86_64/pgdg-redhat-repo-latest.noarch.rpm
sudo yum update
sudo yum install -y postgresql15-server postgresql15-contrib
```
### データベースの初期化
データベースの初期化を行います。※ -A: 認証方式の指定、-W: パスワード入力プロンプトを表示するオプション
```
sudo su - postgres -c '/usr/pgsql-15/bin/initdb -E UTF8 --locale=C -A scram-sha-256 -W'
```
パスワードの設定を求められるので、任意のパスワードを設定します。
![image](/binaries/a7c333f0638843818d925ce4a8e1c83a)
### PostgreSQLのログ出力設定
/var/lib/pgsql/15/data/postgresql.conf を開き、以下の設定を編集します。
```
log_destination = 'stderr'
logging_collector = on
log_line_prefix = '[%t]%u %d %p[%l]'
```
### PostgreSQLのサービス再起動、サービス化
```
sudo systemctl restart postgresql-15
sudo systemctl enable postgresql-15
```
### 外部からDBへのアクセスを許可する場合の設定
/var/lib/pgsql/15/data/postgresql.conf の以下の2行のコメントを解除して下記のように設定します。
```
# - Connection Settings -
listen_addresses = '*' # what IP address(es) to listen on;
port = 5432 # (change requires restart)
```
/var/lib/pgsql/15/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-15
```
## プリザンターのセットアップ
### アプリケーションの準備
プリザンターをダウンロードします。
https://github.com/Implem/Implem.Pleasanter/releases
ルートディレクトリ("/")に "web" ディレクトリを作成し、ダウンロードしたzipファイルを展開します。
```
sudo mkdir /web
sudo unzip Pleasanter_1.3.x.x.zip -d /web
```
下記コマンドでpleasanterディレクトリ配下の所有者をあらかじめ決めたプリザンターを起動するユーザに変更します。
```
sudo chown -R <プリザンターを起動するユーザ> /web/pleasanter
```
### データベースの構成
/web/pleasanter/Implem.Pleasanter/App_Data/Parameters/Rds.json を以下のように設定します。
```
{
"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の実行
あらかじめ決めたプリザンターを起動するユーザでCodeDifinerを実行します。
```
cd /web/pleasanter/Implem.CodeDefiner
sudo -u <プリザンターを起動するユーザ> /usr/local/bin/dotnet Implem.CodeDefiner.dll _rds
```
### プリザンターの起動確認
あらかじめ決めたユーザでプリザンターを起動します。
```
cd /web/pleasanter/Implem.Pleasanter
sudo -u <プリザンターを起動するユーザ> /usr/local/bin/dotnet Implem.Pleasanter.dll
```
起動中に別のターミナルで以下のコマンドを実行し、プリザンターが起動していることを確認します。「Ctrl+C」で終了します。
```
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
```
### Pleasanterサービス用スクリプトの作成
/etc/systemd/system/pleasanter.service を以下の内容で作成します。下記の **User** にはあらかじめ決めたプリザンターを起動するユーザを指定してください。
```
[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
```
### サービスとして登録・サービスの起動
```
sudo systemctl daemon-reload
sudo systemctl enable pleasanter
sudo systemctl start pleasanter
```
## リバースプロキシ(nginx)のセットアップ
通常のwebサーバと同じ Port80 でアクセスできるようにリバースプロキシの設定を行います。
### nginxのインストール
```
sudo yum install -y nginx
sudo systemctl enable nginx
```
### リバースプロキシの設定
/etc/nginx/conf.d/pleasanter.conf を以下の内容で作成します。 server_name 行には実際アクセスする際のホスト名(下記サンプルコードでは192.168.1.100となっています。)を指定します。
```
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;
}
}
```
ファイルを作成後、サービスを再起動します。
```
sudo systemctl restart nginx
```
## プリザンターの初期パスワード設定
プリザンターを起動後、プリザンターのログイン画面にて「ログインID: Administrator」「初期パスワード: pleasanter」を入力し、「ログイン」ボタンをクリックしてください。
![image](/binaries/555f3c6dda0548af90f96ec841a1c5e1)
ログイン後に「Administrator」ユーザーのパスワード変更を求められるので、任意のパスワードを入力し、「変更」ボタンをクリックしてください。
![image](/binaries/083ab3daf22c4e19bee526e19576e493)
### 正しくリダイレクトされない場合
nginxの設定が正しいか確認してください。記述内容の / の有無など細かな違いで動作が変わる場合があります。
### プリザンターの画面が開かない場合
上記までの手順において特にエラーも出ずに完了したにも関わらず、ブラウザでアクセスすると「Welcome to nginx!」といったページ(エラー表示ではない)が表示される場合、ブラウザのセキュリティ設定により、プリザンターのログイン画面に遷移できていない可能性があります。
お使いのブラウザのセキュリティ設定を確認してください。
## 関連情報
[FAQ:PostgreSQLが14以前のバージョンで、1.3.43.0以前のプリザンターをLinuxの環境へ導入したい](/manual/faq-postgresql-14-intall-pleasanter-for-linux)