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

Pleasanter(Linux版)の導入

動作環境

パッケージ 動作環境
.NetCORE 2.2 RHEL 6 x64
RHEL/CentOS/Oracle 7 x64
Fedora28,29
Debian9
Ubuntu 16.04,18.04,18.10
Linux Mint 17,18
OpenSUSE 15+
SLES 12 SP2+
Alpine Linux 3.7+
MacOS 10.12+
SQL Server 2017 RHEL 7.3,7.4,7.5,7.6
SUSE Linux Enterprise Server v12 SP2
Ubuntu16.04
Docker
Microsoft ODBC Driver 17 for SQL Server Debian 8,9,10
RHEL 6,7,8
SUSE Linux Enterprise Server 11 SP4,12,15
Ubuntu 14.04,16.04,18,04,18,10,19.04
MacOS
Pleasanter

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.
ForceFlush 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

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
$

初期アカウント情報

初期値 備考
管理アカウント administrator
初期パスワード 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 を起動してください。
$
Comments