Help us understand the problem. What is going on with this article?

AWS EC2 Linux開発環境 構築メモ

More than 5 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

Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
No comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
ユーザーは見つかりませんでした