広告

検索

RSS RSSフィード

カレンダー

2009年3月
« 2月   4月 »
 1
2345678
9101112131415
16171819202122
23242526272829
3031  

カテゴリー

最新のコメント

リンク

自宅サーバー再構築 その13 CentOS 5.2 にLAMP環境構築(Apache、PHP編)

投稿者:yasu 更新日時:2009年3月28日 2時50分00秒
カテゴリApache, CentOS, Linux, MySQL, PHP, 自宅サーバー

今回はApache、PHP、MySQLをインストールしてLAMP環境を構築します。
LAMP環境の説明はubuntu 8.10にApache、PHP、MySQLをインストールしてLAMP環境を構築する » sa-sa-ki.jpのblogを参照ください。

Apache、PHP、MySQLをインストール

ログイン後、rootユーザにスイッチします
[centos@centos ~]$ su -
パスワード: rootユーザーのパスワード

Apache、PHP、MySQLをインストールします
[root@centos ~]# yum -y install httpd php php-mbstring mod_ssl mysql-server php-mysql
Loading "priorities" plugin
Loading "fastestmirror" plugin
Loading mirror speeds from cached hostfile
* base: ftp.iij.ad.jp
* updates: ftp.iij.ad.jp
* addons: ftp.iij.ad.jp
* extras: ftp.iij.ad.jp
0 packages excluded due to repository priority protections
Setting up Install Process
Parsing package install arguments
Resolving Dependencies
--> Running transaction check
---> Package php-mbstring.i386 0:x.x.x-xx.xxx_x.x set to be updated
--> Processing Dependency: php-common = x.x.x-xx.xxx_x.x for package: php-mbstring
---> Package mysql-server.i386 0:x.x.xx-x.xxx set to be updated
--> Processing Dependency: libmysqlclient.so.15(libmysqlclient_15) for package: mysql-server
--> Processing Dependency: perl-DBI for package: mysql-server
--> Processing Dependency: perl
-DBD-MySQL for package: mysql-server
--> Processing Dependency: perl(DBI) for package: mysql-server
--> Processing Dependency: libmysqlclient_r.so.15(libmysqlclient_15) for package: mysql-server
--> Processing Dependency: libmysqlclient_r.so.15 for package: mysql-server
--> Processing Dependency: mysql = x.x.xx-x.xxx for package: mysql-server
--> Processing Dependency: libmysqlclient.so.15 for package: mysql-server
---> Package httpd.i386 0:x.x.x-xx.xxx_x.centos.4 set to be updated
filelists.xml.gz 100% |=========================| 2.8 MB 00:00
filelists.xml.gz 100% |=========================| 2.7 MB 00:00
filelists.xml.gz 100% |=========================| 133 kB 00:00
filelists.xml.gz 100% |=========================| 150 B 00:00
---> Package php-mysql.i386 0:x.x.x-xx.xxx_x.x set to be updated
--> Processing Dependency: php-pdo for package: php-mysql
---> Package php.i386 0:x.x.x-xx.xxx_x.x set to be updated
--> Processing Dependency: php-cli = x.x.x-xx.xxx_x.x for package: php
---> Package mod_ssl.i386 1:x.x.x-xx.xxx_x.centos.4 set to be updated
--> Processing Dependency: libdistcache.so.1 for package: mod_ssl
--> Processing Dependency: libnal.so.1 for package: mod_ssl
--> Running transaction check
---> Package distcache.i386 0:x.x.x-xx.x set to be updated
---> Package php-cli.i386 0:x.x.x-xx.xxx_x.x set to be updated
---> Package perl-DBI.i386 0:x.xx-x.xxx set to be updated
---> Package php-pdo.i386 0:x.x.x-xx.xxx_x.x set to be updated
---> Package php-common.i386 0:x.x.x-xx.xxx_x.x set to be updated
---> Package perl-DBD-MySQL.i386 0:x.xxxx-x.xxx set to be updated
---> Package mysql.i386 0:x.x.xx-x.xxx set to be updated
--> Finished Dependency Resolution

Dependencies Resolved

=============================================================================
Package Arch Version Repository Size
=============================================================================
Installing:
mod_ssl i386 1:x.x.x-xx.xxx_x.centos.4 updates 85 k
mysql-server i386 x.x.xx-x.xxx base 9.7 M
php i386 x.x.x-xx.xxx_x.x updates 1.1 M
php-mbstring i386 x.x.x-xx.xxx_x.x updates 969 k
php-mysql i386 x.x.x-xx.xxx_x.x updates 84 k
Installing for dependencies:
distcache i386 x.x.x-xx.x base 119 k
httpd i386 x.x.x-xx.xxx_x.centos.4 updates 1.1 M
mysql i386 x.x.xx-x.xxx base 4.1 M
perl-DBD-MySQL i386 x.xxxx-x.xxx base 147 k
perl-DBI i386 x.xx-x.xxx base 605 k
php-cli i386 x.x.x-xx.xxx_x.x updates 2.1 M
php-common i386 x.x.x-xx.xxx_x.x updates 154 k
php-pdo i386 x.x.x-xx.xxx_x.x updates 62 k

Transaction Summary
=============================================================================
Install 13 Package(s)
Update 0 Package(s)
Remove 0 Package(s)

Total download size: 20 M
Downloading Packages:
(1/13): mod_ssl-x.x.x-xx. 100% |=========================| 85 kB 00:00
(2/13): php-x.x.x-xx.xxx_ 100% |=========================| 1.1 MB 00:00
(3/13): mysql-x.x.xx-x.xx 100% |=========================| 4.1 MB 00:00
(4/13): php-mysql-x.x.x-x 100% |=========================| 84 kB 00:00
(5/13): perl-DBD-MySQL-x. 100% |=========================| 147 kB 00:00
(6/13): httpd-x.x.x-xx.xx 100% |=========================| 1.1 MB 00:00
(7/13): mysql-server-x.x. 100% |=========================| 9.7 MB 00:02
(8/13): php-common-x.x.x- 100% |=========================| 154 kB 00:00
(9/13): php-mbstring-x.x. 100% |=========================| 969 kB 00:00
(10/13): php-pdo-x.x.x-xx 100% |=========================| 62 kB 00:00
(11/13): perl-DBI-x.xx-x. 100% |=========================| 605 kB 00:00
(12/13): php-cli-x.x.x-xx 100% |=========================| 2.1 MB 00:00
(13/13): distcache-x.x.x- 100% |=========================| 119 kB 00:00
Running rpm_check_debug
Running Transaction Test
Finished Transaction Test
Transaction Test Succeeded
Running Transaction
Installing: php-common ####################### [ 1/13]
Installing: perl-DBI ####################### [ 2/13]
Installing: mysql ####################### [ 3/13]
Installing: httpd ####################### [ 4/13]
Installing: perl-DBD-MySQL ####################### [ 5/13]
Installing: php-cli ####################### [ 6/13]
Installing: php-pdo ####################### [ 7/13]
Installing: distcache ####################### [ 8/13]
Installing: php-mbstring ####################### [ 9/13]
Installing: mysql-server ####################### [10/13]
Installing: php-mysql ####################### [11/13]
Installing: php ####################### [12/13]
Installing: mod_ssl ####################### [13/13]

Installed: mod_ssl.i386 1:x.x.x-xx.xxx_x.centos.4 mysql-server.i386 0:x.x.xx-x.xxx php.i386 0:x.x.x-xx.xxx_x.x php-mbstring.i386 0:x.x.x-xx.xxx_x.x php-mysql.i386 0:x.x.x-xx.xxx_x.x
Dependency Installed: distcache.i386 0:x.x.x-xx.x httpd.i386 0:x.x.x-xx.xxx_x.centos.4 mysql.i386 0:x.x.xx-x.xxx perl-DBD-MySQL.i386 0:x.xxxx-x.xxx
perl-DBI.i386 0:x.xx-x.xxx php-cli.i386 0:x.x.x-xx.xxx_x.x php-common.i386 0:x.x.x-xx.xxx_x.x php-pdo.i386 0:x.x.x-xx.xxx_x.x
Complete!

Apacheの設定ファイルを変更

Apacheの設定ファイル変更
[root@centos ~]# vi /etc/httpd/conf/httpd.conf
viエディタが起動するので設定ファイルを変更します。
設定ファイルが大きいので設定箇所のみピックアップしています。

#
# Don't give away too much information about all the subcomponents
# we are running. Comment out this line if you don't mind remote sites
# finding out what major optional modules you are running
HTTPヘッダーやエラーページにApacheのバージョンやOSの情報が表示されないようにOS から Prod に変更
ServerTokens Prod

#
# ServerAdmin: Your address, where problems with the server should be
# e-mailed. This address appears on some server-generated pages, such
# as error documents. e.g. admin@your-domain.com
#
管理者メールアドレスを変更します
ServerAdmin centos@sa-sa-ki.jp

#
# ServerName gives the name and port that the server uses to identify itself.
# This can often be determined automatically, but we recommend you specify
# it explicitly to prevent problems during startup.
#
# If this is not set to valid DNS name for your host, server-generated
# redirections will not work. See also the UseCanonicalName directive.
#
# If your host doesn't have a registered DNS name, enter its IP address here.
# You will have to access it by its address anyway, and this will make
# redirections work in a sensible way.
#
先頭の#を取ってコメントを解除し、サーバー名を変更します
ServerName www.sa-sa-ki.jp:80

#
# Each directory to which Apache has access can be configured with respect
# to which services and features are allowed and/or disabled in that
# directory (and its subdirectories).
#
# First, we configure the "default" to be a very restrictive set of
# features.
#
<Directory />
  FollowSymLinksからNoneに変更してオプションを無効にします
  Options None
  AllowOverride None
  全てのアクセスを拒否します
  Order deny,allow
  Deny from all

</Directory>

<Directory "/var/www/html">

#
# Possible values for the Options directive are "None", "All",
# or any combination of:
# Indexes Includes FollowSymLinks SymLinksifOwnerMatch ExecCGI MultiViews
#
# Note that "MultiViews" must be named *explicitly* --- "Options All"
# doesn't give it to you.
#
# The Options directive is both complicated and important. Please see
# http://httpd.apache.org/docs/2.2/mod/core.html#options
# for more information.
#
  IndexesからExecCGIに変更してCGIスクリプトの実行を許可しドキュメントルートのファイル一覧を表示しないようにします
  Options ExecCGI FollowSymLinks

#
# AllowOverride controls what directives may be placed in .htaccess files.
# It can be "All", "None", or any combination of the keywords:
# Options FileInfo AuthConfig Limit
#
  NoneからAllに変更してファイルアクセス(.htaccess)の使用可能な指示子を全て許可にします
  AllowOverride All

#
# Controls who can get stuff from this server.
#
Order allow,deny
Allow from all

</Directory>

#
# AddHandler allows you to map certain file extensions to "handlers":
# actions unrelated to filetype. These can be either built into the server
# or added with the Action directive (see below)
#
# To use CGI scripts outside of ScriptAliased directories:
# (You will also need to add "ExecCGI" to the "Options" directive.)
#
CGIスクリプトに拡張子.plを追加します
AddHandler cgi-script .cgi .pl

#
# Optionally add a line containing the server version and virtual host
# name to server-generated pages (internal error documents, FTP directory
# listings, mod_status and mod_info output etc., but not CGI generated
# documents or custom error documents).
# Set to "EMail" to also include a mailto: link to the ServerAdmin.
# Set to one of: On | Off | EMail
#
エラーページにApacheのバージョンを表示しないようにOn から Off に変更
ServerSignature Off

#
# Aliases: Add here as many aliases as you need (with no limit). The format is
# Alias fakename realname
#
# Note that if you include a trailing / on fakename then the server will
# require it to be present in the URL. So "/icons" isn't aliased in this
# example, only "/icons/". If the fakename is slash-terminated, then the
# realname must also be slash terminated, and if the fakename omits the
# trailing slash, the realname must also omit it.
#
# We include the /icons/ alias for FancyIndexed directory listings. If you
# do not use FancyIndexing, you may comment this out.
#
Alias /icons/ "/var/www/icons/"

<Directory "/var/www/icons">

Options Indexesを削除してiconsディレクトリのファイル一覧を表示しないようにします
Options MultiViews
AllowOverride None
Order allow,deny
Allow from all
</Directory>

内容を保存しviエディタを終了します

ドキュメントルートの権限変更

ドキュメントルートの権限変更
[root@centos ~]# chown -R apache.apache /var/www
[root@centos ~]# ls -l /var/www
合計 32
drwxr-xr-x 2 apache apache 4096 11月 13 00:44 cgi-bin
drwxr-xr-x 3 apache apache 4096 2月 3 23:11 error
drwxr-xr-x 6 apache apache 4096 3月 19 09:58 html
drwxr-xr-x 3 apache apache 4096 2月 3 23:11 icons

所有ユーザとグループがapacheになっている事を確認します

PHPの設定ファイル変更

PHPの設定ファイル変更
[root@centos ~]# vi /etc/php.ini
viエディタが起動するので設定ファイルを変更します。
設定ファイルが大きいので設定箇所のみピックアップしています。

;
; Misc
;
; Decides whether PHP may expose the fact that it is installed on the server
; (e.g. by adding its signature to the Web server
header). It is no security
; threat in any way, but it makes it possible to determine whether you use PHP
; on your server or not.
HTTPヘッダーにPHPのバージョンを表示しないようにOn から Off に変更
expose_php = Off

内容を保存しviエディタを終了します

CentOSのファイアウォールの設定変更

[root@centos ~]# vi /etc/sysconfig/iptables
viエディタが起動するので設定ファイルを変更します。
# Firewall configuration written by system-config-securitylevel
# Manual customization of this file is not recommended.
*filter
:INPUT ACCEPT [0:0]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [0:0]
:RH-Firewall-1-INPUT - [0:0]
-A INPUT -j RH-Firewall-1-INPUT
-A FORWARD -j RH-Firewall-1-INPUT
-A RH-Firewall-1-INPUT -i lo -j ACCEPT
-A RH-Firewall-1-INPUT -p icmp --icmp-type any -j ACCEPT
-A RH-Firewall-1-INPUT -p 50 -j ACCEPT
-A RH-Firewall-1-INPUT -p 51 -j ACCEPT
-A RH-Firewall-1-INPUT -p udp --dport 5353 -d 224.0.0.251 -j ACCEPT
-A RH-Firewall-1-INPUT -p udp -m udp --dport 631 -j ACCEPT
-A RH-Firewall-1-INPUT -p tcp -m tcp --dport 631 -j ACCEPT
-A RH-Firewall-1-INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
-A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 22 -j ACCEPT
-A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 53 -j ACCEPT
-A RH-Firewall-1-INPUT -m state --state NEW -m udp -p udp --dport 53 -j ACCEPT
下記1行を追加してTCPの80番ポート(http)を開放します
-A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 80 -j ACCEPT
-A RH-Firewall-1-INPUT -j REJECT --reject-with icmp-host-prohibited

内容を保存しviエディタを終了します

設定内容を反映します
[root@centos ~]# /etc/rc.d/init.d/iptables restart
ファイアウォールルールを適用中: [ OK ]
チェインポリシーを ACCEPT に設定中filter [ OK ]
iptables モジュールを取り外し中 [ OK ]
iptables ファイアウォールルールを適用中: [ OK ]
iptables モジュールを読み込み中ip_conntrack_netbios_ns [ OK ]

ルータの設定を変更してTCPの80番ポートを開放

開放方法はルータの設定手順に従って実施してください。

Apacheのサービス起動と自動起動の設定

Apacheを起動します
[root@centos ~]# /etc/rc.d/init.d/httpd start
httpd を起動中: [ OK ]

OS再起動時にApacheを自動起動するようにします
[root@centos ~]# chkconfig httpd on
[root@centos ~]# chkconfig --list | grep httpd
httpd 0:off 1:off 2:on 3:on 4:on 5:on 6:off

ApacheとPHPのバージョン情報をチェック

ApacheとPHPのバージョン情報を隠蔽する設定をしたのでその確認をします。

テスト用PHPページを作成します
[root@centos ~]# vi /var/www/html/test.php
viエディタが起動するので入力します。
<?php
  phpinfo();
?>

内容を保存しviエディタを終了します

telnetコマンドでhttpヘッダーの内容を確認します
[root@centos ~]# telnet www.sa-sa-ki.jp 80
Trying 192.168.0.20...
Connected to www.sa-sa-ki.jp (192.168.0.20).
Escape character is '^]'.
HEAD /index.html HTTP/1.0
もう一度[Enter]キーを押下してください

HTTP/1.1 200 OK
Date: Fri, 27 Mar 2009 02:20:01 GMT
Apacheのバージョンが表示されていない
Server: Apache
X-Powered-By: PHP/x.x.xも表示されていない
X-Pingback: http://www.sa-sa-ki.jp/blog/xmlrpc.php
Connection: close
Content-Type: text/html; charset=UTF-8

Connection closed by foreign host.

次に存在しないページにブラウザでアクセスして、ApacheやPHPのバージョン情報が表示されない事を確認します。

最後に作成したtest.phpページにブラウザでアクセスして、ApacheとPHPが正常に動いているか確認します。

※セキュリティの為、表示されている情報は隠しています

次回はMySQLの初期設定を行います。

■ 参考サイト ■
Webサーバー構築(Apache) - CentOSで自宅サーバー構築
はじめての自宅サーバ構築 Fedora/CentOS - Webサーバの構築(apache)

■関連記事
自宅サーバー再構築 その1 導入を検討する
自宅サーバー再構築 その2 CentOS 5.2 をインストールする
自宅サーバー再構築 その3 インストールしたCentOS 5.2 にリモート接続準備
自宅サーバー再構築 その4 CentOS 5.2 インストール後の初期設定
自宅サーバー再構築 その5 CentOS 5.2 ファイル転送準備
自宅サーバー再構築 その6 CentOS 5.2 にアンチウィルスソフトを導入する
自宅サーバー再構築 その7 CentOS 5.2 にファイル改竄検知システムを導入する
自宅サーバー再構築 その8 CentOS 5.2 にrootkit検知ツールを導入する
自宅サーバー再構築 その9 CentOS 5.2 にバッファオーバーフロー攻撃対策を行う
自宅サーバー再構築 その10 CentOS 5.2 SSHサーバーを構築して外部からリモート接続&リモートファイル転送
自宅サーバー再構築 その11 CentOS 5.2 にDNSサーバーを導入して名前解決(設定編)
自宅サーバー再構築 その12 CentOS 5.2 にDNSサーバーを導入して名前解決(確認編)
自宅サーバー再構築 その13 CentOS 5.2 にLAMP環境構築(Apache、PHP編)
自宅サーバー再構築 その14 CentOS 5.2 にLAMP環境構築(MySQL編)
自宅サーバー再構築 その15 Apacheにサーバー証明書を導入する
自宅サーバー再構築 その16 CentOS 5.2 にWordPressを導入してブログサイトを構築する
自宅サーバー再構築 その17 WordPressのセキュリティ対策
自宅サーバー再構築 その18 CentOS 5.3 にNTPサーバーを導入して自動時間合わせ
自宅サーバー再構築 その19 CentOS 5.3 アンチウィルスソフトのバージョンアップ
自宅サーバー再構築 その20 CentOS 5.3 メールサーバー構築(Postfix設定編)
自宅サーバー再構築 その21 CentOS 5.3 メールサーバー構築(Dovecot設定編)
自宅サーバー再構築 その22 CentOS 5.3 メールサーバー構築(公開編)
自宅サーバー再構築 その23 CentOS 5.3 メールサーバー構築(SSL導入編)
自宅サーバー再構築 その24 CentOS 5.3 メールサーバー構築(メールアカウント作成編)
自宅サーバー再構築 その25 CentOS 5.3 メールサーバー構築(Thunderbird設定編)
自宅サーバー再構築 番外編その1 CentOS 5.3 のリリースと導入済みソフトウェアのアップデート


“自宅サーバー再構築 その13 CentOS 5.2 にLAMP環境構築(Apache、PHP編)”にコメントはありません

コメントする