Install Pleasanter on Amazon EC2's Red Hat Enterprise Linux 10 Using the Installer
## Overview
This procedure is for building a Pleasanter operating environment using the "「Installer」". You can also install it using the previous procedure of manually placing modules and setting parameters. Please refer to the following for manual installation procedures.
[Installing Pleasanter on Amazon EC2's Red Hat Enterprise Linux 10](getting-started-pleasanter-rhel10-aws)
|Target|Body|
|---|---|
|Service|Amazon EC2 and Amazon RDS|
|OS|Red Hat Enterprise Linux 10 (HVM), SSD Volume Type|
|DB|MySQL 8.4.5|
|Web Server|nginx 1.26.3|
|Platform|.NET 8.0.410|
|Pleasanter|Pleasanter 1.4.18.0 or later|
## Prerequisites
1. The EC2 instance is set up under the following conditions.
1. The security group rules must allow SSH traffic, HTTP traffic, and HTTPS traffic.
1. The private key of the key pair for the EC2 instance has been downloaded.
1. The default user for the EC2 instance, ec2-user, exists.
1. The RDS instance is assumed to be set up under the following conditions.
1. The connection to the EC2 instance has been configured.
1. The master user name and master password have been set, and password authentication can be performed.
1. This procedure explains the case where .NET is installed in /usr/local/bin. If you install .NET in a different directory because multiple versions of .NET are required in the same environment, change the directory specified in ExecStart when running CodeDefiner or creating a script for the Pleasanter service to match the installation destination.
## Procedure
The construction procedure is as follows.
1. SSH connection to EC2 instance
1. Set up .NET
1. Install the installer
1. Set up Pleasanter
1. Run the installer
1. Check that Pleasanter is running
1. Create a script for the Pleasanter service
1. Register as a service and start the service
1. Set up a reverse proxy (nginx)
1. Change SELinux settings
1. Install nginx
1. Set up the reverse proxy
1. Check the operation of Pleasanter
## 1. SSH Connection to EC2 Instance
In this procedure, use a client such as TeraTerm and a file transfer tool such as WinSCP to connect to the EC2 instance from the client's PC via SSH.
1. Open the management screen of the EC2 instance and check the public IP address.
2. Start a client such as TeraTerm and a file transfer tool such as WinSCP, and connect to the EC2 instance with the following connection settings.
1. Destination: Public IP address of EC2 instance
2. User name: ec2-user
3. Password: Leave blank
4. Other: Use private key
## 2. Setup .NET
Run the following command to install .NET.
```
sudo wget https://dot.net/v1/dotnet-install.sh -O dotnet-install.sh
sudo chmod +x ./dotnet-install.sh
sudo ./dotnet-install.sh -c 8.0 -i /usr/local/bin
dotnet --version
```
For details, please refer to the official page below, **Installation by script**.
https://learn.microsoft.com/en-us/dotnet/core/install/linux-scripted-manual#scripted-install
### Tips
When you run the dotnet --version command, you may see an error message requesting the installation of ICU (an open source library that provides various functions related to handling Unicode).
・Example error message
`Process terminated. Couldn't find a valid ICU package installed on the system. Please install libicu (or icu-libs) using your package manager and try again. Alternatively you can set the configuration flag System.Globalization.Invariant to true if you want to run with no globalization support. Please see https://aka.ms/dotnet-missing-libicu for more information.`
In that case, run the following command to install ICU.
・Command to execute
```
sudo yum install libicu-devel wget -y
```
## 3. Install the installer
Execute the following command to install the installer.
```
dotnet tool install -g Implem.PleasanterSetup
echo 'export PATH="$PATH:~/.dotnet/tools"' >> ~/.bashrc
echo 'export DOTNET_ROOT=/usr/local/bin' >> ~/.bashrc
echo 'export PATH=$PATH:$DOTNET_ROOT' >> ~/.bashrc
source ~/.bashrc
```
### If you are not connected to a network environment, install it using the following procedure.
<details>
<summary> (Click here to open/close details) </summary>
1. Execute the following command to create a folder of your choice to place the .nupkg file. <br/>
※This procedure explains how to create /dotnet-tools.
```
sudo mkdir /dotnet-tools
```
1. Open the Nuget Gallery for Implem.PleasanterSetup from [here](https://www.nuget.org/packages/Implem.PleasanterSetup/) and download the .nupkg file from "Download package" in the image ①.

1. Place the .nupkg file downloaded in step 2.2 in **/dotnet-tools**.
1. Copy the command in ② in the image.
1. Execute the following command.
```
<Command copied in step 2.4> --add-source /dotnet-tools
echo 'export PATH="$PATH:~/.dotnet/tools"' >> ~/.bashrc
echo 'export DOTNET_ROOT=/usr/local/bin' >> ~/.bashrc
echo 'export PATH=$PATH:$DOTNET_ROOT' >> ~/.bashrc
source ~/.bashrc
```
**Example: If the Implem.PleasanterSetup version is 1.0.1**
```
dotnet tool install --global Implem.PleasanterSetup --version 1.0.1 --add-source /dotnet-tools
echo 'export PATH="$PATH:~/.dotnet/tools"' >> ~/.bashrc
echo 'export DOTNET_ROOT=/usr/local/bin' >> ~/.bashrc
echo 'export PATH=$PATH:$DOTNET_ROOT' >> ~/.bashrc
source ~/.bashrc
```
</details>
## 4. Set up Pleasanter
### 1. Run the installer
By using the installer, the latest version resources are automatically downloaded and the values in Service.json and Rds.json are automatically set based on the values you enter.
#### The procedure when using MySQL is as follows.
1. Execute the following command to run the installer.
```text
pleasanter-setup
```
**If you are not connected to a network environment, please follow the steps below**
<details>
<summary>(Click here to open/close details) </summary>
1. Download the latest version of Pleasanter from the [Download Center](https://pleasanter.org/dlcenter) and place it in "/web/".
1. Run the following command.
**/web/** Make sure the configuration under the directory is as follows:
/web/Pleasanter_1.4.x.x.zip
```text
pleasanter-setup -r /web/Pleasanter_1.4.x.x.zip
```
</details>
2. Enter the directory where you want to install Pleasanter.
If you want to install it to "/web/pleasanter", leave it blank and press Enter.
```text
Install Directory [Default: /web/pleasanter] :
```
3. Enter the user who will start Pleasanter. Enter **ec2-user** and press Enter.
```text
Please enter the user who will execute Pleasanter.
```
4. Enter the service name.
If you are using "Implem.Pleasanter", leave it blank and press Enter.
```text
ServiceName [Default: Implem.Pleasanter] :
```
5. Enter the number that corresponds to the DBMS you are using.
Here, enter "3" (MySQL) and press Enter.
```text
DBMS [1: SQL Server, 2: PostgreSQL, 3: MySQL] :
```
6. Enter the port number to be used.
If it is the default port number for the DBMS, leave it blank and press the Enter key.
```text
Please enter port number[Default: 3306]
```
7. Enter the value to be set in Server in the connection string.
Enter the **endpoint** of the RDS instance and press the Enter key.
E.g.: {DB identifier string, etc.}.rds.amazonaws.com
```text
ConnectionString Server [Default: localhost] :
```
8. Enter the value to be set for UID in SaConnectionString.
Enter the **master user name** set for the RDS instance and press the Enter key.
```text
SaConnectionString UID [Default: root] :
```
9. Enter the value to be set for PWD in SaConnectionString.
Enter the **master password** set for the RDS instance and press the Enter key.
※The password will be displayed in a masked state.
```text
SaConnectionString PWD :
Enter your password:
```
10. Enter the value to be set for PWD in OwnerConnectionString.
※The password will be displayed in a masked state.
```text
OwnerConnectionString PWD :
Enter your password:
```
11. Enter the value to be set for PWD in UserConnectionString.
※The password will be displayed in a masked state.
```text
UserConnectionString PWD :
Enter your password:
```
12. Enter the value to be set for MySqlConnectingHost.
If it is "%", leave it blank and press the Enter key.
```text
MySQL Connecting Host [Default: %] :
```
**About "MySqlConnectingHost"**
For details about "MySqlConnectingHost" in "Rds.json" added in Ver.1.4.18.0 and later, please see below.
<details>
<summary>(Click here to open/close details) </summary>
・If the following requirements are not met (default value): "%"
・If you want to prohibit access to MySQL from hosts other than the specified external hosts: "Host name/IP address that allows connection (in the case of AWS, set the private IP address)". Multiple names can be specified by separating them with a comma (e.g. "hostname01,hostname02").
</details>
13. Enter the "Default language".
Enter the number of the corresponding language.
```text
DefaultLanguage [1: English(Default), 2: Chinese, 3: Japanese, 4: German, 5: Korean, 6: Spanish, 7: Vietnamese] :
```
14. Enter the "Default time zone".
Please enter the number of the corresponding time zone.
※「3」 If you enter "3", please enter a time zone that can be used by the OS you are using.
```text
Set the default time zone.
TimeZoneDefault [1: UTC(Default), 2: Asia/Tokyo, 3: Other] :
```
15. A summary screen will be displayed.
If the values entered are correct, enter **y** after "Shall I install Pleasanter with this content? Please enter 'y(yes)' or 'n(no)'. : " and press Enter.
※The password is masked.
```text
――― Summary ―――
Install Directory : /web/pleasanter
DBMS : MySQL
SaConnectionString PWD : ***
OwnerConnectionString PWD : ***
UserConnectionString PWD : ***
Port : 3306
Server : {String such as DB identifier}.rds.amazonaws.com
Service Name : Implem.Pleasanter
MySqlConnectingHost : %
DefaultLanguage : en
DefaultTimeZone : UTC
[Issues]
Class :
Num :
Date :
Description :
Check :
Attachments :
[Results]
Class :
Num :
Date :
Description :
Check :
Attachments :
―――――――――
Shall I install Pleasanter with this content? Please enter ‘y(yes)' or 'n(no)’.:
```
16. When the message “Type "y" (yes) if the license is correct, otherwise type "n" (no)” appears, enter **y** and execute.
When the following log appears, the setup is complete.
```text
<SUCCESS> Starter.ConfigureDatabase: Database configuration has been completed.
<SUCCESS> Starter.Main: All of the processes have been completed.
Setup is complete.
```
17. When setup is complete, a web browser will launch and display the [Enterprise Edition trial information page]().
★Add a screenshot
### 2. Check that Pleasanter is running
1. Run the following command to start Pleasanter with ec2-user.
```
cd /web/pleasanter/Implem.Pleasanter
sudo -u ec2-user /usr/local/bin/dotnet Implem.Pleasanter.dll
```
2. While it is running, run the following command in another terminal to check that Pleasanter is running. Exit with "Ctrl+C".
* Execute command
```
curl -v http://localhost:5000/
````
* Execution result
```
* Host localhost:5000 was resolved.
* IPv6: ::1
* IPv4: 127.0.0.1
* Trying [::1]:5000...
* Connected to localhost (::1) port 5000
> GET / HTTP/1.1
> Host: localhost:5000
> User-Agent: curl/8.9.1
> Accept: */*
>
* Request completely sent off
< HTTP/1.1 302 Found
< Content-Length: 0
< Date: Tue, 24 Jun 2025 02:59:24 GMT
< Server: Kestrel
< 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
```
### 3. Create a script for the Pleasanter service
Create /etc/systemd/system/pleasanter.service with the following content.
```
[Unit]
Description = Pleasanter
Documentation =
Wants=network.target
After=network.target
[Service]
ExecStart = /usr/local/bin/dotnet Implem.Pleasanter.dll
WorkingDirectory = /web/pleasanter/Implem.Pleasanter
Restart = always
RestartSec = 10
KillSignal=SIGINT
SyslogIdentifier=dotnet-pleasanter
User = ec2-user
Group = root
Environment=ASPNETCORE_ENVIRONMENT=Production
Environment=DOTNET_PRINT_TELEMETRY_MESSAGE=false
[Install]
WantedBy = multi-user.target
```
### 4. Register as a Service and Start the Service
Execute the following command to start the Presenter service and enable automatic service startup.
```
sudo systemctl daemon-reload
sudo systemctl enable pleasanter
sudo systemctl start pleasanter
```
## 5. Set Up Reverse Proxy (nginx)
Configure the reverse proxy so that it can be accessed via Port 80, the same as a normal web server.
### 1. Change SELinux settings
Execute the following command.
```
getenforce
```
#### a. If the message "Command 'getenforce' not found," "Permissive," or "Disabled" is displayed
Proceed to "2. Install nginx."
#### b. If "Enforcing" is displayed
Execute the following command.
```
sudo setsebool -P httpd_can_network_connect on
```
*Changing the above SELinux Boolean value will allow all network connections by scripts and modules on the server.
### 2. Install nginx
Run the following command to install nginx.
```
sudo dnf install -y nginx
sudo systemctl enable nginx
```
### 3. Configure reverse proxy
1. Create /etc/nginx/conf.d/pleasanter.conf with the following contents. Specify the public IP address of the EC instance on the server_name line.
**Note**
The public IP address will change when the EC2 instance is restarted. Please consider using an Elastic IP address to obtain a fixed IP address.
```
server {
listen 80;
server_name 192.168.1.100;
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;
}
}
```
2. After creating the file, run the following command to restart the service.
```
sudo systemctl restart nginx
```
## 6. Check the operation of Pleasanter
1. There are two addresses that can be used to check whether Pleasanter is running.
You can check the public IP address and public DNS from the EC2 instance management screen.
1. http://{EC2 public IP address}
2. http://{EC2 public DNS}
E.g.: http://{character string}.compute.amazonaws.com
2. After starting Pleasanter, enter "Login ID: Administrator" and "Initial password: pleasanter" on the Pleasanter login screen and click the "Login" button.

3. After logging in, you will be asked to change the password for the "Administrator" user, so enter a password of your choice and click the "Change" button.

### If redirection is not correct
Check that the nginx settings are correct. The behavior may change depending on small differences such as the presence or absence of/in the description.
### If the Pleasanter screen does not open
If the above steps were completed without any errors, but a page such as "Welcome to nginx!" (not an error message) is displayed when accessed through a browser, the security settings of the browser may be preventing you from transitioning to the Pleasanter login screen.
## Upgrade Pleasanter
Please refer to the manual below for the procedure for upgrading Pleasanter installed in this procedure.
[Upgrade Procedure Using the Installer (Linux)](version-up-installer-linux)
## Related Information
[Upgrade Procedure Using the Installer (Linux)](version-up-installer-linux)
## Supported Versions
|Supported versions|Body|
|:--|:--|
|1.4.18.0 and later|New manual created with the addition of a function to specify a host other than localhost (same server as the DB) as the source host for connecting to the MySQL DB|