今回はApache、PHP、MySQLをインストールしてLAMP環境を構築します。
LAMP環境の説明はflashcast:フリーで働くITエンジニア集団のブログ: ubuntu 8.10にApache、PHP、MySQLをインストールしてLAMP環境を構築するを参照ください。
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.confviエディタが起動するので設定ファイルを変更します。
設定ファイルが大きいので設定箇所のみピックアップしています。#
# 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.iniviエディタが起動するので設定ファイルを変更します。
設定ファイルが大きいので設定箇所のみピックアップしています。;
; 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エディタを終了します
Webサーバーを外部公開する為に、CentOSのファイアウォールの設定を変更します。
[root@centos ~]#
vi /etc/sysconfig/iptablesviエディタが起動するので設定ファイルを変更します。# 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 starthttpd を起動中: [ 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.phpviエディタが起動するので入力します。<?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)
————————————————————————————————–
flashcast:フリーで働くITエンジニア集団のブログ: 自宅サーバー再構築 その12 CentOS 5.2 にDNSサーバーを導入して名前解決(確認編)
flashcast:フリーで働くITエンジニア集団のブログ: 自宅サーバー再構築 その11 CentOS 5.2 にDNSサーバーを導入して名前解決(設定編)
flashcast:フリーで働くITエンジニア集団のブログ: 自宅サーバー再構築 その10 CentOS 5.2 SSHサーバーを構築して外部からリモート接続&リモートファイル転送
flashcast:フリーで働くITエンジニア集団のブログ: 自宅サーバー再構築 その9 CentOS 5.2 にバッファオーバーフロー攻撃対策を行う
flashcast:フリーで働くITエンジニア集団のブログ: 自宅サーバー再構築 その8 CentOS 5.2 にrootkit検知ツールを導入する
flashcast:フリーで働くITエンジニア集団のブログ: 自宅サーバー再構築 その7 CentOS 5.2 にファイル改竄検知システムを導入する
flashcast:フリーで働くITエンジニア集団のブログ: 自宅サーバー再構築 その6 CentOS 5.2 にアンチウィルスソフトを導入する
flashcast:フリーで働くITエンジニア集団のブログ: 自宅サーバー再構築 その5 CentOS 5.2 ファイル転送準備
flashcast:フリーで働くITエンジニア集団のブログ: 自宅サーバー再構築 その4 CentOS 5.2 インストール後の初期設定
flashcast:フリーで働くITエンジニア集団のブログ: 自宅サーバー再構築 その3 インストールしたCentOS 5.2 にリモート接続準備
flashcast:フリーで働くITエンジニア集団のブログ: 自宅サーバー再構築 その2 CentOS 5.2 をインストールする
flashcast:フリーで働くITエンジニア集団のブログ: 自宅サーバー再構築 その1 導入を検討する