CentOS6にApacheとPHPとMySQLとphpmyadminをインストールする。
※後でVPS環境構築ということで加筆するかも。
※設定ファイルについて過不足や、自分のところではこうしてるなど指摘頂けるとありがたいです。
Apacheのインストール
1.yumでインストール
2015年5月現在、Apache2.2がインストールされる。
yum –y install httpd
2.設定ファイルの修正
/etc/httpd/conf/httpd.confを修正。
ServerTokens Prod
ServerSignature Off
Options -Indexes FollowSymLinks
ServerName XXX:80 #XXXはホスト名を指定
AllowOverride All
DirectoryIndex index.html index.html.var index.php
ServerTokens Prod
HTTPヘッダの情報の設定。Prodで最小にする。
ServerSignature Off
エラーページのフッターの情報表示の設定。
Options -Indexes FollowSymLinks
ファイルがないページにアクセスしたときに、ディレクトリの中身を表示するかの可否。頭に-をつけることで表示されなくなる。
ServerName XXX:80 #XXXはホスト名を指定
ホスト名
AllowOverride All
ディレクトリへの設定について、上位ディレクトリで設定した設定値を下位ディレクトリの設定で上書き可能かの可否。Allで上書き可能にする。
DirectoryIndex index.html index.html.var index.php
URLにファイルを省略した場合の対象ファイル。index.phpを追加。
設定ファイルが正しいか確認。
service httpd configtest
設定ファイルを反映するには、apacheを再起動する。
service httpd restart
3.自動起動の設定
chkconfig httpd on
chkconfig --list httpd
httpd 0:off 1:off 2:on 3:on 4:on 5:on 6:off
PHPのインストール
1.yumでインストール
2015年5月現在、yumでインストールできるPHPのバージョンは5.3.3である。5.3はサポートが終了しているため、最新版の5.6を入れる。
remiリポジトリから最新版を入れる。remiを入れるためには、epelが必要。
# epelリポジトリ追加
yum install epel-release
# remiリポジトリ追加
rpm -Uvh http://rpms.famillecollet.com/enterprise/remi-release-6.rpm
yum install --enablerepo=remi,remi-php56 php php-mbstring php-mysql
# phpのバージョン確認
php --version
php(php本体)
php-mbstring(マルチバイト文字モジュール)
php-mysql(MySQLモジュール)
上記がマストで、他にphp-devel(PHP開発用、ソースのコンパイルとかするなら)やphp-gd(グラフィック)など必要に応じて。
2.設定ファイル修正
/etc/php.iniを修正。
expose_php = Off
max_execution_time = 120
error_log = syslog
post_max_size = 20M
default_charset = "UTF-8"
upload_max_filesize = 20M
allow_url_fopen = Off
date.timezone = Asia/Tokyo
session.hash_function = 1
mbstring.language = Japanese
mbstring.internal_encoding = UTF-8
mbstring.http_input = auto
mbstring.http_output = UTF-8
mbstring.encoding_translation = Off
mbstring.detect_order = auto
mbstring.substitute_character = none
expose_php = Off
PHPのバージョンをHTTPヘッダに含めるかの設定
max_execution_time = 120
スクリプトのタイムアウト時間(秒)。
error_log = syslog
エラーログの出力先。phpだけログ分ける考え方もあるが、syslogでまとめて見れたほうが楽な気がする。
post_max_size = 20M
POSTの合計の最大サイズ
default_charset = "UTF-8"
HTTPレスポンスの文字エンコーディング
upload_max_filesize = 20M
アップロードの最大サイズ
allow_url_fopen = Off
file_get_contentsなどの制限
date.timezone = Asia/Tokyo
タイムゾーン
session.hash_function = SHA512
セッションID生成アルゴリズム。SHA512が使えるのはPHP5.3以降。
mbstring.language = Japanese
使用する言語
mbstring.internal_encoding = UTF-8
mbstring関数のデフォルト文字エンコード
mbstring.http_input = auto
HTTP入力文字エンコードの検出
mbstring.http_output = UTF-8
HTTP出力文字エンコード。UTF-8なのかpassなのか迷うところ。
mbstring.encoding_translation = Off
HTTPクエリの内部文字エンコーディングへの自動変換
mbstring.detect_order = auto
文字エンコードの自動検出の優先順位
mbstring.substitute_character = none;
変換できない文字を代替えする文字
参考
設定を反映するためには、apacheの再起動が必要。
service httpd restart
MySQLのインストール
1.yumでインストール
2015年5月現在、デフォルトのyumではMySQL5.1がインストールされる。
ここではmysql5.6をインストールする方法を説明する。
yum -y install http://dev.mysql.com/get/mysql-community-release-el6-5.noarch.rpm
yum -y install mysql-community-server
参考:CentOS 6 / RHEL 6 に MySQL 5.6 を yum インストールする手順
2.設定ファイルの修正
/etc/my.cnfを修正。
最低限、文字コードをutf8とinnodbにする。パフォーマンスのチューニングは別途。
[mysqld]
character-set-server=utf8 #追加
default-storage-engine=InnoDB #追加
innodb_file_per_table #追加
[mysql]
default-character-set=utf8 #追加
[mysqldump]
default-character-set=utf8 #追加
[mysqld]
character-set-server=utf8
文字コードをUTF8に設定。なぜか、mysqldと他で違うので注意。
詳細:【MySQL】バージョン5.5.3以降の文字コードの設定(UTF8)
default-storage-engine=InnoDB
新規テーブル作成したときにInnoDBにする。
詳細:【mysql】create table時のデフォルトのストレージエンジンの設定方法
innodb_file_per_table
エンジンがInnoDBの場合、テーブルごとにファイルを作る。
[mysql]
default-character-set=utf8 #追加
文字コードをUTF8に設定。
[mysqldump]
default-character-set=utf8 #追加
文字コードをUTF8に設定。
設定ファイルを反映するには、mysqlの再起動が必要。
service mysqld restart
3.自動起動の設定
chkconfig mysqld on
chkconfig --list mysqld
mysqld 0:off 1:off 2:on 3:on 4:on 5:on 6:off
4.パスワードの設定
mysql_secure_installationでパスワードの設定など行う。
mysql_secure_installation
Enter current password for root (enter for none): ←Enterを押す。
Set root password? [Y/n] Y ←rootパスワードを設定します宣言
Remove anonymous users? [Y/n] Y ←アノニマスユーザの削除
Disallow root login remotely? [Y/n] Y ←rootユーザーのリモートログインの禁止
Remove test database and access to it? [Y/n] Y ←テストデーターベースの削除
Reload privilege tables now? [Y/n] Y ←権限の変更を再読み込みする
参考:[CentOS] MySQLサーバーのインストールを行うの巻 ~mysql_secure_installationを使ってみよう~
パスワードだけ設定する場合は、パスワードなしでログインしてパスワードを設定する。
SET PASSWORD FOR ユーザ名@localhost=PASSWORD('パスワード');
# mysql –u root
mysql> SET PASSWORD FOR root@localhost=PASSWORD('rootのパスワード');
phpMyAdminのインストール
手動インストールとyumでのインストール方法をまとめる。
VPSに作るのでセキュリティもっと強くしないといけない。ここでは一旦動けるとこまでのまとめ。
手動でのインストール
1.DL
ダウンロード先のページでFileの列の取得したいリンクを右クリックでコピーして、wgetでDLする。
wgetには「--no-check-certificate」をつけないとつけてくださいとエラーが出る。
tarで展開して、/var/www/html/配下へ置く。
wget --no-check-certificate https://files.phpmyadmin.net/phpMyAdmin/4.5.3.1/phpMyAdmin-4.5.3.1-all-languages.tar.gz
tar xvf phpMyAdmin-4.5.3.1-all-languages.tar.gz
mv phpMyAdmin-4.5.3.1-all-languages /var/www/html/phpmyadmin
2.config設定
cp -p config.sample.inc.php config.inc.php
chmod 705 config.inc.php ←下の参照では600になっていたがエラーになり他の記事を参考に705で動いた。
vim config.inc.php
$cfg['blowfish_secret'] = '';←46ケタで適当な値
$cfg['Servers'][$i]['auth_type'] = 'cookie'; ← 認証モードを「クッキー」にする
$cfg['Lang'] = 'ja-utf-8'; ← 追加(日本語化)
参考:MySQL用GUI設定ツール導入(phpMyAdmin)
yumでのインストール方法
1.パッケージインストール
yumのデフォルトリポジトリで管理されているphpmyadminは古い。リポジトリを切り替える方法もあるがここでは記載しない。
yum -y install --enablerepo=epel install -y phpMyAdmin php-mysql php-mcrypt
2.Apache設定ファイル修正
/etc/httpd/conf.d/phpMyAdmin.confに設定ファイルが置かれるので修正する。
「Deny from All」でアクセス制御しているのでコメントアウトする。
本来は許可設定を追加すべき。
<Directory /usr/share/phpMyAdmin/>
AddDefaultCharset UTF-8
<IfModule mod_authz_core.c>
# Apache 2.4
<RequireAny>
Require ip 127.0.0.1
Require ip ::1
</RequireAny>
</IfModule>
<IfModule !mod_authz_core.c>
# Apache 2.2
Order Deny,Allow
# Deny from All ←
# Allow from 127.0.0.1 ←
# Allow from ::1 ←
</IfModule>
</Directory>
<Directory /usr/share/phpMyAdmin/setup/>
<IfModule mod_authz_core.c>
# Apache 2.4
<RequireAny>
Require ip 127.0.0.1
Require ip ::1
</RequireAny>
</IfModule>
<IfModule !mod_authz_core.c>
# Apache 2.2
Order Deny,Allow
# Deny from All ←
# Allow from 127.0.0.1 ←
# Allow from ::1 ←
</IfModule>
</Directory>
<Directory /usr/share/phpMyAdmin/libraries/>
Order Deny,Allow
Deny from All
Allow from None
</Directory>
<Directory /usr/share/phpMyAdmin/setup/lib/>
Order Deny,Allow
Deny from All
Allow from None
</Directory>
<Directory /usr/share/phpMyAdmin/setup/frames/>
Order Deny,Allow
# Deny from All ←
# Allow from None ←
</Directory>
参考:CentOSにyumを用いてphpMyAdminをインストールする方法
※デフォルトのタイムアウトが1440秒ので伸ばす。
【phpMyadmin】セッション時間の設定