2021/08/27

MANUAL

プリザンターをCentOSにインストールする

## 概要 本説明は、以下に示す環境にプリザンターの動作環境を構築するための手順を示したものです。 |対象|内容| |---|---| |OS|CentOS Stream 8| |DB|PostgreSQL| |Webサーバ|Nginx| |Framework|.NET 5.0| |Pleasanter|プリザンター 1.2| ## 前提条件 1. OSのセットアップ方法については記載しません。予めOSはセットアップされていることとします。 1. 動作環境やスペックについての詳細はこちらをご確認ください。 [FAQ:プリザンターの動作環境や推奨スペックが知りたい](/manual/faq-recommended-specifications) ## .NET5.0 のインストール ### .NET SDKのインストール ``` # dnf install -y dotnet-sdk-5.0 ``` ### GDI+のインストール ``` # dnf install -y https://dl.fedoraproject.org/pub/epel/epel-release-latest-8.noarch.rpm # dnf install -y libgdiplus ``` ## PostgreSQLのセットアップ #### リポジトリのインストール ``` # dnf install -y https://download.postgresql.org/pub/repos/yum/reporpms/EL-8-x86_64/pgdg-redhat-repo-latest.noarch.rpm ``` #### PostgreSQLのインストール ``` # dnf module -y disable postgresql # dnf install -y postgresql13-server postgresql13-contrib ``` ### データベースの初期化 ``` # /usr/pgsql-13/bin/postgresql-13-setup initdb ``` ### サービス有効化 ``` # systemctl enable postgresql-13 ``` ### 認証方式の設定 /var/lib/pgsql/13/data/pg_hba.conf を開き、METHODの"ident"を"md5"に変更します。 ``` # TYPE DATABASE USER ADDRESS METHOD # "local" is for Unix domain socket connections only local all all peer # IPv4 local connections: host all all 127.0.0.1/32 md5 # IPv6 local connections: host all all ::1/128 md5 # Allow replication connections from localhost, by a user with the # replication privilege. local replication all peer host replication all 127.0.0.1/32 md5 host replication all ::1/128 md5 ``` ### ログの出力設定 /var/lib/pgsql/13/data/postgresql.confを開き、以下を設定します。 ``` log_destination = 'stderr' logging_collector = on log_line_prefix = '[%t]%u %d %p[%l]' ``` ※ ログファイルは "/var/lib/pgsql/data/log" に保存されます。 ### PostgreSQLのサービス再起動 ``` # systemctl restart postgresql-13 ``` ### PostgreSQLユーザー設定 - PostgreSQL管理用のユーザー"postgres"(OSのユーザー)にパスワードを設定します。 ``` # passwd postgres ``` - ユーザー"postgres"に切り替え、PostgreSQLへ接続します。 ``` # su - postgres # psql -U postgres ``` - PostgreSQLの管理ユーザー "postgres" のパスワードを設定 ``` postgres=# alter role postgres with password '<new password>'; ``` ### プリザンター用のデータベース作成 - データベース "Implem.Pleasanter" を作成します。 ``` postgres=# create database "Implem.Pleasanter"; ``` - 以下のコマンドで作成したDBの確認を行います。 ``` postgres=# \l ``` ### 全⽂検索⽤モジュール(pg_trgm)のインストール テキストの全⽂検索に必要なモジュール(pg_trgm)をインストールします。 データベース"Implem.Pleasanter"に接続し、pg_trgm をインストール ``` postgres=# \c "Implem.Pleasanter"; Implem.Preasanter=# create extension pg_trgm; ``` ### 外部からDBへのアクセスを許可する場合の設定 - /var/lib/pgsql/13/data/postgresql.conf の以下の2行のコメントを解除して下記のように設定します。 ``` # - Connection Settings - listen_addresses = '*' # what IP address(es) to listen on; port = 5432 # (change requires restart) ``` /var/lib/pgsql/13/data/pg_hba.conf に以下の行を追加します。Address欄にはアクセスを許可するIPアドレスの範囲を指定します。 ``` # TYPE DATABASE USER ADDRESS METHOD host all all 192.168.1.0/24 md5 ``` 設定後、PostgreSQLのサービスを再起動します。 ``` # systemctl restart postgresql-13 ``` ## プリザンター 1.2の導入 ### アプリケーションの準備 [プリザンター 1.2](https://pleasanter.org/dlcenter)をダウンロードします。 ルートディレクトリ("/")に"/web"フォルダーを作成し、そこに"pleasanter" フォルダーを配置するものとして記述します。 /web/pleasanter/Implem.Pleasanter /web/pleasanter/Implem.CodeDefiner /web/pleasanter/Tools ### データベースの構成 /web/pleasanter/Implem.Pleasanter/App_Data/Parameters/Rds.json を以下のように設定します。 ```json { "Dbms": "PostgreSQL", "Provider": "Local", "TimeZoneInfo": "Asia/Tokyo", "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 } ``` #### CodeDefinerを実行 ``` # cd /web/pleasanter/Implem.CodeDefiner # dotnet Implem.CodeDefiner.NetCore.dll _rds ``` #### Pleasnterの起動確認 ``` # cd ../Implem.Pleasanter # dotnet Implem.Pleasanter.NetCore.dll ``` 別のターミナルで "http://localhost:5000/" にアクセスし、正常なレスポンスが帰ってくることを確認します。 ``` # 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 < Date: Mon, 25 May 2020 15:13:08 GMT < Server: Kestrel < Content-Length: 0 < Location: http://localhost:5000/users/login?ReturnUrl=%2F ``` 確認できたらCtrl+Cで終了します。 #### Pleasanterサービス用スクリプトの作成 /etc/systemd/system/pleasanter.service を以下の内容で作成します。 ``` [Unit] Description = Pleasanter Documentation = Wants=network.target After=network.target [Service] ExecStart = /usr/bin/dotnet Implem.Pleasanter.NetCore.dll WorkingDirectory = /web/pleasanter/Implem.Pleasanter Restart = always RestartSec = 10 KillSignal=SIGINT SyslogIdentifier=dotnet-pleasanter User = root Group = root Environment=ASPNETCORE_ENVIRONMENT=Production Environment=DOTNET_PRINT_TELEMETRY_MESSAGE=false [Install] WantedBy = multi-user.target ``` #### サービスとして登録・サービスの起動 ``` # systemctl daemon-reload # systemctl enable pleasanter # systemctl start pleasanter ``` ### リバースプロキシ(NginX)の設定 通常のwebサーバと同じ Port80 でアクセスできるようにリバースプロキシの設定を行います。 #### Nginxのインストール 次のコマンドでNginxをインストールします。 ``` # dnf install -y nginx # systemctl enable nginx ``` #### リバースプロキシの設定 /etc/nginx/conf.d/pleasanter.conf を以下の内容で作成します。server_name 行には実際アクセスする際のホスト名を指定します。 ``` 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を再起動します。 ``` # systemctl restart nginx ``` #### Http へのアクセス許可 クライアントからWebサービスへアクセスさせるため、 Http(port:80)へのアクセス許可設定を行います。 ``` # firewall-cmd --permanent --zone=public --add-port=80/tcp # firewall-cmd --reload # firewall-cmd --list-all ``` SELinux のhttpアクセス許可をONにします。 ``` # setsebool httpd_can_network_connect on -P ``` ## その他設定 ### 初期アカウント ログインID "Administrator" が初期ユーザーとして作成されます。 初期ユーザーのパスワードは、既定では"pleasanter"(※)です。初回ログイン時にパスワード変更ダイアログが表示されますので、任意のパスワードを設定してください。このパスワードは、"/web/pleasanter/Implem.Pleasanter/App_Data/Parameters/Service.json" の "DefaultPassword" で指定可能です。 ### リマインダーの設定 /web/pleasanter/Tools/Reminder.py を開き、"localhost" 部分を書き換え、クライアントからアクセス可能なURLに変更します。 ``` urllib.request.Request("http://192.168.11.100/reminderschedules/remind?NoLog=1") ``` リマインダーを動作させるために必要な「Python3.6」をインストールします。 ``` # dnf install -y python36 ``` Reminder.py を cron に登録します。 ``` # crontab -e @reboot python3 /web/pleasanter/Tools/Reminder.py ``` #### データベースの移行 1. SQL ServerからPostgreSQLに移行する場合の手順は以下のマニュアルをご参照ください。 [プリザンターのDBをSQL ServerからPostgreSQLへ移行する手順](/manual/migrate-sql-server-to-postgresql)
このページをシェアする