AWS EC2でPHP + MySQLをインストール@Amazon EC2
PHPとMySQLのインストール
# yum -y install httpd php mysql
再起動
# service httpd restart
PHPの確認
# php -v PHP 5.3.28 (cli) (built: Dec 17 2013 00:28:38)
phpファイルをアップロードしてhello worldをechoして確認。オーケー。
ついでに他に必要になりそうなパッケージもインストールしておきます。
$ sudo yum -y install php-devel php-gd php-mbstring php-mysql php-pdo php-pear php-xml php-imap
PHPを日本語で使うために必要な設定をしておきます。
$ sudo vim /etc/php.ini
上記の設定ファイルをvimで開いてdefault_charsetをUTF-8に変更し、この行の冒頭のコメントアウトを外します。
[Date]のところでタイムゾーンをAsia/Tokyoにします。
[mystring]の部分に以下を記述します。
mbstring.language = Japanese mbstring.internal_encoding = UTF-8 mbstring.http_input = pass mbstring.http_output = pass mbstring.encoding_translation = Off mbstring.detect_order = auto mbstring.substitute_character = none; mbstring.func_overload = 0 mbstring.strict_detection = Off
保存して完了。
MySQLの確認
# mysql -version ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/var/lib/mysql/mysql.sock' (2)
エラーになりました。
これだけだとMySQLは使えません。
MySQLを使えるようにする
# yum install mysql-server
これでmysql-serverをインストール完了。
設定ファイルはAWS用のmy.cnfがあるそうなのでそれを使うことにします。
# mv /usr/share/mysql/my-medium.cnf /etc/my.cnf
yesで上書き。
設定ファイルを編集します。
# vim /etc/my.cnf
文字コードをutf-8に。
character-set-server=utf8
上記をmy.cnfに追記して保存。
mysqlを起動
# /etc/rc.d/init.d/mysqld start mysqld を起動中: [ OK ]
問題ないようです。
パスワード変更等、セキュリティ面の設定をします。
# mysql_secure_installation
上記のコマンドを実行すると新しいrootユーザのパスワードを セットするか聞いてくるのでyをタイプ。
新しいパスワードを二回聞いてくるので
それに従います。
続いて既存の匿名ユーザを削除するか聞いてくるので
これもYesで。
Remove anonymous users? [Y/n] y ... Success!
リモートからのルートログインはしないので以下はnで。
Disallow root login remotely? [Y/n] n ... skipping.
テスト用のデータベースも不要です。
Remove test database and access to it? [Y/n] n ... skipping.
設定を今すぐに反映させます。
Reload privilege tables now? [Y/n] yes ... Success!
MySQLモニターを起動して確認してみます。
# mysql -u root -p
起動を確認できました。
文字コードを確認します。
mysql> show variables like 'char%';
latin1が残ってます。
これはいけません。文字化け、トラブルの元です。
なので再度、my.cnfを編集します。
[mysqld]セクション内に記述
character-set-server=utf8
末尾に以下を追加
[mysql] default-character-set=utf8
先の作業で末尾に記述していた以下を削除
character-set-server=utf8
設定を有効化するためにmysqlを停止、再起動
# /etc/init.d/mysqld restart
オーケー。
mysqlの自動起動を設定
# /sbin/chkconfig mysqld on
設定が有効になっているか確認
# /sbin/chkconfig --list mysqld
onとoffが上記の設定になっていればオーケー。
MySQLモニターを立ちあげて文字コードを再度確認。
# mysql -u root -p mysql> show variables like 'char%';
latin1がなくなってutf8に。オーケー。
匿名ユーザの存在(パスワードが必要のないユーザ)はときにトラブルにもなるのでこれを調べて、存在するなら削除しておく。
以下コマンドを実行。
mysql> select host,user from mysql.user;
右カラムに空白があるのが匿名ユーザ。
それがある場合は以下のコマンドで匿名ユーザを削除。
mysql> delete from user where user = '';
データベースユーザーの追加
ここまでの段階ではユーザはrootのみ。
他にデータベースユーザを追加するには以下のようにして実行する。
すでにそれ用のDB(sample)はphpMyAdminで作成済みなので
このDBにおいてのみ有効なユーザー
sample
admin
の二つを作成する。
データベース名:sample
ユーザ「sample」:パスワード「sysdev3306」
ユーザ「admin」:パスワード「sysdev」
を設定する。
mysqlモニターで
まずユーザ「sample」から
mysql> grant all privileges on sample.* -> to 'sample@localhost' -> identified by 'sysdev3306'; Query OK, 0 rows affected (0.01 sec)
続いてユーザ「admin」 (繰り返すけれど、このユーザ追加は「sample」においてのみ)
mysql> grant all privileges on sample.* -> to 'admin@localhost' -> identified by 'sysdev'; Query OK, 0 rows affected (0.00 sec)
最後にユーザーテーブルをリフレッシュ
mysql> flush privileges; Query OK, 0 rows affected (0.00 sec)
以上。