【要件定義】アプリ計画

要件定義のアプリ計画のテンプレ。随時加筆。

  • アプリケーション要件 背景
    現状のアプリはOracleとの依存関係が強すぎ、
    メンテナンス効率が非常に悪いとう課題がある。

【要件定義】データ移行

要件定義のデータ移行のテンプレ。随時加筆。

  • 目的
    データ移行の概要を載せる。

    本書の目的は2017年1月サービス開始予定のXXXシステムにおける移行に関する
    作業・役割・期間を定義し、プロジェクトメンバー、関連部署間において、
    共有することを目的とする。
    
  • 前提条件
    判明している前提条件を載せる。

    ・サービス開始は2017年1月4日(月)である。
    ・移行作業については、2016年12月29日(木)のオンライン終了後~
     2017年1月3日(火)までの間でシステムを停止させた状態で行う。
    ・XXXシステムの切替は一括切替とし、一部切替は行わない。
    ・XXXシステムの切り戻しは一括切り戻しとし、一部切り戻しは行わない。
    ・セキュリティパッチの適用は2016年8月31日をもって凍結する。以降、
    ・本番開始までのタスク・スケジュールは今後随時見直し行う。
    ・移行の大まかな流れは以下の通りとする。
     (ここで年、月のエクセル図があるとイメージがつきやすい)
    
  • システム移行
    IPやURLや製品情報を載せる。

    新システムのシステム構成
    
    
    No役割分類IPや製品名
    1WEBサーバ#1Linux系サーバXXXX
    2WEBサーバ#2Linux系サーバXXXX
    3APサーバ#1Linux系サーバXXXX
    4APサーバ#2Linux系サーバXXXX
    5DBサーバLinux系サーバXXXX
    6ロードバランサ#1仮想アプライアンスXXXX
    7ロードバランサ#2仮想アプライアンスXXXX
    8帳票サーバWindows系サーバXXXX
    ※仮想アプライアンスとは仮想マシン内にOS、ミドルウェア、アプリケーションといった  全ソフトウェア・コンポーネントを予め準備し、デプロイすると稼働状態となり、  利用可能になる。

    アプリケーションの機能ごとに言語やバージョンの違いを載せる。
    ライブラリの違いもあるとより良い。

    1.オンラインアプリケーション
    2.クライアントアプリケーション
    3.バッチアプリケーション
    
    
    No種別名称言語
    OracleC#Java
    Pro*CSQLローダPLSQL
    1オンラインXXXマスタ登録
    2クライアントXXXマスタ登録
    3バッチXXXマスタ取込
  • データ移行
    移行対象有無や移行方法を載せる。

    No名称移行有無移行方法スキーマ表領域
    1テーブルSQL文XXXXTBL
    2インデックスSQL文XXXXIDX
    3プロシージャ----
    4パッケージ----
    5シーケンスSQL文XXXXTBL
    6トリガー----
    7シノニム----

    オブジェクト構成があまり変わらない場合、新旧の比較を載せるのも良い。

    No旧オブジェクト名新オブジェクト名区分概要
    新規変更削除
    1AテーブルAテーブルカラム追加
    2Bテーブルテーブル追加
    3Cテーブルテーブル削除

    テーブルのうち、データマッピング、初期データについて載せる。
    詳細は外部設計にすることが多い。

    1.テーブルデータ
    
    
    No旧カラム名新カラム名区分概要
    新規変更削除
    1IDID変更なし
    2氏名漢字カラム追加
    3氏名カナカラム削除
    2.初期データ
    Noテーブル名カラム名設定値
    1URLマスタID111
    2URLマスタURLz-area.net
  • 業務移行
    アプリケーションの機能ごとに稼働時間の違いや運用ルールの違いを載せる。

    1.オンラインアプリケーション
    2.クライアントアプリケーション
    3.バッチアプリケーション
    
    
    No種別機能名旧機能概要新機能概要
    1オンラインXXXマスタ登録300件まで登録2000件まで登録
    2クライアントXXXマスタ登録300件まで登録2000件まで登録
    3バッチXXXマスタ取込2000件まで登録5000件まで登録
  • 依頼事項
    事前に判明している依頼先と依頼内容があれば載せる。
  • 移行リハーサル
    移行リハーサルの概要を載せる。

    移行リハーサルについては3回実施する。
    
    <1回目>
    データベースの移行検証
    データベース以外の移行検証
    
    <2回目>
    1回目の検証結果を受けた見直し実施
    
    <3回目>
    最終的な手順確認
    
    移行時に発生する作業
    
    1.システム移行(システム構築)
    2.リリース
    3.現行サーバの停止
    4.データ移行(DB、ファイル)
    5.検証
    
    移行リハスケジュール
    (ここで年、月のエクセル図があるとイメージがつきやすい)
    
  • 移行テスト
    移行後の環境で行うテスト方針を載せる。
  • 移行体制
    移行時の体制や連絡先を載せる。
    (ここで年、月のエクセル図があるとイメージがつきやすい)
  • 本番検証
    移行の検証手段と移行判定方針を載せる。

    2017年1月1日(日)に運用にてURLを切り替えていただき、アプリチームにて
    アプリケーション観点で動作確認を行う。
    他システムとの連携確認は実施しない。
    2017年1月2日(月)に顧客に動作確認を実施いただく。

  • 切り戻し
    本番検証で失敗した場合の切り戻し方針を載せる。

    本番検証で現行業務に支障を及ぼすと判断される場合、切り戻しを実施する。
    切り戻しについては以下表のシステムを切り戻す。

  • コンティンジェンシープラン
    移行時の不測の事態が発生することを想定し、
    その対策や行動手順として、再実行時の必要日数や候補日を載せる。

    現時点では移行期間は4日間必要と考える。
    再移行期間の候補は以下の通り。
    1.2017年1月7日(土)~2017年1月9日(月・祝)と前後1日
    2.2017年3月18日(土)~2017年3月20日(月・祝)と前後1日

【Excel】CSVファイルを開く

  • ダブルクリック
    ダブルクリックで開いた場合、数値などは自動判断する。
  • テキストファイルで読み取り
    ツールバーの「データ」-「外部データの取り込み」-「テキストファイル」から読み取り、
    区切り文字をカンマに指定し、全項目を文字列として読み取る。
    数値も文字列として読み取るので、先頭が0でも変換しない。
    項目間が”,”の場合、ダブルクォート内のカンマは区切り文字ではなく、
    文字としてのカンマとして扱う。

【管理】WBS

WBSをエクセルで書くことが多いので、数式や書き方を記載。

  • 祝日の設定
    祝日は別紙「リスト」シートを作成し、A:Aに日付書式で管理する。
  • 終了日の自動設定(祝日除く)
    作業日数と開始日を入力すると祝日を除いた上で終了日を自動設定できるよう
    終了日に数式を設定する。

    ' 終了日の自動設定
    =IF(開始日セル="","",WORKDAY(開始日セル,ROUNDUP(作業日数セル,0)-1,リスト!祝日設定範囲))
    
  • 1ヶ月の日付の設定
    X月1日のセルに対して、YYYY/MM/DD形式でセルに入力し、
    書式をユーザ定義で「d」を設定する。
    X月2日のセルに対して、「X月1日のセル+1」を入力し、書式をユーザ定義で「d」を設定する。
    以降、繰り返しとなる。
  • 1ヶ月の曜日の自動設定
    曜日を入力したいセルに対して、数式を設定する。

    ' 曜日の自動設定
    ' aaa:「月」、「火」などの曜日1文字を表す
    ' aaaa:「月曜日」、「火曜日」などの曜日3文字を表す。
    =TEXT(X月1日のセル,"aaa")
    
  • 日ごとの書式設定
    祝日は灰色、タスクの作業期間中はオレンジ色で塗りつぶせるよう
    タスク行の日ごとのセルに数式を設定し、
    さらに条件付き書式を設定する。
    オレンジ色の条件付き書式4の優先順位を下げ、
    灰色の条件付き書式1~3の優先順位を上げ、
    「条件を満たす場合は停止」チェックをONにするところがミソ。

    ' タスク行の日ごとのセル
    ' 作業日が開始日と終了日の間(=作業期間中)の場合、1を設定している。
    =IF(OR(作業日数セル="",作業日数セル=0),"",IF(AND(作業日セル>=開始日セル,作業日セル<=終了日セル),1,""))
    
    ' 条件付き書式1
    ' 作業日が別紙「リスト」シートに設定した祝日範囲に含まれる場合、
    ' COUNTIFで1が返るため、条件がTUREとなる。
    ' この時、セルの塗りつぶしの色、フォント色を灰色にする。
    ' 「条件を満たす場合は停止」チェックをONにする。
    =COUNTIF(リスト!祝日設定範囲,作業日セル)=1
    
    ' 条件付き書式2
    ' 作業日が土曜日の場合、WEEKDAYで7が返るため、条件がTUREとなる。
    ' この時、セルの塗りつぶしの色、フォント色を灰色にする。
    ' 「条件を満たす場合は停止」チェックをONにする。
    =WEEKDAY(作業日セル)=7
    
    ' 条件付き書式3
    ' 作業日が日曜日の場合、WEEKDAYで1が返るため、条件がTUREとなる。
    ' この時、セルの塗りつぶしの色、フォント色を灰色にする。
    ' 「条件を満たす場合は停止」チェックをONにする。
    =WEEKDAY(作業日セル)=1
    
    ' 条件付き書式4
    ' 指定の値を含むセルだけを書式設定で
    ' 「セルの値」「次の値に等しい」「=1」を設定する。
    ' この時、セルの塗りつぶしの色、フォント色をオレンジ色にする。
    

【Redmine】Railsアプリケーションを実行するためのApacheモジュール導入

Redmine等のRuby on Railsアプリケーションを
実行するためのApacheモジュールを導入します。

導入することのメリットは以下の通りです。

  1. Apache単独でRailsアプリケーションを実行可能。
    Apacheのモジュールとして実装されており、
    別途デーモンを起動する必要がなく、TCPポートも使わない。
  2. Railsアプリケーションのデプロイが簡単になる。
    ファイルをアップロードするだけなので、PHPのような感覚。
  3. サーバのメモリを節約できる。
    Railsインスタンスは必要なタイミングで生成し、
    一定時間アクセスがなければインスタンスを終了させる。
  • Passenger導入

    gem install passenger --no-rdoc --no-ri
    passenger-install-apache2-module
    

    以下の警告は無視しました。

    /usr/include/features.h:330:4: warning: #warning _FORTIFY_SOURCE requires compiling with optimization (-O) [-Wcpp]
    #  warning _FORTIFY_SOURCE requires compiling with optimization (-O)
    

    以下の設定依頼が表示されるので、メモしておきます。

    Please edit your Apache configuration file, and add these lines:
    
    LoadModule passenger_module /usr/local/share/ruby/gems/2.0/gems/passenger-5.0.27/buildout/apache2/mod_passenger.so
    <IfModule mod_passenger.c>
      PassengerRoot /usr/local/share/ruby/gems/2.0/gems/passenger-5.0.27
      PassengerDefaultRuby /usr/bin/ruby2.0
    </IfModule>
    
    After you restart Apache, you are ready to deploy any number of web
    applications on Apache, with a minimum amount of configuration!
    

    ここで別のTeraTermを立ち上げ、
    Apache2の設定ファイルを作成し、メモしたものを書き込みます。

    vi /etc/httpd/conf.d/redmine.conf
    
    # Passengerの基本設定。
    LoadModule passenger_module /usr/local/share/ruby/gems/2.0/gems/passenger-5.0.27/buildout/apache2/mod_passenger.so
    <IfModule mod_passenger.c>
      PassengerRoot /usr/local/share/ruby/gems/2.0/gems/passenger-5.0.27
      PassengerDefaultRuby /usr/bin/ruby2.0
    </IfModule>
    
    # サブディレクトリでRedmineを実行するための設定
    RackBaseURI /redmine
    
    # Passengerが追加するHTTPヘッダを削除するための設定(任意)
    Header always unset "X-Powered-By"
    Header always unset "X-Rack-Cache"
    Header always unset "X-Content-Digest"
    Header always unset "X-Runtime"
    
    # Passengerのチューニングのための設定(任意)
    PassengerMaxPoolSize 20
    PassengerMaxInstancesPerApp 4
    PassengerPoolIdleTime 3600
    PassengerHighPerformance on
    PassengerStatThrottleRate 10
    PassengerSpawnMethod smart
    RailsAppSpawnerIdleTime 86400
    PassengerMaxPreloaderIdleTime 0
    
    # RedmineのCSSや画像へのアクセスを許可
    <Directory "/var/lib/redmine/public">
      Require all granted
    </Directory>
    

    保存後、Apache2を再起動し、元のTeraTermでエンターを押下します。

    /etc/rc.d/init.d/httpd restart
    

    Apache上のPassengerでRedmineを実行するため、
    Redmineのオーナーを変更します。
    今回、AWSではApacheはrootユーザで実行しているため、
    変更前のオーナーでも実行は可能です。

    chown -R apache:apache /var/lib/redmine
    

    Apacheのドキュメントルートに指定されているディレクトリに
    Redmineのpublicディレクトリに対するシンボリックリンクを作成します。

    ln -s /var/lib/redmine/public /var/www/html/redmine
    

    再度、Apache2を再起動します。
    これにより、全てのRailsアプリケーションも再起動されるようになります。

    /etc/rc.d/init.d/httpd restart
    
  • Redmine動作確認
    以下のURLでRedmineにアクセスできれば成功です。
    https://xxx.xxx.xxx.xxx/redmine/

    コマンド以外のRedmineの初期設定については、
    以下のURLを確認しながら画面上で行います。
    http://redmine.jp/tech_note/first-step/admin/

【Redmine】Redmine導入

  • Redmine導入
    Redmineのバージョンは以下のURLから最新版を調査します。
    http://www.redmine.org/projects/redmine/wiki/Download

    cd /var/lib
    curl -O http://www.redmine.org/releases/redmine-3.2.1.tar.gz
    tar xvf redmine-3.2.1.tar.gz
    mv redmine-3.2.1 /var/lib/redmine
    
  • RedmineからMySQLへの接続ファイル作成

    vi /var/lib/redmine/config/database.yml
    
    production:
      adapter: mysql2
      database: レッドマイン用DB名
      host: localhost
      username: レッドマイン用ユーザ名
      password: "レッドマイン用ユーザパスワード"
      encoding: utf8
    

    スペースは2つ空けること。
    パスワードはダブルクォートをつけること。
    この設定がおかしいと後続のbundle処理でハマリます。
    「/var/lib/redmine/config/database.yml.example」にサンプルファイルがあります。

  • Redmineからメールサーバへの接続ファイル作成

    vi /var/lib/redmine/config/configuration.yml
    

    今回はお試しで導入することもあり、作成しませんでした。
    日本語フォントファイルのパス、アップロードされたファイルの保管場所、
    データベースの暗号化等も設定できます。
    この設定ファイルも記述をミスると後続のbundle処理でハマリます。
    「/var/lib/redmine/config/configuration.yml.example」にサンプルファイルがあります。

  • gemパッケージ導入
    Rubyのパッケージ管理ツール「bundler」を使用して、
    Redmineが依存するgemパッケージを導入します。

    cd /var/lib/redmine
    bundle install --without development test
    

    通常はここで普通に上手くいくようですが、私の環境では以下のエラーが発生しました。

    [root@ip-xxx-xxx-xxx-xxx redmine]# bundle install --without development test
    /usr/share/ruby/vendor_ruby/2.0/rubygems/core_ext/kernel_require.rb:55:in `require': cannot load such file -- io/console (LoadError)
    from /usr/share/ruby/vendor_ruby/2.0/rubygems/core_ext/kernel_require.rb:55:in `require'
    from /usr/local/share/ruby/gems/2.0/gems/bundler-1.11.2/lib/bundler/vendor/thor/lib/thor/shell/basic.rb:2:in `<top (required)>'
    from /usr/share/ruby/vendor_ruby/2.0/rubygems/core_ext/kernel_require.rb:55:in `require'
    from /usr/share/ruby/vendor_ruby/2.0/rubygems/core_ext/kernel_require.rb:55:in `require'
    from /usr/local/share/ruby/gems/2.0/gems/bundler-1.11.2/lib/bundler/vendor/thor/lib/thor/shell/color.rb:1:in `<top (required)>'
    from /usr/local/share/ruby/gems/2.0/gems/bundler-1.11.2/lib/bundler/vendor/thor/lib/thor/shell.rb:17:in `shell'
    from /usr/local/share/ruby/gems/2.0/gems/bundler-1.11.2/lib/bundler/ui/shell.rb:14:in `initialize'
    from /usr/local/share/ruby/gems/2.0/gems/bundler-1.11.2/lib/bundler/cli.rb:12:in `new'
    from /usr/local/share/ruby/gems/2.0/gems/bundler-1.11.2/lib/bundler/cli.rb:12:in `rescue in start'
    from /usr/local/share/ruby/gems/2.0/gems/bundler-1.11.2/lib/bundler/cli.rb:10:in `start'
    from /usr/local/share/ruby/gems/2.0/gems/bundler-1.11.2/exe/bundle:19:in `block in <top (required)>'
    from /usr/local/share/ruby/gems/2.0/gems/bundler-1.11.2/lib/bundler/friendly_errors.rb:7:in `with_friendly_errors'
    from /usr/local/share/ruby/gems/2.0/gems/bundler-1.11.2/exe/bundle:17:in `<top (required)>'
    from /usr/local/bin/bundle:23:in `load'
    from /usr/local/bin/bundle:23:in `<main>'
    

    「io/console (LoadError)」が存在しないと記載があるので、
    以下のコマンドで追加で導入しました。

    cd /var/lib/redmine
    gem install io-console
    

    その後、「/var/lib/redmine」を全部削除し、最初からやり直したところ、上手くいきました。

  • Redmineのセッション改ざん防止用秘密鍵の作成

    cd /var/lib/redmine
    rake generate_secret_token
    
  • Redmine用DBにテーブル作成

    cd /var/lib/redmine
    RAILS_ENV=production rake db:migrate
    
  • Redmine用DBのテーブルに初期データ登録
    初期データ登録はコマンドではなく、Redmine起動後に管理画面から実行することも可能。

    cd /var/lib/redmine
    RAILS_ENV=production rake redmine:load_default_data
    
  • Redmineのパーミッション設定

    cd /var/lib/redmine
    chown -R 755 files log tmp public/plugin_assets
    

【Redmine】Redmine導入前準備

RedmineをAWSのEC2の無料版であるAmazon Linuxに導入します。
導入の前提として、WEBサーバ、DBサーバの設定が済んでいること。
WEBサーバにはApache2、DBサーバにはMySQLを利用します。

導入前の準備として、各ツールを揃えます。

  • 開発ツール・ビルドに必要なヘッダファイルのインストール
    RubyやPassengerのビルドで必要なヘッダファイルです。

    yum -y groupinstall "Development Tools"
    yum -y install openssl-devel readline-devel zlib-devel curl-devel libyaml-devel libffi-devel
    
  • ImageMagickと日本語フォントのインストール
    ImageMagickと日本語フォントはガントチャートをPNG形式の画像にエクスポートする機能、
    添付ファイルのサムネイル画像を作成するのに利用するようです。
    インストールを行わなくてもRedmineの実行は可能ですが、入れておきます。

    yum -y install ImageMagick ImageMagick-devel ipa-pgothic-fonts
    
  • Rubyインストール
    Amazon Linuxでは既に導入済ですが、最新のものにしました。

    yum install ruby-devel
    
  • bundler導入
    Redmineが使用するGemを一括インストールするためのツールです。

    gem install bundler --no-rdoc --no-ri
    

    「–no-rdoc –no-ri」はドキュメントのインストールを省略するためのオプションです。

  • Redmine用のMySQLのユーザ作成

    mysql -uroot -pデータベースパスワード
    
    create database レッドマイン用DB名 default character set utf8;
    grant all on レッドマイン用DB名.* to レッドマイン用ユーザ名@localhost identified by 'レッドマイン用ユーザパスワード';
    flush privileges;
    exit
    

【DBサーバ】MySQL導入

  • MySQLインストール

    yum -y install mysql-server mysql-devel
    
  • MySQL設定

    vi /etc/my.cnf
    
    # 下記内容を追加([mysqld]に)
    # クライアントの文字コードに依存しない
    skip-character-set-client-handshake
    # 文字コード
    character-set-server=utf8
    
    下記内容を追加
    [mysql]
    default-character-set=utf8
    
    /etc/rc.d/init.d/mysqld start
    chkconfig mysqld on
    chkconfig --list mysqld
    

    ランレベルが2~5でonを確認する。

  • rootユーザのパスワード設定とUTF-8の確認

    mysql -u root
    
    SET PASSWORD FOR root@localhost=password('データベースパスワード');
    

    character_set_filesystemとcharacter_sets_dir以外がUTF-8であることを確認する。

    show variables like 'char%';
    
  • 初期ユーザと初期データベースの削除

    mysql -u root -pデータベースパスワード
    

    ユーザ名が空のユーザを確認し、削除する。

    SELECT user,host FROM mysql.user;
    
    DELETE FROM mysql.user WHERE user='';
    

    データベースを確認しデータベースtestを削除する。

    SHOW DATABASES;
    
    DROP DATABASE test;
    exit
    

【WEBサーバ】Apache2SSL導入

  • 秘密鍵作成

    cd /etc/pki/tls/certs
    openssl genrsa -aes256 1024 > server.key
    
    Generating RSA private key, 1024 bit long modulus
    ......................++++++
    ............++++++
    e is 65537 (0x10001)
    Enter pass phrase:パスワード入力
    Verifying - Enter pass phrase:パスワード再入力
    
  • 公開鍵作成

    openssl req -new -key server.key > server.csr
    
    Enter pass phrase for server.key:パスワード入力
    You are about to be asked to enter information that will be incorporated
    into your certificate request.
    略
    Country Name (2 letter code) [XX]:JP
    State or Province Name (full name) []:Tokyo
    Locality Name (eg, city) [Default City]:Akihabara
    Organization Name (eg, company) [Default Company Ltd]:OreOreCA
    Organizational Unit Name (eg, section) []:z-aws
    Common Name (eg, your name or your server's hostname) []:z-aws.net
    Email Address []:空欄
    A challenge password []:空欄
    An optional company name []:空欄
    
  • 証明書作成

    openssl x509 -in server.csr -days 36500 -req -signkey server.key > server.crt
    
    Enter pass phrase for server.key:パスワード入力
    
  • 秘密鍵パスワード解除
    現状のままだとApache2の再起動のたびにパスワードを求められるので、
    秘密鍵のパスワードを解除しておきます。

    mv server.key server.key.org
    openssl rsa -in server.key.org > server.key
    
    Enter pass phrase for server.key.org:パスワード入力
    writing RSA key
    
  • Apache2のSSL導入

    yum install mod_ssl
    
  • Apache2のSSL設定

    cp -pi /etc/httpd/conf.d/ssl.conf /etc/httpd/conf.d/ssl.conf.org
    vi /etc/httpd/conf.d/ssl.conf
    
    下記内容に変更
    #DocumentRoot "/var/www/html"
    ↓
    DocumentRoot "/var/www/html"
    
    ErrorLog logs/ssl_error_log
    ↓
    ErrorLog /var/log/httpd/ssl_error_log
    
    TransferLog logs/ssl_access_log
    ↓
    #TransferLog logs/ssl_access_log
    
    CustomLog logs/ssl_request_log \
              "%t %h %{SSL_PROTOCOL}x %{SSL_CIPHER}x \"%r\" %b"
    ↓
    CustomLog /var/log/httpd/ssl_access_log \
              "%t %h %{SSL_PROTOCOL}x %{SSL_CIPHER}x \"%r\" %b"
    
    
    # POODLE SSLv3.0 脆弱性問題対処
    SSLProtocol all -SSLv2
    ↓
    SSLProtocol all -SSLv2 -SSLv3
    
    SSLCertificateFile /etc/pki/tls/certs/localhost.crt
    ↓
    SSLCertificateFile /etc/pki/tls/certs/server.crt
    
    SSLCertificateKeyFile /etc/pki/tls/private/localhost.key
    ↓
    SSLCertificateKeyFile /etc/pki/tls/certs/server.key
    
  • Apache2SSLの動作確認
    AWSコンソール画面から「セキュリティグループ」-「インバウンド」で
    以下を許可しておきます。

    プロトコル:TCP
    ポート:443
    
    echo '<h1>It works!</h1>' > /var/www/html/index.html
    /etc/rc.d/init.d/httpd restart
    

    https://xxx.xxx.xxx.xxx/

    証明書の確認が表示された後、「It works!」が表示されれば正常です。

    rm -f /var/www/html/index.html
    

【WEBサーバ】Apache2設定

  • Apache2のドキュメントルート設定
    基本的な設定は完了したので、次にドキュメントルートの設定を行います。

    vi /etc/httpd/conf/httpd.conf
    
    下記の設定となるように変更(変更部分または重要部分のみ記載)
    # ドキュメントルート
    DocumentRoot "/var/www/html"
    
    # 最上位の制御
    <Directory />
        Options FollowSymLinks
        AllowOverride None
    </Directory>
    
    # ドキュメントルートの制御
    <Directory "/var/www/html">
        Options -Indexes FollowSymLinks
        AllowOverride All
        Order allow,deny
        Allow from all
    </Directory>
    
    # アクセス制御ファイル名
    AccessFileName .htaccess
    
    # ファイル名を指定しない場合の検索優先順位(index.html)
    <Files ~ "^\.ht">
        Order allow,deny
        Deny from all
        Satisfy All
    </Files>
    
    # iconsルートの制御
    <Directory "/var/www/icons">
        Options -Indexes MultiViews FollowSymLinks
        AllowOverride None
        Order allow,deny
        Allow from all
    </Directory>
    
    # エラーログ出力先
    ErrorLog /var/log/httpd/error_log
    
  • welcome.confの無効化

    mv /etc/httpd/conf.d/welcome.conf /etc/httpd/conf.d/welcome.conf.org
    
  • Apache2の動作確認
    AWSコンソール画面から「セキュリティグループ」-「インバウンド」で
    以下を許可しておきます。

    プロトコル:TCP
    ポート:80
    
    echo '<h1>It works!</h1>' > /var/www/html/index.html
    /etc/rc.d/init.d/httpd start
    

    http://xxx.xxx.xxx.xxx/

    「It works!」が表示されれば正常です。

    rm -f /var/www/html/index.html
    
  • Apache2起動設定

    chkconfig httpd on
    chkconfig --list httpd
    

    ランレベルが2~5でonを確認する。