Macにプリザンターをインストールしてみた

# はじめに
アドベントカレンダーのスタートより6日目にして2つ目の記事です。しかも、2つとも、どちらも中の人です。
閑古鳥も絶句するレベルの静けさですが、頑張ります。

※皆さん、お忙しいとは思いますが、よろしければ是非ご参加ください。まだまだ空いています。
[Pleasanter Advent Calendar 2019](https://qiita.com/advent-calendar/2019/pleasanter)

改めまして、こんにちは。
プリザンターを開発しております株式会社インプリムで、製品パンフレットをクリアファイルに入れるお仕事をしております、ゆるふわJKです。
インプリムに入社して、先月11月1日で1年が経ちました。あっという間、な1年でした。
そんな1年を振り返ると、オフィスの引っ越しや、Pleasanter UserMeetupの開催、世界発信コンペンティション ベンチャー部門 特別賞の授賞など、プリザンターが、ひいてはインプリムが、少しずつでも成長できていることを実感できるイベントもありました。
そんな中で個人的に嬉しかったのはプリザンターの.NET Core版のリリースです。
私はMacで仕事をしているので、.NET Core版のリリースにより、念願だったプリザンターのローカル環境での動作が可能となったのです！

そんな訳で今回はMacのローカル環境にプリザンターをインストールしてみるゆるふわブログとなります。※Dockerを使用するお手軽版です。


# 実行環境
MacBook Pro 2017
macOS Mojave (10.14.6)

Pleasanter .NET Core版 1.0.0.0
.NET Core SDK 3.0.101
Docker 19.03.5
nginx 1.17.6
SQL Server 2017


# .NET Core SDKをインストールする

https://dotnet.microsoft.com/download

ダウンロードした dotnet-sdk-3.0.101-osx-x64.pkg を開きます。
無心でボタンをクリックしていれば終わります。途中でパスワードを求められますので管理者権限のあるパスワードを入力してください。
あっさり終わりすぎて心配な方はターミナルで以下を実行してみましょう。

```dotnet --version
```
3.0.101 というバージョンが返ってくれば問題なくインストールされています(バージョンは2019/12/6時点の最新)
<img width="688" alt="スクリーンショット 2019-12-03 18.13.24.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/537390/55e42b3f-f480-8bab-cd2e-0a2748424fad.png">

# Dockerをインストールする
公式サイトでDockerアカウントを作成してログインし、DockerHubからダウンロードしてインストールします。
https://hub.docker.com/editions/community/docker-ce-desktop-mac

ダウンロードしたDocker.dmgをマウントして、インストール。
<img width="832" alt="Dockerのインストール。クジラかわいい" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/537390/c1f2135d-adb3-34bb-91dc-59ef54327712.png">
Docker Desktop needs privileged access.
というダイアログが出ても気にせず、パスワードを入力しましょう(DockerアカウントではなくMacのパスワードです)。
インストールが終わると、画面上部のメニューバーにDockerのアイコンが表示されます。
背中に載せたコンテナが積み終わったら起動終了です。
<img width="277" alt="68747470733a2f2f71696974612d696d6167652d73746f72652e73332e61702d6e6f727468656173742d312e616d617a6f6e6177732e636f6d2f302f3533373339302f38376666386338382d333963362d623430322d663238632d6431373339646334323465652e706e67.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/537390/64bb7a18-7c8e-9baa-a592-8452a0cf5c41.png">


試しに
```docker version```
と入力してみましょう。

```
MBP:~ sesese$ docker version
Client: Docker Engine - Community
 Version:           19.03.5
 API version:       1.40
 Go version:        go1.12.12
 Git commit:        633a0ea
 Built:             Wed Nov 13 07:22:34 2019
 OS/Arch:           darwin/amd64
 Experimental:      false
```
こんな感じで返ってくれば正常にインストールされています。安心してください。
クジラかわいい。

# nginxをインストールする
nginxのインストールもあっという間です。
ダウンロードからインストールまでチョロです。

以下を入力してください。

```docker run -d -p 80:80 --name WebServer nginx```

```
MBP:~ sesese$ docker run -d -p 80:80 --name WebServer nginx
Unable to find image 'nginx:latest' locally
latest: Pulling from library/nginx
000eee12ec04: Pull complete 
eb22865337de: Pull complete 
bee5d581ef8b: Pull complete 
Digest: sha256:50cf965a6e08ec5784009d0fccb380fc479826b6e0e65684d9879170a9df8566
Status: Downloaded newer image for nginx:latest
7da47c644ea29c5c8044d01452ec782bde5d67998fcf413acc7f6451a1044f8a
```
コマンドの --name オプションの WebServer はコンテナイメージの名称設定です。任意に設定してください。
Webでも、IISでも、masao1000でも、なんでも良いです。


これですでにnginxのインストール、起動が完了しているのでWebブラウザから localhost にアクセスしてみましょう。

<img width="911" alt="localhostかわいい" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/537390/334feb41-b3bd-f5c3-ccfe-66d59b2b8eb3.png">


# SQL Serverをインストールする

以下のコマンドを叩けばあっという間にインストールできます。クジラかわいい。

```
MBP:~ sesese$ sudo docker run -e "ACCEPT_EULA=Y" -e "SA_PASSWORD=*********" \
>    -p 1433:1433 --name SQLServer \
>    -d mcr.microsoft.com/mssql/server:2019-GA-ubuntu-16.04
587885170b545809bc6cdeb2f7aaf03720283687a98b337e8bafc90191c5924a
```
1行目の ********* はパスワードです。
小文字大文字数字記号など強力なパスワードである必要があります。
貧弱なパスワードだと先には進めません。考え直してください。
M@sao1000 がおすすめです。

コマンド2行目の --name オプションの SQLServer はコンテナイメージの名称です。任意に設定してください。
SQLでも、PostgreSQLでも、masao1000でも、なんでも良いです。
nginxのコンテナイメージ名でmasao1000を使っている場合は、masao10000にしましょう。


上記のようなメッセージが表示されたらインストール完了です。
とりあえず、正常に完了したか確認してみましょう。

```
MBP:~ sesese$ sudo docker exec -it SQLServer "bash"
/opt/mssql-tools/bin/sqlcmd -S localhost -U SA -P "*********"
```

********* はsaのパスワードです。

無事にログインが成功するとコマンドプロンプトが 1> と表示されます。
Exitで抜けましょう。

# プリザンターをインストールする

https://pleasanter.org

まずはプリザンターの.NET Core版をダウンロードしましょう。
ありがとうございます。
ダウンロードしたファイルを解凍し、扱いやすい場所にコピーしましょう。
とりあえず、パスは
/Users/sesese/Pleasanter
とします。

SQL Serverと接続するための設定を行います。
/Users/sesese/Pleasanter/Pleasanter.NetCore/Implem.Pleasanter\App_Data\Parameters\Rds.json を開き、 

```
"SaConnectionString": "Server=(local);Database=master;UID=sa;PWD=*********;Connection Timeout=30;",
```
********* をsaのパスワードに書き換えてください。

まずはSQL Serverにプリザンター用のデータベースを作成します。
/Users/sesese/Pleasanter/Pleasanter.NetCore/ に移動して以下を実行。

```
MBP:~ sesese$ cd /Users/seiya/Pleasanter/Pleasanter.NetCore/Implem.CodeDefiner
MBP:Implem.CodeDefiner sesese$ dotnet Implem.CodeDefiner.NetCore.dll _rds
```

以下のように表示されれば成功です。

```
<SUCCESS> Starter.ConfigureDatabase: Database configuration is complete.
<SUCCESS> Starter.Main: All of the processing has been completed.
```

続いては、プリザンターの起動です！

```
MBP:Pleasanter.NetCore sesese$ cd /Users/sesese/Pleasanter/Pleasanter.NetCore/Implem.Pleasanter 
MBP:Implem.Pleasanter sesese$ dotnet Implem.Pleasanter.NetCore.dll
```

以下のように表示されたらプリザンターのインストール・起動は成功です。

```
Hosting environment: Production
Content root path: /Users/sesese/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.
```

記載されているアドレスで localhost にアクセスしてみましょう！
<img width="1137" alt="wwのコピー.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/537390/964e2d15-2965-3e94-b437-8bbc314d771a.png">

おめでとうございます！ これであなたのMacにプリザンターがインストールできました！
ローカル環境で弄り倒してプリザンターの可能性を存分に感じて頂ければ幸いです。


![twitter_header.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/537390/7a08fde4-5bb5-f9fa-230d-15d3b8f46844.jpeg)

私の場合は、常時プリザンターを起動しているわけではないので、使う都度以下のスクリプトで起動することにしています。

```
docker start SQLServer
docker start WebServer
cd /Users/sesese/Pleasanter/Pleasanter.NetCore/Implem.Pleasanter
dotnet Implem.Pleasanter.NetCore.dll
```

メール送信の設定や、リマインダーの設定などもありますが、ご要望があればいつか別の機会に。

# おまけ：Azure Data Studioをインストールする
<img width="1316" alt="ttのコピー.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/537390/de0a291b-4409-77c8-7cca-7938a5d4b2e6.png">


Windowsで言うSQL Server Management Studio(SSMS)みたいなものです。
あると便利です。


# おわりに。

というわけで、無事にインストールできましたでしょうか？
かなりざっくりとした内容ではありますが、お役に立てれば幸いです。
もしご不明な点などございましたら、Twitterでつぶやいたりすると弊社Twitter担当のゆるふわJKが捕捉するかもしれません。

プリザンターは、まだまだ認知度が高いとは言えないプロダクトですが、もっともっと魅力的なプロダクトに成長できるように、そして一人でも多くの方に使っていただけるように、誰もがプリザンターを知っている、そんな未来が来ることを信じてこれからも邁進して参ります。
今、この記事を読んでくれているあなたに先見の明があることを証明するためにも。

長文にお付き合いいただきありがとうございました。良い週末を。