CentOS7にRedmineをインストールし、nginxのサブフォルダで公開する方法を紹介します。
nginxとの連携はpassengerを用います。nginxは説明の途中でpassenger連携のために
コンパイルしますので、nginx自体が事前にインストールされている必要はありません。
既にnginxをyum等で導入済みの場合は、設定ファイルの場所が /etc配下から
ソースコンパイルでインストールする /opt/nginx 配下に変更になりますので、
設定ファイルのマージはご自身でおねがいします。
インストールに必要な諸パッケージ導入
[bash]
$ sudo yum groupinstall “Development Tools”
$ sudo yum -y install mysql mysql-server
$ sudo yum -y install openssl-devel readline-devel zlib-devel curl-devel libyaml-devel mysql-devel icu4c libicu-devel libxml2 libxml2-devel libxslt libxslt-devel
$ sudo gem install bundler –no-rdoc –no-ri
[/bash]
mysqlの起動と自動起動設定
[bash]
sudo systemctl start mariadb
sudo systemctl enable mariadb
[/bash]
mysql パスワード設定と、設定調整
$ mysqladmin -u root password ‘mynewpassword’
$ mysql -uroot -pxxxx
文字コードの確認をすると、一部が latin1になっています。
これを utf8に変更します。
[bash]
MariaDB [(none)]> show variables like ‘character_set%’
-> ;
+————————–+—————————-+
| Variable_name | Value |
+————————–+—————————-+
| character_set_client | utf8 |
| character_set_connection | utf8 |
| character_set_database | latin1 |
| character_set_filesystem | binary |
| character_set_results | utf8 |
| character_set_server | latin1 |
| character_set_system | utf8 |
| character_sets_dir | /usr/share/mysql/charsets/ |
+————————–+—————————-+
8 rows in set (0.00 sec)
[/bash]
[bash]
$ sudo nano /etc/my.cnf.d/server.cnf
[/bash]
[diff]
# this is read by the standalone daemon and embedded servers
[server]
# this is only for the mysqld standalone daemon
[mysqld]
+ character-set-server=utf8 << この行を追記
[/diff]
mysqlを再起動し、設定が反映されている確認。
[bash]
$ sudo systemctl restart mariadb
[/bash]
[bash]
mysql -uroot -pxxxx
[/bash]
latin1がutf8になっているのを確認。
[bash]
MariaDB [(none)]> show variables like ‘character_set%’;
ERROR 2006 (HY000): MySQL server has gone away
No connection. Trying to reconnect…
Connection id: 2
Current database: *** NONE ***
+————————–+—————————-+
| Variable_name | Value |
+————————–+—————————-+
| character_set_client | utf8 |
| character_set_connection | utf8 |
| character_set_database | utf8 |
| character_set_filesystem | binary |
| character_set_results | utf8 |
| character_set_server | utf8 |
| character_set_system | utf8 |
| character_sets_dir | /usr/share/mysql/charsets/ |
+————————–+—————————-+
8 rows in set (0.00 sec)
[/bash]
redmine用のデータベース作成
[bash]
mysql -uroot -p
mysql> create database db_redmine default character set utf8;
mysql> grant all on db_redmine.* to user_redmine@localhost identified by ‘********’;
mysql> flush privileges;
mysql> exit;
[/bash]
最新のredmine取得と、展開
以下のURLより最新版をダウンロードします。インストール先は
/var/lib/redmineとします。
http://www.redmine.org/projects/redmine/wiki/Download
[bash]
$ tar xvzf redmine-2.5.2.tar.gz
$ mv redmine-2.5.2 redmine
$ sudo mv redmine /var/lib/
$ sudo chown nobody:nobody /var/lib/redmine -R
redmine設定ファイルの調整
[bash]
$ sudo nano /var/lib/redmine/config/database.yml
[/bash]
データベース名、ユーザー名とパスワードは 上記で作成したDBの設定に合わせてください。
[bash]
production:
adapter: mysql2
database: db_redmine
host: localhost
username: user_redmine
password: “xxxxxx”
encoding: utf8
[/bash]
メール送信などの設定を調整します。
[bash]
$ sudo nano /var/lib/redmine/config/configuration.yml
[/bash]
[bash]
production:
email_delivery:
delivery_method: :smtp
smtp_settings:
address: “localhost”
port: 25
domain: ‘example.com’
rmagick_font_path: /usr/share/fonts/ipa-pgothic/ipagp.ttf
[/bash]
redmineに必要なgem群をインストール
[bash]
$ sudo gem install bundler
$ sudo /usr/local/bin/bundle install –without development test
[/bash]
secret_token作成とDBマイグレーション実行
[bash]
$ sudo /usr/local/bin/bundle exec /usr/local/bin/rake generate_secret_token
$ sudo RAILS_ENV=production /usr/local/bin/bundle exec /usr/local/bin/rake db:migrate
[/bash]
passengerのgemインストール
[bash]
$ sudo gem install passenger
[/bash]
nginxインストール(passenger連携用にコンパイル)
以下のコマンドを打つといろいろ出てきますが、適当に選択してインストールしてください。
/opt/nginx 配下にnginxがインストールされます。
[bash]
$ sudo /usr/local/bin/passenger-install-nginx-module
[/bash]
/opt/nginx フォルダ権限調整
[bash]
$ sudo chown nobody:nobody /opt/nginx -R
$ sudo chmod 775 /opt/nginx -R
[/bash]
ファイアーウォール設定
動作確認の前にファイアーウォールがデフォでかかっているのでhttpを通すように変更する。
まず確認。
[bash]
$ sudo firewall-cmd –list-all
public (default, active)
interfaces: virbr0 wlp2s0
sources:
services: dhcpv6-client ssh
ports:
masquerade: no
forward-ports:
icmp-blocks:
rich rules:
[/bash]
sshとdhcpしか有効じゃないので、httpを追加する。
その前にどんなサービスが定義されていて、今どれが publicで有効かチェックする方法。
[bash]
※定義されているサービス一覧
$ sudo firewall-cmd –get-services
※publicのサービス確認
$ sudo firewall-cmd –list-service –zone=public
[/bash]
nginxなので httpサービスを追加してみる
[bash]
※サービスを追加する
$ sudo firewall-cmd –add-service=http –zone=public
※恒久的にサービスを追加する
$ sudo firewall-cmd –add-service=http –zone=public –permanent
[/bash]
ファイアーウォール再起動
[bash]
$ sudo firewall-cmd –reload
[/bash]
httpが有効になっているか確認
[bash]
$ sudo firewall-cmd –list-all
public (default, active)
interfaces: virbr0 wlp2s0
sources:
services: dhcpv6-client http ssh
ports:
masquerade: no
forward-ports:
icmp-blocks:
rich rules:
[/bash]
nginxの設定確認と、起動
-t オプションで設定ファイルをチェックし、OKならば、一旦起動してみて、ブラウザーで http://localhost として、nginxのトップページが開ければOK。
[bash]
$ sudo /opt/nginx/sbin/nginx -t
nginx: the configuration file /opt/nginx/conf/nginx.conf syntax is ok
nginx: configuration file /opt/nginx/conf/nginx.conf test is successful
[/bash]
nginx起動
[bash]
$ sudo /opt/nginx/sbin/nginx
[/bash]
停止は
[bash]
$ ps aux |grep nginx
[/bash]
として、nginx: master process となるプロセスIDを殺すと止めることができます。
[bash]
$ sudo kill pid
[/bash]
nginx用 サービス起動ファイル作成
$ sudo nano /usr/lib/systemd/system/nginx.service
[bash]
[Unit]
Description=nginx – high performance web server
Documentation=http://nginx.org/en/docs/
After=network.target remote-fs.target nss-lookup.target
[Service]
Type=forking
PIDFile=/opt/nginx/logs/nginx.pid
ExecStartPre=/opt/nginx/sbin/nginx -t -c /opt/nginx/conf/nginx.conf
ExecStart=/opt/nginx/sbin/nginx -c /opt/nginx/conf/nginx.conf
ExecReload=/bin/kill -s HUP $MAINPID
ExecStop=/bin/kill -s QUIT $MAINPID
PrivateTmp=true
[Install]
WantedBy=multi-user.target
[/bash]
デーモンリロード、nginx起動
[bash]
$ sudo systemctl daemon-reload
$ sudo systemctl start nginx
$ sudo systemctl enable nginx
[/bash]
nginx動作確認
サーバーのIPにブラウザーで接続で nginxのwelcompageが表示されれば、nginxの動作はOK
http://192.168.x.x
SELinuxを無効化
[bash]
$ sudo nano /etc/sysconfig/selinux
[/bash]
[bash]
-SELINUX=enforcing
+SELINUX=disabled
[/bash]
一旦リブートしてください
[bash]
$ sudo reboot
[/bash]
nginx passenger連携設定
passengerの場所は、インストール時に自動的に組み込まれているので、その他の項目の調整。
http://www.myhost.jp/redmine で公開する。
[bash]
$ sudo nano /opt/nginx/conf/nginx.conf
[/bash]
以下の部分を追記
[diff mark=”2″]
+ user nobody;
+ pid /opt/nginx/logs/nginx.pid;
〜省略〜
server {
listen 80;
server_name localhost;
〜省略〜
+ location ~ ^/redmine {
+ root /var/lib/redmine/public;
+ passenger_base_uri /redmine;
+ passenger_app_root /var/lib/redmine;
+ passenger_enabled on;
+ rails_env production;
+ access_log logs/redmine_access.log ;
+ error_log logs/redmine_error.log ;
+ }
[/diff]
redmine 動作確認
http://example.com/redmine へアクセス。
以下のようなトップページが出てくれば 成功。

ログインボタンをクリックし、デフォルト管理者ユーザー
admin / admin でログイン出来ればOKです。

以上
Leave a comment