はじめに
今回はプリザンターのユーザーマニュアルをもとにさらに詳しく個人的に起きたエラーへの対処も記載しようと思います。
プリザンター導入マニュアル
プリザンター導入前に
環境構築
今回はVMWare環境でUbuntu22.04のイメージファイルを使ってOSを構築します。まずは設定後OSを起動します。
インストール
キャプチャのようにインストール画面が表示されたので、Ubuntuをインストールを選択します。
私の場合、そのあとは特に設定を変えることなく次へなどをクリックしていきます。最後にユーザーとパスワードを入力することでインストールが開始されます。インストールされるまで待機です。
画面起動
インストールがされたら再起動が促されたため、再起動を実施します。起動中にエンターキーを押せと指示されるため、エンターを押します。
設定
設定から有線の歯車マークをクリックします。
アドレス・ネットマスク・ゲートウェイ・DNSを設定して右上の適用をクリックします。
SSHを使えるように
TeraTermから操作しようと思います。TeraTermではSSHを使って通信を行うのですが、UbuntuにはデフォルトでSSHはインストールされていません。そのため、下記コマンドでSSHをインストールしていきます。
sudo apt update
sudo apt install openssh-server
vimコマンドを使えるように
vimコマンドもインストールされていないようですね・・・。下記コマンドでインストールしましょう。
sudo apt install vim
curlコマンドを使えるように
curlコマンドもインストールが必要です。下記コマンドでインストールしましょう。
sudo apt install curl
環境
対象 | 内容 |
---|---|
OS | Ubuntu 22.04 LTS |
DB | PostgreSQL 14.7 |
Webサーバ | Nginx 1.18.0 |
Platform | .NET 6.0.407 |
Pleasanter | プリザンター 1.3.35.1 |
.NET6.0 のセットアップ
.NETパッケージの削除
sudo apt remove 'dotnet*' 'aspnet*' 'netstandard*'
preferencesファイルの作成
sudo touch /etc/apt/preferences
下記コマンドでpreferencesを開いてください。
sudo vim /etc/apt/preferences
作成したファイルに下記内容を設定してください。
vimで開いたファイルを編集する場合は「i」コマンドを押下し、挿入モードにしてください。
「i」コマンドで挿入モードにした後、コマンドモードに戻す場合は「esc」キーを押下します。
Package: dotnet* aspnet* netstandard*
Pin: origin "packages.microsoft.com"
Pin-Priority: -10
vimで開いたファイルを保存して閉じる場合は「:wq」コマンドを押下します。
.NET のインストール
スクリプトでのインストール
sudo wget https://dot.net/v1/dotnet-install.sh -O dotnet-install.sh
sudo chmod +x ./dotnet-install.sh
sudo ./dotnet-install.sh -i /usr/local/bin
詳細につきましては下記公式ページの スクリプトでのインストール をご参照ください。
https://learn.microsoft.com/ja-jp/dotnet/core/install/linux-scripted-manual#scripted-install
GDI+のインストール
sudo apt install -y libgdiplus
PostgreSQLのセットアップ
リポジトリのインストール
sudo apt update
sudo apt -y install vim bash-completion
wget --quiet -O - https://www.postgresql.org/media/keys/ACCC4CF8.asc | sudo apt-key add -
echo "deb http://apt.postgresql.org/pub/repos/apt/ `lsb_release -cs`-pgdg main" |sudo tee /etc/apt/sources.list.d/pgdg.list
PostgreSQLのインストール
sudo apt update
sudo apt install -y postgresql-14 postgresql-client-14
PostgreSQLの認証方式の設定
/etc/postgresql/14/main/pg_hba.confを開ます。
sudo vim /etc/postgresql/14/main/pg_hba.conf
METHODの設定を以下のように変更します。「shift + G」でファイルの最終行に飛びます。
# 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
PostgreSQLのログ出力設定
/etc/postgresql/14/main/postgresql.confを開きます。
sudo vim /etc/postgresql/14/main/postgresql.conf
以下の設定を編集します。「/ + 検索文字列」でファイル内を検索できます。ヒットした箇所で作業したい場合、エンターキーを押下します。
log_destination = 'stderr'
logging_collector = on
log_line_prefix = '[%t]%u %d %p[%l]'
PostgreSQLのサービス再起動、サービス化
sudo systemctl restart postgresql
sudo systemctl enable postgresql
PostgreSQLユーザの設定
PostgreSQL管理用のユーザー"postgres"(OSのユーザー)にパスワードを設定します。
sudo passwd postgres
上記コマンド入力後パスワードの入力を促されます。
新しい パスワード:<新しいパスワード>
新しい パスワードを再入力してください:<新しいパスワード>
passwd: パスワードは正しく更新されました
ユーザー"postgres"にユーザーを切り替えます。
sudo su - postgres
psql -U postgres
PostgreSQLの管理ユーザー "postgres" のパスワードを設定します。「new password」に任意のパスワードを入力してください。コマンドを入力するときは「''」も含めてください。また、「;」も含めてください。
postgres=# alter role postgres with password 'new password';
下記のように表示されます。
ALTER ROLE
プリザンター用のデータベース作成
データベース "Implem.Pleasanter" を作成します。
postgres=# create database "Implem.Pleasanter";
以下のコマンドで作成したDBの確認を行います。
postgres=# \l
全文検索用モジュール(pg_trgm)のインストール
テキストの全⽂検索に必要なモジュール(pg_trgm)をインストールします。
下記コマンドでImplem.Pleasanterにスイッチします。
postgres=# \c "Implem.Pleasanter"
下記のように表示されます。
データベース"Implem.Pleasanter"にユーザー"postgres"として接続しました。
下記コマンドでインストールします。
Implem.Pleasanter=# create extension pg_trgm;
ログアウト
下記コマンドでログアウトしてください。
Implem.Pleasanter=# exit
$ exit
下記のように表示されます。
ログアウト
外部からDBへのアクセスを許可する場合の設定
/etc/postgresql/14/main/postgresql.conf の以下の2行のコメントを解除して下記のように設定します。
sudo vim /etc/postgresql/14/main/postgresql.conf
listen_addresses = '*'
port = 5432
/etc/postgresql/14/main/pg_hba.conf を開きます。
sudo vim /etc/postgresql/14/main/pg_hba.conf
下記内容を追加します。Address欄にはアクセスを許可するIPアドレスの範囲を指定します。
# TYPE DATABASE USER ADDRESS METHOD
host all all 192.168.1.0/24 md5
設定後、PostgreSQLのサービスを再起動します。
systemctl restart postgresql
コマンド入力後、パスワードの入力を促されますので、入力してください。
プリザンターのセットアップ
アプリケーションの準備
下記コマンドでzipファイルをダウンロードします。プリザンター 1.3をダウンロードします。ダウンロードボタンをクリックし、「Latest」の「Pleasanter~.zip」ファイルにマウスを当て、右クリックでリンクをコピーします。下記コマンドのリンクURLにコピーしたリンクを貼り付けます。ダウンロードしたファイルは「/home/implem」というフォルダに格納されました。
wget リンクURL
ダウンロードしたzipファイルを下記コマンドで解凍します。
unzip ダウンロードしたファイル名
ルートディレクトリ("/")に"/web"フォルダーを作成します。
sudo mkdir /web
/WEBに先ほど解凍した際にできたpleasanterフォルダを移動します。
sudo mv /home/implem/pleasanter /web/pleasanter
データベースの構成
/web/pleasanter/Implem.Pleasanter/App_Data/Parameters/Rds.json を開来ます。
sudo vim /web/pleasanter/Implem.Pleasanter/App_Data/Parameters/Rds.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.dll _rds
Pleasnterの起動確認
cd /web/pleasanter/Implem.Pleasanter
dotnet Implem.Pleasanter.dll
別のターミナルで以下のコマンドを実行し、プリザンターが起動していることを確認します。「Ctrl+C」で終了します。
$ curl -v http://localhost:5000/
* Trying 127.0.0.1:5000...
* TCP_NODELAY set
* Connected to localhost (127.0.0.1) port 5000 (#0)
> GET / HTTP/1.1
> Host: localhost:5000
> User-Agent: curl/7.68.0
> Accept: */*
>
* Mark bundle as not supporting multiuse
< HTTP/1.1 302 Found
< Date: Tue, 23 Feb 2021 09:04:33 GMT
< Server: Kestrel
< Content-Length: 0
< 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 を開きます。
sudo vim /etc/systemd/system/pleasanter.service
下記内容を転記し、「loginUser」はログインユーザーを指定してください。
[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 = loginUser
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 apt install -y nginx
sudo systemctl enable nginx
リバースプロキシの設定
/etc/nginx/conf.d/pleasanter.conf を開きます。
sudo vim /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;
}
}
サービスを再起動します。
sudo systemctl restart nginx
Http(80) へのアクセス許可
クライアントからWebサービスへアクセスさせるため、 Http(port:80)へのアクセス許可設定を行います。
sudo ufw allow 80/tcp
sudo ufw enable
sudo ufw status numbered
接続を試みる
VM環境・自端末からプリザンターのログイン画面にアクセスすることができました。「localhost」では接続できませんでしたので、IPアドレスを指定したらアクセスできました。「localhost」でアクセスできない原因は教えていただいたのですが、忘れてしまいました・・・うっすらと残っている記憶ですが、「再帰的に読み込まれるスクリプトに80番ポートでアクセスしたものはnginxに遷移するというような処理があるから」というような内容だったかと・・・わかる方はコメントください!
さいごに
上記の手順で接続を確認できました。OSの立ち上げからやったので上記以外の設定などは一切していません。そのため、上記でアクセスできないなどエラーが起きた場合はお手持ちの環境の設定を確かめてください。今後の環境構築に役立てていこうと思います。