5
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

プリザンターを AWS EC2(Ubuntu 20.04)に構築

Last updated at Posted at 2021-07-10

プリザンターを試すために、AWS上に環境構築を行ってみる。
公式サイト(こちら)の手順に従って進める。

前提

  • EC2インスタンス(Ubuntu20.04)の作成が完了していること。
  • 固定IP(Elastic IP)はお任せ。
  • SSHで接続できること。

今回やらないこと

  • SSL対応
  • RDS

パッケージの更新

sudo apt -y update
sudo apt -y upgrade

アカウント作成

sudo adduser pleasanter-dev
パスワード: developer
sudo gpasswd -a pleasanter-dev sudo

su - pleasanter-dev
ssh-keygen -t rsa
mv ~/.ssh/id_rsa.pub ~/.ssh/authorized_keys
chmod 600 ~/.ssh/authorized_keys

ホスト名変更

sudo hostnamectl set-hostname pleasanter-srv

.Net Coreのインストール

Gitのインストール

sudo apt-get -y install git
sudo apt-get update

Microsoftパッケージリポジトリを有効にする

wget https://packages.microsoft.com/config/ubuntu/20.04/packages-microsoft-prod.deb -O packages-microsoft-prod.deb
sudo dpkg -i packages-microsoft-prod.deb
sudo apt-get update

.NET Core SDK 3.1のインストール

sudo apt-get install apt-transport-https
sudo apt-get update
sudo apt install -y dotnet-sdk-3.1
sudo apt-get update

GDI+のインストール

sudo apt install -y libgdiplus
sudo apt update

PostgreSQLのセットアップ

PostgreSQLのインストール

一旦EC2上に構築する。RDSへのセットアップは後日。。

sudo apt install -y postgresql postgresql-contrib
sudo apt update

PostgreSQLの認証方式の設定

  • /etc/postgresql/12/main/pg_hba.confを開き、METHODの"ident"を"md5", "peer"を"trust"に変更します。
sudo vi /etc/postgresql/12/main/pg_hba.conf

2021/07/09時点では、md5になっていた。

PostgreSQLのログ出力設定

  • /etc/postgresql/12/main/postgresql.confを開き、以下の設定を編集します。
sudo vi /etc/postgresql/12/main/postgresql.conf
  • 設定内容
log_destination = 'stderr'
logging_collector = on
log_line_prefix = '[%t]%u %d %p[%l]'

PostgreSQLのサービス再起動、サービス化

sudo systemctl restart postgresql

PostgreSQLユーザの設定

sudo su - postgres
psql -U postgres

postgres=# alter role postgres with password 'postgres';

プリザンター用のデータベース作成

postgres=# create database "Implem.Pleasanter";

全文検索用モジュール(pg_trgm)のインストール

postgres=# \c "Implem.Pleasanter"
Implem.Pleasanter=# create extension pg_trgm;

Pleasanterの導入

アプリケーションの準備(.NET Core版Pleasanterをダウンロード)

su - pleasanter-dev
wget https://pleasanter.org/downloads/Pleasanter.NetCore_1.1.35.0.zip
sudo apt-get install -y unzip

/web配下に解凍する。

sudo mkdir /web
sudo chmod 777 /web
cd /web
unzip ~/Pleasanter.NetCore_1.1.35.0.zip

データベースの構成

/web/pleasanter/Implem.Pleasanter/App_Data/Parameters/Rds.json を以下のように設定します。

vi /web/pleasanter/Implem.Pleasanter/App_Data/Parameters/Rds.json
  • 設定内容
{
       "Dbms": "PostgreSQL",
       "Provider": "Local",
       "TimeZoneInfo": "Tokyo Standard Time",
       "SaConnectionString":"Server=localhost;Port=5432;Database=postgres;UID=postgres;PWD=postgres",
       "OwnerConnectionString":"Server=localhost;Port=5432;Database=#ServiceName#;UID=#ServiceName#_Owner;PWD=postgres",
       "UserConnectionString":"Server=localhost;Port=5432;Database=#ServiceName#;UID=#ServiceName#_User;PWD=postgres",
       "SqlCommandTimeOut": 600,
       "MinimumTime": 3,
       "DeadlockRetryCount": 4,
       "DeadlockRetryInterval": 1000
}

CodeDefinerの実行

cd /web/pleasanter/Implem.CodeDefiner
dotnet Implem.CodeDefiner.NetCore.dll _rds

Pleasnterの起動確認

cd /web/pleasanter/Implem.Pleasanter
dotnet Implem.Pleasanter.NetCore.dll

別のターミナルで以下のコマンドを実行し、Pleasanterが起動していることを確認する。

curl -v http://localhost:5000/
  • 出力内容
*   Trying 127.0.0.1:5000...
* TCP_NODELAY set
* Connected to localhost (127.0.0.1) port 5000 (#0)
> GET / HTTP/1.1
> Host: localhost:5000
> User-Agent: curl/7.68.0
> Accept: */*
> 
* Mark bundle as not supporting multiuse
< HTTP/1.1 302 Found
< Date: Sat, 10 Jul 2021 00:19:02 GMT
< Server: Kestrel
< Content-Length: 0
< Location: http://localhost:5000/users/login?ReturnUrl=%2F
< X-Frame-Options: SAMEORIGIN
< X-Xss-Protection: 1; mode=block
< X-Content-Type-Options: nosniff
< 
* Connection #0 to host localhost left intact

「Ctrl+C」で終了する。

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

/etc/systemd/system/pleasanter.service を以下の内容で作成します。

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
WorkingDirectory = /web/pleasanter/Implem.Pleasanter
Restart = always
RestartSec = 10
KillSignal=SIGINT
SyslogIdentifier=dotnet-pleasanter
User = root
Group = root
Environment=ASPNETCORE_ENVIRONMENT=Production
Environment=DOTNET_PRINT_TELEMETRY_MESSAGE=false

[Install]
WantedBy = multi-user.target

サービスとして登録・サービスの起動

sudo systemctl daemon-reload
sudo systemctl enable pleasanter
sudo systemctl start pleasanter

リバースプロキシ(NginX)の導入

NginXのインストール

sudo apt install -y nginx
sudo systemctl enable nginx

リバースプロキシの設定

/etc/nginx/conf.d/pleasanter.conf を以下の内容で作成する。

sudo vi /etc/nginx/conf.d/pleasanter.conf
  • 設定内容
server {
    listen  80;
    server_name xxx.xxx.xxx.xxx;
    client_max_body_size 100M;
    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;
    }
}

※server_name 行には実際アクセスする際のホスト名を指定する。

ファイルを作成後、サービスを再起動

sudo systemctl restart nginx

Http(80) へのアクセス許可

Http(port:80)へのアクセス許可設定

sudo ufw allow 80/tcp

システム起動時にファイアウォール有効化

sudo ufw enable

動作確認

http://server_nameにアクセスし、以下の画面が表示されればOK。

image.png

その他設定

初期アカウント

ログインID:Administrator
パスワード:pleasanter

リマインダーの設定

クライアント要求受信設定

/web/pleasanter/Tools/Reminder.py の "localhost" 部分をクライアントからアクセス可能なURLに変更する。

su - pleasanter-dev
vi /web/pleasanter/Tools/Reminder.py
  • 設定内容
- urllib.request.Request("http://localhost/reminderschedules/remind?NoLog=1")
+ urllib.request.Request("http://server-name/reminderschedules/remind?NoLog=1")

SSL環境下では、httpsにする。

「Python3.6」をインストール

sudo apt install -y python3-pip

Reminder.py を cron に登録

sudo crontab -e
@reboot python3 /web/pleasanter/Tools/Reminder.py
  • 設定内容
*  *  *  *  * @reboot python3 /web/pleasanter/Tools/Reminder.py

Appendix

感想

公式の手順通りで問題なく完了しました!

5
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
5
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?