EC2インスタンスを起動してLAMP環境を構築していきます。
・AMIは「CentOS 6 -x86_64- – with Updates-6」を利用、SSHログインは「root」
・iptablesにHTTPアクセスを許可するエントリを記入
#/sbin/iptables -I INPUT 5 -p tcp --dport http -j ACCEPT #/sbin/service iptables save
・念のためCentOSのバージョンを確認
[root@ip-10-0-0-33 ~]# cat /etc/redhat-release CentOS release 6.5 (Final)
・ホスト名を変更
/etc/sysconfig/networkでホスト名変更
lamptest.com
EC2インスタンスを再起動します。
■インストール
・インストール前の確認
#yum list install httpd php mysql-server httpd.x86_64 2.2.15-39.el6.centos base mysql-server.x86_64 5.1.73-3.el6_5 base php.x86_64 5.3.3-40.el6_6 updates
・インストール
#yum install httpd php mysql-server Installed: httpd.x86_64 0:2.2.15-39.el6.centos mysql-server.x86_64 0:5.1.73-3.el6_5 php.x86_64 0:5.3.3-40.el6_6
・追加モジュールのインストール
#yum install mod_auth_mysql php-mysql php-mbstring php-gd perl-Net-SSLeay expect
※追加モジュール
mod_auth_mysql :BASIC認証の認証先をmysqlにするモジュール
php-mysql :MySQLライブラリ。将来使えなくなるのでMysqliか、PDO_MySQLを使う必要があり
php-mbstring :日本語などマルチバイト文字を使うには拡張モジュール
php-gd :PHPでグラフィック関係を使うためのモジュール
perl-Net-SSLeay :SSL関係
■Apache基本設定
ホスト名を変更
# vi /etc/hosts 10.0.0.33 lamptest.com 127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4 ::1 localhost localhost.localdomain localhost6 localhost6.localdomain6
・ホスト名登録
vi /etc/httpd/conf/httpd.conf ServerName lamptest.com:80
・共有ディレクトリのグループをapacheに変更。所有者とグループに読み書き、実行の権限を設定。
[root@lamptest ~]# cd /var/www [root@lamptest www]# chown -R apache:apache html [root@lamptest www]# chmod -R 770 html
・ディレクトリにSGIDビットを立ます。SGID(set group ID、setgid)パーミッションが設定されているディレクトリでは、その配下に作られるファイルのグループはディレクトリのグループを継承するようになります。
[root@lamptest www]# chmod 2770 html
・コンテンツディレクトリ以下のディレクトリのパーミッションを770、
ファイルのパーミッションを660にしてその他のユーザーがアクセス出来ないようにします。
[root@lamptest www]# find html -type d -exec chmod 770 {} \; [root@lamptest www]# find html -type f -exec chmod 660 {} \;
※パーミション関係は下記のブログが参考になりました。
http://begi.net/read/operation/10.html
・Web編集ユーザuser01の追加
[root@lamptest html]# useradd -G apache user01 [root@lamptest html]# id user01 uid=500(user01) gid=500(user01) groups=500(user01),48(apache)
■MySQL設定
・my.cnf編集
# vi /etc/my.cnf [mysqld] datadir=/var/lib/mysql socket=/var/lib/mysql/mysql.sock user=mysql # Disabling symbolic-links is recommended to prevent assorted security risks symbolic-links=0 character_set_server=utf8 →追加 skip-character-set-client-handshake →追加 [mysql] →追加 default-character-set=utf8 →追加 [mysqld_safe] log-error=/var/log/mysqld.log pid-file=/var/run/mysqld/mysqld.pid
・MYSQL起動
# /etc/rc.d/init.d/mysqld start
・MySQLにrootでログイン
# mysql -u root
・文字セット確認
mysql> show variables like 'char%'; +--------------------------+----------------------------+ | Variable_name | Value | +--------------------------+----------------------------+ | character_set_client | utf8 | | character_set_connection | utf8 | | character_set_database | utf8 | | character_set_filesystem | binary | | character_set_results | utf8 | | character_set_server | utf8 | | character_set_system | utf8 | | character_sets_dir | /usr/share/mysql/charsets/ | +--------------------------+----------------------------+ 8 rows in set (0.00 sec)
・ユーザ、ホスト、パスワード確認(パスワード未設定を確認)
mysql> select host,user,password from mysql.user; +----------------+------+----------+ | host | user | password | +----------------+------+----------+ | localhost | root | | | lamptest.com | root | | | 127.0.0.1 | root | | | localhost | | | | lamptest.com | | | +----------------+------+----------+ 5 rows in set (0.00 sec)
・匿名ユーザの削除
mysql> delete from mysql.user where user='';
・パスワード設定
mysql> set password for root@localhost = password('mysqlpass'); mysql> set password for root@lamptest.com = password('mysqlpass'); mysql> set password for root@127.0.0.1 = password('mysqlpass'); mysql> select host,user,password from mysql.user;
・パスワードが設定されていること、匿名ユーザが削除されていることを確認
mysql> select host,user,password from mysql.user; +--------------+------+-------------------------------------------+ | host | user | password | +--------------+------+-------------------------------------------+ | localhost | root | *A0C3231D1812BB415B8AA97DEBACBC19EEE6E43C | | lamptest.com | root | *A0C3231D1812BB415B8AA97DEBACBC19EEE6E43C | | 127.0.0.1 | root | *A0C3231D1812BB415B8AA97DEBACBC19EEE6E43C | +--------------+------+-------------------------------------------+ 3 rows in set (0.00 sec)
・データベースの確認
mysql> show databases; +--------------------+ | Database | +--------------------+ | information_schema | | mysql | | test | +--------------------+ 3 rows in set (0.00 sec)
「information_schema」「mysql」はMySQL自身が使用しているデータベースとのこと
■起動
・Apache起動
# /etc/rc.d/init.d/httpd start
・Apache自動起動設定
# chkconfig httpd on
・MySQL再起動
# /etc/rc.d/init.d/mysqld restart
・MySQL自動起動設定
# chkconfig mysqld on
?>
■確認
・php動作試験データ作成
$ vi /var/www/html/info.php
・試験ページ表示データ追加
<?php
phpinfo();
?>
・mysql動作試験データ作成
$ vi /var/www/html/mysql.php
・試験ページ表示データ追加
<?php
mysql_connect(“localhost”,”root”,”mysqlpass”) or die(“Error MySQL First Test”);
echo “Success MySQL First Test”;
■Apacheセキュリティ設定
・エラーページ等の時にフッターにOSやApacheのバージョンとかが表示されなくなる。
(変更前) ServerSignature On
(変更後) ServerSignature Off
・HTTPレスポンスヘッダに書かれるOSやサーバーの情報を隠す設定を施す。
(変更前) ServerTokens OS
(変更後) ServerTokens ProductOnly
chromeで「chrome://net-internals/#events」を確認すると設定以前では下記のようになっていたものが変更されました。
(変更前) Server: Apache/2.2.15 (CentOS)
(変更後) Server: Apache
・HTTP traceメソッドを無効化する。
httpd.confに「TraceEnable off」を追記
・ディレクトリ設定を変更する。
<Directory /> # Options FollowSymLinks AllowOverride None </Directory> <Directory "/var/www/html"> # Options Indexes FollowSymLinks AllowOverride None Order allow,deny Allow from all </Directory>
■バーチャルホスト設定
/etc/httpd/conf.d/vhost.confを新規に作成して設定事項を記入します。
NameVirtualHost *:80 # vhost1 <VirtualHost *:80> ServerName lampvhost1 DocumentRoot /var/www/lampvhost1/ ServerAdmin root@lampvhost CustomLog logs/lampvhost1_access.log common ErrorLog logs/lampvhost1_error.log <Directory "/var/www/lampvhost1"> AllowOverride None Order Allow,Deny Allow from all </Directory> </VirtualHost> # vhost2 <VirtualHost *:80> ServerName lampvhost2 DocumentRoot /var/www/lampvhost2/ ServerAdmin root@lampvhost CustomLog logs/lampvhost2_access.log common ErrorLog logs/lampvhost2_error.log <Directory "/var/www/lampvhost2"> AllowOverride None Order Allow,Deny Allow from all </Directory> </VirtualHost>
—————————————————————-
※参考にさせていただいたサイト
http://arisonsvr.org/web/maincontents/serverset/mysql/mysql.html
[共有フォルダのパーミション]
[DirectoryとOptions]
http://www.atmarkit.co.jp/ait/articles/1001/29/news107_2.html