前編はこちら。 popotongue7.hatenablog.com
目的に対する結果
- とりあえずAWS使うとなった時にやるべきことを確認する
- 多分確認できた。
- 無料枠で何かやった気分になる
- ある程度はなった。
- VPC、EC2、RDSを使ったWebサーバ構築、公開の手順を一通り覚える
- 覚えた。
- あやふやなまんまなネットワーク知識を最低限整理する
- 何が無料でできるのかを把握する
- EC2、VPC、EIP、RDSあたりは把握した。
- Redmineで(可能ならスクラムの手法を利用して)普通に作業を管理できるようにする
Redmine構築手順
- 下記のURLを確認しながら進めた(が、色々いかなかった) blog.redmine.jp www.yamamanx.com
作業アカウントについて
- うまくいかなかった(というかめんどくさくなった)原因については途中までec2-userでsudoつけて実行していたのを途中でrootに切り替えてやるようになったということだった。
- 最初からrootでやるべきだった。
$ export ORIG_PATH=$PATH $ sudo -s -E $ export PATH=$ORIG_PATH
SELinuxの無効化、ファイアウォールの設定
EC2の初期設定
とりあえず以下などを参照しつつ必要そうなものだけ実施。 qiita.com
必要なパッケージのインストール
開発ツール(Cコンパイラ等)のインストール
yum -y groupinstall "Development Tools"
groupinstallとかいう便利なコマンドがyumにはあるんだなあと感動した。
RubyとPassengerのビルドに必要なヘッダファイルなどのインストール
yum -y install openssl-devel readline-devel zlib-devel curl-devel libyaml-devel libffi-devel
PostgreSQLとヘッダファイルのインストール
yum -y install postgresql-server postgresql-devel
Apacheとヘッダファイルのインストール
yum -y install httpd httpd-devel
ImageMagickとヘッダファイル・日本語フォントのインストール
yum -y install ImageMagick ImageMagick-devel ipa-pgothic-fonts
このあたりは特に問題なく。
Rubyインストール
- 公式ドキュメントにはソースコード取得、ビルド、インストールの手順があったがうまくいかず。
- Amazon Linux 2にはamazon-linux-extrasというリポジトリがあり、ここにあるパッケージはamazon-linux-extras install hogehogeでインストールできる。
- Rubyもあったのでそれを利用し、インストール成功。
amazon-linux-extras install ruby2.4
bunlerインストール
gem install bundler --no-rdoc --no-ri
ドキュメントのインストールをスキップするオプションを付けている。
postgresql側の設定
- RDSですべて設定済みなのでスキップできると思っていたが、そうでもないことに気づく。
- 一応psqlでログインして\lしたところ、ロケール(照合順序とCtype)がen_US.UTF-8になっていたので、ja_JP.UTF-8に変更する必要があった。
- 一旦使用予定だったDBを削除し、同一名称でDBを再作成した。
postgres=> CREATE DATABASE redmine_postgres LC_COLLATE 'ja_JP.UTF-8' LC_CTYPE 'ja_JP.UTF-8' ENCODING 'UTF8' TEMPLATE template0;
Redmineソースコード取得
- 以下のコマンドでは取得できなかった。
svn co https://svn.redmine.org/redmine/branches/3.4-stable /var/lib/redmine
普通に以下のURLからソースコードを取得した。 www.redmine.org
- /var/lib/redmine/config/database.ymlにデータベースへの接続設定を書く
production: adapter: postgresql database: DB名(自分の場合はredmine_postgres) host: ホスト名(RDSダッシュボードからRDSのエンドポイントを確認する) username: DBユーザ名(RDS作成時に指定したユーザ名、普通はrootかな?) password: "******" encoding: utf8
- 設定ファイル config/configuration.yml の作成
- メールサーバへの接続設定などを記述するが今回はメール配信は不要だったのでスキップ。
gemパッケージのインストール
- 以下のコマンドでインストール(できたはずだがうまくいかなかった気がする、しかしよく覚えておらず)
bundle install --without development test --path vendor/bundle
- セッション改ざん防止用秘密鍵の作成
bundle exec rake generate_secret_token
- データベースのテーブル作成
RAILS_ENV=production bundle exec rake db:migrate
- デフォルトデータの登録
RAILS_ENV=production REDMINE_LANG=ja bundle exec rake redmine:load_default_data
このあたりは何事もなく進んだ。
Passengerのインストール
gem install passenger -v 5.1.12 --no-rdoc --no-ri
- PassengerのApache用モジュールのインストール
passenger-install-apache2-module --auto --languages ruby
Apache用設定内容の確認
passenger-install-apache2-module --snippet
Apacheの設定
# Redmineの画像ファイル・CSSファイル等へのアクセスを許可する設定。 # Apache 2.4のデフォルトではサーバ上の全ファイルへのアクセスが禁止されている。 <Directory "/var/lib/redmine/public"> # {インストールディレクトリ/publicを指定} Require all granted </Directory> # Passengerの基本設定。 # passenger-install-apache2-module --snippet で表示された設定を記述。 # 環境によって設定値が異なるため以下の5行はそのまま転記せず、必ず # passenger-install-apache2-module --snippet で表示されたものを使用すること。 # LoadModule passenger_module /usr/local/lib/ruby/gems/2.4.0/gems/passenger-5.1.5/buildout/apache2/mod_passenger.so <IfModule mod_passenger.c> PassengerRoot /usr/local/lib/ruby/gems/2.4.0/gems/passenger-5.1.5 PassengerDefaultRuby /usr/local/bin/ruby </IfModule>
Apacheの起動および自動起動の設定
systemctl start httpd.service systemctl enable httpd.service
Apache上のPassengerでRedmineを実行するための設定
chown -R apache:apache /var/lib/redmine
Apacheのコンフィグファイル(/etc/httpd/conf.d/redmine.conf)の設定
Alias /redmine /var/lib/redmine/public <Location /redmine> PassengerBaseURI /redmine PassengerAppRoot /var/lib/redmine </Location>
実行
service httpd configtest systemctl restart httpd.service
反省点
- 色々ハマったところがあったけどちゃんとメモらずに作業を進めてしまった
- evernoteとか使いたい
- 以下について何の知識もないままだったので復習しておきたい
- gem
- bundler
- Apache
- Passenger
- こういう記事初めて書いてみたけど、手順のコピペみたいになってるのでもうちょっとうまく書けるようになりたい
次は
- 今回やったような作業を可能な限り自動化してやってみる
- S3、EFS使って何かしたい