====== AWSのEC2における、CentOS7の初期設定 ====== VPC、EC2の構成でのCentOS7の初期設定手順。\\ RDSは使わず、EC2内にMySQLをインストールする。 ===== SELinux ===== enforcing ・・・ SELinux は有効で、アクセス制限も有効\\ permissive ・・・ SELinux は有効だが、アクセス制限は行わず警告を出力\\ disabled ・・・ SELinux 機能は無効 デフォルトでは disabled になっている場合、特に変更の必要はない。\\ 警告を確認したい場合は、permissive に変更する。 # SELinux の状態を確認 $ getenforce # 編集 $ sudoedit /etc/selinux/config SELINUX=permissive # 再起動 $ sudo reboot # SELinux の状態を確認 $ getenforce ===== Swap の設定 ===== Swap が割り当てられていなければ設定。 # Swap の確認 free -m total used free shared buff/cache available Mem: 983 77 308 0 596 758 Swap: 0 0 0 # ストレージの空き容量の確認 df -h --total /dev/xvda1 30G 1.5G 29G 5% / # Swap に 4GB 割り当て(1024 * 4 = 4096) sudo dd if=/dev/zero of=/swapfile1 bs=1M count=4096 sudo chmod 600 /swapfile1 sudo mkswap /swapfile1 sudo swapon /swapfile1 # Swap の確認 free -m total used free shared buff/cache available Mem: 983 62 85 0 835 773 Swap: 4095 0 4095 ===== yum アップデート ===== $ sudo yum update -y ===== httpd ===== https://docs.aws.amazon.com/ja_jp/AWSEC2/latest/UserGuide/ec2-lamp-amazon-linux-2.html $ sudo yum install -y httpd $ sudo systemctl start httpd $ sudo systemctl enable httpd $ sudo systemctl is-enabled httpd $ sudo yum info httpd パブリックIPなどでブラウザからアクセスできることを確認する。\\ ===== Git ===== yum の Git は古い。最新版を入れたい場合は wget などを使い、自分でインストールする。\\ http://vdeep.net/centos7-git $ yum list | grep '^git' $ sudo yum -y install git $ git --version git version 1.8.3.1 ===== vim ===== [[ソフトウェア:vi_vim:カラースキーム_molokai_と.vimrcの設定|カラースキーム(molokai)と .vimrc の設定]] を参照。 ===== PHP ===== $ sudo yum install epel-release -y $ sudo rpm -Uvh http://rpms.famillecollet.com/enterprise/remi-release-7.rpm $ sudo yum -y install --enablerepo=remi,remi-php72 php php-devel php-mbstring php-pdo php-gd php-xml php-mysql $ yum list installed | grep php $ php -v $ sudo mkdir /var/log/php $ sudo chown apache:apache /var/log/php $ cd /etc $ ls -l | grep php $ sudo cp php.ini php.ini.origin $ sudoedit php.ini # php.ini.txt の内容を反映させる default_charset = "UTF-8" mbstring.language = Japanese ;mbstring.internal_encoding = ;mbstring.http_input = ;mbstring.http_output = mbstring.detect_order = UTF-8,SJIS,EUC-JP,JIS,ASCII date.timezone = Asia/Tokyo expose_php = Off memory_limit = 128M post_max_size = 128M upload_max_filesize = 128M register_argc_argv = On error_log = /var/log/php/error.log $ sudo service httpd restart ===== MySQL ===== $ sudo yum repolist all | grep mysql $ sudo yum -y localinstall https://dev.mysql.com/get/mysql80-community-release-el7-1.noarch.rpm $ sudo yum repolist all | grep mysql $ sudo yum -y install mysql-community-server $ mysql --version # 起動 $ sudo systemctl start mysqld.service # 自動起動 $ sudo systemctl enable mysqld.service # 確認 $ systemctl status mysqld.service # mysql の root パスワードを確認 $ cat /var/log/mysqld.log | grep password # パスワードポリシーをゆるくする $ sudoedit /etc/my.cnf validate_password.length=8 validate_password.mixed_case_count=0 validate_password.number_count=0 validate_password.special_char_count=0 validate_password.policy=LOW $ sudo service mysqld restart $ sudo mysql_secure_installation # パスワード設定 # 全てy $ mysql -u root -p SHOW GLOBAL VARIABLES LIKE '%validate_password%'; exit $ sudo mkdir /var/log/mysql $ sudo chown mysql:mysql /var/log/mysql # my.cnfの編集 $ sudoedit /etc/my.cnf log-error=/var/log/mysql/mysqld.log slow_query_log=1 slow_query_log_file=/var/log/mysql/slow_query.log long_query_time=0.1 $ sudo rm /var/log/mysqld.log $ sudo service mysqld restart $ mysql -u root -p show variables like '%log%'; show global variables like 'character%'; ==== 追記:buffer pool のメモリサイズを増やす ==== デフォルトでは innodb_buffer_pool_size が 128M になっていたが、これだとメモリが足りず自動再起動時に失敗し、サーバが停止したままになってしまうことがありました。\\ なので、適当な値に増やしておきます。 # innodb_buffer_pool_size の変更 sudoedit /etc/my.cnf [mysqld] # innodb_buffer_pool_size = 128M innodb_buffer_pool_size = 512M # MySQL 再起動 sudo service mysqld restart # MySQL に接続して、値が増えているのを確認 SHOW VARIABLES LIKE 'innodb_buffer_pool_size'; +-------------------------+-----------+ | Variable_name | Value | +-------------------------+-----------+ | innodb_buffer_pool_size | 536870912 | +-------------------------+-----------+ 1 row in set (0.01 sec) ===== AWS Linux のタイムゾーンを日本時間に ===== $ ls /usr/share/zoneinfo/ $ sudoedit /etc/sysconfig/clock ZONE="Japan" $ sudo ln -sf /usr/share/zoneinfo/Japan /etc/localtime $ sudo reboot ===== httpd.conf ===== # httpd.conf $ sudoedit /etc/httpd/conf/httpd.conf # ※ Perl を使う場合のみ、cgi の実行を許可する # Options に「ExecCGI」を追加する Options Indexes FollowSymLinks ExecCGI # .htaccess を許可する AllowOverride All # ※ Perl を使う場合のみ、cgi を許可する # コメントアウト解除&「.pl」の追加 AddHandler cgi-script .cgi .pl $ sudo service httpd restart ===== www ユーザの追加(サイト制作用アカウント) ===== $ cat /etc/passwd $ sudo useradd www $ sudo passwd www $ sudo su - www $ mkdir .ssh $ cd .ssh $ ssh-keygen -t rsa # パスフレーズ:なし $ mv id_rsa.pub authorized_keys # 秘密鍵をコピペしてローカルに保存 $ cat id_rsa $ rm id_rsa $ chmod 600 authorized_keys $ cd ../ $ chmod 700 .ssh # www ユーザを終了 $ exit # apache に www グループを追加 $ sudo gpasswd -a apache www $ sudo id apache $ sudo chown -R www:www /var/www/ # httpd ログディレクトリへのシンボリックリンクを貼る $ sudo ls -la /var/www $ sudo ln -s /var/log/httpd /var/www/logs # アクセス権限 $ sudo chmod 755 /var/log/httpd ===== MySQLユーザの追加 ===== $ mysql -u root -p create user USER_NAME@'localhost' identified by 'PASSWORD'; select user, host from mysql.user; create database DB_NAME; grant all on DB_NAME.* to USER_NAME@'localhost'; grant all on *.* to USER_NAME@'localhost'; show grants for USER_NAME@'localhost'; exit; # 作成したユーザでログイン $ mysql -u USER_NAME -p show databases; ===== Composer ===== $ php -r "copy('https://getcomposer.org/installer', 'composer-setup.php');" $ php composer-setup.php $ rm composer-setup.php $ sudo mv composer.phar /usr/local/bin/composer $ ls -l /usr/local/bin ===== SELINUX ===== SELINUXの警告が出てないか確認\\ 参考: https://qiita.com/yunano/items/857ab36faa0d695573dd