AWS(EC2)でRedmineとGit、Jenkinsを使ったWordPress開発環境の構築と公開を行う
(その3-Redmine)

redmine AWS

前回の続き
予告どおりRedmineをインストールしていく。

前回作成したRDSのMySQLインスタンスに接続できるか確認。
[code lang=”bash” gutter=”off”]
$ mysql -h <RDSインスタンスのエンドポイント> -u <ユーザ名> -p

Enter password:
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 30293
Server version: 5.6.23-log MySQL Community Server (GPL)

Copyright (c) 2000, 2015, Oracle and/or its affiliates. All rights reserved.

Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.

Type ‘help;’ or ‘\h’ for help. Type ‘\c’ to clear the current input statement.

mysql>
[/code]
接続成功。

Redmine用のデータベースと接続ユーザを作成。
[code lang=”sql” gutter=”off”]
mysql> create database db_redmine default character set utf8;
mysql> grant all on db_redmine.* to <redmine用ユーザ>@localhost identified by ‘<パスワード>’;
mysql> quit
[/code]

Redmineに必要なものをインストール
[code lang=”bash” gutter=”off”]
$ sudo yum install -y mysql55-devel curl-devel httpd24-devel
$ sudo yum -y groupinstall "Development Tools"
$ sudo yum -y –enablerepo=epel install ruby-devel ImageMagick ImageMagick-devel ipa-gothic-fonts
[/code]

bundlerのインストール
[code lang=”bash” gutter=”off”]
$ gem install bundler –no-rdoc –no-ri
[/code]

io-consoleのインストール
[code lang=”bash” gutter=”off”]
$ gem install io-console
[/code]

mysql2をバージョン指定でインストール
[code lang=”bash” gutter=”off”]
$ gem install mysql2 -v ‘0.3.20’
[/code]

Redmineをダウンロードして/var/lib/redmineに展開。
[code lang=”bash” gutter=”off”]
$ mkdir ~/tmp
$ cd ~/tmp
$ curl -O http://www.redmine.org/releases/redmine-3.2.1.tar.gz
$ tar xvf redmine-3.2.1.tar.gz
$ sudo mv redmine-3.2.1 /var/lib/redmine
[/code]

/var/lib/redmineに移動し、Redmineのインストールを実行。
[code lang=”bash” gutter=”off”]
$ cd /var/lib/redmine
$ bundle install –without development test
[/code]

DB接続情報を編集
[code lang=”bash” gutter=”off”]
$ cd config
$ cp database.yml.example database.yml
$ vim database.yml
[/code]

[code lang=”xml”]
production:
adapter: mysql2
database: db_redmine
host: <RDSのエンドポイント>
username: <redmine用ユーザ>
password: <パスワード>
encoding: utf8
[/code]

セッションのシークレットトークンの作成。
[code lang=”bash” gutter=”off”]
$ bundle exec rake generate_secret_token
[/code]

Passengerインストールのため、swap領域を確保し、homeディレクトリの権限をいったん緩める。
[code lang=”bash” gutter=”off”]
$ sudo dd if=/dev/zero of=/swap bs=1M count=1024
$ sudo mkswap /swap
$ sudo swapon /swap
$ chmod o+x "/home/work_user"
[/code]

Passengerのインストール
[code lang=”bash” gutter=”off”]
$ gem install passenger –no-rdoc –no-ri
[/code]

続けて、apache2モジュールを起動。
[code lang=”bash” gutter=”off”]
$ passenger-install-apache2-module
[/code]

途中でApacheの設定を変えろと言ってくるが、面倒なので後回し。
設定情報だけコピーしておく。
[code lang=”xml”]
LoadModule passenger_module /home/work_user/.gem/ruby/2.0/gems/passenger-5.0.26/buildout/apache2/mod_passenger.so
<IfModule mod_passenger.c>
PassengerRoot /home/work_user/.gem/ruby/2.0/gems/passenger-5.0.26
PassengerDefaultRuby /usr/bin/ruby2.0
</IfModule>
[/code]

Apacheの設定ファイルを編集し、コピーした設定情報を貼り付け。
[code lang=”bash” gutter=”off”]
$ sudo vim /etc/httpd/conf/httpd.conf
[/code]

今回はRedmineとWordPressを同じサーバで使いたいので、サブディレクトリ公開設定。
[code lang=”bash” gutter=”off”]
$ cd /var/www/html
$ sudo ln -s /var/lib/redmine/public redmine
$ ls -l
total 4
-rw-rw-r– 1 apache www 22 Mar 14 12:53 phpinfo.php
lrwxrwxrwx 1 root root 23 Mar 14 14:00 redmine -> /var/lib/redmine/public
[/code]

再びhttpd.confを編集。
[code lang=”bash” gutter=”off”]
$ sudo vim /etc/httpd/conf/httpd.conf
[/code]
[code lang=”xml”]
<Location /redmine>
Options -Indexes
RailsBaseURI /redmine
</Location>
[/code]

Apacheを再起動
[code lang=”bash” gutter=”off”]
$ sudo service httpd restart
[/code]

http://(Elastic IPのアドレス)/redmineにアクセスして、動作確認。

さて、このままじゃ無用心なんでssl設定。
今回はログインページだけhttpsにしておく。
まず、SSLに対応するためには、「openssl」と「mod_ssl」が必要。
インストール状況を確認。

[code lang=”bash” gutter=”off”]
$ sudo yum list installed | grep ssl
openssl.x86_64 1:1.0.1k-14.90.amzn1 installed
openssl-devel.x86_64 1:1.0.1k-14.90.amzn1 @amzn-main
[/code]

mod_sslが入っていないので、インストール
[code lang=”bash” gutter=”off”]
$ sudo yum -y install mod24_ssl
[/code]

秘密鍵(RSA)の生成
[code lang=”bash” gutter=”off”]
$ sudo openssl genrsa -out server.key 1024
[/code]

証明書要求(CSR)の生成
しょせん、オレオレ証明書用なのでテキトーに。
[code lang=”bash” gutter=”off”]
$ sudo openssl req -new -key server.key -out server.pem -sha1
You are about to be asked to enter information that will be incorporated
into your certificate request.
What you are about to enter is what is called a Distinguished Name or a DN.
There are quite a few fields but you can leave some blank
For some fields there will be a default value,
If you enter ‘.’, the field will be left blank.
—–
Country Name (2 letter code) [XX]:JP
State or Province Name (full name) []:Tokyo
Locality Name (eg, city) [Default City]:(未入力)
Organization Name (eg, company) [Default Company Ltd]:(未入力)
Organizational Unit Name (eg, section) []:(未入力)
Common Name (eg, your name or your server’s hostname) []:(Elastic IPのアドレス)
Email Address []:(未入力)

Please enter the following ‘extra’ attributes
to be sent with your certificate request
A challenge password []:(未入力)
An optional company name []:(未入力)
[/code]

証明書の発行(自己署名)
[code lang=”bash” gutter=”off”]
$ sudo openssl x509 -in server.pem -out server.crt -req -signkey server.key -days 365 -sha1
Signature ok
subject=/C=JP/ST=Tokyo/L=Default City/O=Default Company Ltd/CN=XXX.XXX.XXX.XXX
Getting Private key
[/code]

パーミッションの設定
できあがった鍵はそのままだとアレなんで、パーミッションを変更しておく。
[code lang=”bash” gutter=”off”]
$ sudo chmod 400 server.*
$ ls -l
total 12
-r——– 1 root root 855 Jul 12 08:30 server.crt
-r——– 1 root root 891 Jul 12 08:29 server.key
-r——– 1 root root 651 Jul 12 08:29 server.pem
[/code]

できあがった鍵を所定の場所に配置
[code lang=”bash” gutter=”off”]
$ sudo mv server.* /etc/pki/tls/private/
[/code]

次に必要なモジュールを読み込まれているか確認。
[code lang=”bash” gutter=”off”]
$ sudo grep mod_ssl.so /etc/httpd/conf.modules.d/*
/etc/httpd/conf.modules.d/00-ssl.conf:LoadModule ssl_module modules/mod_ssl.so
$ sudo grep mod_rewrite.so /etc/httpd/conf.modules.d/*
/etc/httpd/conf.modules.d/00-base.conf:LoadModule rewrite_module modules/mod_rewrite.so
[/code]
問題なさそう。ちなみに、この設定がどこにあるか見つけるのに時間かかった。

そして、アクセス制御するために、三度httpd.confを編集。
(※先ほどの編集内容に追記しているので、注意!)
loginページ以外でhttpsアクセスしてきたらhttpに、
loginページでhttpアクセスしてきたらhttpsにリダイレクトする。
なお、stylesheetとjavascriptはどちらでもアクセスできるように
リダイレクトから除外している。

[code lang=”xml”]
<Location /redmine>
Options -Indexes
RailsBaseURI /redmine

<IfModule mod_rewrite.c>
RewriteEngine On
RewriteCond %{HTTPS} on
RewriteCond %{REQUEST_URI} !(^.*/login.*$)
RewriteCond %{REQUEST_URI} !(^.*/stylesheets.*$)
RewriteCond %{REQUEST_URI} !(^.*/javascripts.*$)
RewriteRule /.*$ http://%{HTTP_HOST}%{REQUEST_URI} [R,L]
RewriteCond %{HTTPS} off
RewriteCond %{REQUEST_URI} (^.*/login.*$)
RewriteRule /.*$ https://%{HTTP_HOST}%{REQUEST_URI} [R,L]
</IfModule>
</Location>
[/code]

鍵情報を設定
[code lang=”xml”]
<VirtualHost *:443>
SSLCertificateKeyFile /etc/pki/tls/private/server.pem
SSLCertificateFile /etc/pki/tls/private/server.pem
SSLCertificateChainFile /etc/pki/tls/private/server.pem
</VirtualHost>
[/code]

最後にApacheを再起動
[code lang=”bash” gutter=”off”]
$ sudo service httpd restart
[/code]

ブラウザでアクセスして、動作確認。
ログインページにhttpでアクセスしたら、自動的にhttpsに、
それ以外のページならhttpにリダイレクトすればOK。

さて、次はGitとGitoliteかな。

コメント

タイトルとURLをコピーしました