前回の続き
予告どおり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かな。
コメント