AWS(EC2)でRedmineとGit、Jenkinsを使ったWordPress開発環境の構築と公開を行う
(その3-Redmine)
前回の続き
予告どおりRedmineをインストールしていく。
前回作成したRDSのMySQLインスタンスに接続できるか確認。
$ 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>
接続成功。
Redmine用のデータベースと接続ユーザを作成。
mysql> create database db_redmine default character set utf8; mysql> grant all on db_redmine.* to <redmine用ユーザ>@localhost identified by '<パスワード>'; mysql> quit
Redmineに必要なものをインストール
$ 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
bundlerのインストール
$ gem install bundler --no-rdoc --no-ri
io-consoleのインストール
$ gem install io-console
mysql2をバージョン指定でインストール
$ gem install mysql2 -v '0.3.20'
Redmineをダウンロードして/var/lib/redmineに展開。
$ 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
/var/lib/redmineに移動し、Redmineのインストールを実行。
$ cd /var/lib/redmine $ bundle install --without development test
DB接続情報を編集
$ cd config $ cp database.yml.example database.yml $ vim database.yml
production: adapter: mysql2 database: db_redmine host: <RDSのエンドポイント> username: <redmine用ユーザ> password: <パスワード> encoding: utf8
セッションのシークレットトークンの作成。
$ bundle exec rake generate_secret_token
Passengerインストールのため、swap領域を確保し、homeディレクトリの権限をいったん緩める。
$ sudo dd if=/dev/zero of=/swap bs=1M count=1024 $ sudo mkswap /swap $ sudo swapon /swap $ chmod o+x "/home/work_user"
Passengerのインストール
$ gem install passenger --no-rdoc --no-ri
続けて、apache2モジュールを起動。
$ passenger-install-apache2-module
途中でApacheの設定を変えろと言ってくるが、面倒なので後回し。
設定情報だけコピーしておく。
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>
Apacheの設定ファイルを編集し、コピーした設定情報を貼り付け。
$ sudo vim /etc/httpd/conf/httpd.conf
今回はRedmineとWordPressを同じサーバで使いたいので、サブディレクトリ公開設定。
$ 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
再びhttpd.confを編集。
$ sudo vim /etc/httpd/conf/httpd.conf
<Location /redmine> Options -Indexes RailsBaseURI /redmine </Location>
Apacheを再起動
$ sudo service httpd restart
http://(Elastic IPのアドレス)/redmineにアクセスして、動作確認。
さて、このままじゃ無用心なんでssl設定。
今回はログインページだけhttpsにしておく。
まず、SSLに対応するためには、「openssl」と「mod_ssl」が必要。
インストール状況を確認。
$ 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
mod_sslが入っていないので、インストール
$ sudo yum -y install mod24_ssl
秘密鍵(RSA)の生成
$ sudo openssl genrsa -out server.key 1024
証明書要求(CSR)の生成
しょせん、オレオレ証明書用なのでテキトーに。
$ 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 []:(未入力)
証明書の発行(自己署名)
$ 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
パーミッションの設定
できあがった鍵はそのままだとアレなんで、パーミッションを変更しておく。
$ 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
できあがった鍵を所定の場所に配置
$ sudo mv server.* /etc/pki/tls/private/
次に必要なモジュールを読み込まれているか確認。
$ 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
問題なさそう。ちなみに、この設定がどこにあるか見つけるのに時間かかった。
そして、アクセス制御するために、三度httpd.confを編集。
(※先ほどの編集内容に追記しているので、注意!)
loginページ以外でhttpsアクセスしてきたらhttpに、
loginページでhttpアクセスしてきたらhttpsにリダイレクトする。
なお、stylesheetとjavascriptはどちらでもアクセスできるように
リダイレクトから除外している。
<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>
鍵情報を設定
<VirtualHost *:443> SSLCertificateKeyFile /etc/pki/tls/private/server.pem SSLCertificateFile /etc/pki/tls/private/server.pem SSLCertificateChainFile /etc/pki/tls/private/server.pem </VirtualHost>
最後にApacheを再起動
$ sudo service httpd restart
ブラウザでアクセスして、動作確認。
ログインページにhttpでアクセスしたら、自動的にhttpsに、
それ以外のページならhttpにリダイレクトすればOK。
さて、次はGitとGitoliteかな。
この投稿へのトラックバック
トラックバックはありません。
- トラックバック URL
この投稿へのコメント