Edited at

AWS EC2 Linux開発環境 構築メモ

More than 3 years have passed since last update.

AWSへSSH接続可能になったら以下を実施


環境


  • RHEL6.5

  • Apache2.2.15(Unix)

  • PHP5.4.33

  • MySQL5.6


OS基本設定


rootパスワード設定


  • rootパスワードを設定


    • ec2-userでログイン

    • sudo su -

    • passwd

    • 新パスワードを設定

    • 「all authentication tokens updated successfully.」と表示されたらOK




作業用ユーザーを作成


  • デフォルトのec2-user以外のユーザーを作成


    • su -

    • useadd user1

    • passwd user1

    • 「all authentication tokens updated successfully.」と表示されたらOK



  • 作成ユーザーにsudo権限を与える


    • usermod -G wheel user1

    • visudo


      • 以下コメントアウトを外す

      • #%wheel ALL=(ALL) ALL → %wheel ALL=(ALL) ALL






SSHポート番号変更


  • sshのデフォルト22番から変更


    • vi /etc/ssh/sshd_config


      • port 22 → それ以外(2222とか)





  • sshd再起動


    • service sshd restart



  • 変更後のポートに対してsshログイン可能であることを確認


セキュリティグループの設定


  • HTTP,HTTPS,SSHのみ許可する


    • EC2管理コンソールにログイン

    • サブメニューのセキュリティグループからインスタンスで使用するグループを選択

    • Inbound上で以下を許可する


      • SSH(デフォルト22以外の変更後のポート番号)

      • HTTP(80)

      • HTTPS(443)

      • MySQL(3306)






タイムゾーン変更


  • 日本時間に変更する


    • date で現在の設定を確認

    • sudo cp -p /usr/share/zoneinfo/Japan /etc/localtime

    • date 日本時間になっている事を確認




日本語設定


  • 日本語設定に変更


    • vi /etc/sysconfig/i18n


      • LANG=en_US.UTF-8 → LANG=ja_JP.UTF-8






Fix更新


  • yum update -y


cloud-init用の事前環境設定


  • EC2インスタンスコピー時に環境設定が変わってしまう問題を防ぐために以下を行います。


    • vi /etc/cloud/cloud.cfg


      • preserve_hostname:true  ##再起動時にホスト名が変更されしまう現象を防ぐ

      • repo_upgrade: none

      • locale: ja_JP.UTF-8 ##ja_JP.UTF-8指定の場合



    • vi /etc/sysconfig/clock


      • ZONE="Asia/Tokyo" ##Asia/Tokyo指定の場合

      • UTC = True






メールアドレス設定


  • 障害時の通知用メールアドレスを設定します。


    • vi /etc/aliases で以下を更新


      • # Person who should get root's mail

        #root: marc



        root: 通知用メールアドレス



    • 更新内容を反映させる


      • newaliases



    • テストメール送信


      • echo test|mail root



    • 指定したメールにテストメールが届いた事を確認




停止スケジュール設定


  • EC2は時間課金なので、使わない時間帯に自動停止してくれる仕組みを作ります


    • cronインストール


      • yum install crontabs -y



    • cron自動起動設定


      • chkconfig httpd on

      • chkconfig --list httpd でonになっているか確認



    • cron起動


      • service crond start



    • 自動停止スケジュール登録


      • crontab -e  

      • 例)夜23:00の場合


        • 00 23 * * * /sbin/shutdown -h now








LAMP環境構築


レポジトリ追加


  • レポジトリとは、インターネット上にあるソフトウェアの倉庫のようなもの

  • 登録しておくことで、より多くの種類、より新しいバージョンのソフトウェアをインストール出来たりします

  • 主要レポジトリインストール(EPEL、REMI、RPMForge)

    ※必ずEPEL→REMIの順でインストールする。




Apacheインストール、設定


  • yum install httpd -y

  • Apache起動、接続確認



  • 導入バージョン確認


    • httpd -v



  • Apache自動起動設定


    • sudo chkconfig httpd on

    • sudo chkconfig --list httpd でonになっているか確認



  • Apache設定ファイルバックアップ(httpd.conf.org)


    • cp /etc/httpd/conf/httpd.conf /etc/httpd/conf/httpd.conf.org




  • Apache設定ファイル編集


    • 最低限以下5点を編集


    • vi /etc/httpd/conf/httpd.conf

      - ブラウザからディレクトリ構造を表示できないようにする
      
      - Options Indexes FollowSymLinks → Options -Indexes FollowSymLinks
      - ファイルが見つからない時の「Forbidden」ページからOS情報を非表示にする
      - ServerTokens OS → ServerTokens Prod
      - ファイルが見つからない時の「Forbidden」ページからIPやApacheの情報を非表示にする。
      - ServerSignature On → ServerSignature Off
      - エラーが起きた時の通知先メールアドレス
      - ServerAdmin メールアドレス
      - 登録ホスト名
      - #ServerName www.example.com:80 → ServerName localhost:80





  • Apache設定チェック


    • service httpd configtest

    • 「Syntax OK」と表示されればOK。




  • httpd再起動


    • service httpd restart




  • もう一度接続確認




PHPインストール、設定


  • PHPインストール


    • yum install php php-devel php-mysql php-gd php-mbstring -y --enablerepo=remi



  • 導入バージョン確認


    • php -v



  • PHP設定ファイルバックアップ


    • cp /etc/php.ini /etc/php.ini.org




  • PHP設定ファイル編集



    • vi /etc/php.ini

      - 軽度の通知含め全てのエラーを表示するようにする
      
      - error_reporting = E_ALL & ~E_DEPRECATED → error_reporting = E_ALL | E_STRICT
      - ブラウザにエラーを画面に表示しない
      - display_errors = Off

      - PHPスタートアップ時のエラーを表示しない
      - display_startup_errors = Off

      - エラーをログを出力する
      - log_errors = On

      - エラーログを/var/log/php_errors.logに出力する
      - ;error_logs = php_erros.log → error_logs = /var/log/php_errors.log

      - タイムゾーンを日本語に変更
      - ;date.timezone = → date.timezone = Asia/Tokyo

      - 日本語設定
      - ;mbstring.internal_encoding = EUC-JP → ;mbstring.internal_encoding = UTF-8

      - ;mbstring.language = Japanese → mbstring.language = Japanese

      - ;mbstring.http_input = auto → mbstring.http_input = auto

      - ;mbstring.detect_order = auto → mbstring.detect_order = auto
      - phpのバージョンや、php使用有無の情報を公開しないようにする
      - expose_php = On → expose_php = Off






MySQLインストール、設定


  • MySQLインストール


    • yum install -y http://dev.mysql.com/get/mysql-community-release-el6-5.noarch.rpm

    • yum install -y mysql mysql-devel mysql-server mysql-utilities

    • 上手くインストール出来ない場合は以下手順で関連モジュール削除後再度実施


      • yum remove mysql*

      • rpm -qaで依存関係をチェック

      • rpm -e 依存モジュール名 で削除





  • 導入バージョン確認
    - mysql -V

  • 自動起動設定


    • sudo chkconfig mysqld on

    • sudo chkconfig --list mysqld でonになっているか確認



  • MySQLサーバー起動


    • service mysqld start

    • 失敗する場合は以下ログを確認


      • cat /var/log/mysqld.log





  • MySQL初期設定


    • mysql_secure_installation


      • MySQL管理用rootパスワード設定

      • 匿名ユーザーを削除するか → Y

      • リモートからrootログインするか → Y

      • testデータベースを削除するか → n

      • 権限のリロードをするか → Y





  • rootパスワード設定


    • mysql -u root -p でブランクパスワードでログイン

    • SET PASSWORD FOR root@localhost=PASSWORD('パスワード');

    • exitでログアウト

    • 変更後のパスワードでrootログイン出来る事を確認



  • MySQL設定ファイルバックアップ


    • cp /etc/my.cnf /etc/my.cnf.org




運用ツールインストール


dstat(リソース状況確認コマンド)


  • ロードアベレージ、CPU、Memory、disk、NetWork等を一覧でリアルタイムに見れるので便利。

  • 各種ステータス確認コマンドのまとめ、一括管理のために作られたコマンドらしい


    • yum install dstat

    • dstat 実行でモニター画面が表示される事を確認

    • 各確認項目にaliasを貼っておくと便利

      以下を参考にさせて頂きました。

      http://d.hatena.ne.jp/hirose31/20120229/1330501968を参照


      • vim /etc/profile にて末尾に以下を追加


        • alias dstat='dstat -tlcmgdrn'

        • alias dstat-cpu='dstat -tlcr'

        • alias dstat-mem='dstat -tlcm'

        • alias dstat-disk='dstat -tlcdr'

        • alias dstat-net='dstat -tlcnd'








logwatch(ログ監視コマンド)


  • 1日のログ監視結果のレポートを/etc/aliasesで指定したrootアカウントメールに送ってくれる


    • logwatchインストール


      • yum install logwatch



    • レポート送信テスト


      • logwatch --print

      • 指定したメールアドレスに送信されているか確認して下さい。






参考URL