プリザンターを試すために、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。
その他設定
初期アカウント
ログイン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
感想
公式の手順通りで問題なく完了しました!