====== 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