追記:
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スクリプト)
$ sudo yum -y install git
$ 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
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パスワードには強力な文字列を指定しましょう。
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
MS SQL Server Command Line Tools と同時に msodbcsql も導入済みです
GDI+互換のAPI をインストールします
$ sudo yum install -y epel-release $ sudo yum install -y libgdiplus
ソースファイルは 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 以外のエントリもあります。編集対象を間違えないように気を付けましょう。
$
$ sudo sh ./codedefiner.sh $ sudo sh ./pleasanter.sh
起動が確認出来たら Ctrl + c で終了してください。
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
通常の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
クライアントから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"
}
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
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
$
作業中に困ったのでメモ、コマンドラインから新しいパスワードを指定できます。
$ 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 を起動してください。
$