VPC、EC2の構成でのCentOS7の初期設定手順。
RDSは使わず、EC2内にMySQLをインストールする。
enforcing ・・・ SELinux は有効で、アクセス制限も有効
permissive ・・・ SELinux は有効だが、アクセス制限は行わず警告を出力
disabled ・・・ SELinux 機能は無効
デフォルトでは disabled になっている場合、特に変更の必要はない。
警告を確認したい場合は、permissive に変更する。
# SELinux の状態を確認 $ getenforce # 編集 $ sudoedit /etc/selinux/config SELINUX=permissive # 再起動 $ sudo reboot # SELinux の状態を確認 $ getenforce
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
$ sudo yum update -y
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などでブラウザからアクセスできることを確認する。
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
$ 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 の内容を反映させる
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
$ 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%';
デフォルトでは 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)
$ ls /usr/share/zoneinfo/ $ sudoedit /etc/sysconfig/clock ZONE="Japan" $ sudo ln -sf /usr/share/zoneinfo/Japan /etc/localtime $ sudo reboot
# httpd.conf $ sudoedit /etc/httpd/conf/httpd.conf <Directory "/var/www/html"> # ※ Perl を使う場合のみ、cgi の実行を許可する # Options に「ExecCGI」を追加する Options Indexes FollowSymLinks ExecCGI # .htaccess を許可する AllowOverride All </Directory> # ※ Perl を使う場合のみ、cgi を許可する # コメントアウト解除&「.pl」の追加 AddHandler cgi-script .cgi .pl $ sudo service httpd restart
$ 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 -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;
$ 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の警告が出てないか確認
参考: https://qiita.com/yunano/items/857ab36faa0d695573dd
コメント