RedmineをCentOSにインストール

今回は、Passengerを使用してRedmineをインストール。
過去記事でも投稿していますが、こちらはCentOS版。
最近ではめっきりCentOSしか触っていませんので…
ちなみに環境は、ConoHa VPSの1Gプランです！

# 必要パッケージのインストール

RedmineとRuby関連の使用に必要なパッケージもインストールします。

```
sudo yum install -y git gcc openssl-devel readline-devel zlib-devel ImageMagick ImageMagick-devel ipa-pgothic-fonts
```

# rbenvのインストール
```
sudo git clone git://github.com/sstephenson/rbenv.git /usr/local/rbenv
sudo git clone https://github.com/sstephenson/ruby-build.git /usr/local/rbenv/plugins/ruby-build
sudo mkdir /usr/local/rbenv/shims /usr/local/rbenv/versions
```
__/etc/profile.d/rbenv.sh__を作成し、以下の内容を記述します。

```/etc/profile.d/rbenv.sh
export RBENV_ROOT="/usr/local/rbenv"
export PATH="${RBENV_ROOT}/bin:${PATH}"
eval "$(rbenv init --no-rehash -)"
```

sudo経由でrbenvを使えるようにするために__sudo visudo__を実行して以下を変更します。
理由は、[こちら](http://sig9.hatenablog.com/entry/2016/10/04/120000)を参照してください。

```visudo
#
# Adding HOME to env_keep may enable a user to run unrestricted
# commands via sudo.
#
# Defaults   env_keep += "HOME"

Defaults    secure_path = /sbin:/bin:/usr/sbin:/usr/bin
```

上記を以下の通りに変更します。

```visudo
#
# Adding HOME to env_keep may enable a user to run unrestricted
# commands via sudo.
#
# Defaults   env_keep += "HOME"
#
# Defaults    secure_path = /sbin:/bin:/usr/sbin:/usr/bin

Defaults    secure_path = /sbin:/bin:/usr/sbin:/usr/bin:/usr/local/rbenv/bin:/usr/local/rbenv/shims
Defaults    env_keep += "RBENV_ROOT"
```

以下のコマンドで、rbenv.shを反映します。

```
source /etc/profile.d/rbenv.sh
```

## rbenvのテスト
```
sudo rbenv -v
```
2019/05/14現在__rbenv 1.1.2-2-g4e92322__が表示されれば成功です。

# rubyのインストール

```
sudo rbenv install --list
```
> インストールできるrubyのversionは、上記で調べられます。
> 今回は2.6.3を使用するので、以下のコマンドを実行しグローバルで2.6.3を使用するようにも設定します。

```
sudo rbenv install 2.6.3
sudo rbenv global 2.6.3
```

rubyが正しく設定されているか確認します。

```
ruby -v
```
インストールした2.6.3が返ってくれば成功です。

# Passengerのインストール
```
sudo yum install -y yum-utils
sudo yum install -y https://dl.fedoraproject.org/pub/epel/epel-release-latest-$(< /etc/redhat-release tr -dc '0-9.'|cut -d \. -f1).noarch.rpm
sudo yum-config-manager --enable epel
sudo yum clean all && sudo yum update -y
sudo yum install -y pygpgme curl
sudo curl --fail -sSLo /etc/yum.repos.d/passenger.repo https://oss-binaries.phusionpassenger.com/yum/definitions/el-passenger.repo
sudo yum install -y passenger || sudo yum-config-manager --enable cr && sudo yum install -y passenger
```

# MariaDBのインストールと起動
```
curl -sS https://downloads.mariadb.com/MariaDB/mariadb_repo_setup | sudo bash
sudo yum install -y MariaDB-server galera MariaDB-client MariaDB-shared MariaDB-backup MariaDB-common MariaDB-devel
sudo systemctl enable mariadb.service
sudo systemctl start mariadb.service
mysql_secure_installation
```

> mysql_secure_installationは、[こちら参照](https://mariadb.com/kb/ja/mysql_secure_installation/)

MariaDBにログイン

```
mysql -u root -p
```

ログイン後にデータベースを作成します。

```
create database データベース名 character set utf8mb4;
create user 'ユーザー名'@'localhost' identified by 'パスワード';
grant all privileges on データベース名.* to 'ユーザー名'@'localhost';
use データベース名;
exit;
```

# Nginxのインストール
```
sudo yum install -y nginx
```

# Redmineのダウンロードから設定まで

今回のバージョンは、4.0.3

```
sudo wget -O /usr/share/nginx/redmine-4.0.3.zip http://www.redmine.org/releases/redmine-4.0.3.zip
cd /usr/share/nginx/
sudo unzip redmine-4.0.3.zip
sudo chown -R 作業ユーザー:作業ユーザー /usr/share/nginx/redmine-4.0.3
sudo ln -s redmine-4.0.3 redmine
```
## gemのインストール
```
cd /usr/share/nginx/redmine
bundle install --without development test postgresql sqlite3 --path vendor/bundle
```

> 設定は[こちら参照](https://qiita.com/ozy-san/items/5c5daf68af501ef8c62a#databaseyml%E3%81%AE%E8%A8%AD%E5%AE%9A)
> encordingは、utf8mb4を設定します。

__ガントチャートのPNG文字化け対応__

```redmine/config/configuration.yml
rmagick_font_path: /usr/share/fonts/ipa-pgothic/ipagp.ttf
```

## 初期設定
```
rake generate_secret_token
RAILS_ENV=production rake db:migrate
RAILS_ENV=production rake redmine:load_default_data
mkdir tmp public/plugin_assets
sudo chown -R nginx:nginx files log tmp public/plugin_assets
sudo chmod -R 707 files log tmp public/plugin_assets
```
# Nginxの設定
configの設定は[こちらを参照](https://qiita.com/ozy-san/items/5c5daf68af501ef8c62a#nginx%E3%81%AEconf%E8%A8%AD%E5%AE%9A)

```
sudo systemctl enable nginx.service
sudo systemctl start nginx.service
```

# FireWallの設定
```
sudo firewall-cmd --zone=public --add-service=http --permanent
sudo firewall-cmd --zone=public --add-service=https --permanent
sudo firewall-cmd --reload
```

# 残タスク
SSL化などは[こちら](https://qiita.com/ozy-san/items/b294f6693d4588789867#ssl%E5%8C%96)を参考にどうぞ

参考までに

```
server {
  listen 80;
  server_name redmine.example.com;
  return 301 https://$host$request_uri;
}

server {
  listen 443 ssl http2;
  server_name www.example.com;

  root /usr/share/nginx/redmine/public;

  passenger_enabled on;
  client_max_body_size 100M;

  ssl_certificate /etc/letsencrypt/live/redmine.example.com/fullchain.pem;
  ssl_certificate_key /etc/letsencrypt/live/redmine.example.com/privkey.pem;
  ssl_trusted_certificate /etc/letsencrypt/live/redmine.example.com/fullchain.pem;

  ssl_session_timeout 1d;
  ssl_session_cache shared:SSL:50m;
  ssl_session_tickets on;

  ssl_dhparam /etc/ssl/private/dhparam.pem;

  ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
  ssl_ciphers "ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-$
  ssl_prefer_server_ciphers on;

  add_header Strict-Transport-Security 'max-age=31536000; includeSubDomains;';

}
```

---
参考サイト
- [Installing Passenger](https://www.phusionpassenger.com/docs/advanced_guides/install_and_upgrade/standalone/install/oss/el7.html)
- [Redmine 3.4をCentOS 7.3にインストールする手順](http://blog.redmine.jp/articles/3_4/install/centos/)
- [CentOS7 全体でユーザ共通に使える rbenv をインストールする](http://sig9.hatenablog.com/entry/2016/10/04/120000)
- [CentOS7へのrbenvを用いたrubyの導入（システムワイド版）](https://erorr.org/198/)