LAMP環境の構築

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

スポンサーリンク






シェアする

  • このエントリーをはてなブックマークに追加

フォローする