CentOS7 への pleasanter(プリザンター)導入

Pleasanter(Linux版)の導入

追記:

2020年5月29日 .NetCore3.1対応版がリリースされました。

新しい記事は、Qiitaに書いてます。

CentOS7 .NetCore3.1 PostgreSQL12版

CentOS8 .NetCore3.1 PostgreSQL12版

動作環境

Ubuntuを利用する場合、全ての条件を満たすには Ubuntu16.04 を選択するのが良さそうです。(工夫すれば18.04でも動くみたいです)

RedHatEnterpriseLinux(RHEL)であれば、妥当ないろいろなバージョンを選べそう。

また、CentOSはSQLServerの動作環境に含まれていませんが FAQ で動作するだろう。とコメントされています。で、実際動作してます。

妥当なバージョンのOSと導入ハードルの低さから CentOS7 を利用する事にしました。

導入の流れ

    • OS導入:今回はCentOS7系がインストールされている物として進めます

    • git client 導入

    • .NetCORE 2.2 導入

    • SQL Server 2017 導入

    • MS SQL Server Command Line Tools の導入

    • Microsoft ODBC Driver 17 for SQL Server 導入

    • GDI+ 導入

    • git clone でソースコードを入手

    • ビルド(build.sh)の実行

    • SQL Server 2017の構成(codedefiner.sh)

    • Pleasanter の実行(pleasanter.sh)

    • 動作確認

    • リバースプロキシの設定

    • Firewalld の設定

    • 送信用メールサーバ設定

    • 追加設定(Reminder機能/Backupスクリプト)

git client導入

$ sudo yum -y install git

.NetCORE 2.2 の導入

$ sudo rpm -Uvh https://packages.microsoft.com/config/rhel/7/packages-microsoft-prod.rpm

$ sudo yum -y update

$ sudo yum -y install dotnet-sdk-2.2-2.2.105-1

SQL Server 2017 の導入

MS SQL Server 導入

$ sudo curl -o /etc/yum.repos.d/mssql-server.repo https://packages.microsoft.com/config/rhel/7/mssql-server-2017.repo

$ sudo yum -y install mssql-server

MS SQLセットアップ

$ sudo /opt/mssql/bin/mssql-conf setup

SQL Server のエディションを選択します:

1) Evaluation (無料、製品使用権なし、期限 180 日間)

2) Developer (無料、製品使用権なし)

3) Express (無料)

4) Web (有料)

5) Standard (有料)

6) Enterprise (有料)

7) Enterprise Core (有料)

8) 小売販売チャネルを介してライセンスを購入し、入力するプロダクト キーを持っています。

エディションの詳細については、以下を参照してください

https://go.microsoft.com/fwlink/?LinkId=852748&clcid=0x411


このソフトウェアの有料エディションを使用するには、個別のライセンスを以下から取得する必要があります

Microsoft ボリューム ライセンス プログラム。

有料エディションを選択することは、

このソフトウェアをインストールおよび実行するための適切な数のライセンスがあることを確認していることになります。


エディションを入力してください(1-8): 3

この製品のライセンス条項は

/usr/share/doc/mssql-server で参照できるほか、次の場所からダウンロードすることもできます:

https://go.microsoft.com/fwlink/?LinkId=855862&clcid=0x411


プライバシーに関する声明は、次の場所で確認できます:

https://go.microsoft.com/fwlink/?LinkId=853010&clcid=0x411


ライセンス条項に同意しますか? [Yes/No]:yes

SQL Server の言語の選択:

(1) English

(2) Deutsch

(3) Espanol

(4) Francais

(5) Italiano

(6) 日本語

(7) ???

(8) Portugues

(9) Русский

(10) 中文 ? ?体

(11) 中文 (繁体)

オプション 1-11 を入力: 6

SQL Server システム管理者パスワードを入力してください: Pleasanter2019

SQL Server システム管理者パスワードを確認入力してください:

SQL Server を構成しています...


ForceFlush is enabled for this instance.

orceFlush feature is enabled for log durability.

Created symlink from /etc/systemd/system/multi-user.target.wants/mssql-server.service to /usr/lib/systemd/system/mssql-server.service.

セットアップは正常に完了しました。SQL Server を起動しています。

$

$ systemctl status mssql-server

実行例では”Pleasanter2019"を指定しちゃってますが、SAパスワードには強力な文字列を指定しましょう。

MS SQL Server Command Line Tools の導入

unixODBCの更新とmssql-tools の導入

$ sudo curl -o /etc/yum.repos.d/msprod.repo https://packages.microsoft.com/config/rhel/7/prod.repo

$ sudo yum remove unixODBC-utf16 unixODBC-utf16-devel

削除対象が存在しない場合もあります。気にせず次に進んでください。

$ sudo yum install -y mssql-tools unixODBC-devel

以下の質問が 2回あります "YES" を応答してください

Do you accept the license terms? (Enter YES or NO)

YES

Microsoft ODBC Driver 17 for SQL Server 導入

MS SQL Server Command Line Tools と同時に msodbcsql も導入済みです

GDIのインストール

GDI+互換のAPI をインストールします

$ sudo yum install -y epel-release $ sudo yum install -y libgdiplus

Pleasanter導入

ソースファイルの配置 と build

ソースファイルは githubから入手してください。

入手したファイルを適当な位置に展開後、Rds.json にsaパスワードを設定してください。

$ sudo mkdir /Pleasanter

$ sudo git clone https://github.com/Implem/Implem.Pleasanter.NetCore.git /Pleasanter

$ cd /Plesaanter/cmdnetcore

$ sudo sh ./build.sh

$ sudo vi ../publish/Implem.Pleasanter/App_Data/Parameters/Rds.json


"SaConnectionString": "Server=(local);Database=master;UID=sa;PWD=<Password>;Connection Timeout=30;",


PWD=<Password> の <Password> 部分を 実際のsa パスワードに置き換えてください。

また、UID=sa 以外のエントリもあります。編集対象を間違えないように気を付けましょう。


$

DBの構成/pleasanterのテスト起動

$ sudo sh ./codedefiner.sh $ sudo sh ./pleasanter.sh

    • 起動が確認出来たら Ctrl + c で終了してください。

Pleasanter用サービススクリプト作成

OS起動時に Pleasanter を自動起動させるためサービススクリプトを作成します。

$ sudo vi /etc/systemd/system/pleasanter.service

[Unit]

Description = Pleasanter

Documentation =


Wants=network.target

After=network.target


[Service]

ExecStart = /usr/bin/dotnet Implem.Pleasanter.NetCore.dll --urls=http://localhost:5000 --pathbase=/pleasanter

WorkingDirectory = /Pleasanter/publish/Implem.Pleasanter/

Restart = always

RestartSec = 10

User = root

Group = root

Environment=ASPNETCORE_ENVIRONMENT=Production

[Install]

WantedBy = multi-user.target


$ sudo systemctl daemon-reload

$ sudo systemctl start pleasanter

$ sudo systemctl enable pleasanter

リバースプロキシ(NginX)の設定

通常のwebサーバを同じ Port80 でアクセス出来るようにリバースプロキシの設定を行います。

ここでは紹介しませんが、https化する場合もリバースプロキシを使うと簡単だと思います。

    • 設定例の server_name 行には 実際アクセスする時のホスト名を指定してください。

$ sudo vi /etc/nginx/conf.d/pleasanter.conf


server {

listen 80;

server_name pleasanter.example.com;

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 sysetmctl restart nginx

Firewalld の設定

クライアントからWebサービスへのアクセスさせるため 80/tcp(http) へのアクセス許可設定を追加します。

有効なzoneを確認

$ sudo firewall-cmd --get-active-zone

public

interfaces: enp1s0


Firewallのルールを確認

$ sudo firewall-cmd --list-all


Port 80/tcpの保護を解除します

$ sudo firewall-cmd --permanent --zone=public --add-port=80/tcp

success

$ sudo firewall-cmd --reload $ sudo firewall-cmd --list-all

送信用メールサーバ設定

    • SmtpHost に 送信に利用するメールサーバを指定します。
      その他の項目は必要に応じて設定してください。
      なお、設定変更後はPleasanterの再起動が必要です。

Pleasanter Mail関連設定

$ sudo vi /Pleasanter/publish/Implem.Pleasanter/App_Data/Parameters/Mail.json

{

"SmtpHost": "localhost",

"SmtpPort": 25,

"SmtpUserName": null,

"SmtpPassword": null,

"SmtpEnableSsl": false,

"FixedFrom": null,

"AllowedFrom": null,

"SupportFrom": "\"Pleasanter.org\" <support@pleasanter.org>",

"InternalDomains": "",

"AddressValidation": "\\b[A-Z0-9._%+-]+@[A-Z0-9.-]+\\.[A-Z]+\\b"

}

Reminder設定

Python36,pyodbc の導入/Reminderの設定

    • EPEL リポジトリを登録しているのでyumで導入出来ます。

    • python36はReminder、pyodbcはbackupで使用します。

$ sudo yum -y install python36

$ sudo mkdir /Pleasanter/tools

$ sudo cp -P /Pleasanter/Implem.Pleasanter.NetCore/Tools/Reminder.py /Pleasanter/tools/

$ sudo vi /Pleasanter/tools/Reminder.py


localhost 部分をクライアントからアクセス出来るホスト名に変更する urllib.request.Request("http://localhost/pleasanter/reminderschedules/remind?NoLog=1")


cron 設定

$ sudo crontab -e

@reboot python3 /opt/pleasanter-tools/Reminder.py


$ python3 /opt/pleasanter-tools/Reminder.py

MS SQLのバックアップスクリプト設置

python3 で実行すると pyodbcが無いと怒られる。

python で実行すると、epelから導入したpyodbcが利用出来るのか正常に動作しました。

$ sudo yum -y install pyodbc

$ sudo vi /Pleasanter/Implem.Pleasanter.NetCore/Tools/DbBackup.py


以下の行に sa パスワードを設定してください

pwd = "SetSaPWD"


$ python /Pleasanter/Implem.Pleasanter.NetCore/Tools/DbBackup.py

Backedup: /var/opt/mssql/data/backup/Implem.Pleasanter/20190815_121020.bak

Shrinked: Implem.Pleasanter

$

初期アカウント情報

メモ

saパスワードのリセット方法

作業中に困ったのでメモ、コマンドラインから新しいパスワードを指定できます。

$ sudo systemctl stop mssql-server

$ sudo /opt/mssql/bin/mssql-conf set-sa-password

SQL Server システム管理者パスワードを入力してください: Pleasanter2019

SQL Server システム管理者パスワードを確認入力してください:

SQL Server を構成しています...


ForceFlush is enabled for this instance.

ForceFlush feature is enabled for log durability.

システム管理者パスワードが変更されました。

'sudo systemctl start mssql-server' を実行して SQL Server を起動してください。

$