この記事に書いてある事
2020/6 追記:.NetCore3.1/PostgreSQLへの対応がアナウンスされました。
公式のアナウンス:PostgreSQL対応版をリリースいたしました。
.NetCore3.1対応版のインストール手順はこちら
Pleasanter with PostgreSQL を CentOS7 にインストールしてみる - Qiita
CentOS8 にPleasanter With PostgreSQLをインストールしてみる。 - Qiita
出来るだけ新しい環境で Plesanterを動かしたい。
で、
2020/1/5 時点では Pleasanter は .NetCore 3.1 未対応 .NetCore2.2 で我慢
.NetCore3.1/SQL Server 2019 は CentOS8 未対応 CentOS7で我慢
CentOS7 ならSQL Server 2019が動きそう
Pleasanter公式が配布している .NetCore版を利用した導入手順です。(Buildしません)
Pleasanter公式のインストール手順をLinux向けに少し整理してインストール + 以下手順を追加した作業ログです。
- systemctl で起動を制御する為の設定ファイル例
システム起動と一緒に Pleasanterを起動する設定の例 - NginX を使ったリバースプロキシ設定
Port 80 で外部公開する為の設定例 - Firewalld でのアクセス許可設定
外部からPleasanterへのアクセスを許可する為の設定
動作環境
必要なパッケージ | 動作環境 | 延長サポート終了日 |
---|---|---|
.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+ |
2019年12月23日でサポート切れ |
SQL Server 2019 | RHEL 7.3,7.4,7.5,7.6 SUSE Linux Enterprise Server v12 SP2,SP3,SP4 Ubuntu16.04 Docker |
リリース後6~10年が適用されるはず 2025年~2029年 |
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)であれば妥当ないろいろなバージョンを選べそうですが、RHEL8にはまだ対応していません。
また、CentOSはSQLServerの動作環境に含まれていませんが FAQ で動作するだろう。とコメントされています。で、実際動作してます。
妥当なバージョンのOSと導入ハードルの低さから CentOS7 を利用する事にしました。
導入の流れ
- OS導入:今回はCentOS7系がインストールされている物として進めます
- .NetCORE 2.2 導入
- SQL Server 2019 導入
- MS SQL Server Command Line Tools の導入
- Microsoft ODBC Driver 17 for SQL Server 導入
- GDI+ 導入
- SQL Server 2019の構成
- Pleasanter の実行
- 動作確認
- リバースプロキシの設定
- Firewalld の設定
- 送信用メールサーバ設定
- 追加設定(Reminder機能/Backupスクリプト)
.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
SQL Server 2019 の導入
MS SQL Server 導入
$ sudo curl -o /etc/yum.repos.d/mssql-server.repo https://packages.microsoft.com/config/rhel/7/mssql-server-2019.repo
$ sudo yum -y install mssql-server
MS SQL初期セットアップ
$ sudo /opt/mssql/bin/mssql-conf setup
usermod: 変更はありません
SQL Server のエディションを選択します:
1) Evaluation (無料、製品使用権なし、期限 180 日間)
2) Developer (無料、製品使用権なし)
3) Express (無料)
4) Web (有料)
5) Standard (有料)
6) Enterprise (有料) - CPU Core utilization restricted to 20 physical/40 hyperthreaded
7) Enterprise Core (有料) - CPU Core utilization up to Operating System Maximum
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
SQL Server の言語の選択:
(1) English
(2) Deutsch
(3) Espanol
(4) Francais
(5) Italiano
(6) 日本語
(7) ???
(8) Portugues
(9) Русский
(10) 中文 ? ?体
(11) 中文 (繁体)
オプション 1-11 を入力: 6
SQL Server システム管理者パスワードを入力してください: <管理者パスワードを設定>
SQL Server システム管理者パスワードを確認入力してください:
SQL Server を構成しています...
ForceFlush is enabled for this instance.
ForceFlush feature is enabled for log durability.
セットアップは正常に完了しました。SQL Server を起動しています。
$
$ systemctl status mssql-server
システム管理者パスワード(SAパスワード)には強力な文字列を指定しましょう。
MS SQL Server Command Line Tools の導入
unixODBCの更新とmssql-tools の導入
17.3以降で SQL Server 2019をサポートしています。導入されているバージョンに注意しましょう。
$ 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導入
実行ファイルの配置
公式のダウンロードサイトから入手してください。
簡単なアンケートがあるので記入しましょう。
入手したファイルを適当な位置に展開後、Rds.json の SaConnectionString 行内にある SetSaPWD を SQL Server の管理者パスワードに置き換えてください。
$ sudo mkdir /Pleasanter
$ unzip -q Pleasanter.NetCore.1.0.0.0.zip
$ sudo mv Pleasanter/* /Pleasanter/
$ sudo vi /Pleasanter/Pleasanter.NetCore/Implem.Pleasanter/App_Data/Parameters/Rds.json
{
"Provider": "Local",
"TimeZoneInfo": "Tokyo Standard Time",
"SaConnectionString": "Server=(local);Database=master;UID=sa;PWD=SetSaPWD;Connection Timeout=30;",
"OwnerConnectionString": "Server=(local);Database=#ServiceName#;UID=#ServiceName#_Owner;PWD=SetAdminsPWD;Connection Timeout=30;",
"UserConnectionString": "Server=(local);Database=#ServiceName#;UID=#ServiceName#_User;PWD=SetUsersPWD;Connection Timeout=30;",
"SqlCommandTimeOut": 600,
"MinimumTime": 3,
"DeadlockRetryCount": 4,
"DeadlockRetryInterval": 1000
}
$
Pleasanter用DBの構成
$ cd /Pleasanter/Pleasanter.NetCore/Implem.CodeDefiner/
$ dotnet Implem.CodeDefiner.NetCore.dll _rds
Pleasanter 起動確認
起動が確認出来たら Ctrl + C で終了してください。
$ cd ../Implem.Pleasanter/
$ dotnet Implem.Pleasanter.NetCore.dll
warn: Microsoft.AspNetCore.DataProtection.KeyManagement.XmlKeyManager[35]
No XML encryptor configured. Key {a11dba1c-f2da-4782-ae6d-ace09095eeac} may be persisted to storage in unencrypted form.
Hosting environment: Production
Content root path: /Pleasanter/Pleasanter.NetCore/Implem.Pleasanter
Now listening on: http://localhost:5000
Now listening on: https://localhost:5001
Application started. Press Ctrl+C to shut down.
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
WorkingDirectory = /Pleasanter/Pleasanter.NetCore/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の再起動が必要です。
$ 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 システム管理者パスワードを入力してください: <新しい管理者パスワード>
SQL Server システム管理者パスワードを確認入力してください:
SQL Server を構成しています...
ForceFlush is enabled for this instance.
ForceFlush feature is enabled for log durability.
システム管理者パスワードが変更されました。
'sudo systemctl start mssql-server' を実行して SQL Server を起動してください。
$